Thu Sep 24 11:23:37 CEST 2009

Constraint Language

1. convert to normal form (confluent rewrite system)
2. collect constraints into propagators (i.e. collect linear equations)
3. perform constraint propagation (find a distribution strategy)

Putting it like this makes it look a lot more structured.  Especially
the first one is something I didn't think about.  The third one
appeared after reading chapter 12 in CTM.

The first one can maybe be done directly with syntax-rules.
Normalizing the relations is simple: move stuff to the other side
until there is a comparison to 0.  The next simplification is
conversion to sum of products.  This expands every + nested inside an

How can conversion to normal form be formulated as an alternative
representation?  I.e.:

  +  concatenate
  -  (map negate) . +
  *  convolve

It's actually quite simple:
  1. recursively reduce all multiplications
  2. flatten all additions