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 :-).

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.

- Categorial Grammar
- Lambek-Gentzen’s Calculus
- Lambda-calculus
- Top-Down Parser
- Bottom-Up Parser

- Lambek-Gentzen’s Calculus
- Lexical Functionnal Grammar
- Implementation of LFG Formalism in Prolog
- Lambda-calculus
- Top-Down Parser

- Implementation of LFG Formalism in Prolog

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

*Parametrisable inference rules*: The inference engine is not frozen. On the contrary it can interpret a set of inference rules to apply it to a knowledge base.*Backward and forward chaining*: These expert systems can use inference rules with forward and backward chaining. These two kinds of chaining are interesting and complementary. As a matter of fact backward chaining is equivalent to asking a question and forward chaining to blindly exploring facts.*Use of a modal first order logic*

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.

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, …).

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

- Error Handling
- Data Bases
- User Interface
- Sorting
- Control Structures
- Unification
- Term Substitution
- …

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

- Unification
- 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.
- Substitution
- 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.