Logic Programming Doctoral Dissertations
The objective of this column is to advertise completed (or almost
doctoral dissertations that have a connection to the realm of logic
programming. If you are a student and you are about to defend your
dissertation, please send me your name, affiliation, and a short
abstract. If you are a faculty member and you have a student that is
about to graduate, please encourage her/him to send me this information.
I count on your help to make this column a success!!
Automated Reasoning about Actions
University of Texas, 2005
The study of reasoning about actions is an important subarea of the theory of commonsense reasoning. It is concerned with developing appropriate systems of logic for describing actions and their effects on the world. In spite of the fact that this reasoning is based on common sense and does not involve any specialized knowledge, attempts to formalize it using classical logic encountered serious difficulties, which have led to the emergence of a new field, nonmonotonic logics.
In particular, McCain and Turner introduced the causal logic in which the notions of ``being caused'' and ``being true'' are distinguished. Based on their logic, Giunchiglia and Lifschitz proposed a high level action language C, which is a formal model of parts of natural language that are used for describing properties of actions. The causal logic and C, along with the concept of satisfiability planning, provided us with a widely applicable and efficient method of automated reasoning about actions, which led to the creation of the Causal Calculator (CCalc).
In this dissertation, we have identified several essential limitations of the McCain-Turner causal logic and action language C. To overcome these limitations, we defined an extension of the causal logic to multi-valued formulas, and a new action language C+. Language C+ can represent non-propositional fluents, defined fluents, additive fluents, rigid constants, and defeasible causal laws. Second, we have redesigned and reimplemented CCalc to account for
these extensions, and tested the new CCalc and the underlying theory by applying them to several new, more difficult examples of commonsense reasoning. The input language of the new CCalc is more elaboration tolerant than the old version. Last, we have shown how to turn causal logic into propositional logic based on the idea of ``loop formulas''
that originated from logic programming under the answer set semantics.
Analysis, Optimizations, and Extensions of Constraint Handling Rules
K.U. Leuven, 2005
Date of defense: June 10, 2005
Url author: http://www.cs.kuleuven.be/~toms/
Url thesis: http://www.cs.kuleuven.be/publicaties/doctoraten/cw/CW2005_02.abs.html
Constraint Handling Rules (CHR) is a rule-based language commonly embedded in a host language. It combines elements of Constraint Logic Programming and term rewriting. Several implementations of CHR exist: in Prolog, Haskell, Java and HAL. Typical applications of CHR are in the area of constraint solving, but currently CHR is also used in a wider range of applications, such as type checking, natural language processing and multi-agent systems.
In this work we contribute program analyses, program optimizations and extensions of the CHR language.
For the optimized compilation of CHR we present several new optimizations: code specialization for ground constraints, anti-monotonic delay avoidance, hashtable constraint stores and a new late storage optimization. These and other optimizations have been implemented in a new state-of-the-art CHR system: the K.U.Leuven CHR system.
Abstract interpretation is a general technique for program analysis. We propose a framework of abstract interpretation for the CHR language, in particular for the formulation of analyses that drive program optimization. This frameworks allows for the uniform formulation of program analyses as well as easier improvements and combinations of existing analyses. We also evaluate analyses for theoretical properties, confluence and time complexity, on a practical case study to investigate their relevance.
We contribute two extensions to the expressivity of CHR. The first extension comprises the integration of CHR with tabled execution. Tabled execution avoids many forms of non-termination and is useful for automatic program optimization through the dynamic reuse of previous computations. The second extension automatically provides implication checking functionality to constraint solvers written in CHR. Implication checking is an essential building block for formulating complex constraints in terms of basic constraints and for composing constraint solvers.