4.17 Force

Changement de la force courante du prouveur

Syntaxe

  ff(n)
avec :

Utilisation

Cette commande permet de changer la force courante du prouveur et de rejouer toute la ligne de commande existante (voir chapitre 2.7 page §) avec la nouvelle force.
Si la force demandée est égale à la force courante, alors rien ne se passe.

La force Rapide privilégie au maximum la rapidité des traitements.
Une preuve en force 0 demande en moyenne jusqu’à 10 secondes par obligation de preuve. Pour certaines PO complexes, la preuve peut demander plusieurs minutes. Les forces supérieures mettent en oeuvre des mécanismes plus gourmands en ressources mémoire et CPU. Le temps de traitement par PO peut devenir très important.
Étant donné qu’environ 90 % des PO prouvées le sont en force 0, il est conseillé de tenter la preuve d’une PO d’abord en force 0.
Pour plus de précisions sur les forces de preuve, on se reportera au chapitre “Le choix d’une force supérieure” du Manuel utilisateur du prouveur interactif .

La commande ba (voir chapitre 4.6 page §), qui effectue le recul de la preuve, ne s’applique pas sur une commande ff.

Exemple

Soit la situation suivante :


 
    Hypothesis  
        xx: 1..10 &  
        yy: 1..10 &  
        zz: 1..100 &  
        xx+yy: 2..20  
    Goal  
        xx+yy-1: 1..100  
 
 


pour laquelle un travail de preuve interactive existe, en force(0) :


 
        Force(0) &  
          ah(xx+yy: 2..20) &  
            pr &  
            dd &  
              Next  
 


L’opérateur change la force courante du prouveur :


 
PRI> ff(1)  
Switching to Force 1  
 


La ligne de commande déjà exécutée va être rejouée dans la nouvelle force (ah(xx + yy  2..20) &  pr & dd).


 
Starting Add Hypothesis  
Starting Prover Call  
dd not applicable: Goal is not p => q  
 


Le rejeu en force différente est difficile puisque le cheminement de la preuve est a priori différent. On remarque en particulier que la commande dd ne s’applique pas.
La nouvelle ligne de commande est :


 
        Force(0) &  
          ah(xx+yy: 2..20) &  
            pr &  
            Next