Ajout d’une hypothèse
ah(P)
avec :
Cette commande permet d’ajouter le prédicat P dans la pile des hypothèses.
Dans les hypothèses courantes, le prédicat P doit :
Si la preuve courante était
prouver B sous les hypothèses h1, …, hn
alors le prouveur va tenter de prouver successivement
prouver P sous les hypothèses h1, …, hn
puis
prouver B sous les hypothèses h1, …, hn, P
Cette preuve est effectuée avec la force de preuve courante.
Après avoir exécuté la commande ah(P), le but courant devient P. Si après la commande pr
(voir chapitre 4.38 page §), le but courant est toujours P, l’hypothèse P n’a pas pu être
prouvée.
Lorsque l’hypothèse P a été prouvée, le but devient P ⇒ B. L’utilisateur a alors la possibilité
soit de monter directement l’hypothèse P (commande dd (voir chapitre 4.14 page §)), soit de
lancer le prouveur automatique qui montera l’hypothèse P’, obtenue après traitements sur
P.
Si P ne peut pas être prouvé avec la force courante, on peut essayer une force supérieure. Toute
la ligne de commande sera alors réexécutée avec la nouvelle force.
Puisque cette commande n’est pas protégée contre le mauvais typage et la mauvaise
définition, l’utilisateur doit donc vérifier que l’hypothèse ajoutée est bien typée et bien
définie.
Ceci peut être vérifié a posteriori à l’aide l’outil mdelta (cf. Manuel Utilisateur Version 1.0.).
Soit la situation suivante :
Hypothesis xx: 1..10 & yy: 1..10 & zz: 1..100 Goal xx+yy-1: 1..100
|
L’opérateur désire ajouter l’hypothèse xx + yy : 2..20. Il exécute la commande ah :
PRI> ah(xx+yy: 2..20) Starting Add Hypothesis
|
Le nouveau but devient :
Goal xx+yy: 2..20
|
Cette hypothèse est à prouver avant de pouvoir poursuivre. L’opérateur lance le coeur de
preuve :
PRI> pr Starting Prover Call
|
L’hypothèse xx + yy : 2..20 a été prouvée : le but devient xx + yy : 2..20 => but courant.
Goal xx+yy: 2..20 => xx+yy-1: 1..100
|
En utilisant la commande pr (voir chapitre 4.38 page §) ou dd (voir chapitre 4.14 page §), la preuve peut alors se poursuivre avec la nouvelle hypothèse.