X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Flibrary%2Fdatatypes%2Fbool.ma;h=a223d7d0c9333c27b77e328b253e19229fe319f1;hb=aeb7f0539398561dc84cadf38df14a051dd1ba75;hp=fdb376c605b80b54d4d1a5f8a612aaf8c714f454;hpb=244d65f63ca6a736b871f9f91328fe8c5524ff05;p=helm.git diff --git a/helm/matita/library/datatypes/bool.ma b/helm/matita/library/datatypes/bool.ma index fdb376c60..a223d7d0c 100644 --- a/helm/matita/library/datatypes/bool.ma +++ b/helm/matita/library/datatypes/bool.ma @@ -12,34 +12,75 @@ (* *) (**************************************************************************) -set "baseuri" "cic:/matita/bool/". +set "baseuri" "cic:/matita/datatypes/bool/". + +include "logic/equality.ma". inductive bool : Set \def | true : bool | false : bool. + +theorem not_eq_true_false : true \neq false. +simplify.intro. +change with +match true with +[ true \Rightarrow False +| flase \Rightarrow True]. +rewrite > H.simplify.exact I. +qed. definition notb : bool \to bool \def \lambda b:bool. match b with [ true \Rightarrow false | false \Rightarrow true ]. + +theorem notb_elim: \forall b:bool.\forall P:bool \to Prop. +match b with +[ true \Rightarrow P false +| false \Rightarrow P true] \to P (notb b). +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). definition andb : bool \to bool \to bool\def \lambda b1,b2:bool. match b1 with - [ true \Rightarrow - match b2 with [true \Rightarrow true | false \Rightarrow false] + [ true \Rightarrow b2 | false \Rightarrow false ]. +theorem andb_elim: \forall b1,b2:bool. \forall P:bool \to Prop. +match b1 with +[ true \Rightarrow P b2 +| false \Rightarrow P false] \to P (andb b1 b2). +intros 3.elim b1.exact H. exact H. +qed. + +(*CSC: the URI must disappear: there is a bug now *) +interpretation "boolean and" 'and x y = (cic:/matita/datatypes/bool/andb.con x y). + definition orb : bool \to bool \to bool\def \lambda b1,b2:bool. match b1 with - [ true \Rightarrow - match b2 with [true \Rightarrow true | false \Rightarrow false] - | false \Rightarrow false ]. + [ true \Rightarrow true + | false \Rightarrow b2]. + +theorem orb_elim: \forall b1,b2:bool. \forall P:bool \to Prop. +match b1 with +[ true \Rightarrow P true +| false \Rightarrow P b2] \to P (orb b1 b2). +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 [ true \Rightarrow P | false \Rightarrow Q]. + +(*CSC: missing notation for if_then_else *)