Section: Scientific Foundations
Rule-based Languages
Logic programming in a broad sense is a declarative programming paradigm which relies on the following identifications:
program = logical formula,
execution = proof search,
In Constraint Satisfaction Problems (CSP), the logical formulae are conjunctions of constraints (i.e. relations on variables expressing partial information) and the satisfiability proofs are computed by constraint solving procedures.
In Constraint Logic Programming (CLP), the logical formulae are Horn clauses with constraints (i.e. one headed rules for the inductive definitions of relations on variables) and the satisfiability proofs combine constraint solving and clause resolution.
Concurrent Constraint Programming (CCP) extends CLP resolution with a synchronization mechanism based on constraint entailment. The variables play the role of transmissible dynamically created communication channels. An agent may add constraints to the store or read the store to decide whether a constraint guard is entailed by the current store. CCP execution can be identified to deduction in J.Y. Girard's Linear Logic by interpreting multisets of constraints and agents as tensor product conjunctions and guards and rules as linear implications(F. Fages, P. Ruet, S. Soliman. Linear concurrent constraint programming: operational and phase semantics, in “Information and Control”, 2001, vol. 165(1), pp.14-41.).
The logical completeness of CCP in LL continues to hold when considering linear logic constraint systems, i.e. constraint systems where constraints can be consumed by implication. This extension, named Linear Logic Concurrent Constraint Programming (LLCC), allows for a non-monotonic evolution of the store of constraints and can encode multi-headed rules like the Constraint Handling Rules (CHR) language of T. Frühwirth.
All these rule-based languages, of increasing expressivity, involve some form of multiset rewriting.
For solving combinatorial optimization problems, we use
Gnu-Prolog (CLP family),
Sicstus-Prolog
or SWI-Prolog (CCP family),
Rules2CP , a rule-based modeling language
that we develop for non-programmers
(CLP variant without recursion nor scope for variables),
Comet