Déduction directe
dd
dd(i)
avec :
d0 est équivalent à dd(0)
d1 est équivalent à dd(1)
d2 est équivalent à dd(2)
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.
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
|