Direct Deduction
dd
dd(i)
with:
d0 is equivalent to dd(0)
d1 is equivalent to dd(1)
d2 is equivalent to dd(2)
This command enables to perform a direct deduction: if the current goal is in the form P ⇒ Q, the prover then attempts the Q proof under the P hypothesis.
The P hypothesis is raised in the hypotheses stack, without using the automatic prover (especially, the simplifications are not performed) and the current goal becomes Q.
It can be interesting, in certain cases, to use dd since the automatic prover may normalise, and not according to the user’s wishes, a hypothesis added by the ah command (see chapter 4.2 page §). dd is thus sometimes used after ah to raise a new hypothesis as it is.
The argument dd(i) enables fine parameterisation of the processing of the raising hypotheses. The i parameter represents the proof force that will be used temporarily when the hypotheses are raised.
For example, dd(1) corresponds to hypotheses raised in force 1.
Given the following situation:
Hypothesis xx: 1..10 & yy: 1..10 & zz: 1..100 & Goal xx+yy-1: 1..100
|
The user wishes to add the hypothesis xx + yy : 2..20.
PRI> ah(xx+yy: 2..20) Starting Add Hypothesis
|
the hypothesis to be added must first be proved.
Goal xx+yy: 2..20
|
the user starts the automatic proof:
PRI> pr Starting Prover Call
|
the hypothesis is proved. the current goal thus becomes:
Goal xx+yy: 2..20 => xx+yy-1: 1..100
|
The command dd then enables the hypothesis xx + yy : 2..20 to be raised in the hypotheses stack.
PRI> dd Starting Deduction
|
The hypothesis has indeed been raised and the current goal is again xx + yy - 1 : 1..100.
New Hypothesis since last command xx+yy: 2..20 Goal xx+yy-1: 1..100
|