4.14 Deduction

Déduction directe

Syntaxe

  dd
  dd(i)
avec :

Alias

  d0 est équivalent à dd(0)
  d1 est équivalent à dd(1)
  d2 est équivalent à dd(2)

Utilisation

Cette commande permet de réaliser une déduction directe : si le but courant est de la forme P Q, alors le prouveur tente la preuve de Q sous l’hypothèse P.
L’hypothèse P est montée dans la pile des hypothèses, sans passer par le prouveur automatique (en particulier, les simplifications ne sont pas effectuées) et le but courant devient Q.
Il peut être intéressant, dans certains cas, d’utiliser dd car le prouveur automatique peut normaliser, d’une manière non souhaitée par l’opérateur, une hypothèse ajoutée par la commande ah(voir chapitre 4.2 page §).
dd est donc parfois utilisé après ah pour faire monter la nouvelle hypothèse telle quelle.

L’argument de dd(i) permet de paramétrer finement les traitements qui sont réalisés sur les hypothèses montantes. Le paramètre i représente la force de preuve utilisée temporairement pendant la montée des hypothèses.
Par exemple, dd(1) correspond à la montée des hypothèses en force 1.

Exemple

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.


 
PRI> ah(xx+yy: 2..20)  
Starting Add Hypothesis  
 


L’hypothèse à ajouter doit d’abord être prouvée.


 
    Goal  
        xx+yy: 2..20  
 
 


L’opérateur lance le coeur de preuve :


 
PRI> pr  
Starting Prover Call  
 


L’hypothèse est prouvée. Le but courant devient donc :


 
    Goal  
        xx+yy: 2..20  => xx+yy-1: 1..100  
 


La commande dd permet alors de faire monter l’hypothèse xx + yy : 2..20 dans la pile des hypothèses.


 
PRI> dd  
Starting Deduction  


L’hypothèse a effectivement été montée et le but courant est à nouveau xx + yy - 1 : 1..100.


 
    New Hypothesis since last command  
        xx+yy: 2..20  
    Goal  
        xx+yy-1: 1..100