]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/contribs/assembly/freescale/extra.ma
- setters for data structures now support "commuting conversion"-like
[helm.git] / helm / software / matita / contribs / assembly / freescale / extra.ma
index 25e0cb6fab5fe0f00cb7edf9d5d6419d9ce63fc3..f683ecf8fa42e271a7a252c04a3d0ce507ffcb7c 100644 (file)
@@ -54,6 +54,30 @@ definition eq_bool ≝
  [ true ⇒ b2
  | false ⇒ not_bool b2 ].
 
+lemma eqbool_switch : ∀b1,b2.eq_bool b1 b2 = eq_bool b2 b1.
+ do 2 intro;
+ elim b1; elim b2;
+ reflexivity.
+qed.
+
+lemma andbool_switch : ∀b1,b2.and_bool b1 b2 = and_bool b2 b1.
+ do 2 intro;
+ elim b1; elim b2;
+ reflexivity.
+qed.
+
+lemma orbool_switch : ∀b1,b2.or_bool b1 b2 = or_bool b2 b1.
+ do 2 intro;
+ elim b1; elim b2;
+ reflexivity.
+qed.
+
+lemma xorbool_switch : ∀b1,b2.xor_bool b1 b2 = xor_bool b2 b1.
+ do 2 intro;
+ elim b1; elim b2;
+ reflexivity.
+qed.
+
 lemma eqbool_to_eq : ∀b1,b2:bool.(eq_bool b1 b2 = true) → (b1 = b2).
  unfold eq_bool;
  intros;
@@ -64,6 +88,16 @@ lemma eqbool_to_eq : ∀b1,b2:bool.(eq_bool b1 b2 = true) → (b1 = b2).
  destruct H.
 qed.
 
+lemma eq_to_eqbool : ∀b1,b2.b1 = b2 → eq_bool b1 b2 = true.
+ do 2 intro;
+ elim b1 0;
+ elim b2 0;
+ intro;
+ normalize in H:(%);
+ try destruct H;
+ reflexivity.
+qed.
+
 (* \ominus *)
 notation "hvbox(⊖ a)" non associative with precedence 36
  for @{ 'not_bool $a }.