... | ... | @@ -39,6 +39,7 @@ NDL model defines structure of the constraint programming problem and is compile |
|
|
* Variable related:
|
|
|
* `fixed(+Name:string)` - variables with this name shouldn't be modified by the NDL query. Used only during compilation.
|
|
|
* `auxillary(+Name:string)` - variables with this name should be calculated in run-time based on one-directional constrants, used to define complex constraints
|
|
|
* `depends(+Name:string, ?AVar:aux_variable_index, ?Var:variable_index)` - specifies on which variable, the auxillary variable is defined
|
|
|
* `reified(+Name:string)` - variables with this name reify constraints with the same name. Their domain is always boolean.
|
|
|
* family of `variable` predicates allowing to non-deterministically get an indexed variable and it's index. **Used in the NDL query.**
|
|
|
* `variable(+Name:string, -Index:variable_index) is nondet` - for 0-dimensional variable types.
|
... | ... | @@ -49,6 +50,11 @@ NDL model defines structure of the constraint programming problem and is compile |
|
|
|
|
|
* Constraint related:
|
|
|
* `constraint(+Name:string, ?Arg1:type_of(arg1(Name)), ?Index2:type_of(arg2(Name)) is nondet` - allows to non-deterministically check if two arguments (variables or range elements) are constrained with a constraint named `Name`. Also allows to find elements satisfying those requirements. **Used in the NDL query**.
|
|
|
* `reified_constraint(+Name:string, ?Arg1:arg1(Name)-?Arg2:arg2(Name), ?Rvar:rvariable_index)` - maps constraint to its reificiation
|
|
|
|
|
|
* Semantics related:
|
|
|
* `constraint_semantics(+Name:string, +Body:query)` - specifies a query checking if the constraint is satisfied
|
|
|
* `auxillary_semantics(+Name:string, +Body:query)` - specifies a query that updates value of the auxillary variable
|
|
|
|
|
|
## Query
|
|
|
|
... | ... | |