Appel du prouveur mono-lemme
ml
ml(t)
ml(rp.n)
ml(rp.n|t)
ml(rp(f))
ml(rp(f)|t)
ml(ff(l))
ml(ff(l)|t)
ml(ff(l)|rp.n)
ml(ff(l)|rp.n|t)
ml(ff(l)|rp(f))
ml(ff(l)|rp(f)|t)
avec :
Cette commande permet d’utiliser le prouveur mono-lemme sur le but courant, le prouveur
mono-lemme étant identique au prouveur automatique mais avec un traitement des hypothèses
sensiblement différent.
Cette fonction a trois modes de fonctionnement :
Dans les trois modes, le prouveur mono-lemme est lancé avec un temps de coupure.
Sans précision de la part de l’utilisateur, ce temps de coupure est de 60 secondes en
interactif.
Lorsque la preuve est rejouée en automatique, les appels au prouveur mono-lemme se font avec
un temps de coupure spécifié par la ressource Time_Out du fichier de ressource de l’Atelier B
(300 secondes par défaut).
On peut enfin paramétrer la force de preuve que l’on veut utiliser (avec l’argument ff(l)). Si l est une liste de forces, la preuve sera tentée successivement avec chacune des forces de la liste jusqu’à ce que la preuve réussisse ou bien qu’on ait épuisé la liste.
Le prouveur mono-lemme peut s’utiliser sur l’obligation de preuve complète (on notera qu’ici la
force courante est 0) :
PRI> ml Starting Mono Lemma Prover Call Proved by the Mono Lemma Prover with force 0
|
ou sur l’obligation de preuve réduite. Cette option s’utilise lorsque l’obligation de preuve a de
nombreuses hypothèses :
PRI> ml(rp.1 | 5) Starting Mono Lemma Prover Call Proved by the Mono Lemma Prover with force 0
|
La preuve peut être tentée avec plus d’hypothèses sélectionnées, mais le succès n’est plus
garanti.
PRI> ml(rp.5 | 10) Starting Mono Lemma Prover Call The Mono Lemma Prover failed to prove the current goal
|
Le prouveur mono-lemme peut s’utiliser pour prouver une obligation de preuve donnée ou pour
prouver un sous-but. Il peut à ce titre faire partie d’une stratégie de preuve, en étant utilisé
dans le corps de la commande te (voir chapitre 4.54 page §).
Il est ici utilisé sur les obligations de preuve réduites (1 itération) avec un temps de coupure de
10 secondes.
PRI> te(ml(rp.1 | 10), Replace.Gen.All)
|
Le prouveur peut aussi s’utiliser avec une liste de forces à tenter. On parcourt la liste de forces
jusqu’à ce qu’une d’elles permette d’effectuer la preuve. Ici la force 1 permet de décharger le
but, on n’essaie donc pas la force 3.
PRI> ml(ff(0;1;3) | rp.0 | 50) Starting Mono Lemma Prover Call Proved by the Mono Lemma Prover with force 1
|