 
  
  
   
The simplest constraint agent is one which adds a primitive
constraint to the constraint store and then exits.
The most fundamental example is assigning a value to a variable,
eg. X=3.  This agent adds X=3 to the constraint store and
exits.
The next two examples are disequality constraints, which will be
illustrated in the next section.  
The first disequality constraint is invoked by the
syntax  X~=Y.  This
agent does not do anything until both X and Y have a fixed
value.  Only when the primitive constraints in the store entail
  and
  and   for some unique values
  for some unique values   and
  and   ,
does the agent wake up.  Then its behaviour is to check that
 ,
does the agent wake up.  Then its behaviour is to check that   is different from
 
is different from   .  In case they are the same, an inconsistency
has been detected.
 .  In case they are the same, an inconsistency
has been detected.
If the constraint store holds finite domain constraints, then the more
powerful constraint agent invoked by the syntax X ## Y can be used.
This agent wakes up as soon as either X or Y has a fixed value.
It then removes this value from the finite domain of the other
variable and exits.