On the Semantics of Optimization Predicates in CLP Languages

The Constraint Logic Programming systems which have been implemented include various higher-order predicates for optimization. In CLP(FD) systems, optimization predicates such as min(G(X),f(X)), or min-max(G(X), [f1(X),..., fn(X)]), are implemented by using branch and bound algorithms. In CLP(R) systems, the Simplex algorithm used for satisfiability checks can also be used for linear optimization through the predicate rmin(f (X)) which adds to the constraints on X the ones defining the space where the linear term f(X) is minimized. These optimization constructs do not belong however to the formal CLP scheme of Jaffar and Lassez, and they lack a declarative semantics. In this paper we propose a general definition for optimization predicates, for which one can provide both a logical and a fixpoint semantics based on KunenFitting's semantics of negation. We show that the branch and bound algorithm can be derived as a specialized version of CSLDNF-resolution procedures, and that the branch and bound algorithm can be lifted to a full first-order setting with constructive negation.

[1]  Pascal Van Hentenryck Constraint satisfaction in logic programming , 1989, Logic programming.

[2]  Kenneth Kunen,et al.  Negation in Logic Programming , 1987, J. Log. Program..

[3]  Peter J. Stuckey,et al.  Semantics of Logic Programs with Aggregates , 1991, ISLP.

[4]  J. Lloyd Foundations of Logic Programming , 1984, Symbolic Computation.

[5]  Kenneth Kunen,et al.  Signed Data Dependencies in Logic Programs , 1989, J. Log. Program..

[6]  Peter J. Stuckey,et al.  Constructive negation for constraint logic programming , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[7]  Sergio Greco,et al.  Minimum and maximum predicates in logic programming , 1991, PODS '91.

[8]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.