Modifiers
Modifiers are optional and alter an relations’ behavior in some way. Currently, there are two following modifiers, which can be chained together:
Special Modifier
The special modifier changes the relation’s behavior depending on its predicate name. We can utilize the following special predicates:
Relation.special.alldiffA special relation with the
alldiffpredicate ensures that its terms (logic variables) are substituted for different values (unique values). It’s also possible to use...in place of terms, which is substituted for all variables declared in the current rule - no variable declared in the rule can be substituted for the same value simultaneously.
Relation.special.alldiff(Var.X, Var.Y) # Var.X cannot equal to Var.Y
# Var.X != Var.Y != Var.Z
Relation.h(Var.X) <= (Relation.b(Var.Y, Var.Z), Relation.special.alldiff(...))
Relation.special.nextRelation.special.anypredRelation.special._inRelation.special.maxcardRelation.special.trueRelation.special.falseRelation.special.neqRelation.special.leqRelation.special.geqRelation.special.ltRelation.special.gtRelation.special.eqRelation.special.addRelation.special.subRelation.special.mod