[ 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 orb_false_false :
+ ∀b1,b2:bool.((or_bool b1 b2) = false) → b1 = false.
+ intros 2;
+ elim b1 0;
+ elim b2;
+ simplify in H;
+ try destruct H;
+ reflexivity.
+qed.
+
+lemma orb_false_false_r :
+ ∀b1,b2:bool.((or_bool b1 b2) = false) → b2 = false.
+ intros 2;
+ elim b1 0;
+ elim b2;
+ simplify in H;
+ try destruct H;
+ reflexivity.
+qed.
+
lemma eqbool_to_eq : ∀b1,b2:bool.(eq_bool b1 b2 = true) → (b1 = b2).
unfold eq_bool;
intros;
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 }.
lemma le_to_lt: ∀n,m. n ≤ m → n < S m.
intros;
- autobatch.
+ unfold;autobatch.
qed.
alias num (instance 0) = "natural number".
]
| elim H1; autobatch
]
- | autobatch
+ | exists;[apply (pred m);]autobatch
].
qed.