- A new constraint is called and becomes active.
- An active constraint exits: it has either been inserted in the store after trying all rules or has been removed from the constraint store.
- An active constraint fails.
- An active constraint starts looking for an alternative solution.
In addition to the above ports, CHR constraints have five additional ports:
- A suspended constraint is woken and becomes active.
- An active constraint has tried all rules and is suspended in the constraint store.
- An active or passive constraint is removed from the constraint store.
- An active constraint tries a rule with possibly some passive constraints. The try port is entered just before committing to the rule.
- An active constraint commits to a rule with possibly some passive constraints. The apply port is entered just after committing to the rule.