Improved WD Lemma Generation: Difference between revisions

From Event-B
Jump to navigationJump to search
imported>Desaperh
mNo edit summary
imported>Desaperh
mNo edit summary
Line 16: Line 16:
The well-definedness lemma generated for predicate <math> \exists x.x=a\div b </math> is  
The well-definedness lemma generated for predicate <math> \exists x.x=a\div b </math> is  


  <math> \forall x.\lnot b </math>
  <math> \forall x.\lnot b=0 </math>


This predicate is sub-optimal as <math> \forall x </math> is unneccesary.
This predicate is sub-optimal as <math> \forall x </math> is unneccesary.
   
   
[[Category:Developer documentation]]
[[Category:Developer documentation]]

Revision as of 14:58, 21 April 2010

This page describes work in progress for optimising well-definedness lemmas generated by the Core Rodin platform.

Motivating examples

With Rodin 1.3, the well-definedness lemma generated for predicate f(x) = f(y) is

f\in S\pfun T\land x\in\dom(f)\land f\in S\pfun T\land y\in\dom(f)

This predicate is sub-optimal as it contains twice the same sub-predicate (f\in S\pfun T). Consequently, when the prover is fed with the generated lemma, it will have to prove twice the same goal.


The well-definedness lemma generated for predicate  x \div y=5 \land \lnot x \div y=3 is

 \lnot y=0 \land (x\div y=5 \limp \lnot y=0)  

This predicate is sub-optimal as the sub-predicate  x\div y=5 \limp \lnot y=0 is subsumed by the sub-predicate  \lnot y=0 . The prover doesn't need to prove  x\div y=5 \limp \lnot y=0 if  \lnot y=0 has been proved.


The well-definedness lemma generated for predicate  \exists x.x=a\div b is

 \forall x.\lnot b=0 

This predicate is sub-optimal as  \forall x is unneccesary.