👨‍💻 about me home CV/Resume 🖊️ Contact Github LinkedIn I’m a Haskeller 📝 Blog Freedom, privacy, tutorials… 🏆 Best of LuaX Calculadoira panda upp Haskell todo pwd TPG Nextcloud Git BitTorrent

Boycott the Football World Cup in Qatar in 2022.
No to pollution and the non-respect for the environment (football in the desert is as fucking stupid as winter olympic games where the snow does not fall).
No to the dictatorship of money and the non-respect of basic human rights.

I implore you to boycott this threat against humanity:
It’s time to stop consuming and polluting for nothing. Earth is burning and there is no planet B (even Elon Musk won’t save you).

I’m so sad to see how stupid you human beings can be.
What about fighting together against the apocalypse that is coming very soon instead of shooting ourselves in the foot like fools?
Hey fucking dude, wake up! Look up!

If you’re ready to make some efforts, you’re welcome to my website. Otherwise there is no hope…

💣 Kick GAFAMs out (✔️ ǝlƃooפ, ✔️ ʞooqǝɔɐℲ, ✔️ uozɐɯ∀): Stop giving our soul and money to evils, be free and respectful!
📰 Friday 2. April 2021: upp is a panda companion. It’s a Lua-scriptable lightweight text preprocessor.
🆕 since December 2020: Playing with the actor model in an embedded multicore context. C imperative components become C stream pure functions with no side effect ➡️ C low level programming with high level pure functional programming properties 🏆
📰 Saturday 30. January 2021: Playing with Pandoc Lua filters in Lua. panda is a lightweight alternative to abp providing a consistent set of Pandoc filters (text substitution, file inclusion, diagrams, scripts, …).
🆕 Sunday 24. May 2020: Working at EasyMile for more than 5 years. Critical real-time software in C, simulation and monitoring in Haskell ➡️ perfect combo! It’s efficient and funny ;-)
🚌 And we are recruiting! Contact if you are interested in Haskell or embedded softwares (or both).

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.