|
 |
Research topics in Analysis group
 |
 |
Implementation
|
 |
 |
|
The basic execution mechanism of logic languages is well understood. However, the state of the art in this field can still be pushed further, both at the level of performance (space and time) and at the level of the usefulness of the language.
Two alleys have been taken by our group, both sharing a common basic compiler of Prolog-like source language to abstract machine code:
- The first has led to the development of ilProlog, a logic inference machine dedicated to inductive learning. This tool is crucial in the deployment of the spin-off PharmaDM as well as for the machine learning activities within the group. The current research topics in this area include dynamic (incremental) compilation, intelligent backtracking techniques for queries, tabling in ILP, and analysis techniques for boosting performance of ILP execution.
- The other alley resulted in hProlog, which is meant to provide an alternative back-end for HAL, a new constraint logic programming language developed at the Melbourne and Monash universities. Work related to analysis (frameworks), optimisation, constraint solving techniques and memory management all fit in this picture.
- The first versions of the K.U.Leuven Constraint Handling Rules system were developed in the context of hProlog. For more on this topic, see the Constraint Handling Rules section.
|
|
|
 |
 |
Constraint Handling Rules
|
 |
 |
|
Constraint Handling Rules (CHR) is a multi-headed rule-based language conceived in the early nineties. CHR is a highly expressive language at the intersection of rewriting systems and constraint logic programming, that is well-suited for the implementation of constraint solvers and many other reasoning and rewriting tasks.
Our group has addressed a wide range of topics in the context of CHR:
- The study of CHR implementation and compilation has led to a number of CHR systems:
- The K.U.Leuven CHR system is a state-of-the-art
and widely used CHR system bundled with many Prolog systems: SWI-Prolog, SICStus, Yap,
Ciao Prolog and XSB (where CHR is integrated with tabulation).
- The K.U.Leuven JCHR and
CCHR systems bring CHR to the world of
imperative programming: Java and C, respectively. These are the fastest CHR implementations
available today.
- The latest development is the CHRRP
system for Prolog, which offers a new form of declarative control flow based on rule priorities.
- We have proposed a number of language extensions for increasing the expressivity of CHR:
aggregates, negation, entailment checking, ...
- We have made a number of contributions to the optimized compilation of CHR, such as compile-time memory management,
program transformations and indexing datastructures. An important factor in this work is the development of a program
analysis framework for CHR based on abstract interpretation
- Our study of the computational properties of CHR has led to a general result of optimality: all algorithms
can be implemented in CHR with optimal time and space complexity. This proven theorem is illustrated by
various elegant implementations of well-known algorithms.
|
|
 |
 |
Type Systems
|
 |
 |
Our current research is aimed at two goals:
- The inference of type definitions and type signatures for untyped declarative languages such as Prolog.
- Expressive extensions of the type system of the well-know functional language Haskell: we have contributed towards open type functions, which are implemented in the Glasgow Haskell compiler.
|
|
|
|
|
|