Interprétation d`une formule dans un modèle

publicité
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).
Téléchargement