For CHR constraints the four standard ports are defined:
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 constraints tries a rule with possibly some passive constraints. The try port is entered just before committing to the rule.
An active constraints commits to a rule with possibly some passive constraints. The apply port is entered just after committing to the rule.