Extensional constraints
Functionality by programming task » Programming models » Using integer variables and constraints

## Classes

class | Gecode::DFA
| Deterministic finite automaton (DFA). More...
class | Gecode::TupleSet
| Class represeting a set of tuples. More...

## Functions

void | Gecode::extensional (Home home, const IntVarArgs &x, DFA d, IntPropLevel ipl=IPL_DEF)
| Post domain consistent propagator for extensional constraint described by a DFA.
void | Gecode::extensional (Home home, const BoolVarArgs &x, DFA d, IntPropLevel ipl=IPL_DEF)
| Post domain consistent propagator for extensional constraint described by a DFA.
void | Gecode::extensional (Home home, const IntVarArgs &x, const TupleSet &t, IntPropLevel ipl=IPL_DEF)
| Post propagator for .
void | Gecode::extensional (Home home, const IntVarArgs &x, const TupleSet &t, bool pos, IntPropLevel ipl=IPL_DEF)
| Post propagator for or .
void | Gecode::extensional (Home home, const IntVarArgs &x, const TupleSet &t, Reify r, IntPropLevel ipl=IPL_DEF)
| Post propagator for .
void | Gecode::extensional (Home home, const IntVarArgs &x, const TupleSet &t, bool pos, Reify r, IntPropLevel ipl=IPL_DEF)
| Post propagator for or .
void | Gecode::extensional (Home home, const BoolVarArgs &x, const TupleSet &t, IntPropLevel ipl=IPL_DEF)
| Post propagator for .
void | Gecode::extensional (Home home, const BoolVarArgs &x, const TupleSet &t, bool pos, IntPropLevel ipl=IPL_DEF)
| Post propagator for or .
void | Gecode::extensional (Home home, const BoolVarArgs &x, const TupleSet &t, Reify r, IntPropLevel ipl=IPL_DEF)
| Post propagator for .
void | Gecode::extensional (Home home, const BoolVarArgs &x, const TupleSet &t, bool pos, Reify r, IntPropLevel ipl=IPL_DEF)
| Post propagator for or .

## Detailed Description

Extensional constraints support different ways of how the extensionally defined relation between the variables is defined. Examples include specification by a DFA or a table.

A DFA can be defined by a regular expression, for regular expressions see the module MiniModel.

## Function Documentation

## extensional() [1/10]

void Gecode::extensional | ( | Home | home,
|  | const IntVarArgs & | x,
|  | DFA | d,
|  | IntPropLevel | ipl = IPL_DEF )

Post domain consistent propagator for extensional constraint described by a DFA.

The elements of x must be a word of the language described by the DFA d.

Throws an exception of type Int::ArgumentSame, if x contains the same unassigned variable multiply. If shared occurences of variables are required, unshare should be used.

Definition at line 39 of file extensional-regular.cpp.

## extensional() [2/10]

void Gecode::extensional | ( | Home | home,
|  | const BoolVarArgs & | x,
|  | DFA | d,
|  | IntPropLevel | ipl = IPL_DEF )

Post domain consistent propagator for extensional constraint described by a DFA.

The elements of x must be a word of the language described by the DFA d.

Throws an exception of type Int::ArgumentSame, if x contains the same unassigned variable multiply. If shared occurences of variables are required, unshare should be used.

Definition at line 49 of file extensional-regular.cpp.

## extensional() [3/10]

void Gecode::extensional | ( | Home | home,
|  | const IntVarArgs & | x,
|  | const TupleSet & | t,
|  | IntPropLevel | ipl = IPL_DEF )

inline

Post propagator for .

- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 37 of file extensional.hpp.

## extensional() [4/10]

void Gecode::extensional | ( | Home | home,
|  | const IntVarArgs & | x,
|  | const TupleSet & | t,
|  | bool | pos,
|  | IntPropLevel | ipl = IPL_DEF )

Post propagator for or .

- If pos is true, it posts a propagator for and otherwise for .
- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 43 of file extensional-tuple-set.cpp.

## extensional() [5/10]

void Gecode::extensional | ( | Home | home,
|  | const IntVarArgs & | x,
|  | const TupleSet & | t,
|  | Reify | r,
|  | IntPropLevel | ipl = IPL_DEF )

inline

Post propagator for .

- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 43 of file extensional.hpp.

## extensional() [6/10]

void Gecode::extensional | ( | Home | home,
|  | const IntVarArgs & | x,
|  | const TupleSet & | t,
|  | bool | pos,
|  | Reify | r,
|  | IntPropLevel | ipl = IPL_DEF )

Post propagator for or .

- If pos is true, it posts a propagator for and otherwise for .
- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 60 of file extensional-tuple-set.cpp.

## extensional() [7/10]

void Gecode::extensional | ( | Home | home,
|  | const BoolVarArgs & | x,
|  | const TupleSet & | t,
|  | IntPropLevel | ipl = IPL_DEF )

inline

Post propagator for .

- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 49 of file extensional.hpp.

## extensional() [8/10]

void Gecode::extensional | ( | Home | home,
|  | const BoolVarArgs & | x,
|  | const TupleSet & | t,
|  | bool | pos,
|  | IntPropLevel | ipl = IPL_DEF )

Post propagator for or .

- If pos is true, it posts a propagator for and otherwise for .
- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 108 of file extensional-tuple-set.cpp.

## extensional() [9/10]

void Gecode::extensional | ( | Home | home,
|  | const BoolVarArgs & | x,
|  | const TupleSet & | t,
|  | Reify | r,
|  | IntPropLevel | ipl = IPL_DEF )

inline

Post propagator for .

- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 55 of file extensional.hpp.

## extensional() [10/10]

void Gecode::extensional | ( | Home | home,
|  | const BoolVarArgs & | x,
|  | const TupleSet & | t,
|  | bool | pos,
|  | Reify | r,
|  | IntPropLevel | ipl = IPL_DEF )

Post propagator for or .

- If pos is true, it posts a propagator for and otherwise for .
- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.

Definition at line 127 of file extensional-tuple-set.cpp.