Constraint Programming (CP) is a powerful declarative programming paradigm combining inference and search in order to find solutions to various type of constraint systems. ITE (If Then Else) is a lightweight approach for implementing stratified constructive disjunction and negation on top of an existing CP solver, namely SICStus Prolog clp(FD). ITE is a freely available library proposing stratified and constructive reasoning for various operators, including disjunction and negation, implication and conditional.
Execution environment: other Version of the environment: SICStus Prolog
Additional information: Dealing with highly disjunctive constraint systems is notoriously difficult in CP. Apart from trying to solve each disjunct independently from each other, there is little hope and effort to succeed in constructing intermediate results combining the knowledge originating from several disjuncts. ITE (If Then Else) is a lightweight approach for implementing stratified constructive disjunction and negation on top of an existing CP solver, namely SICStus Prolog clp(FD), using a global constraint definition mechanism. Although constructive disjunction is known for more than three decades, it does not have straightforward implementations which go beyond local reasoning, in most CP solvers.
ITE is a library for SICStus Prolog (https://sicstus.sics.se). It has been tested with versions 4.5.0 and 4.5.1, but should be compatible with newer versions, too.