3.7.101. Extensible

An extensible constraint is a constraint for which, given any satisfied ground instance (i.e., a source constraint), one can add any item without affecting that the resulting constraint (i.e., a target constraint) still holds, assuming all its restrictions holds. All the extensions of contractibility described at the corresponding keyword entry apply also for extensibility. In particular we also have the restricted notions of prefix-extensible and suffix-extensible constraints, which respectively means that items are added before the first item of a collection or after the last item. As for contractibility, extensibility may also be conditioned by a list of restrictions. Finally extensibility may involve more than one collection. In this context, items are added simultaneously to all collections from exactly the same set of positions. We now present different examples of extensible constraints, starting from a very simple one.

The keyword contractible introduces a dual notion, where items can be removed from a collection that is passed as an argument of a satisfied global constraint without affecting the fact that the resulting constraint is satisfied. Contractibility is a more common property than extensibility.