Product Configuration¶
Documentation generated automatically, showcasing the use of mkdoclingo for a large project
where the documentation of predicates is in a separate file.
Tip
Use the icon in the top right to see the source code for this page.
Predicate Summary ¶
| Name | Definition | Type |
|---|---|---|
allow/3
|
Defines an entry of a table constraint (for allowed combinations) |
|
binary/4
|
Defines a binary operation |
|
column/4
|
Defines a column of a table constraint |
|
constant/1
|
Auxiliary predicate which defines a constant (string) |
|
constraint/2
|
Instantiates a constraint |
|
discrete/1
|
Declares the part of a discrete attribute |
|
domain/2
|
Declares a domain element of a discrete attribute |
|
function/3
|
Defines a calculation involving a function |
|
hit/3
|
Whether an entry of a table constraint is satisfied (only for fclingo encoding) |
|
index/2
|
The index of a variable in a cardinality set, for example, "root.frame[1]" has index 1 |
|
integer/1
|
Declares the part of an integer attribute |
|
number/2
|
Auxiliary predicate which defines a constant number |
|
parent/2
|
The parent of a variable |
|
part/1
|
Declares the type of a part |
|
range/3
|
Declares the range of an integer attribute |
|
set/2
|
Defines the members of a set (for cardinalities and aggregate functions) |
|
type/2
|
The type of a variable |
|
unary/3
|
Defines a unary operation |
|
undefined/1
|
Whether a variable or (sub)formula is undefined |
|
user_include/1
|
An include statement from user input |
|
user_value/2
|
An attribute variable value set by user input |
|
violated/1
|
Whether a constraint is violated (Boolean, table or lower bound) |
|
include/1
|
Whether a variable is included in the configuration |
|
value/2
|
The value of an attribute variable |
|
consistent/1
|
Whether a user input variable is consistent with the configuration model |
|
consistent/2
|
Whether a user input value is consistent with the configuration model |
|
defined/1
|
Whether a variable or (sub)formula is defined |
|
defined/2
|
Whether a table constraint is defined |
|
not_hit/3
|
Whether a row of a table constraint is not satisfied |
|
satisfied/1
|
Whether a variable or (sub)formula is satisfied |
|
satisfied/2
|
Whether a table constraint is satisfied |
|
undefined/2
|
Whether a table constraint is undefined |
|
Encodings ¶
examples/config/encoding-base-clingo.lp
¶
Source
#include "base/defined.lp".
#include "doc.lp".
#include "base/structure.lp".
#include "base/discrete.lp".
#include "base/clingo/integer.lp".
#include "base/clingo/boolean.lp".
#include "base/clingo/numerics.lp".
#include "base/clingo/table.lp".
#include "base/constraints.lp".
#include "base/clingo/user.lp".
#include "base/show-clingo.lp".
Encoding
examples/config/base/defined.lp
¶
Source
#defined type/1.
#defined part/1.
#defined cardinality/3.
#defined set/2.
#defined discrete/1.
#defined domain/2.
#defined integer/1.
#defined range/3.
#defined type/2.
#defined index/2.
#defined parent/2.
#defined constraint/2.
#defined binary/4.
#defined unary/3.
#defined table/1.
#defined column/4.
#defined allow/3.
#defined constant/1.
#defined number/2.
#defined function/3.
#defined user_include/1.
#defined user_value/2.
Encoding
examples/config/doc.lp
¶
Source
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Input predicates
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Parts and attributes
%*! part(T)
Declares the type of a part
Args:
- T: The type of the part
*%
%*! discrete(T)
Declares the part of a discrete attribute
Args:
- T: The type of the attribute
*%
%*! domain(T,V)
Declares a domain element of a discrete attribute
Args:
- T: The type of the attribute
- V: The domain element
*%
%*! integer(T)
Declares the part of an integer attribute
Args:
- T: The type of the attribute
*%
%*! range(T,Min,Max)
Declares the range of an integer attribute
Args:
- T: The type of the attribute
- Min: The minimum value of the range
- Max: The maximum value of the range
*%
%%% Configuration variables
%*! type(X,T)
The type of a variable
Args:
- X: The variable (either a part or an attribute)
- T: The type of the variable
*%
%*! parent(X,P)
The parent of a variable
Args:
- X: The variable (either a part or an attribute)
- P: The parent of the variable
*%
%*! index(X,I)
The index of a variable in a cardinality set,
for example, "root.frame[1]" has index 1
Args:
- X: The variable (either a part or an attribute)
- I: The index of the variable
*%
%%% Constraints
%*! constraint(C,T)
Instantiates a constraint
Args:
- C: The constraint identifier
- T: The type of the constraint (boolean, table, lowerbound)
*%
%*! binary(F,L,Op,R)
Defines a binary operation
Args:
- F: The identifier of the complete formula
- L: The identifier of the left operand
- Op: The operator
- R: The identifier of the right operand
*%
%*! unary(F,Op,F')
Defines a unary operation
Args:
- F: The identifier of the complete formula
- Op: The operator
- F': The identifier of the operand
*%
%*! function(F,Fun,Arg)
Defines a calculation involving a function
Args:
- F: The identifier of the complete formula
- Fun: The function type
- Arg: The argument of the function
*%
%*! set(S,X)
Defines the members of a set (for cardinalities and aggregate functions)
Args:
- S: The identifier of the set
- X: The variable (either a part or an attribute) which is a member of the set
*%
%*! constant(C)
Auxiliary predicate which defines a constant (string)
Args:
- C: The constant as a string
*%
%*! number(C,N)
Auxiliary predicate which defines a constant number
Args:
- C: The number as a string
- N: The number as an integer
*%
%*! column(C,ID,Col,X)
Defines a column of a table constraint
Args:
- C: The identifier of the constraint
- ID: The identifier of the cross product of the table header variables
- Col: The column number
- X: The header variable of the column
*%
%*! allow(Idx,P,V)
Defines an entry of a table constraint (for allowed combinations)
Args:
- Idx: The index of the table constraint (part of the constraint identifier)
- P: A tuple `(COL,ROW)` identifying the column and row of the table
- V: The value of the table entry
*%
%*! user_include(X)
An include statement from user input
Args:
- X: The variable (either a part or an attribute) to be included
*%
%*! user_value(X,V)
An attribute variable value set by user input
Args:
- X: The attribute variable for which the value is set
- V: The value of the attribute variable
*%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Encoding predicates
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%*! violated(C)
Whether a constraint is violated (Boolean, table or lower bound)
Args:
- C: The constraint identifier (tuple that differs for each constraint type)
*%
%*! consistent(X)
Whether a user input variable is consistent with the configuration model
Args:
- X: The variable (either a part or an attribute) to be included
*%
%*! consistent(X,V)
Whether a user input value is consistent with the configuration model
Args:
- X: The attribute variable for which the value is set
- V: The value of the attribute variable
*%
%*! defined(X)
Whether a variable or (sub)formula is defined
Args:
- X: The variable or (sub)formula
*%
%*! undefined(X)
Whether a variable or (sub)formula is undefined
Args:
- X: The variable or (sub)formula
*%
%*! satisfied(X)
Whether a variable or (sub)formula is satisfied
Args:
- X: The variable or (sub)formula
*%
%*! defined(C,ID)
Whether a table constraint is defined
Args:
- C: The table constraint identifier
- ID: The identifier of the cross product of the column header variables
*%
%*! undefined(C,ID)
Whether a table constraint is undefined
Args:
- C: The table constraint identifier
- ID: The identifier of the cross product of the column header variables
*%
%*! hit(C,ID,Pos)
Whether an entry of a table constraint is satisfied (only for fclingo encoding)
Args:
- C: The table constraint identifier
- ID: The identifier of the cross product of the column header variables
- Pos: The position of the table entry as a tuple `(COL,ROW)`
*%
%*! not_hit(C,ID,Row)
Whether a row of a table constraint is not satisfied
Args:
- C: The table constraint identifier
- ID: The identifier of the cross product of the column header variables
- Row: The row number
*%
%*! satisfied(C,ID)
Whether a table constraint is satisfied
Args:
- C: The table constraint identifier
- ID: The identifier of the cross product of the column header variables
*%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Output predicates
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%*! include(X)
Whether a variable is included in the configuration
Args:
- X: The variable (either a part or an attribute)
*%
%*! value(X,V)
The value of an attribute variable
Args:
- X: The attribute variable
- V: The value of the variable
*%
Encoding
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Input predicates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Parts and attributes %% Configuration variables %% Constraints %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Encoding predicates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Output predicates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
examples/config/base/structure.lp
¶
Source
% Always include root object
include("root").
% Generate include predicates for objects
{ include(X) : type(X,_) }.
% Always include minimal number of objects
% Commented out because we wanted to include no optimizations currently
% include(X) :- feature(C,_,T,Min,_), type(X,T), index(X,I), I < Min,
% parent(X,P), include(P), type(P,C).
% Do not include an object if its parent is not included
:- include(X), parent(X,P), not include(P).
% Indices in ascending order
:- include(X), set(P,X ), index(X, I), I > 0,
not include(X'), set(P,X'), index(X',I-1), constraint((P,_),_).
Encoding
Always include root object
include("root").
Generate include predicates for objects
{ include(X) : type(X,_) }.
Always include minimal number of objects Commented out because we wanted to include no optimizations currently include(X) :- feature(C,,T,Min,), type(X,T), index(X,I), I < Min, parent(X,P), include(P), type(P,C). Do not include an object if its parent is not included
:- include(X), parent(X,P), not include(P).
Indices in ascending order
:- include(X), set(P,X ), index(X, I), I > 0,
not include(X'), set(P,X'), index(X',I-1), constraint((P,_),_).
examples/config/base/discrete.lp
¶
Source
% Generate exactly one value for each discrete attribute if it is included
{ value(X,V) : domain(T,V) } = 1 :- include(X), type(X,T), discrete(T).
% { value(X,O) : type(X,T), enumeration(T), option(T,O) } 1.
% % No value if variable has not been included
% :- type(X,T), value(X,_), not include(X).
% % Exactly one value if variable has been included
% :- attribute(T,_), type(X,T), include(X), not { value(X,_) } = 1.
% Auxiliary values for (non-numeric) constants
value(P,P) :- constant(P).
Encoding
Generate exactly one value for each discrete attribute if it is included
{ value(X,V) : domain(T,V) } = 1 :- include(X), type(X,T), discrete(T).
{ value(X,O) : type(X,T), enumeration(T), option(T,O) } 1. % No value if variable has not been included :- type(X,T), value(X,), not include(X). % Exactly one value if variable has been included :- attribute(T,), type(X,T), include(X), not { value(X,_) } = 1. Auxiliary values for (non-numeric) constants
value(P,P) :- constant(P).
examples/config/base/clingo/integer.lp
¶
Source
% Generate exactly one value for each (numeric) integer attribute if it is included
{ value(X,V) : V = Min..Max } = 1 :- include(X), type(X,T), integer(T), range(T,Min,Max).
% Auxiliary values for numbers.
value(P,N) :- number(P,N).
Encoding
Generate exactly one value for each (numeric) integer attribute if it is included
{ value(X,V) : V = Min..Max } = 1 :- include(X), type(X,T), integer(T), range(T,Min,Max).
Auxiliary values for numbers.
value(P,N) :- number(P,N).
examples/config/base/clingo/boolean.lp
¶
Source
% Definedness of formulas
defined(X) :- value(X,_).
defined(F) :- binary(F,XL,_,XR), defined(XL), defined(XR).
defined(F) :- unary(F,_,F'), defined(F').
% Satisfaction of binary comparison relations
satisfied(F) :- binary(F,XL,"=", XR), VL = VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,"!=",XR), VL != VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,">", XR), VL > VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,">=",XR), VL >= VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,"<", XR), VL < VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,"<=",XR), VL <= VR, value(XL,VL), value(XR,VR).
% Satisfaction of unary/binary logical relations
satisfied(F) :- unary(F,"!",F'), not satisfied(F').
satisfied(F) :- unary(F,"()",F'), satisfied(F').
satisfied(F) :- binary(F,XL,"||",XR), 1 <= { satisfied(XL); satisfied(XR) }.
satisfied(F) :- binary(F,XL,"&&",XR), satisfied(XL), satisfied(XR).
% A Boolean formula is violated if it is defined and not satisfied
violated(C,F) :- constraint((C,F),"boolean"), defined(F), not satisfied(F).
Encoding
Definedness of formulas
defined(X) :- value(X,_).
defined(F) :- binary(F,XL,_,XR), defined(XL), defined(XR).
defined(F) :- unary(F,_,F'), defined(F').
Satisfaction of binary comparison relations
satisfied(F) :- binary(F,XL,"=", XR), VL = VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,"!=",XR), VL != VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,">", XR), VL > VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,">=",XR), VL >= VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,"<", XR), VL < VR, value(XL,VL), value(XR,VR).
satisfied(F) :- binary(F,XL,"<=",XR), VL <= VR, value(XL,VL), value(XR,VR).
Satisfaction of unary/binary logical relations
satisfied(F) :- unary(F,"!",F'), not satisfied(F').
satisfied(F) :- unary(F,"()",F'), satisfied(F').
satisfied(F) :- binary(F,XL,"||",XR), 1 <= { satisfied(XL); satisfied(XR) }.
satisfied(F) :- binary(F,XL,"&&",XR), satisfied(XL), satisfied(XR).
A Boolean formula is violated if it is defined and not satisfied
violated(C,F) :- constraint((C,F),"boolean"), defined(F), not satisfied(F).
examples/config/base/clingo/numerics.lp
¶
Source
% Evaluate functions (aggregates)
value(F,V) :- function(F,"count",P), V = #count{ X : set(P,X), include(X) }.
value(F,V) :- function(F,"sum", P), V = #sum { V',X : set(P,X), value(X,V') }.
value(F,V) :- function(F,"min", P), V = #min { V',X : set(P,X), value(X,V') }.
value(F,V) :- function(F,"max", P), V = #max { V',X : set(P,X), value(X,V') }.
% Arithmetics
value(F,VL+VR) :- binary(F,XL,"+",XR), value(XL,VL), value(XR,VR).
value(F,VL-VR) :- binary(F,XL,"-",XR), value(XL,VL), value(XR,VR).
value(F,VL*VR) :- binary(F,XL,"*",XR), value(XL,VL), value(XR,VR).
value(F, V) :- unary(F,"()",X), value(X,V).
value(F, V) :- unary(F,"+", X), value(X,V).
value(F,-V) :- unary(F,"-", X), value(X,V).
% TODO: Add more arithmetics (division and power)
% Default arithmetics
value(F,VL) :- binary(F,XL,"+",XR), value(XL,VL), not value(XR,_).
value(F,VR) :- binary(F,XL,"+",XR), value(XR,VR), not value(XL,_).
value(F,VL) :- binary(F,XL,"-",XR), value(XL,VL), not value(XR,_).
value(F,-VR) :- binary(F,XL,"-",XR), value(XR,VR), not value(XL,_).
% TODO: More rules for multiplication?
Encoding
Evaluate functions (aggregates)
value(F,V) :- function(F,"count",P), V = #count{ X : set(P,X), include(X) }.
value(F,V) :- function(F,"sum", P), V = #sum { V',X : set(P,X), value(X,V') }.
value(F,V) :- function(F,"min", P), V = #min { V',X : set(P,X), value(X,V') }.
value(F,V) :- function(F,"max", P), V = #max { V',X : set(P,X), value(X,V') }.
Arithmetics
value(F,VL+VR) :- binary(F,XL,"+",XR), value(XL,VL), value(XR,VR).
value(F,VL-VR) :- binary(F,XL,"-",XR), value(XL,VL), value(XR,VR).
value(F,VL*VR) :- binary(F,XL,"*",XR), value(XL,VL), value(XR,VR).
value(F, V) :- unary(F,"()",X), value(X,V).
value(F, V) :- unary(F,"+", X), value(X,V).
value(F,-V) :- unary(F,"-", X), value(X,V).
TODO: Add more arithmetics (division and power) Default arithmetics
value(F,VL) :- binary(F,XL,"+",XR), value(XL,VL), not value(XR,_).
value(F,VR) :- binary(F,XL,"+",XR), value(XR,VR), not value(XL,_).
value(F,VL) :- binary(F,XL,"-",XR), value(XL,VL), not value(XR,_).
value(F,-VR) :- binary(F,XL,"-",XR), value(XR,VR), not value(XL,_).
TODO: More rules for multiplication?
examples/config/base/clingo/table.lp
¶
Source
% A table constraint is defined if none of its columns are undefined
undefined(C,ID) :- column(C,ID,_,X), not include(X).
defined(C,ID) :- column(C,ID,_,_), not undefined(C,ID).
% A row of a table is not satisfied if any of its entries is not satisfied.
% Note that a table entry can contain multiple values.
% This is incompatible with fclingo (mixed check of values).
not_hit(C,ID,Row) :- allow(Idx,(Col,Row),_), column(C,ID,Col,X), C=(Idx,_), not value(X,V) : allow(Idx,(Col,Row),V).
% A table constraint is satisfied if one of its rows is satisfied (not not satisfied)
satisfied(C,ID) :- allow(Idx,(_,Row),_), column(C,ID,_,_), C=(Idx,_), not not_hit(C,ID,Row).
% A table constraint is violated if is defined and not satisfied
violated(C,ID) :- constraint(C,"table"), defined(C,ID), not satisfied(C,ID).
Encoding
A table constraint is defined if none of its columns are undefined
undefined(C,ID) :- column(C,ID,_,X), not include(X).
defined(C,ID) :- column(C,ID,_,_), not undefined(C,ID).
A row of a table is not satisfied if any of its entries is not satisfied. Note that a table entry can contain multiple values. This is incompatible with fclingo (mixed check of values).
not_hit(C,ID,Row) :- allow(Idx,(Col,Row),_), column(C,ID,Col,X), C=(Idx,_), not value(X,V) : allow(Idx,(Col,Row),V).
A table constraint is satisfied if one of its rows is satisfied (not not satisfied)
satisfied(C,ID) :- allow(Idx,(_,Row),_), column(C,ID,_,_), C=(Idx,_), not not_hit(C,ID,Row).
A table constraint is violated if is defined and not satisfied
violated(C,ID) :- constraint(C,"table"), defined(C,ID), not satisfied(C,ID).
examples/config/base/constraints.lp
¶
Source
% A lower bound (cardinality) constraint is violated if less than the minimum number of objects are included
% (objects are included in ascending order of indices)
% (maximum does not need to be checked)
violated(X',P) :- constraint((P,Min),"lowerbound"), set(P,X), index(X,Min-1), not include(X), parent(X,X'), include(X').
% Constraints cannot be violated
:- violated(C,ID).
Encoding
A lower bound (cardinality) constraint is violated if less than the minimum number of objects are included (objects are included in ascending order of indices) (maximum does not need to be checked)
violated(X',P) :- constraint((P,Min),"lowerbound"), set(P,X), index(X,Min-1), not include(X), parent(X,X'), include(X').
Constraints cannot be violated
:- violated(C,ID).
examples/config/base/clingo/user.lp
¶
Source
consistent(X) :- user_include(X), type(X,_).
consistent(X,V) :- user_value(X,V), type(X,T), discrete(T), domain(T,V).
consistent(X,V) :- user_value(X,V), type(X,T), integer(T), range(T,Min,Max), Min <= V <= Max.
consistent(X,V) :- user_value(X,V), type(X,T), integer(T), not range(T,_,_).
include(X) :- user_include(X), consistent(X).
include(X) :- user_value(X,V), consistent(X,V).
value(X,V) :- user_value(X,V), consistent(X,V).
Encoding
consistent(X) :- user_include(X), type(X,_).
consistent(X,V) :- user_value(X,V), type(X,T), discrete(T), domain(T,V).
consistent(X,V) :- user_value(X,V), type(X,T), integer(T), range(T,Min,Max), Min <= V <= Max.
consistent(X,V) :- user_value(X,V), type(X,T), integer(T), not range(T,_,_).
include(X) :- user_include(X), consistent(X).
include(X) :- user_value(X,V), consistent(X,V).
value(X,V) :- user_value(X,V), consistent(X,V).
examples/config/base/show-clingo.lp
¶
Source
#show .
#show include(X) : include(X), type(X,T), part(T), X != "root".
#show value(X,V) : value(X,V), type(X,T), discrete(T).
#show value(X,V) : value(X,V), type(X,T), integer(T).
Encoding
#show .
#show include(X) : include(X), type(X,T), part(T), X != "root".
#show value(X,V) : value(X,V), type(X,T), discrete(T).
#show value(X,V) : value(X,V), type(X,T), integer(T).
Glossary ¶
allow(Idx, P, V)
¶
Defines an entry of a table constraint (for allowed combinations)
| Parameter | Description |
|---|---|
Idx
|
The index of the table constraint (part of the constraint identifier) |
P
|
A tuple |
V
|
The value of the table entry |
binary(F, L, Op, R)
¶
Defines a binary operation
| Parameter | Description |
|---|---|
F
|
The identifier of the complete formula |
L
|
The identifier of the left operand |
Op
|
The operator |
R
|
The identifier of the right operand |
column(C, ID, Col, X)
¶
Defines a column of a table constraint
| Parameter | Description |
|---|---|
C
|
The identifier of the constraint |
ID
|
The identifier of the cross product of the table header variables |
Col
|
The column number |
X
|
The header variable of the column |
constant(C)
¶
Auxiliary predicate which defines a constant (string)
| Parameter | Description |
|---|---|
C
|
The constant as a string |
constraint(C, T)
¶
Instantiates a constraint
| Parameter | Description |
|---|---|
C
|
The constraint identifier |
T
|
The type of the constraint (boolean, table, lowerbound) |
discrete(T)
¶
Declares the part of a discrete attribute
| Parameter | Description |
|---|---|
T
|
The type of the attribute |
domain(T, V)
¶
Declares a domain element of a discrete attribute
| Parameter | Description |
|---|---|
T
|
The type of the attribute |
V
|
The domain element |
function(F, Fun, Arg)
¶
Defines a calculation involving a function
| Parameter | Description |
|---|---|
F
|
The identifier of the complete formula |
Fun
|
The function type |
Arg
|
The argument of the function |
hit(C, ID, Pos)
¶
Whether an entry of a table constraint is satisfied (only for fclingo encoding)
| Parameter | Description |
|---|---|
C
|
The table constraint identifier |
ID
|
The identifier of the cross product of the column header variables |
Pos
|
The position of the table entry as a tuple |
index(X, I)
¶
The index of a variable in a cardinality set, for example, "root.frame[1]" has index 1
| Parameter | Description |
|---|---|
X
|
The variable (either a part or an attribute) |
I
|
The index of the variable |
integer(T)
¶
Declares the part of an integer attribute
| Parameter | Description |
|---|---|
T
|
The type of the attribute |
number(C, N)
¶
Auxiliary predicate which defines a constant number
| Parameter | Description |
|---|---|
C
|
The number as a string |
N
|
The number as an integer |
parent(X, P)
¶
The parent of a variable
| Parameter | Description |
|---|---|
X
|
The variable (either a part or an attribute) |
P
|
The parent of the variable |
part(T)
¶
Declares the type of a part
| Parameter | Description |
|---|---|
T
|
The type of the part |
range(T, Min, Max)
¶
Declares the range of an integer attribute
| Parameter | Description |
|---|---|
T
|
The type of the attribute |
Min
|
The minimum value of the range |
Max
|
The maximum value of the range |
set(S, X)
¶
Defines the members of a set (for cardinalities and aggregate functions)
| Parameter | Description |
|---|---|
S
|
The identifier of the set |
X
|
The variable (either a part or an attribute) which is a member of the set |
type(X, T)
¶
The type of a variable
| Parameter | Description |
|---|---|
X
|
The variable (either a part or an attribute) |
T
|
The type of the variable |
unary(F, Op, F')
¶
Defines a unary operation
| Parameter | Description |
|---|---|
F
|
The identifier of the complete formula |
Op
|
The operator |
F'
|
The identifier of the operand |
undefined(X)
¶
Whether a variable or (sub)formula is undefined
| Parameter | Description |
|---|---|
X
|
The variable or (sub)formula |
user_include(X)
¶
An include statement from user input
| Parameter | Description |
|---|---|
X
|
The variable (either a part or an attribute) to be included |
user_value(X, V)
¶
An attribute variable value set by user input
| Parameter | Description |
|---|---|
X
|
The attribute variable for which the value is set |
V
|
The value of the attribute variable |
violated(C)
¶
Whether a constraint is violated (Boolean, table or lower bound)
| Parameter | Description |
|---|---|
C
|
The constraint identifier (tuple that differs for each constraint type) |
include(X)
¶
Whether a variable is included in the configuration
| Parameter | Description |
|---|---|
X
|
The variable (either a part or an attribute) |
value(X, V)
¶
The value of an attribute variable
| Parameter | Description |
|---|---|
X
|
The attribute variable |
V
|
The value of the variable |
consistent(X)
¶
Whether a user input variable is consistent with the configuration model
| Parameter | Description |
|---|---|
X
|
The variable (either a part or an attribute) to be included |
consistent(X, V)
¶
Whether a user input value is consistent with the configuration model
| Parameter | Description |
|---|---|
X
|
The attribute variable for which the value is set |
V
|
The value of the attribute variable |
defined(X)
¶
Whether a variable or (sub)formula is defined
| Parameter | Description |
|---|---|
X
|
The variable or (sub)formula |
defined(C, ID)
¶
Whether a table constraint is defined
| Parameter | Description |
|---|---|
C
|
The table constraint identifier |
ID
|
The identifier of the cross product of the column header variables |
not_hit(C, ID, Row)
¶
Whether a row of a table constraint is not satisfied
| Parameter | Description |
|---|---|
C
|
The table constraint identifier |
ID
|
The identifier of the cross product of the column header variables |
Row
|
The row number |
satisfied(X)
¶
Whether a variable or (sub)formula is satisfied
| Parameter | Description |
|---|---|
X
|
The variable or (sub)formula |
satisfied(C, ID)
¶
Whether a table constraint is satisfied
| Parameter | Description |
|---|---|
C
|
The table constraint identifier |
ID
|
The identifier of the cross product of the column header variables |
undefined(C, ID)
¶
Whether a table constraint is undefined
| Parameter | Description |
|---|---|
C
|
The table constraint identifier |
ID
|
The identifier of the cross product of the column header variables |