CCL aims to:
- investigate specific instances of combination problems for logics and constraints of particular insterest
- investigate new symbolic constraints and to design algorithms for combining existing constraint systems
- develop or improve theorem proving techniques for certain logics of special importance for programming, by taking advantage of constraint systems.
- design new programming languages by taking advantage of the constraint paradigms
- contribute to a coherent theoretical framework for combining programming paradigms of different nature in a unifield environment.
The following aspects of logic programming and constraint solving have been considered.
Definition of a precedence based AC simplification ordering total on ground terms for theorem proving with ordering constraints. The analysis of modular correctness in the software development process independently of the specific logics underlying specification and programming.
Solvability of systems of equations and disequations over nested lists was found to be decidable for a solution domain of finite trees containing nested lists.
Combination of constraints over finite domains with linear constraints over rational numbers, in particular by using cutting plane methods. Combination of diophantine equations solving algorithms with finite domains constraint solving techniques based on consistency checking.
Implementation of Oz, a higher order concurrent constraint programming language. Complete satisfiability and entailment tests for the combination of rational tree constraints with membership constraints, and for the feature constraint system CFT.
Extension of the scheme to accommodate lazy functional programming. Semantics and implementation techniques for programming languages based on lazy narrowing combined with various higher order features.
Investigation of the relationship between set constraints and the monadic class of first order formulae. Combination of linear and nonlinear constraint solvers over real numbers based on abstract interpretation methods.
Design and implementation of logical framework providing a unified view of logic programming, theorem proving and constraint solving. Combination of unification procedures for theories that share constants. Solving equations in various AC theories; automated deduction in AC theories.
A general framework for equational completion, and its implementation. Algorithms for solving symbolic constraints: theory of embedding, distributive unification, negation elimination. Combinations of rewrite rules, lambda caculus and type inference mechanisms.
Design and implementation in the generic theorem prover Isabelle of a fast unification algorithm for a subclass of lambda terms.
All participants intend to cooperate in the above five areas. There will be short visits from one site to another, seminars, and meetings. Members will attend conferences whose themes are relevant to those of CCL. A workshop of all participants will be organised each year. These meetings may be open to other participants working in the area of constraint theorem proving and constraint logic programming.
The past two decades have seen a proliferation of different programming styles, including functional, logical, constraints-based and object-oriented. More recently, it has been recognised that these styles complement rather than exclude each other: each is suitable for particular problem domains. As a consequence, combining programming paradigms has emerged as a significant line of research in its own right, and has many potential applications in both industry and universities. CCL will work towards this "combination" goal, and hence has great potential. However, the group does not expect to achieve a general solution to the combination problems within the next three years.