/*!

\page essay06  Built-In PLASMA Constraints

<hr>



Rules for Built-In PLASMA Constraints

So what is the file I need to look at if the fancy strikes me to actually
use the EUROPA2 constraints correctly?

\li  In particular, using the x = y + z notation in C++, can somebody
   write down the correct equation for

                addeq(a1, a2, a3)

\li  Chuck and Conor both answered this, in effect: a1 + a2 = a3.

\li  More generally, where is the documentation of the arguments of the 
   built-in EUROPA2 constraints?

\li  The intent for all constraints is to reflect the order of the
arguments in the order of the pieces of the name.  For addeq, there
are two pieces: add and eq.  So add goes first, between the first two
parameters, and eq goes second, between the last two.

\li  The only exceptions to this rule in PLASMA that I'm aware of are sum
and product, which are my fault (I implemented them in NewPlan before
I was told about the naming rule by Paul, years ago).  They can be
thought of as eqSum and eqProduct in terms of the rule (though sum can
add up any number of variables, as in NewPlan).

\li  There are other exceptions in NewPlan related to 'cond', which is why
the DDL to NDDL converter swaps the condition variable around to be
the first parameter: so that this rule is followed in PLASMA even
where it wasn't in NewPlan.


\li  Nicola,

If you want x = y + z, your model would look like this:

<function>
    <name>addeq</name>
    <arg>y</arg>
    <arg>z</arg>
    <arg>x</arg>
</function>

In words, the last supplied parameter is the parameter on the left side
of the assignment operator...

-Paul


*/
