Grammar of Constraints x
where is a variable or a constant as described previously.
When a non-empty set of constraints is provided as part of a scenario, matching of messages, and thus variables, is done modulo these constraints.
For messages to match, the substitutions that result from the matching must keep the constraints set satisfiable, in which case we say the step is matched modulo this set of constraints.
Deductions that can be made straightforwardly are propagated automatically, but there is no real solver at the moment (for instance there is no union-find structure for equalities). This is something that can be improved later on if these constraints turn out to be important for describing some scenarios.