Set Rewrite Rules: Difference between revisions
From Event-B
				
				
				Jump to navigationJump to search
				
				
imported>Laurent  Added rules SIMP_FINITE_UNION and SIMP_FINITE_QUNION  | 
				 Rules SIMP_{EMPTY,SINGLE}_PARTITION were implemented  | 
				||
| (35 intermediate revisions by 6 users not shown) | |||
| Line 17: | Line 17: | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||<math>  \bfalse  \limp  P \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||<math>  \bfalse  \limp  P \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||<math>  P \limp  P \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||<math>  P \limp  P \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_L}}||<math>\lnot P\limp P\;\;\defi\;\; P</math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||<math>  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_R}}||<math>P\limp\lnot P\;\;\defi\;\;\lnot P</math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||<math>  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND}}||<math>  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||<math>  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||<math>  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||<math>  P \leqv  P \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||<math>  P \leqv  P \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_MULTI_EQV_NOT}}||<math>  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV_NOT}}||<math>  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||<math>  \lnot\, \btrue  \;\;\defi\;\;  \bfalse </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||<math>  \lnot\, \btrue  \;\;\defi\;\;  \bfalse </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||<math>  \lnot\, \bfalse  \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||<math>  \lnot\, \bfalse  \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||<math>  \lnot\, \lnot\, P \;\;\defi\;\;  P </math>||  ||    | {{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||<math>  \lnot\, \lnot\, P \;\;\defi\;\;  P </math>||  ||  AM  | ||
{{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||<math>  E \neq  F \;\;\defi\;\;  \lnot\, E = F </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||<math>  E \neq  F \;\;\defi\;\;  \lnot\, E = F </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||<math>  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||<math>  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F </math>||  ||  A  | ||
| Line 39: | Line 41: | ||
{{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||<math>  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||<math>  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||<math>  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||<math>  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_IMP}}||<math>\exists x\qdot P\limp Q\;\;\defi\;\;(\forall x\qdot P)\limp(\exists x\qdot Q)</math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_FORALL}}||<math>  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) </math>|| Quantified identifiers other than <math>z</math> do not occur in <math>P</math> ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FORALL}}||<math>  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) </math>|| Quantified identifiers other than <math>z</math> do not occur in <math>P</math> ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||<math>  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) </math>|| Quantified identifiers other than <math>z</math> do not occur in <math>P</math> ||  A  | {{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||<math>  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) </math>|| Quantified identifiers other than <math>z</math> do not occur in <math>P</math> ||  A  | ||
| Line 47: | Line 50: | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||<math>  \True  = \False  \;\;\defi\;\;  \bfalse </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||<math>  \True  = \False  \;\;\defi\;\;  \bfalse </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||<math>  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||<math>  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_SING}}||<math>  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S </math>|| where <math>E</math> is a single expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_SING}}||<math>  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S </math>|| where <math>E</math> is a single expression ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||<math>  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||<math>  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||<math>  S \subseteq  S \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||<math>  S \subseteq  S \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||<math>  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||<math>  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||<math>  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||<math>  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||<math>  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S </math>||  ||    | {{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||<math>  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||<math>  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B </math>||  ||    | {{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||<math>  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B </math>||  ||  A  | ||
<!--  | <!--  | ||
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||<math>  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S </math>||  ||  A  | {{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||<math>  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S </math>||  ||  A  | ||
| Line 65: | Line 68: | ||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||<math>  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||<math>  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||<math>  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||<math>  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||<math>  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||<math>  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||<math>  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||<math>  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||<math>  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||<math>  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||<math>  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||<math>  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||<math>  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||<math>  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||<math>  S \setminus S \;\;\defi\;\;  \emptyset </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||<math>  S \setminus S \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||<math>  S \setminus \emptyset  \;\;\defi\;\;  S </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||<math>  S \setminus \emptyset  \;\;\defi\;\;  S </math>||  ||  A  | ||
| Line 75: | Line 78: | ||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||<math>  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||<math>  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||<math> \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||<math> \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|  | {{RRRow}}|*||{{Rulename|SIMP_KUNION_POW}}||<math>  \union (\pow (S)) \;\;\defi\;\;  S </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW1}}||<math>  \union (\pown (S)) \;\;\defi\;\;  S </math>||  ||  A  | |||
{{RRRow}}|||{{Rulename|SIMP_KUNION_POW1}}||<math>  \union (\pown (S)) \;\;\defi\;\;  S </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KUNION}}||<math>  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_KUNION}}||<math>  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_QUNION}}||<math>  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_QUNION}}||<math>  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KINTER}}||<math>  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_KINTER}}||<math>  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_KINTER_POW}}||<math>  \inter (\pow (S)) \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_KINTER_POW}}||<math>  \inter (\pow (S)) \;\;\defi\;\;  \emptyset </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW}}||<math>  \pow (\emptyset ) \;\;\defi\;\;  \{ \emptyset \} </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW1}}||<math>  \pown (\emptyset ) \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_R}}||<math>  S \cprod  \emptyset  \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_L}}||<math>  \emptyset  \cprod  S \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|  | {{RRRow}}|||{{Rulename|SIMP_COMPSET_EQUAL}}||<math>  \{ x, y \qdot x = E(y) \land P(y) \mid F(x, y) \}  \;\;\defi\;\;  \{ y \qdot P(y) \mid F(E(y), y) \} </math>|| where <math>x</math> non free in <math>E</math> and non free in <math>P</math> ||  A  | ||
{{RRRow}}| ||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_COMPSET_IN}}||<math>  \{  x \qdot  x \in  S \mid  x \}  \;\;\defi\;\;  S </math>|| where <math>x</math> non free in <math>S</math> ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_COMPSET_SUBSETEQ}}||<math>  \{  x \qdot  x \subseteq  S \mid  x \}  \;\;\defi\;\;  \pow (S)  </math>|| where <math>x</math> non free in <math>S</math> ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||<math>  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||<math>  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||<math>  \{  x \qdot  \btrue  \mid  E \}  \;\;\defi\;\;  \mathit{Ty} </math>|| where the type of <math>E</math> is <math>\mathit{Ty}</math> and <math>E</math> is a maplet combination of locally-bound, pairwise-distinct bound identifiers ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||<math>  \{  x \qdot  \btrue  \mid    | {{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||<math>  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S </math>|| where <math>y</math> is fresh ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||<math>  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S </math>|| where <math>y</math> is fresh   | |||
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||<math>  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F </math>|| where <math>x</math>, <math>y</math>, <math>\ldots</math> are not free in <math>F</math> ||  A  | {{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||<math>  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F </math>|| where <math>x</math>, <math>y</math>, <math>\ldots</math> are not free in <math>F</math> ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||<math>  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) </math>|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A  | {{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||<math>  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) </math>|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||<math>  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) </math>|| where <math>y</math> non free in <math>S, \{  x \qdot  P(x) \mid  x \}</math> ||    | {{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||<math>  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) </math>|| where <math>y</math> non free in <math>S, \{  x \qdot  P(x) \mid  x \}</math> ||  M  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_OVERL}}||<math>  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||<math>  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||<math>  \bool (\btrue ) \;\;\defi\;\;  \True </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||<math>  \bool (\btrue ) \;\;\defi\;\;  \True </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||<math>  \bool (\bfalse ) \;\;\defi\;\;  \False </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||<math>  \bool (\bfalse ) \;\;\defi\;\;  \False </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||<math>  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T </math>|| where <math>F</math> is a single expression ||  M  | {{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||<math>  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T </math>|| where <math>F</math> is a single expression ||  M  | ||
{{RRRow}}| ||{{Rulename|DEF_FINITE}}||<math>  \finite(S) \;\;\defi\;\;  \exists n,f\qdot   | {{RRRow}}|*||{{Rulename|DEF_FINITE}}||<math>  \finite(S) \;\;\defi\;\;  \exists n,f\qdot f\in 1\upto n \tbij S </math>||  ||  M  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||<math>  \finite (\emptyset ) \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||<math>  \finite (\emptyset ) \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||<math>  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||<math>  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||<math>  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||<math>  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||<math>  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||<math>  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||<math>  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) </math>||  ||  A  | {{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||<math>  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) </math>||  ||  A  | ||
| Line 111: | Line 110: | ||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||<math>  \finite (a \upto  b) \;\;\defi\;\;  \btrue </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||<math>  \finite (a \upto  b) \;\;\defi\;\;  \btrue </math>||  ||  A  | ||
<!-- Disabled rules (some are false, need more thinking to check which)  | <!-- Disabled rules (some are false, need more thinking to check which)  | ||
{{RRRow}}|||{{Rulename|SIMP_FINITE_UNION}}||<math>\finite(\union(S)) \;\;\defi\;\; \finite(S)\;\land\;(\forall x\qdot x\in S\limp \finite(x))</math>||  ||  M  | |||
{{RRRow}}|||{{Rulename|SIMP_FINITE_QUNION}}||<math>\finite(\Union x\qdot P\mid E) \;\;\defi\;\; \finite(\{x\qdot P\mid E\})\;\land\;(\forall x\qdot P\limp \finite(E))</math>|| this equivalence is false: for example, the union of an infinite set of empty sets is finite; the right-to-left implication is true ||  M  | |||
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||<math>  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) </math>||  ||  M  | {{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||<math>  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) </math>||  ||  M  | ||
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||<math>  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) </math>||  ||  M  | {{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||<math>  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) </math>||  ||  M  | ||
| Line 131: | Line 132: | ||
{{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||<math>  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) </math>||  ||  M  | {{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||<math>  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) </math>||  ||  M  | ||
-->  | -->  | ||
{{RRRow}}|||{{Rulename|SIMP_FINITE_ID}}||<math>  \finite (\id) \;\;\defi\;\;  \finite (S) </math>|| where <math>\id</math> has type <math>\pow(S \cprod S)</math> ||  A  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_ID}}||<math>  \finite (\id) \;\;\defi\;\;  \finite (S) </math>|| where <math>\id</math> has type <math>\pow(S \cprod S)</math> ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_ID_DOMRES}}||<math>  \finite (E \domres \id) \;\;\defi\;\;  \finite (E) </math>||  ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1}}||<math>  \finite (\prjone) \;\;\defi\;\;  \finite (S \cprod T) </math>|| where <math>\prjone</math> has type <math>\pow(S \cprod T \cprod S)</math> ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2}}||<math>  \finite (\prjtwo) \;\;\defi\;\;  \finite (S \cprod T) </math>|| where <math>\prjtwo</math> has type <math>\pow(S \cprod T \cprod T)</math> ||  A  | ||
{{RRRow}}|||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1_DOMRES}}||<math>  \finite (E \domres \prjone) \;\;\defi\;\;  \finite (E) </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|  | {{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2_DOMRES}}||<math>  \finite (E \domres \prjtwo) \;\;\defi\;\;  \finite (E) </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL}}||<math>  \finite (\nat ) \;\;\defi\;\;  \bfalse </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL1}}||<math>  \finite (\natn ) \;\;\defi\;\;  \bfalse </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_INTEGER}}||<math>  \finite (\intg ) \;\;\defi\;\;  \bfalse </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BOOL}}||<math>  \finite (\Bool ) \;\;\defi\;\;  \btrue </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_FINITE_LAMBDA}}||<math>  \finite(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\;  \finite(\{x\qdot P\mid E\} ) </math>|| where <math>E</math> is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., <math>E</math> is syntactically injective) and all identifiers bound by the comprehension set that occur in <math>F</math> also occur in <math>E</math> ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||<math>  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||<math>  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||<math>  P \leqv  \btrue  \;\;\defi\;\;  P </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||<math>  P \leqv  \btrue  \;\;\defi\;\;  P </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||<math>  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||<math>  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|DEF_SUBSET}}||<math>  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B </math>||  ||  A  | {{RRRow}}|*||{{Rulename|DEF_SUBSET}}||<math>  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||<math>  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||<math>  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse </math>||  ||  A  | ||
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||<math>   | {{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||<math>\emptyset\subset S \;\;\defi\;\;  \lnot\; S = \emptyset</math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||<math>  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | {{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||<math>  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} </math>|| where <math>\mathit{Ty}</math> is a type expression ||  A  | ||
{{RRRow}}|||{{Rulename|SIMP_MULTI_SUBSET}}||<math>  S  \subset  S \;\;\defi\;\;  \bfalse </math>||  ||  A  | {{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSET}}||<math>  S  \subset  S \;\;\defi\;\;  \bfalse </math>||  ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||<math>  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  </math>|| where <math>\operatorname{constr}</math> is a datatype constructor ||  A  | {{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||<math>  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  </math>|| where <math>\operatorname{constr}</math> is a datatype constructor ||  A  | ||
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||<math>  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse </math>|| where <math>\operatorname{constr_1}</math> and <math>\operatorname{constr_2}</math> are different datatype constructors ||  A  | {{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||<math>  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse </math>|| where <math>\operatorname{constr_1}</math> and <math>\operatorname{constr_2}</math> are different datatype constructors ||  A  | ||
| Line 165: | Line 167: | ||
{{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||<math>  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P </math>||  ||  M  | {{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||<math>  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P </math>||  ||  M  | ||
{{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||<math>  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P </math>||  ||  M  | {{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||<math>  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P </math>||  ||  M  | ||
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||<math>  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T </math>||  ||  AM  | |||
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||<math>  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T </math>||  ||    | |||
{{RRRow}}|*||{{Rulename|DEF_IN_POW}}||<math>  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S </math>||  ||  M  | {{RRRow}}|*||{{Rulename|DEF_IN_POW}}||<math>  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S </math>||  ||  M  | ||
{{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||<math>  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset </math>||  ||  M  | {{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||<math>  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset </math>||  ||  M  | ||
| Line 202: | Line 203: | ||
				\land& s_{n-1}\binter s_n = \emptyset  | 				\land& s_{n-1}\binter s_n = \emptyset  | ||
			\end{array}</math>||  ||  AM  | 			\end{array}</math>||  ||  AM  | ||
{{RRRow}}|*||{{Rulename|SIMP_EMPTY_PARTITION}}||<math>\operatorname{partition}(S)  \;\;\defi\;\;  S = \emptyset </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|SIMP_SINGLE_PARTITION}}||<math>\operatorname{partition}(S, T)  \;\;\defi\;\;  S = T </math>||  ||  A  | |||
{{RRRow}}|*||{{Rulename|DEF_EQUAL_CARD}}||<math>\operatorname{card}(S) = k \;\;\defi\;\; \exists f \qdot f \in 1..k \tbij S</math>|| also works for <math>k = \operatorname{card}(S)</math> || M  | |||
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CARD}}||<math>\operatorname{card}(S) = \operatorname{card}(T) \;\;\defi\;\; \exists f \qdot f \in S \tbij T</math>|| || M  | |||
|}  | |}  | ||
Latest revision as of 14:33, 13 April 2023
Rules that are marked with a * in the first column are implemented in the latest version of Rodin. Rules without a * are planned to be implemented in future versions. Other conventions used in these tables are described in The_Proving_Perspective_(Rodin_User_Manual)#Rewrite_Rules.
| Name | Rule | Side Condition | A/M | |
|---|---|---|---|---|
| * | SIMP_SPECIAL_AND_BTRUE  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_AND_BFALSE  | 
![]()  | 
A | |
| * | SIMP_MULTI_AND  | 
![]()  | 
A | |
| * | SIMP_MULTI_AND_NOT  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_OR_BTRUE  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_OR_BFALSE  | 
![]()  | 
A | |
| * | SIMP_MULTI_OR  | 
![]()  | 
A | |
| * | SIMP_MULTI_OR_NOT  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_IMP_BTRUE_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_IMP_BTRUE_L  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_IMP_BFALSE_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_IMP_BFALSE_L  | 
![]()  | 
A | |
| * | SIMP_MULTI_IMP  | 
![]()  | 
A | |
| * | SIMP_MULTI_IMP_NOT_L  | 
![]()  | 
A | |
| * | SIMP_MULTI_IMP_NOT_R  | 
![]()  | 
A | |
| * | SIMP_MULTI_IMP_AND  | 
![]()  | 
A | |
| * | SIMP_MULTI_IMP_AND_NOT_R  | 
![]()  | 
A | |
| * | SIMP_MULTI_IMP_AND_NOT_L  | 
![]()  | 
A | |
| * | SIMP_MULTI_EQV  | 
![]()  | 
A | |
| * | SIMP_MULTI_EQV_NOT  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_NOT_BTRUE  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_NOT_BFALSE  | 
![]()  | 
A | |
| * | SIMP_NOT_NOT  | 
![]()  | 
AM | |
| * | SIMP_NOTEQUAL  | 
![]()  | 
A | |
| * | SIMP_NOTIN  | 
![]()  | 
A | |
| * | SIMP_NOTSUBSET  | 
![]()  | 
A | |
| * | SIMP_NOTSUBSETEQ  | 
![]()  | 
A | |
| * | SIMP_NOT_LE  | 
![]()  | 
A | |
| * | SIMP_NOT_GE  | 
![]()  | 
A | |
| * | SIMP_NOT_LT  | 
![]()  | 
A | |
| * | SIMP_NOT_GT  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_NOT_EQUAL_FALSE_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_NOT_EQUAL_FALSE_L  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_NOT_EQUAL_TRUE_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_NOT_EQUAL_TRUE_L  | 
![]()  | 
A | |
| * | SIMP_FORALL_AND  | 
![]()  | 
A | |
| * | SIMP_EXISTS_OR  | 
![]()  | 
A | |
| * | SIMP_EXISTS_IMP  | 
![]()  | 
A | |
| * | SIMP_FORALL  | 
![]()  | 
Quantified identifiers other than   do not occur in ![]()  | 
A | 
| * | SIMP_EXISTS  | 
![]()  | 
Quantified identifiers other than   do not occur in ![]()  | 
A | 
| * | SIMP_MULTI_EQUAL  | 
![]()  | 
A | |
| * | SIMP_MULTI_NOTEQUAL  | 
![]()  | 
A | |
| * | SIMP_EQUAL_MAPSTO  | 
![]()  | 
A | |
| * | SIMP_EQUAL_SING  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_EQUAL_TRUE  | 
![]()  | 
A | |
| * | SIMP_TYPE_SUBSETEQ  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_SUBSETEQ_SING  | 
![]()  | 
where   is a single expression | 
A | 
| * | SIMP_SPECIAL_SUBSETEQ  | 
![]()  | 
A | |
| * | SIMP_MULTI_SUBSETEQ  | 
![]()  | 
A | |
| * | SIMP_SUBSETEQ_BUNION  | 
![]()  | 
A | |
| * | SIMP_SUBSETEQ_BINTER  | 
![]()  | 
A | |
| * | DERIV_SUBSETEQ_BUNION  | 
![]()  | 
A | |
| * | DERIV_SUBSETEQ_BINTER  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_IN  | 
![]()  | 
A | |
| * | SIMP_MULTI_IN  | 
![]()  | 
A | |
| * | SIMP_IN_SING  | 
![]()  | 
A | |
| * | SIMP_MULTI_SETENUM  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_BINTER  | 
![]()  | 
A | |
| * | SIMP_TYPE_BINTER  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_MULTI_BINTER  | 
![]()  | 
A | |
| * | SIMP_MULTI_EQUAL_BINTER  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_BUNION  | 
![]()  | 
A | |
| * | SIMP_TYPE_BUNION  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_MULTI_BUNION  | 
![]()  | 
A | |
| * | SIMP_MULTI_EQUAL_BUNION  | 
![]()  | 
A | |
| * | SIMP_MULTI_SETMINUS  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_SETMINUS_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_SETMINUS_L  | 
![]()  | 
A | |
| * | SIMP_TYPE_SETMINUS  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_TYPE_SETMINUS_SETMINUS  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_KUNION_POW  | 
![]()  | 
A | |
| * | SIMP_KUNION_POW1  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_KUNION  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_QUNION  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_KINTER  | 
![]()  | 
A | |
| * | SIMP_KINTER_POW  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_POW  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_POW1  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_CPROD_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_CPROD_L  | 
![]()  | 
A | |
SIMP_COMPSET_EQUAL  | 
![]()  | 
where   non free in   and non free in ![]()  | 
A | |
| * | SIMP_COMPSET_IN  | 
![]()  | 
where   non free in ![]()  | 
A | 
| * | SIMP_COMPSET_SUBSETEQ  | 
![]()  | 
where   non free in ![]()  | 
A | 
| * | SIMP_SPECIAL_COMPSET_BFALSE  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_COMPSET_BTRUE  | 
![]()  | 
where the type of   is   and   is a maplet combination of locally-bound, pairwise-distinct bound identifiers | 
A | 
| * | SIMP_SUBSETEQ_COMPSET_L  | 
![]()  | 
where   is fresh | 
A | 
| * | SIMP_IN_COMPSET  | 
![]()  | 
where  ,  ,   are not free in ![]()  | 
A | 
| * | SIMP_IN_COMPSET_ONEPOINT  | 
![]()  | 
Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate | A | 
SIMP_SUBSETEQ_COMPSET_R  | 
![]()  | 
where   non free in ![]()  | 
M | |
| * | SIMP_SPECIAL_OVERL  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_KBOOL_BTRUE  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_KBOOL_BFALSE  | 
![]()  | 
A | |
DISTRI_SUBSETEQ_BUNION_SING  | 
![]()  | 
where   is a single expression | 
M | |
| * | DEF_FINITE  | 
![]()  | 
M | |
| * | SIMP_SPECIAL_FINITE  | 
![]()  | 
A | |
| * | SIMP_FINITE_SETENUM  | 
![]()  | 
A | |
| * | SIMP_FINITE_BUNION  | 
![]()  | 
A | |
| * | SIMP_FINITE_POW  | 
![]()  | 
A | |
| * | DERIV_FINITE_CPROD  | 
![]()  | 
A | |
| * | SIMP_FINITE_CONVERSE  | 
![]()  | 
A | |
| * | SIMP_FINITE_UPTO  | 
![]()  | 
A | |
| * | SIMP_FINITE_ID  | 
![]()  | 
where   has type ![]()  | 
A | 
| * | SIMP_FINITE_ID_DOMRES  | 
![]()  | 
A | |
| * | SIMP_FINITE_PRJ1  | 
![]()  | 
where   has type ![]()  | 
A | 
| * | SIMP_FINITE_PRJ2  | 
![]()  | 
where   has type ![]()  | 
A | 
| * | SIMP_FINITE_PRJ1_DOMRES  | 
![]()  | 
A | |
| * | SIMP_FINITE_PRJ2_DOMRES  | 
![]()  | 
A | |
| * | SIMP_FINITE_NATURAL  | 
![]()  | 
A | |
| * | SIMP_FINITE_NATURAL1  | 
![]()  | 
A | |
| * | SIMP_FINITE_INTEGER  | 
![]()  | 
A | |
| * | SIMP_FINITE_BOOL  | 
![]()  | 
A | |
| * | SIMP_FINITE_LAMBDA  | 
![]()  | 
where   is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e.,   is syntactically injective) and all identifiers bound by the comprehension set that occur in   also occur in ![]()  | 
A | 
| * | SIMP_TYPE_IN  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_SPECIAL_EQV_BTRUE  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_EQV_BFALSE  | 
![]()  | 
A | |
| * | DEF_SUBSET  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_SUBSET_R  | 
![]()  | 
A | |
| * | SIMP_SPECIAL_SUBSET_L  | 
![]()  | 
A | |
| * | SIMP_TYPE_SUBSET_L  | 
![]()  | 
where   is a type expression | 
A | 
| * | SIMP_MULTI_SUBSET  | 
![]()  | 
A | |
| * | SIMP_EQUAL_CONSTR  | 
![]()  | 
where   is a datatype constructor | 
A | 
| * | SIMP_EQUAL_CONSTR_DIFF  | 
![]()  | 
where   and   are different datatype constructors | 
A | 
| * | SIMP_DESTR_CONSTR  | 
![]()  | 
where   is the datatype destructor for the i-th argument of datatype constructor ![]()  | 
A | 
| * | DISTRI_AND_OR  | 
![]()  | 
M | |
| * | DISTRI_OR_AND  | 
![]()  | 
M | |
| * | DEF_OR  | 
![]()  | 
M | |
| * | DERIV_IMP  | 
![]()  | 
M | |
| * | DERIV_IMP_IMP  | 
![]()  | 
M | |
| * | DISTRI_IMP_AND  | 
![]()  | 
M | |
| * | DISTRI_IMP_OR  | 
![]()  | 
M | |
| * | DEF_EQV  | 
![]()  | 
M | |
| * | DISTRI_NOT_AND  | 
![]()  | 
M | |
| * | DISTRI_NOT_OR  | 
![]()  | 
M | |
| * | DERIV_NOT_IMP  | 
![]()  | 
M | |
| * | DERIV_NOT_FORALL  | 
![]()  | 
M | |
| * | DERIV_NOT_EXISTS  | 
![]()  | 
M | |
| * | DEF_IN_MAPSTO  | 
![]()  | 
AM | |
| * | DEF_IN_POW  | 
![]()  | 
M | |
| * | DEF_IN_POW1  | 
![]()  | 
M | |
| * | DEF_SUBSETEQ  | 
![]()  | 
where   is not free in   or ![]()  | 
M | 
| * | DEF_IN_BUNION  | 
![]()  | 
M | |
| * | DEF_IN_BINTER  | 
![]()  | 
M | |
| * | DEF_IN_SETMINUS  | 
![]()  | 
M | |
| * | DEF_IN_SETENUM  | 
![]()  | 
M | |
| * | DEF_IN_KUNION  | 
![]()  | 
where   is fresh | 
M | 
| * | DEF_IN_QUNION  | 
![]()  | 
where   is fresh | 
M | 
| * | DEF_IN_KINTER  | 
![]()  | 
where   is fresh | 
M | 
| * | DEF_IN_QINTER  | 
![]()  | 
where   is fresh | 
M | 
| * | DEF_IN_UPTO  | 
![]()  | 
M | |
| * | DISTRI_BUNION_BINTER  | 
![]()  | 
M | |
| * | DISTRI_BINTER_BUNION  | 
![]()  | 
M | |
DISTRI_BINTER_SETMINUS  | 
![]()  | 
M | ||
DISTRI_SETMINUS_BUNION  | 
![]()  | 
M | ||
| * | DERIV_TYPE_SETMINUS_BINTER  | 
![]()  | 
where   is a type expression | 
M | 
| * | DERIV_TYPE_SETMINUS_BUNION  | 
![]()  | 
where   is a type expression | 
M | 
| * | DERIV_TYPE_SETMINUS_SETMINUS  | 
![]()  | 
where   is a type expression | 
M | 
DISTRI_CPROD_BINTER  | 
![]()  | 
M | ||
DISTRI_CPROD_BUNION  | 
![]()  | 
M | ||
DISTRI_CPROD_SETMINUS  | 
![]()  | 
M | ||
| * | DERIV_SUBSETEQ  | 
![]()  | 
where   is the type of   and ![]()  | 
M | 
| * | DERIV_EQUAL  | 
![]()  | 
where   is the type of   and ![]()  | 
M | 
| * | DERIV_SUBSETEQ_SETMINUS_L  | 
![]()  | 
M | |
| * | DERIV_SUBSETEQ_SETMINUS_R  | 
![]()  | 
M | |
| * | DEF_PARTITION  | 
![]()  | 
AM | |
| * | SIMP_EMPTY_PARTITION  | 
![]()  | 
A | |
| * | SIMP_SINGLE_PARTITION  | 
![]()  | 
A | |
| * | DEF_EQUAL_CARD  | 
![]()  | 
also works for ![]()  | 
M | 
| * | SIMP_EQUAL_CARD  | 
![]()  | 
M | 







































 do not occur in 







 is a type expression
 is a single expression

































 non free in 





 is fresh
 are not free in 
















 has type 


 has type 

 has type 
















 is a datatype constructor
 and 
 are different datatype constructors
 is the datatype destructor for the i-th argument of datatype constructor 






















 is fresh














 is the type of 







