X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2Fng_assembly%2Ffreescale%2Fbool_lemmas.ma;fp=helm%2Fsoftware%2Fmatita%2Fcontribs%2Fng_assembly%2Ffreescale%2Fbool_lemmas.ma;h=5c08f23f34a377db04f3fb540f1ee581965e5be6;hb=55274856efac172aba293d4216fdc659d07a89d7;hp=0000000000000000000000000000000000000000;hpb=5e3174ab11d8a4e4779d561cd48227a050a0d1a2;p=helm.git diff --git a/helm/software/matita/contribs/ng_assembly/freescale/bool_lemmas.ma b/helm/software/matita/contribs/ng_assembly/freescale/bool_lemmas.ma new file mode 100755 index 000000000..5c08f23f3 --- /dev/null +++ b/helm/software/matita/contribs/ng_assembly/freescale/bool_lemmas.ma @@ -0,0 +1,153 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +(* ********************************************************************** *) +(* Progetto FreeScale *) +(* *) +(* Sviluppato da: *) +(* Cosimo Oliboni, oliboni@cs.unibo.it *) +(* *) +(* Questo materiale fa parte della tesi: *) +(* "Formalizzazione Interattiva dei Microcontroller a 8bit FreeScale" *) +(* *) +(* data ultima modifica 15/11/2007 *) +(* ********************************************************************** *) + +include "freescale/theory.ma". +include "freescale/bool.ma". + +(* ******** *) +(* BOOLEANI *) +(* ******** *) + +ndefinition boolRelation : Type → Type ≝ +λA:Type.A → A → bool. + +ndefinition boolSymmetric: ∀A:Type.∀R:boolRelation A.Prop ≝ +λA.λR.∀x,y:A.R x y = R y x. + +ntheorem bool_destruct_true_false : true ≠ false. + nnormalize; + #H; + nchange with (match true with [ true ⇒ False | false ⇒ True]); + nrewrite > H; + nnormalize; + napply I. +nqed. + +ntheorem bool_destruct_false_true : false ≠ true. + nnormalize; + #H; + nchange with (match true with [ true ⇒ False | false ⇒ True]); + nrewrite < H; + nnormalize; + napply I. +nqed. + +nlemma bsymmetric_eqbool : boolSymmetric bool eq_bool. + nnormalize; + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + napply (refl_eq ??). +nqed. + +nlemma bsymmetric_andbool : boolSymmetric bool and_bool. + nnormalize; + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + napply (refl_eq ??). +nqed. + +nlemma bsymmetric_orbool : boolSymmetric bool or_bool. + nnormalize; + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + napply (refl_eq ??). +nqed. + +nlemma bsymmetric_xorbool : boolSymmetric bool xor_bool. + nnormalize; + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + napply (refl_eq ??). +nqed. + +nlemma eqbool_to_eq : ∀b1,b2:bool.(eq_bool b1 b2 = true) → (b1 = b2). + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + #H; + ##[ ##2,3: nelim (bool_destruct_false_true H) ##] + napply (refl_eq ??). +nqed. + +nlemma eq_to_eqbool : ∀b1,b2.b1 = b2 → eq_bool b1 b2 = true. + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + #H; + ##[ ##2: nelim (bool_destruct_true_false H) + ##| ##3: nelim (bool_destruct_false_true H) ##] + napply (refl_eq ??). +nqed. + +nlemma andb_true_true: ∀b1,b2.(b1 ⊗ b2) = true → b1 = true. + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + #H; + ##[ ##3,4: nelim (bool_destruct_false_true H) ##] + napply (refl_eq ??). +nqed. + +nlemma andb_true_true_r: ∀b1,b2.(b1 ⊗ b2) = true → b2 = true. + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + #H; + ##[ ##2,3,4: nelim (bool_destruct_false_true H) ##] + napply (refl_eq ??). +nqed. + +nlemma orb_false_false : ∀b1,b2:bool.(b1 ⊕ b2) = false → b1 = false. + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + #H; + ##[ ##1,2: nelim (bool_destruct_true_false H) ##] + napply (refl_eq ??). +nqed. + +nlemma orb_false_false_r : ∀b1,b2:bool.(b1 ⊕ b2) = false → b2 = false. + #b1; #b2; + nelim b1; + nelim b2; + nnormalize; + #H; + ##[ ##1,3: nelim (bool_destruct_true_false H) ##] + napply (refl_eq ??). +nqed.