Université Paris Diderot – Sémantique computationnelle – 2016/17 TP no 1 Interprétation d’une formule dans un modèle L’objectif de ce TP est de réaliser un programme qui, étant donné un modèle et une formule de logique des prédicat, détermine avec la méthode des affectations la valeur de vérité de la formule. 1. Analyse syntaxique de la formule En utilisant ply, et en s’inspirant du modèle donné en exemple pour la logique des propositions, on fera en sorte d’analyser syntaxiquement toutes les formules bien formées (complètement parenthésées) de la logique des prédicats, en prévoyant la notation Pab pour P (a, b). 2. Construction d’une représentation Pour simplifier l’évaluation, on construit au cours de l’analyse une représentation arborescente de la formule. Par exemple, la formule ∀x ((P x ∧ Cjx) → ∃y (By ∧ Ajxy)) pourrait être représentée par l’arbre suivant : univ x impl conj pred P • exists y pred • Q var cte x j conj pred var B x • pred • A var cte var var j x y y Ce qui peut donner le tuple python : (’univ’, ’x’, (’impl’, (’conj’, (’pred’, ’P’, [(’var’, ’x’)], (’pred’, ’C’, ...))))) 3. Evaluation de la formule On suppose qu’on charge en mémoire un dictionnaire représentant le modèle en faisant appel à la fonction monte_modele(). Il faut définir une fonction valuation(f) qui prend en entrée une formule, et évalue la valeur de cette formule par rapport au modèle (traité comme une variable globale). 4. Boucle de test Le canevas est prévu pour comporter une boucle de test qui charge des formules placées dans un fichier séparé (formules.txt).