Ressource : ATB*PR*Keep_Non_Simplified_Hypothesis.
Valeur : TRUE ou FALSE.
Signification : On conserve les prédicats non simplifés seulement si cette ressource vaut
TRUE.
Valeur par défaut : TRUE.
Le principe de simplification de prédicats de la forme P ⇒ Q et ¬P consiste à transformer ces
formules en P ∧P′ ⇒ Q et ¬(P ∧P′) (où P′ est la forme simplifiée de P). ce fonctionnement
correspond à la valeur TRUE pour cette ressource.
A contrario, la valeur FALSE permet de ne conserver que les prédicats simplifiés i.e. de
transformer les formules initiales en P′ ⇒ Q et ¬P′.
Dans certains cas la présence simultanée du prédicat non simplifié et du prédicat simplifié peut
empêcher l’application de mécanismes du prouveur. Par exemple, le prouveur ne peut effectuer
un Modus Ponens sur les hypothèses P, P′ et (P ∧ P′) ⇒ Q alors qu’il le fait sur les
hypothèses P′ et P′ ⇒ Q.
Exemple :
Soit l’obligation de preuve suivante :
Goal x1<=3-y1 => x1<=2+ii & x1+y1<=3 & => 5+z1 = y1
|
Nous sommes dans le cas où la ressource est positionnée à la valeur TRUE. En effectuant
successivement un dd(0) (pour faire monter dans la pile des hypothèses les deux
hypothèses locales) puis sh(x1) pour visualiser les hypothèses contenant le terme x1, on
obtient :
Found hypothesis List is x1+y1<=3 & 0<=3-x1-y1 & 0<=3-x1-y1 & x1+y1<=3 => x1<=2+ii End of found hypothesis
|
Remarquons que l’hypothèse 0 <= 3 - x1 - y1 (respectivement
0 <= 3 - x1 - y1 ∧ x1 <= 3 - y1 ⇒ x1 <= 2 + ii) est la version simplifiée de la formule
x1 + y1 <= 3 (respectivement x1 <= 3 - y1 => x1 <= 2 + ii), on a donc conservé comme
prévu les versions non simplifées.
Puisque nous disposons des deux hypothèses x1 + y1 <= 3 et 0 <= 3 -x1 -y1, le modus ponens
sur l’hypothèse 0 <= 3 - x1 - y1 ∧ x1 <= 3 - y1 ⇒ x1 <= 2 + ii devrait être
possible :
Invalid argument / Inexistent a=>b Hypothesis in mh(0<=3-x1-y1 & x1<=3-y => x1<=2+ii)
|
Le prouveur ne parvient pas effectuer le Modus Ponens.
On positionne la ressource à la valeur FALSE. En effectuant les mêmes commandes interactives
sur la même obligation de preuve, on obtient :
Found hypothesis List is x1<=2+ii & 0<=3-x1-y1 & 0<=3-x1-y1 => x1<=2+ii End of found hypothesis
|
Cette fois nous avons conservé uniquement les versions simplifiées des formules. Remarquons
que l’on dispose aussi de l’hypothèse x1 <= 2 + ii obtenue par un modus ponens déclenché
automatiquement sur 0 <= 3 -x1 -y1 ⇒ x1 <= 2 + ii. Le prouveur n’a pas été géné par la
présence d’hypothèses non simplifiées.