(* *)
(**************************************************************************)
-set "baseuri" "cic:/matita/datatypes/bool/".
-
include "logic/equality.ma".
+include "higher_order_defs/functions.ma".
inductive bool : Set \def
| true : bool
change with
match true with
[ true \Rightarrow False
-| flase \Rightarrow True].
+| false \Rightarrow True].
rewrite > H.simplify.exact I.
qed.
match b with
[ true \Rightarrow false
| false \Rightarrow true ].
-
+
+(* FG: interpretation right after definition *)
+interpretation "boolean not" 'not x = (notb x).
+
theorem notb_elim: \forall b:bool.\forall P:bool \to Prop.
match b with
[ true \Rightarrow P false
intros 2.elim b.exact H. exact H.
qed.
-(*CSC: the URI must disappear: there is a bug now *)
-interpretation "boolean not" 'not x = (cic:/matita/datatypes/bool/notb.con x).
+theorem notb_notb: \forall b:bool. notb (notb b) = b.
+intros.
+elim b;reflexivity.
+qed.
+
+theorem injective_notb: injective bool bool notb.
+unfold injective.
+intros.
+rewrite < notb_notb.
+rewrite < (notb_notb y).
+apply eq_f.
+assumption.
+qed.
definition andb : bool \to bool \to bool\def
\lambda b1,b2:bool.
[ true \Rightarrow b2
| false \Rightarrow false ].
-(*CSC: the URI must disappear: there is a bug now *)
-interpretation "boolean and" 'and x y = (cic:/matita/datatypes/bool/andb.con x y).
+interpretation "boolean and" 'and x y = (andb x y).
theorem andb_elim: \forall b1,b2:bool. \forall P:bool \to Prop.
match b1 with
intros 3.elim b1.exact H. exact H.
qed.
+theorem and_true: \forall a,b:bool.
+andb a b =true \to a =true \land b= true.
+intro.elim a
+ [split
+ [reflexivity|assumption]
+ |apply False_ind.
+ apply not_eq_true_false.
+ apply sym_eq.
+ assumption
+ ]
+qed.
+
theorem andb_true_true: \forall b1,b2. (b1 \land b2) = true \to b1 = true.
intro. elim b1.
reflexivity.
[ true \Rightarrow true
| false \Rightarrow b2].
+(* FG: interpretation right after definition *)
+interpretation "boolean or" 'or x y = (orb x y).
+
theorem orb_elim: \forall b1,b2:bool. \forall P:bool \to Prop.
match b1 with
[ true \Rightarrow P true
intros 3.elim b1.exact H. exact H.
qed.
-(*CSC: the URI must disappear: there is a bug now *)
-interpretation "boolean or" 'or x y = (cic:/matita/datatypes/bool/orb.con x y).
-
definition if_then_else : bool \to Prop \to Prop \to Prop \def
\lambda b:bool.\lambda P,Q:Prop.
match b with
rewrite > H.
rewrite > H1.
reflexivity.
-qed.
\ No newline at end of file
+qed.