Contact me

Twitter  ⟐  LinkedIn
Christophe Delord


Monday 18. july 2016: Updates on my new simulation framework project in Haskell.

Friday 25. march 2016: Dear backers, unfortunately, the FUN project was not successfully funded. I will now focus on FRP (Functional Reactive Programming) applied to real-time critical system specification and simulation.

CDSoft :: CV/Resume :: Free softwares Essays Haskell Handy Calc pp TPG BonaLuna Calculadoira todo pwd pi w CDTux :: AI tools in Prolog AI dialog


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 probabilitic approach. Inspired from the DEA an adaptation of RMS to probabilistic logic (see DEA lesson about Plausible Reasonning 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 propositionnal 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/interperters 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 enought 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.