4.14 Deduction

Direct Deduction

Syntax

  dd
  dd(i)

with:

Alias

  d0 is equivalent to dd(0)
  d1 is equivalent to dd(1)
  d2 is equivalent to dd(2)

Use

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.

Example

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