Artificial Intelligence

Christophe Delord

Oct 1998


For further details about my research in AI, please see my DEA page.

I present in this page some tools I have written during my training period in AI at ENSEEIHT in the G.R.A.A.L. team. We use SWI-Prolog as a programming language. If you are reading this page it is useless to tell you about the power of such a language :-).

Treatment of Natural Language

Two methods have been implemented to parse natural language in a simple way. For a more elaborate parsing, report to the work of David Ricordel (DEA at ENSEEIHT) who made an extension of the Montague categorial grammar.

Expert Systems

In a first approach of dialogue we wrote small expert systems in Prolog. First versions were very simple but still had interesting features:

Maintenance of Consistency in a Knowledge Base

The main point in the use of a knowledge base is the maintenance of the consistency. We have chosen a probabilistic approach. Inspired from the DEA an adaptation of RMS to probabilistic logic (see DEA lesson about Plausible Reasoning and Uncertainty) leads us to “Probabilistic Truth Maintenance System” (PTMS). The main idea is to associate a probability to every logical formulas. We use a modal first order logic (RMS is limited to propositional logic).

Not yet fully implemented.

Dialogue Game

My training period deals with dialogue modelling. We want to model dialogue agents and different kinds of dialogues. At present agents dialogue using a formal language (first order logic). The program simulates two agents that have each their own characteristics (inference engine, knowledge, goal, …).

Some useful tools in Prolog

The implementation of above programs needs some predicates that prove to be very useful in a lot of cases. The topics are diversified:

I won’t develop there all these subjects. Meanwhile it is interesting to say something about unification and term substitution.

Unification is of course integrated in Prolog. In the mean time a lot of compilers/interpretors only have a simplified unification (without occur check). These Prolog implementations run fast and allow the use of cyclic terms (see the implementation of PTMS). In some cases it is better to avoid cyclic terms (X=f(X) should fail). The implementation of unification that we use is based on a unification with occur check available in every AI repositories on Internet.
As soon as one programs in Prolog, rewriting systems appear to be necessary. I use a term rewriting system in the dialogue simulator to transform agent and game descriptions into machine interpretable descriptions. This rewriting system is powerful enough in this case to produce a simulable description from a human readable description. This rewriting system can also be used to transform logical formulas. The substitution program has been entirely written during my training period. I couldn’t find such a Prolog program on Internet. If somebody has already written something similar I’m open to any discussions.