4.32 Mono Lemma Prover

Call of mono lemma prover

Syntax

  ml
  ml(t)
  ml(rp.n)
  ml(rp.n|t)
  ml(rp(f))
  ml(rp(f)|t)
  ml(ff(l))
   ml(ff(l)|t)
  ml(ff(l)|rp.n)
  ml(ff(l)|rp.n|t)
  ml(ff(l)|rp(f))
  ml(ff(l)|rp(f)|t)

with:

Use

This command enables to use the mono lemma prover on the current goal. The mono lemma prover works just like the automatic prover except that it processes hypotheses differently.

This function can be used in the three following modes:

  1. First mode applies the mono lemma prover to the goal and all the current hypotheses.
  2. Second mode applies the mono lemma prover to the goal and the hypotheses of the reduced proof obligation. The selected hypotheses are the same as those returned by rp(see chapter 4.42 page §).
  3. Third mode applies the mono lemma prover to the goal and to the hypotheses that meet the criteria given by parameter f. For instance, ml(rp(sees+loc+inv)) enables to proceed the goal proof under the assertions and invariants of seen and used machines, the local hypotheses and the component invariant.

In the three modes, the mono lemma prover is invoked with a time-out. If this time-out is not specified by the user, it is set to 60 seconds.

When proof is replayed in automatic mode, calls to the mono lemma prover are done with a time-out specified by the Time_Out resource given in the resource file of Atelier B (300 seconds by default).

To finish with, we can configure the proof force with the ff(l) argument. Proof will be attempted with successively each of the listed forces until proof succeeds or the list is exhausted.

Example

The mono lemma prover can be applied to the whole proof obligation (we suppose that the current force is 0):


 
PRI> ml  
Starting Mono Lemma Prover Call  
Proved by the Mono Lemma Prover  
with force 0  
 


or to the reduced proof obligation. This option is used when the proof obligation has many hypotheses:


 
PRI> ml(rp.1 | 5)  
Starting Mono Lemma Prover Call  
Proved by the Mono Lemma Prover  
with force 0  
 


Proof may be attempted with more selected hypotheses, but it may not succeed anymore.


 
PRI> ml(rp.5 | 10)  
Starting Mono Lemma Prover Call  
The Mono Lemma Prover failed to prove the current goal  
 


The mono lemma prover can be used to prove a given proof obligation or a sub-goal. So it can be involved in a proof strategy by using it in the te (see chapter 4.54 page §) command body.

Below it is used on reduced proof oblligations (1 iteration) with a time-out of 10 seconds.


 
PRI> te(ml(rp.1 | 10), Replace.Gen.All)  
 


The prover may be used also with a list of forces to attempt. We go through the list of forces until one of them enables to achieve the proof. Here goal is discharged by force 1, we thus do not try force 3.


 
PRI> ml(ff(0;1;3) | rp.0 | 50)  
Starting Mono Lemma Prover Call  
Proved by the Mono Lemma Prover  
with force 1