From: Cosimo Oliboni Date: Tue, 11 Aug 2009 02:30:12 +0000 (+0000) Subject: freescale porting, work in progress X-Git-Tag: make_still_working~3554 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=9dc61a4f11210bccf34f63f48968afca4261c1b4;p=helm.git freescale porting, work in progress --- diff --git a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas.ma b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas.ma new file mode 100755 index 000000000..0d10de49d --- /dev/null +++ b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas.ma @@ -0,0 +1,181 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) +(* Ultima modifica: 05/08/2009 *) +(* *) +(* ********************************************************************** *) + +include "common/ascii.ma". +include "num/bool_lemmas.ma". + +(* ************************** *) +(* DEFINIZIONE ASCII MINIMALE *) +(* ************************** *) + +ndefinition ascii_destruct_aux ≝ +Πc1,c2.ΠP:Prop.c1 = c2 → + match eq_ascii c1 c2 with [ true ⇒ P → P | false ⇒ P ]. + +nlemma ascii_destruct : ascii_destruct_aux. + #c1; #c2; #P; #H; + nrewrite < H; + nelim c1; + nnormalize; + napply (λx.x). +nqed. + +nlemma eq_to_eqascii : ∀n1,n2.n1 = n2 → eq_ascii n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; + nelim n2; + nnormalize; + napply refl_eq. +nqed. + +nlemma neqascii_to_neq : ∀n1,n2.eq_ascii n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_ascii n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqascii n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) + ##] +nqed. + +nlemma eqascii_to_eq1 : ∀a2.eq_ascii ch_0 a2 = true → ch_0 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##1: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq2 : ∀a2.eq_ascii ch_1 a2 = true → ch_1 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##2: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq3 : ∀a2.eq_ascii ch_2 a2 = true → ch_2 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##3: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq4 : ∀a2.eq_ascii ch_3 a2 = true → ch_3 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##4: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq5 : ∀a2.eq_ascii ch_4 a2 = true → ch_4 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##5: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq6 : ∀a2.eq_ascii ch_5 a2 = true → ch_5 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##6: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq7 : ∀a2.eq_ascii ch_6 a2 = true → ch_6 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##7: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq8 : ∀a2.eq_ascii ch_7 a2 = true → ch_7 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##8: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq9 : ∀a2.eq_ascii ch_8 a2 = true → ch_8 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##9: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq10 : ∀a2.eq_ascii ch_9 a2 = true → ch_9 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##10: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq11 : ∀a2.eq_ascii ch__ a2 = true → ch__ = a2. #a2; ncases a2; nnormalize; #H; ##[ ##11: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq12 : ∀a2.eq_ascii ch_A a2 = true → ch_A = a2. #a2; ncases a2; nnormalize; #H; ##[ ##12: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq13 : ∀a2.eq_ascii ch_B a2 = true → ch_B = a2. #a2; ncases a2; nnormalize; #H; ##[ ##13: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq14 : ∀a2.eq_ascii ch_C a2 = true → ch_C = a2. #a2; ncases a2; nnormalize; #H; ##[ ##14: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq15 : ∀a2.eq_ascii ch_D a2 = true → ch_D = a2. #a2; ncases a2; nnormalize; #H; ##[ ##15: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq16 : ∀a2.eq_ascii ch_E a2 = true → ch_E = a2. #a2; ncases a2; nnormalize; #H; ##[ ##16: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq17 : ∀a2.eq_ascii ch_F a2 = true → ch_F = a2. #a2; ncases a2; nnormalize; #H; ##[ ##17: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq18 : ∀a2.eq_ascii ch_G a2 = true → ch_G = a2. #a2; ncases a2; nnormalize; #H; ##[ ##18: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq19 : ∀a2.eq_ascii ch_H a2 = true → ch_H = a2. #a2; ncases a2; nnormalize; #H; ##[ ##19: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq20 : ∀a2.eq_ascii ch_I a2 = true → ch_I = a2. #a2; ncases a2; nnormalize; #H; ##[ ##20: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq21 : ∀a2.eq_ascii ch_J a2 = true → ch_J = a2. #a2; ncases a2; nnormalize; #H; ##[ ##21: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq22 : ∀a2.eq_ascii ch_K a2 = true → ch_K = a2. #a2; ncases a2; nnormalize; #H; ##[ ##22: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq23 : ∀a2.eq_ascii ch_L a2 = true → ch_L = a2. #a2; ncases a2; nnormalize; #H; ##[ ##23: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq24 : ∀a2.eq_ascii ch_M a2 = true → ch_M = a2. #a2; ncases a2; nnormalize; #H; ##[ ##24: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq25 : ∀a2.eq_ascii ch_N a2 = true → ch_N = a2. #a2; ncases a2; nnormalize; #H; ##[ ##25: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq26 : ∀a2.eq_ascii ch_O a2 = true → ch_O = a2. #a2; ncases a2; nnormalize; #H; ##[ ##26: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq27 : ∀a2.eq_ascii ch_P a2 = true → ch_P = a2. #a2; ncases a2; nnormalize; #H; ##[ ##27: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq28 : ∀a2.eq_ascii ch_Q a2 = true → ch_Q = a2. #a2; ncases a2; nnormalize; #H; ##[ ##28: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq29 : ∀a2.eq_ascii ch_R a2 = true → ch_R = a2. #a2; ncases a2; nnormalize; #H; ##[ ##29: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq30 : ∀a2.eq_ascii ch_S a2 = true → ch_S = a2. #a2; ncases a2; nnormalize; #H; ##[ ##30: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq31 : ∀a2.eq_ascii ch_T a2 = true → ch_T = a2. #a2; ncases a2; nnormalize; #H; ##[ ##31: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq32 : ∀a2.eq_ascii ch_U a2 = true → ch_U = a2. #a2; ncases a2; nnormalize; #H; ##[ ##32: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq33 : ∀a2.eq_ascii ch_V a2 = true → ch_V = a2. #a2; ncases a2; nnormalize; #H; ##[ ##33: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq34 : ∀a2.eq_ascii ch_W a2 = true → ch_W = a2. #a2; ncases a2; nnormalize; #H; ##[ ##34: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq35 : ∀a2.eq_ascii ch_X a2 = true → ch_X = a2. #a2; ncases a2; nnormalize; #H; ##[ ##35: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq36 : ∀a2.eq_ascii ch_Y a2 = true → ch_Y = a2. #a2; ncases a2; nnormalize; #H; ##[ ##36: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq37 : ∀a2.eq_ascii ch_Z a2 = true → ch_Z = a2. #a2; ncases a2; nnormalize; #H; ##[ ##37: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq38 : ∀a2.eq_ascii ch_a a2 = true → ch_a = a2. #a2; ncases a2; nnormalize; #H; ##[ ##38: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq39 : ∀a2.eq_ascii ch_b a2 = true → ch_b = a2. #a2; ncases a2; nnormalize; #H; ##[ ##39: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq40 : ∀a2.eq_ascii ch_c a2 = true → ch_c = a2. #a2; ncases a2; nnormalize; #H; ##[ ##40: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq41 : ∀a2.eq_ascii ch_d a2 = true → ch_d = a2. #a2; ncases a2; nnormalize; #H; ##[ ##41: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq42 : ∀a2.eq_ascii ch_e a2 = true → ch_e = a2. #a2; ncases a2; nnormalize; #H; ##[ ##42: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq43 : ∀a2.eq_ascii ch_f a2 = true → ch_f = a2. #a2; ncases a2; nnormalize; #H; ##[ ##43: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq44 : ∀a2.eq_ascii ch_g a2 = true → ch_g = a2. #a2; ncases a2; nnormalize; #H; ##[ ##44: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq45 : ∀a2.eq_ascii ch_h a2 = true → ch_h = a2. #a2; ncases a2; nnormalize; #H; ##[ ##45: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq46 : ∀a2.eq_ascii ch_i a2 = true → ch_i = a2. #a2; ncases a2; nnormalize; #H; ##[ ##46: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq47 : ∀a2.eq_ascii ch_j a2 = true → ch_j = a2. #a2; ncases a2; nnormalize; #H; ##[ ##47: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq48 : ∀a2.eq_ascii ch_k a2 = true → ch_k = a2. #a2; ncases a2; nnormalize; #H; ##[ ##48: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq49 : ∀a2.eq_ascii ch_l a2 = true → ch_l = a2. #a2; ncases a2; nnormalize; #H; ##[ ##49: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq50 : ∀a2.eq_ascii ch_m a2 = true → ch_m = a2. #a2; ncases a2; nnormalize; #H; ##[ ##50: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq51 : ∀a2.eq_ascii ch_n a2 = true → ch_n = a2. #a2; ncases a2; nnormalize; #H; ##[ ##51: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq52 : ∀a2.eq_ascii ch_o a2 = true → ch_o = a2. #a2; ncases a2; nnormalize; #H; ##[ ##52: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq53 : ∀a2.eq_ascii ch_p a2 = true → ch_p = a2. #a2; ncases a2; nnormalize; #H; ##[ ##53: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq54 : ∀a2.eq_ascii ch_q a2 = true → ch_q = a2. #a2; ncases a2; nnormalize; #H; ##[ ##54: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq55 : ∀a2.eq_ascii ch_r a2 = true → ch_r = a2. #a2; ncases a2; nnormalize; #H; ##[ ##55: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq56 : ∀a2.eq_ascii ch_s a2 = true → ch_s = a2. #a2; ncases a2; nnormalize; #H; ##[ ##56: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq57 : ∀a2.eq_ascii ch_t a2 = true → ch_t = a2. #a2; ncases a2; nnormalize; #H; ##[ ##57: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq58 : ∀a2.eq_ascii ch_u a2 = true → ch_u = a2. #a2; ncases a2; nnormalize; #H; ##[ ##58: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq59 : ∀a2.eq_ascii ch_v a2 = true → ch_v = a2. #a2; ncases a2; nnormalize; #H; ##[ ##59: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq60 : ∀a2.eq_ascii ch_w a2 = true → ch_w = a2. #a2; ncases a2; nnormalize; #H; ##[ ##60: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq61 : ∀a2.eq_ascii ch_x a2 = true → ch_x = a2. #a2; ncases a2; nnormalize; #H; ##[ ##61: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq62 : ∀a2.eq_ascii ch_y a2 = true → ch_y = a2. #a2; ncases a2; nnormalize; #H; ##[ ##62: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqascii_to_eq63 : ∀a2.eq_ascii ch_z a2 = true → ch_z = a2. #a2; ncases a2; nnormalize; #H; ##[ ##63: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. + +nlemma eqascii_to_eq : ∀c1,c2.eq_ascii c1 c2 = true → c1 = c2. + #c1; ncases c1; + ##[ ##1: napply eqascii_to_eq1 ##| ##2: napply eqascii_to_eq2 + ##| ##3: napply eqascii_to_eq3 ##| ##4: napply eqascii_to_eq4 + ##| ##5: napply eqascii_to_eq5 ##| ##6: napply eqascii_to_eq6 + ##| ##7: napply eqascii_to_eq7 ##| ##8: napply eqascii_to_eq8 + ##| ##9: napply eqascii_to_eq9 ##| ##10: napply eqascii_to_eq10 + ##| ##11: napply eqascii_to_eq11 ##| ##12: napply eqascii_to_eq12 + ##| ##13: napply eqascii_to_eq13 ##| ##14: napply eqascii_to_eq14 + ##| ##15: napply eqascii_to_eq15 ##| ##16: napply eqascii_to_eq16 + ##| ##17: napply eqascii_to_eq17 ##| ##18: napply eqascii_to_eq18 + ##| ##19: napply eqascii_to_eq19 ##| ##20: napply eqascii_to_eq20 + ##| ##21: napply eqascii_to_eq21 ##| ##22: napply eqascii_to_eq22 + ##| ##23: napply eqascii_to_eq23 ##| ##24: napply eqascii_to_eq24 + ##| ##25: napply eqascii_to_eq25 ##| ##26: napply eqascii_to_eq26 + ##| ##27: napply eqascii_to_eq27 ##| ##28: napply eqascii_to_eq28 + ##| ##29: napply eqascii_to_eq29 ##| ##30: napply eqascii_to_eq30 + ##| ##31: napply eqascii_to_eq31 ##| ##32: napply eqascii_to_eq32 + ##| ##33: napply eqascii_to_eq33 ##| ##34: napply eqascii_to_eq34 + ##| ##35: napply eqascii_to_eq35 ##| ##36: napply eqascii_to_eq36 + ##| ##37: napply eqascii_to_eq37 ##| ##38: napply eqascii_to_eq38 + ##| ##39: napply eqascii_to_eq39 ##| ##40: napply eqascii_to_eq40 + ##| ##41: napply eqascii_to_eq41 ##| ##42: napply eqascii_to_eq42 + ##| ##43: napply eqascii_to_eq43 ##| ##44: napply eqascii_to_eq44 + ##| ##45: napply eqascii_to_eq45 ##| ##46: napply eqascii_to_eq46 + ##| ##47: napply eqascii_to_eq47 ##| ##48: napply eqascii_to_eq48 + ##| ##49: napply eqascii_to_eq49 ##| ##50: napply eqascii_to_eq50 + ##| ##51: napply eqascii_to_eq51 ##| ##52: napply eqascii_to_eq52 + ##| ##53: napply eqascii_to_eq53 ##| ##54: napply eqascii_to_eq54 + ##| ##55: napply eqascii_to_eq55 ##| ##56: napply eqascii_to_eq56 + ##| ##57: napply eqascii_to_eq57 ##| ##58: napply eqascii_to_eq58 + ##| ##59: napply eqascii_to_eq59 ##| ##60: napply eqascii_to_eq60 + ##| ##61: napply eqascii_to_eq61 ##| ##62: napply eqascii_to_eq62 + ##| ##63: napply eqascii_to_eq63 ##] +nqed. + +nlemma neq_to_neqascii : ∀n1,n2.n1 ≠ n2 → eq_ascii n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_ascii n1 n2)); + napply (not_to_not (eq_ascii n1 n2 = true) (n1 = n2) ? H); + napply (eqascii_to_eq n1 n2). +nqed. + +nlemma decidable_ascii : ∀x,y:ascii.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_ascii x y = true) (eq_ascii x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqascii_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqascii_to_neq … H)) + ##] +nqed. + +nlemma symmetric_eqascii : symmetricT ascii bool eq_ascii. + #n1; #n2; + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_ascii n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqascii n1 n2 H); + napply (symmetric_eq ? (eq_ascii n2 n1) false); + napply (neq_to_neqascii n2 n1 (symmetric_neq ? n1 n2 H)) + ##] +nqed. diff --git a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas1.ma b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas1.ma deleted file mode 100755 index 3a5c00ab2..000000000 --- a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas1.ma +++ /dev/null @@ -1,39 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "common/ascii.ma". - -(* ************************** *) -(* DEFINIZIONE ASCII MINIMALE *) -(* ************************** *) - -ndefinition ascii_destruct_aux ≝ -Πc1,c2.ΠP:Prop.c1 = c2 → - match eq_ascii c1 c2 with [ true ⇒ P → P | false ⇒ P ]. - -nlemma ascii_destruct : ascii_destruct_aux. - #c1; #c2; #P; #H; - nrewrite < H; - nelim c1; - nnormalize; - napply (λx.x). -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas2.ma b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas2.ma deleted file mode 100755 index e7cbe0e4c..000000000 --- a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas2.ma +++ /dev/null @@ -1,328 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "common/ascii_lemmas1.ma". -include "num/bool_lemmas.ma". - -(* ************************** *) -(* DEFINIZIONE ASCII MINIMALE *) -(* ************************** *) - -nlemma symmetric_eqascii1 : ∀a2.eq_ascii ch_0 a2 = eq_ascii a2 ch_0. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii2 : ∀a2.eq_ascii ch_1 a2 = eq_ascii a2 ch_1. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii3 : ∀a2.eq_ascii ch_2 a2 = eq_ascii a2 ch_2. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii4 : ∀a2.eq_ascii ch_3 a2 = eq_ascii a2 ch_3. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii5 : ∀a2.eq_ascii ch_4 a2 = eq_ascii a2 ch_4. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii6 : ∀a2.eq_ascii ch_5 a2 = eq_ascii a2 ch_5. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii7 : ∀a2.eq_ascii ch_6 a2 = eq_ascii a2 ch_6. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii8 : ∀a2.eq_ascii ch_7 a2 = eq_ascii a2 ch_7. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii9 : ∀a2.eq_ascii ch_8 a2 = eq_ascii a2 ch_8. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii10 : ∀a2.eq_ascii ch_9 a2 = eq_ascii a2 ch_9. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii11 : ∀a2.eq_ascii ch__ a2 = eq_ascii a2 ch__. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii12 : ∀a2.eq_ascii ch_A a2 = eq_ascii a2 ch_A. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii13 : ∀a2.eq_ascii ch_B a2 = eq_ascii a2 ch_B. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii14 : ∀a2.eq_ascii ch_C a2 = eq_ascii a2 ch_C. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii15 : ∀a2.eq_ascii ch_D a2 = eq_ascii a2 ch_D. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii16 : ∀a2.eq_ascii ch_E a2 = eq_ascii a2 ch_E. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii17 : ∀a2.eq_ascii ch_F a2 = eq_ascii a2 ch_F. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii18 : ∀a2.eq_ascii ch_G a2 = eq_ascii a2 ch_G. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii19 : ∀a2.eq_ascii ch_H a2 = eq_ascii a2 ch_H. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii20 : ∀a2.eq_ascii ch_I a2 = eq_ascii a2 ch_I. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii21 : ∀a2.eq_ascii ch_J a2 = eq_ascii a2 ch_J. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii22 : ∀a2.eq_ascii ch_K a2 = eq_ascii a2 ch_K. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii23 : ∀a2.eq_ascii ch_L a2 = eq_ascii a2 ch_L. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii24 : ∀a2.eq_ascii ch_M a2 = eq_ascii a2 ch_M. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii25 : ∀a2.eq_ascii ch_N a2 = eq_ascii a2 ch_N. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii26 : ∀a2.eq_ascii ch_O a2 = eq_ascii a2 ch_O. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii27 : ∀a2.eq_ascii ch_P a2 = eq_ascii a2 ch_P. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii28 : ∀a2.eq_ascii ch_Q a2 = eq_ascii a2 ch_Q. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii29 : ∀a2.eq_ascii ch_R a2 = eq_ascii a2 ch_R. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii30 : ∀a2.eq_ascii ch_S a2 = eq_ascii a2 ch_S. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii31 : ∀a2.eq_ascii ch_T a2 = eq_ascii a2 ch_T. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii32 : ∀a2.eq_ascii ch_U a2 = eq_ascii a2 ch_U. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii33 : ∀a2.eq_ascii ch_V a2 = eq_ascii a2 ch_V. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii34 : ∀a2.eq_ascii ch_W a2 = eq_ascii a2 ch_W. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii35 : ∀a2.eq_ascii ch_X a2 = eq_ascii a2 ch_X. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii36 : ∀a2.eq_ascii ch_Y a2 = eq_ascii a2 ch_Y. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii37 : ∀a2.eq_ascii ch_Z a2 = eq_ascii a2 ch_Z. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii38 : ∀a2.eq_ascii ch_a a2 = eq_ascii a2 ch_a. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii39 : ∀a2.eq_ascii ch_b a2 = eq_ascii a2 ch_b. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii40 : ∀a2.eq_ascii ch_c a2 = eq_ascii a2 ch_c. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii41 : ∀a2.eq_ascii ch_d a2 = eq_ascii a2 ch_d. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii42 : ∀a2.eq_ascii ch_e a2 = eq_ascii a2 ch_e. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii43 : ∀a2.eq_ascii ch_f a2 = eq_ascii a2 ch_f. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii44 : ∀a2.eq_ascii ch_g a2 = eq_ascii a2 ch_g. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii45 : ∀a2.eq_ascii ch_h a2 = eq_ascii a2 ch_h. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii46 : ∀a2.eq_ascii ch_i a2 = eq_ascii a2 ch_i. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii47 : ∀a2.eq_ascii ch_j a2 = eq_ascii a2 ch_j. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii48 : ∀a2.eq_ascii ch_k a2 = eq_ascii a2 ch_k. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii49 : ∀a2.eq_ascii ch_l a2 = eq_ascii a2 ch_l. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii50 : ∀a2.eq_ascii ch_m a2 = eq_ascii a2 ch_m. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii51 : ∀a2.eq_ascii ch_n a2 = eq_ascii a2 ch_n. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii52 : ∀a2.eq_ascii ch_o a2 = eq_ascii a2 ch_o. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii53 : ∀a2.eq_ascii ch_p a2 = eq_ascii a2 ch_p. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii54 : ∀a2.eq_ascii ch_q a2 = eq_ascii a2 ch_q. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii55 : ∀a2.eq_ascii ch_r a2 = eq_ascii a2 ch_r. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii56 : ∀a2.eq_ascii ch_s a2 = eq_ascii a2 ch_s. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii57 : ∀a2.eq_ascii ch_t a2 = eq_ascii a2 ch_t. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii58 : ∀a2.eq_ascii ch_u a2 = eq_ascii a2 ch_u. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii59 : ∀a2.eq_ascii ch_v a2 = eq_ascii a2 ch_v. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii60 : ∀a2.eq_ascii ch_w a2 = eq_ascii a2 ch_w. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii61 : ∀a2.eq_ascii ch_x a2 = eq_ascii a2 ch_x. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii62 : ∀a2.eq_ascii ch_y a2 = eq_ascii a2 ch_y. #a2; ncases a2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqascii63 : ∀a2.eq_ascii ch_z a2 = eq_ascii a2 ch_z. #a2; ncases a2; nnormalize; napply refl_eq.nqed. - -nlemma symmetric_eqascii : symmetricT ascii bool eq_ascii. - #a1; ncases a1; - ##[ ##1: napply symmetric_eqascii1 ##| ##2: napply symmetric_eqascii2 - ##| ##3: napply symmetric_eqascii3 ##| ##4: napply symmetric_eqascii4 - ##| ##5: napply symmetric_eqascii5 ##| ##6: napply symmetric_eqascii6 - ##| ##7: napply symmetric_eqascii7 ##| ##8: napply symmetric_eqascii8 - ##| ##9: napply symmetric_eqascii9 ##| ##10: napply symmetric_eqascii10 - ##| ##11: napply symmetric_eqascii11 ##| ##12: napply symmetric_eqascii12 - ##| ##13: napply symmetric_eqascii13 ##| ##14: napply symmetric_eqascii14 - ##| ##15: napply symmetric_eqascii15 ##| ##16: napply symmetric_eqascii16 - ##| ##17: napply symmetric_eqascii17 ##| ##18: napply symmetric_eqascii18 - ##| ##19: napply symmetric_eqascii19 ##| ##20: napply symmetric_eqascii20 - ##| ##21: napply symmetric_eqascii21 ##| ##22: napply symmetric_eqascii22 - ##| ##23: napply symmetric_eqascii23 ##| ##24: napply symmetric_eqascii24 - ##| ##25: napply symmetric_eqascii25 ##| ##26: napply symmetric_eqascii26 - ##| ##27: napply symmetric_eqascii27 ##| ##28: napply symmetric_eqascii28 - ##| ##29: napply symmetric_eqascii29 ##| ##30: napply symmetric_eqascii30 - ##| ##31: napply symmetric_eqascii31 ##| ##32: napply symmetric_eqascii32 - ##| ##33: napply symmetric_eqascii33 ##| ##34: napply symmetric_eqascii34 - ##| ##35: napply symmetric_eqascii35 ##| ##36: napply symmetric_eqascii36 - ##| ##37: napply symmetric_eqascii37 ##| ##38: napply symmetric_eqascii38 - ##| ##39: napply symmetric_eqascii39 ##| ##40: napply symmetric_eqascii40 - ##| ##41: napply symmetric_eqascii41 ##| ##42: napply symmetric_eqascii42 - ##| ##43: napply symmetric_eqascii43 ##| ##44: napply symmetric_eqascii44 - ##| ##45: napply symmetric_eqascii45 ##| ##46: napply symmetric_eqascii46 - ##| ##47: napply symmetric_eqascii47 ##| ##48: napply symmetric_eqascii48 - ##| ##49: napply symmetric_eqascii49 ##| ##50: napply symmetric_eqascii50 - ##| ##51: napply symmetric_eqascii51 ##| ##52: napply symmetric_eqascii52 - ##| ##53: napply symmetric_eqascii53 ##| ##54: napply symmetric_eqascii54 - ##| ##55: napply symmetric_eqascii55 ##| ##56: napply symmetric_eqascii56 - ##| ##57: napply symmetric_eqascii57 ##| ##58: napply symmetric_eqascii58 - ##| ##59: napply symmetric_eqascii59 ##| ##60: napply symmetric_eqascii60 - ##| ##61: napply symmetric_eqascii61 ##| ##62: napply symmetric_eqascii62 - ##| ##63: napply symmetric_eqascii63 ##] -nqed. - -nlemma eqascii_to_eq1 : ∀a2.eq_ascii ch_0 a2 = true → ch_0 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##1: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq2 : ∀a2.eq_ascii ch_1 a2 = true → ch_1 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##2: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq3 : ∀a2.eq_ascii ch_2 a2 = true → ch_2 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##3: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq4 : ∀a2.eq_ascii ch_3 a2 = true → ch_3 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##4: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq5 : ∀a2.eq_ascii ch_4 a2 = true → ch_4 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##5: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq6 : ∀a2.eq_ascii ch_5 a2 = true → ch_5 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##6: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq7 : ∀a2.eq_ascii ch_6 a2 = true → ch_6 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##7: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq8 : ∀a2.eq_ascii ch_7 a2 = true → ch_7 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##8: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq9 : ∀a2.eq_ascii ch_8 a2 = true → ch_8 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##9: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq10 : ∀a2.eq_ascii ch_9 a2 = true → ch_9 = a2. #a2; ncases a2; nnormalize; #H; ##[ ##10: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq11 : ∀a2.eq_ascii ch__ a2 = true → ch__ = a2. #a2; ncases a2; nnormalize; #H; ##[ ##11: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq12 : ∀a2.eq_ascii ch_A a2 = true → ch_A = a2. #a2; ncases a2; nnormalize; #H; ##[ ##12: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq13 : ∀a2.eq_ascii ch_B a2 = true → ch_B = a2. #a2; ncases a2; nnormalize; #H; ##[ ##13: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq14 : ∀a2.eq_ascii ch_C a2 = true → ch_C = a2. #a2; ncases a2; nnormalize; #H; ##[ ##14: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq15 : ∀a2.eq_ascii ch_D a2 = true → ch_D = a2. #a2; ncases a2; nnormalize; #H; ##[ ##15: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq16 : ∀a2.eq_ascii ch_E a2 = true → ch_E = a2. #a2; ncases a2; nnormalize; #H; ##[ ##16: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq17 : ∀a2.eq_ascii ch_F a2 = true → ch_F = a2. #a2; ncases a2; nnormalize; #H; ##[ ##17: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq18 : ∀a2.eq_ascii ch_G a2 = true → ch_G = a2. #a2; ncases a2; nnormalize; #H; ##[ ##18: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq19 : ∀a2.eq_ascii ch_H a2 = true → ch_H = a2. #a2; ncases a2; nnormalize; #H; ##[ ##19: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq20 : ∀a2.eq_ascii ch_I a2 = true → ch_I = a2. #a2; ncases a2; nnormalize; #H; ##[ ##20: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq21 : ∀a2.eq_ascii ch_J a2 = true → ch_J = a2. #a2; ncases a2; nnormalize; #H; ##[ ##21: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq22 : ∀a2.eq_ascii ch_K a2 = true → ch_K = a2. #a2; ncases a2; nnormalize; #H; ##[ ##22: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq23 : ∀a2.eq_ascii ch_L a2 = true → ch_L = a2. #a2; ncases a2; nnormalize; #H; ##[ ##23: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq24 : ∀a2.eq_ascii ch_M a2 = true → ch_M = a2. #a2; ncases a2; nnormalize; #H; ##[ ##24: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq25 : ∀a2.eq_ascii ch_N a2 = true → ch_N = a2. #a2; ncases a2; nnormalize; #H; ##[ ##25: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq26 : ∀a2.eq_ascii ch_O a2 = true → ch_O = a2. #a2; ncases a2; nnormalize; #H; ##[ ##26: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq27 : ∀a2.eq_ascii ch_P a2 = true → ch_P = a2. #a2; ncases a2; nnormalize; #H; ##[ ##27: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq28 : ∀a2.eq_ascii ch_Q a2 = true → ch_Q = a2. #a2; ncases a2; nnormalize; #H; ##[ ##28: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq29 : ∀a2.eq_ascii ch_R a2 = true → ch_R = a2. #a2; ncases a2; nnormalize; #H; ##[ ##29: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq30 : ∀a2.eq_ascii ch_S a2 = true → ch_S = a2. #a2; ncases a2; nnormalize; #H; ##[ ##30: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq31 : ∀a2.eq_ascii ch_T a2 = true → ch_T = a2. #a2; ncases a2; nnormalize; #H; ##[ ##31: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq32 : ∀a2.eq_ascii ch_U a2 = true → ch_U = a2. #a2; ncases a2; nnormalize; #H; ##[ ##32: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq33 : ∀a2.eq_ascii ch_V a2 = true → ch_V = a2. #a2; ncases a2; nnormalize; #H; ##[ ##33: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq34 : ∀a2.eq_ascii ch_W a2 = true → ch_W = a2. #a2; ncases a2; nnormalize; #H; ##[ ##34: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq35 : ∀a2.eq_ascii ch_X a2 = true → ch_X = a2. #a2; ncases a2; nnormalize; #H; ##[ ##35: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq36 : ∀a2.eq_ascii ch_Y a2 = true → ch_Y = a2. #a2; ncases a2; nnormalize; #H; ##[ ##36: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq37 : ∀a2.eq_ascii ch_Z a2 = true → ch_Z = a2. #a2; ncases a2; nnormalize; #H; ##[ ##37: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq38 : ∀a2.eq_ascii ch_a a2 = true → ch_a = a2. #a2; ncases a2; nnormalize; #H; ##[ ##38: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq39 : ∀a2.eq_ascii ch_b a2 = true → ch_b = a2. #a2; ncases a2; nnormalize; #H; ##[ ##39: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq40 : ∀a2.eq_ascii ch_c a2 = true → ch_c = a2. #a2; ncases a2; nnormalize; #H; ##[ ##40: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq41 : ∀a2.eq_ascii ch_d a2 = true → ch_d = a2. #a2; ncases a2; nnormalize; #H; ##[ ##41: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq42 : ∀a2.eq_ascii ch_e a2 = true → ch_e = a2. #a2; ncases a2; nnormalize; #H; ##[ ##42: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq43 : ∀a2.eq_ascii ch_f a2 = true → ch_f = a2. #a2; ncases a2; nnormalize; #H; ##[ ##43: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq44 : ∀a2.eq_ascii ch_g a2 = true → ch_g = a2. #a2; ncases a2; nnormalize; #H; ##[ ##44: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq45 : ∀a2.eq_ascii ch_h a2 = true → ch_h = a2. #a2; ncases a2; nnormalize; #H; ##[ ##45: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq46 : ∀a2.eq_ascii ch_i a2 = true → ch_i = a2. #a2; ncases a2; nnormalize; #H; ##[ ##46: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq47 : ∀a2.eq_ascii ch_j a2 = true → ch_j = a2. #a2; ncases a2; nnormalize; #H; ##[ ##47: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq48 : ∀a2.eq_ascii ch_k a2 = true → ch_k = a2. #a2; ncases a2; nnormalize; #H; ##[ ##48: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq49 : ∀a2.eq_ascii ch_l a2 = true → ch_l = a2. #a2; ncases a2; nnormalize; #H; ##[ ##49: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq50 : ∀a2.eq_ascii ch_m a2 = true → ch_m = a2. #a2; ncases a2; nnormalize; #H; ##[ ##50: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq51 : ∀a2.eq_ascii ch_n a2 = true → ch_n = a2. #a2; ncases a2; nnormalize; #H; ##[ ##51: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq52 : ∀a2.eq_ascii ch_o a2 = true → ch_o = a2. #a2; ncases a2; nnormalize; #H; ##[ ##52: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq53 : ∀a2.eq_ascii ch_p a2 = true → ch_p = a2. #a2; ncases a2; nnormalize; #H; ##[ ##53: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq54 : ∀a2.eq_ascii ch_q a2 = true → ch_q = a2. #a2; ncases a2; nnormalize; #H; ##[ ##54: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq55 : ∀a2.eq_ascii ch_r a2 = true → ch_r = a2. #a2; ncases a2; nnormalize; #H; ##[ ##55: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq56 : ∀a2.eq_ascii ch_s a2 = true → ch_s = a2. #a2; ncases a2; nnormalize; #H; ##[ ##56: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq57 : ∀a2.eq_ascii ch_t a2 = true → ch_t = a2. #a2; ncases a2; nnormalize; #H; ##[ ##57: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq58 : ∀a2.eq_ascii ch_u a2 = true → ch_u = a2. #a2; ncases a2; nnormalize; #H; ##[ ##58: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq59 : ∀a2.eq_ascii ch_v a2 = true → ch_v = a2. #a2; ncases a2; nnormalize; #H; ##[ ##59: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq60 : ∀a2.eq_ascii ch_w a2 = true → ch_w = a2. #a2; ncases a2; nnormalize; #H; ##[ ##60: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq61 : ∀a2.eq_ascii ch_x a2 = true → ch_x = a2. #a2; ncases a2; nnormalize; #H; ##[ ##61: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq62 : ∀a2.eq_ascii ch_y a2 = true → ch_y = a2. #a2; ncases a2; nnormalize; #H; ##[ ##62: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. -nlemma eqascii_to_eq63 : ∀a2.eq_ascii ch_z a2 = true → ch_z = a2. #a2; ncases a2; nnormalize; #H; ##[ ##63: napply refl_eq | ##*: napply (bool_destruct … H) ##] nqed. - -nlemma eqascii_to_eq : ∀c1,c2.eq_ascii c1 c2 = true → c1 = c2. - #c1; ncases c1; - ##[ ##1: napply eqascii_to_eq1 ##| ##2: napply eqascii_to_eq2 - ##| ##3: napply eqascii_to_eq3 ##| ##4: napply eqascii_to_eq4 - ##| ##5: napply eqascii_to_eq5 ##| ##6: napply eqascii_to_eq6 - ##| ##7: napply eqascii_to_eq7 ##| ##8: napply eqascii_to_eq8 - ##| ##9: napply eqascii_to_eq9 ##| ##10: napply eqascii_to_eq10 - ##| ##11: napply eqascii_to_eq11 ##| ##12: napply eqascii_to_eq12 - ##| ##13: napply eqascii_to_eq13 ##| ##14: napply eqascii_to_eq14 - ##| ##15: napply eqascii_to_eq15 ##| ##16: napply eqascii_to_eq16 - ##| ##17: napply eqascii_to_eq17 ##| ##18: napply eqascii_to_eq18 - ##| ##19: napply eqascii_to_eq19 ##| ##20: napply eqascii_to_eq20 - ##| ##21: napply eqascii_to_eq21 ##| ##22: napply eqascii_to_eq22 - ##| ##23: napply eqascii_to_eq23 ##| ##24: napply eqascii_to_eq24 - ##| ##25: napply eqascii_to_eq25 ##| ##26: napply eqascii_to_eq26 - ##| ##27: napply eqascii_to_eq27 ##| ##28: napply eqascii_to_eq28 - ##| ##29: napply eqascii_to_eq29 ##| ##30: napply eqascii_to_eq30 - ##| ##31: napply eqascii_to_eq31 ##| ##32: napply eqascii_to_eq32 - ##| ##33: napply eqascii_to_eq33 ##| ##34: napply eqascii_to_eq34 - ##| ##35: napply eqascii_to_eq35 ##| ##36: napply eqascii_to_eq36 - ##| ##37: napply eqascii_to_eq37 ##| ##38: napply eqascii_to_eq38 - ##| ##39: napply eqascii_to_eq39 ##| ##40: napply eqascii_to_eq40 - ##| ##41: napply eqascii_to_eq41 ##| ##42: napply eqascii_to_eq42 - ##| ##43: napply eqascii_to_eq43 ##| ##44: napply eqascii_to_eq44 - ##| ##45: napply eqascii_to_eq45 ##| ##46: napply eqascii_to_eq46 - ##| ##47: napply eqascii_to_eq47 ##| ##48: napply eqascii_to_eq48 - ##| ##49: napply eqascii_to_eq49 ##| ##50: napply eqascii_to_eq50 - ##| ##51: napply eqascii_to_eq51 ##| ##52: napply eqascii_to_eq52 - ##| ##53: napply eqascii_to_eq53 ##| ##54: napply eqascii_to_eq54 - ##| ##55: napply eqascii_to_eq55 ##| ##56: napply eqascii_to_eq56 - ##| ##57: napply eqascii_to_eq57 ##| ##58: napply eqascii_to_eq58 - ##| ##59: napply eqascii_to_eq59 ##| ##60: napply eqascii_to_eq60 - ##| ##61: napply eqascii_to_eq61 ##| ##62: napply eqascii_to_eq62 - ##| ##63: napply eqascii_to_eq63 ##] -nqed. - -nlemma eq_to_eqascii1 : ∀a2.ch_0 = a2 → eq_ascii ch_0 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##1: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii2 : ∀a2.ch_1 = a2 → eq_ascii ch_1 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##2: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii3 : ∀a2.ch_2 = a2 → eq_ascii ch_2 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##3: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii4 : ∀a2.ch_3 = a2 → eq_ascii ch_3 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##4: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii5 : ∀a2.ch_4 = a2 → eq_ascii ch_4 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##5: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii6 : ∀a2.ch_5 = a2 → eq_ascii ch_5 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##6: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii7 : ∀a2.ch_6 = a2 → eq_ascii ch_6 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##7: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii8 : ∀a2.ch_7 = a2 → eq_ascii ch_7 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##8: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii9 : ∀a2.ch_8 = a2 → eq_ascii ch_8 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##9: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii10 : ∀a2.ch_9 = a2 → eq_ascii ch_9 a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##10: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii11 : ∀a2.ch__ = a2 → eq_ascii ch__ a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##11: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii12 : ∀a2.ch_A = a2 → eq_ascii ch_A a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##12: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii13 : ∀a2.ch_B = a2 → eq_ascii ch_B a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##13: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii14 : ∀a2.ch_C = a2 → eq_ascii ch_C a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##14: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii15 : ∀a2.ch_D = a2 → eq_ascii ch_D a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##15: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii16 : ∀a2.ch_E = a2 → eq_ascii ch_E a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##16: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii17 : ∀a2.ch_F = a2 → eq_ascii ch_F a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##17: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii18 : ∀a2.ch_G = a2 → eq_ascii ch_G a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##18: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii19 : ∀a2.ch_H = a2 → eq_ascii ch_H a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##19: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii20 : ∀a2.ch_I = a2 → eq_ascii ch_I a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##20: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii21 : ∀a2.ch_J = a2 → eq_ascii ch_J a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##21: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii22 : ∀a2.ch_K = a2 → eq_ascii ch_K a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##22: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii23 : ∀a2.ch_L = a2 → eq_ascii ch_L a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##23: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii24 : ∀a2.ch_M = a2 → eq_ascii ch_M a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##24: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii25 : ∀a2.ch_N = a2 → eq_ascii ch_N a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##25: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii26 : ∀a2.ch_O = a2 → eq_ascii ch_O a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##26: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii27 : ∀a2.ch_P = a2 → eq_ascii ch_P a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##27: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii28 : ∀a2.ch_Q = a2 → eq_ascii ch_Q a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##28: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii29 : ∀a2.ch_R = a2 → eq_ascii ch_R a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##29: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii30 : ∀a2.ch_S = a2 → eq_ascii ch_S a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##30: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii31 : ∀a2.ch_T = a2 → eq_ascii ch_T a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##31: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii32 : ∀a2.ch_U = a2 → eq_ascii ch_U a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##32: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii33 : ∀a2.ch_V = a2 → eq_ascii ch_V a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##33: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii34 : ∀a2.ch_W = a2 → eq_ascii ch_W a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##34: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii35 : ∀a2.ch_X = a2 → eq_ascii ch_X a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##35: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii36 : ∀a2.ch_Y = a2 → eq_ascii ch_Y a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##36: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii37 : ∀a2.ch_Z = a2 → eq_ascii ch_Z a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##37: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii38 : ∀a2.ch_a = a2 → eq_ascii ch_a a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##38: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii39 : ∀a2.ch_b = a2 → eq_ascii ch_b a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##39: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii40 : ∀a2.ch_c = a2 → eq_ascii ch_c a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##40: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii41 : ∀a2.ch_d = a2 → eq_ascii ch_d a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##41: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii42 : ∀a2.ch_e = a2 → eq_ascii ch_e a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##42: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii43 : ∀a2.ch_f = a2 → eq_ascii ch_f a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##43: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii44 : ∀a2.ch_g = a2 → eq_ascii ch_g a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##44: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii45 : ∀a2.ch_h = a2 → eq_ascii ch_h a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##45: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii46 : ∀a2.ch_i = a2 → eq_ascii ch_i a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##46: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii47 : ∀a2.ch_j = a2 → eq_ascii ch_j a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##47: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii48 : ∀a2.ch_k = a2 → eq_ascii ch_k a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##48: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii49 : ∀a2.ch_l = a2 → eq_ascii ch_l a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##49: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii50 : ∀a2.ch_m = a2 → eq_ascii ch_m a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##50: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii51 : ∀a2.ch_n = a2 → eq_ascii ch_n a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##51: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii52 : ∀a2.ch_o = a2 → eq_ascii ch_o a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##52: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii53 : ∀a2.ch_p = a2 → eq_ascii ch_p a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##53: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii54 : ∀a2.ch_q = a2 → eq_ascii ch_q a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##54: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii55 : ∀a2.ch_r = a2 → eq_ascii ch_r a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##55: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii56 : ∀a2.ch_s = a2 → eq_ascii ch_s a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##56: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii57 : ∀a2.ch_t = a2 → eq_ascii ch_t a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##57: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii58 : ∀a2.ch_u = a2 → eq_ascii ch_u a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##58: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii59 : ∀a2.ch_v = a2 → eq_ascii ch_v a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##59: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii60 : ∀a2.ch_w = a2 → eq_ascii ch_w a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##60: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii61 : ∀a2.ch_x = a2 → eq_ascii ch_x a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##61: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii62 : ∀a2.ch_y = a2 → eq_ascii ch_y a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##62: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. -nlemma eq_to_eqascii63 : ∀a2.ch_z = a2 → eq_ascii ch_z a2 = true. #a2; ncases a2; nnormalize; #H; ##[ ##63: napply refl_eq | ##*: napply (ascii_destruct … H) ##] nqed. - -nlemma eq_to_eqascii : ∀c1,c2.c1 = c2 → eq_ascii c1 c2 = true. - #c1; ncases c1; - ##[ ##1: napply eq_to_eqascii1 ##| ##2: napply eq_to_eqascii2 - ##| ##3: napply eq_to_eqascii3 ##| ##4: napply eq_to_eqascii4 - ##| ##5: napply eq_to_eqascii5 ##| ##6: napply eq_to_eqascii6 - ##| ##7: napply eq_to_eqascii7 ##| ##8: napply eq_to_eqascii8 - ##| ##9: napply eq_to_eqascii9 ##| ##10: napply eq_to_eqascii10 - ##| ##11: napply eq_to_eqascii11 ##| ##12: napply eq_to_eqascii12 - ##| ##13: napply eq_to_eqascii13 ##| ##14: napply eq_to_eqascii14 - ##| ##15: napply eq_to_eqascii15 ##| ##16: napply eq_to_eqascii16 - ##| ##17: napply eq_to_eqascii17 ##| ##18: napply eq_to_eqascii18 - ##| ##19: napply eq_to_eqascii19 ##| ##20: napply eq_to_eqascii20 - ##| ##21: napply eq_to_eqascii21 ##| ##22: napply eq_to_eqascii22 - ##| ##23: napply eq_to_eqascii23 ##| ##24: napply eq_to_eqascii24 - ##| ##25: napply eq_to_eqascii25 ##| ##26: napply eq_to_eqascii26 - ##| ##27: napply eq_to_eqascii27 ##| ##28: napply eq_to_eqascii28 - ##| ##29: napply eq_to_eqascii29 ##| ##30: napply eq_to_eqascii30 - ##| ##31: napply eq_to_eqascii31 ##| ##32: napply eq_to_eqascii32 - ##| ##33: napply eq_to_eqascii33 ##| ##34: napply eq_to_eqascii34 - ##| ##35: napply eq_to_eqascii35 ##| ##36: napply eq_to_eqascii36 - ##| ##37: napply eq_to_eqascii37 ##| ##38: napply eq_to_eqascii38 - ##| ##39: napply eq_to_eqascii39 ##| ##40: napply eq_to_eqascii40 - ##| ##41: napply eq_to_eqascii41 ##| ##42: napply eq_to_eqascii42 - ##| ##43: napply eq_to_eqascii43 ##| ##44: napply eq_to_eqascii44 - ##| ##45: napply eq_to_eqascii45 ##| ##46: napply eq_to_eqascii46 - ##| ##47: napply eq_to_eqascii47 ##| ##48: napply eq_to_eqascii48 - ##| ##49: napply eq_to_eqascii49 ##| ##50: napply eq_to_eqascii50 - ##| ##51: napply eq_to_eqascii51 ##| ##52: napply eq_to_eqascii52 - ##| ##53: napply eq_to_eqascii53 ##| ##54: napply eq_to_eqascii54 - ##| ##55: napply eq_to_eqascii55 ##| ##56: napply eq_to_eqascii56 - ##| ##57: napply eq_to_eqascii57 ##| ##58: napply eq_to_eqascii58 - ##| ##59: napply eq_to_eqascii59 ##| ##60: napply eq_to_eqascii60 - ##| ##61: napply eq_to_eqascii61 ##| ##62: napply eq_to_eqascii62 - ##| ##63: napply eq_to_eqascii63 ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas3.ma b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas3.ma deleted file mode 100755 index 98dabd50e..000000000 --- a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas3.ma +++ /dev/null @@ -1,505 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "common/ascii_lemmas1.ma". -include "num/bool_lemmas.ma". - -(* ************************** *) -(* DEFINIZIONE ASCII MINIMALE *) -(* ************************** *) - -nlemma decidable_ascii1 : ∀x:ascii.decidable (ch_0 = x). - #x; nnormalize; nelim x; - ##[ ##1: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii2 : ∀x:ascii.decidable (ch_1 = x). - #x; nnormalize; nelim x; - ##[ ##2: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii3 : ∀x:ascii.decidable (ch_2 = x). - #x; nnormalize; nelim x; - ##[ ##3: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii4 : ∀x:ascii.decidable (ch_3 = x). - #x; nnormalize; nelim x; - ##[ ##4: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii5 : ∀x:ascii.decidable (ch_4 = x). - #x; nnormalize; nelim x; - ##[ ##5: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii6 : ∀x:ascii.decidable (ch_5 = x). - #x; nnormalize; nelim x; - ##[ ##6: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii7 : ∀x:ascii.decidable (ch_6 = x). - #x; nnormalize; nelim x; - ##[ ##7: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii8 : ∀x:ascii.decidable (ch_7 = x). - #x; nnormalize; nelim x; - ##[ ##8: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii9 : ∀x:ascii.decidable (ch_8 = x). - #x; nnormalize; nelim x; - ##[ ##9: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii10 : ∀x:ascii.decidable (ch_9 = x). - #x; nnormalize; nelim x; - ##[ ##10: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii11 : ∀x:ascii.decidable (ch__ = x). - #x; nnormalize; nelim x; - ##[ ##11: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii12 : ∀x:ascii.decidable (ch_A = x). - #x; nnormalize; nelim x; - ##[ ##12: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii13 : ∀x:ascii.decidable (ch_B = x). - #x; nnormalize; nelim x; - ##[ ##13: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii14 : ∀x:ascii.decidable (ch_C = x). - #x; nnormalize; nelim x; - ##[ ##14: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii15 : ∀x:ascii.decidable (ch_D = x). - #x; nnormalize; nelim x; - ##[ ##15: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii16 : ∀x:ascii.decidable (ch_E = x). - #x; nnormalize; nelim x; - ##[ ##16: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii17 : ∀x:ascii.decidable (ch_F = x). - #x; nnormalize; nelim x; - ##[ ##17: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii18 : ∀x:ascii.decidable (ch_G = x). - #x; nnormalize; nelim x; - ##[ ##18: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii19 : ∀x:ascii.decidable (ch_H = x). - #x; nnormalize; nelim x; - ##[ ##19: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii20 : ∀x:ascii.decidable (ch_I = x). - #x; nnormalize; nelim x; - ##[ ##20: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii21 : ∀x:ascii.decidable (ch_J = x). - #x; nnormalize; nelim x; - ##[ ##21: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii22 : ∀x:ascii.decidable (ch_K = x). - #x; nnormalize; nelim x; - ##[ ##22: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii23 : ∀x:ascii.decidable (ch_L = x). - #x; nnormalize; nelim x; - ##[ ##23: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii24 : ∀x:ascii.decidable (ch_M = x). - #x; nnormalize; nelim x; - ##[ ##24: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii25 : ∀x:ascii.decidable (ch_N = x). - #x; nnormalize; nelim x; - ##[ ##25: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii26 : ∀x:ascii.decidable (ch_O = x). - #x; nnormalize; nelim x; - ##[ ##26: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii27 : ∀x:ascii.decidable (ch_P = x). - #x; nnormalize; nelim x; - ##[ ##27: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii28 : ∀x:ascii.decidable (ch_Q = x). - #x; nnormalize; nelim x; - ##[ ##28: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii29 : ∀x:ascii.decidable (ch_R = x). - #x; nnormalize; nelim x; - ##[ ##29: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii30 : ∀x:ascii.decidable (ch_S = x). - #x; nnormalize; nelim x; - ##[ ##30: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii31 : ∀x:ascii.decidable (ch_T = x). - #x; nnormalize; nelim x; - ##[ ##31: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii32 : ∀x:ascii.decidable (ch_U = x). - #x; nnormalize; nelim x; - ##[ ##32: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii33 : ∀x:ascii.decidable (ch_V = x). - #x; nnormalize; nelim x; - ##[ ##33: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii34 : ∀x:ascii.decidable (ch_W = x). - #x; nnormalize; nelim x; - ##[ ##34: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii35 : ∀x:ascii.decidable (ch_X = x). - #x; nnormalize; nelim x; - ##[ ##35: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii36 : ∀x:ascii.decidable (ch_Y = x). - #x; nnormalize; nelim x; - ##[ ##36: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii37 : ∀x:ascii.decidable (ch_Z = x). - #x; nnormalize; nelim x; - ##[ ##37: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii38 : ∀x:ascii.decidable (ch_a = x). - #x; nnormalize; nelim x; - ##[ ##38: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii39 : ∀x:ascii.decidable (ch_b = x). - #x; nnormalize; nelim x; - ##[ ##39: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii40 : ∀x:ascii.decidable (ch_c = x). - #x; nnormalize; nelim x; - ##[ ##40: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii41 : ∀x:ascii.decidable (ch_d = x). - #x; nnormalize; nelim x; - ##[ ##41: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii42 : ∀x:ascii.decidable (ch_e = x). - #x; nnormalize; nelim x; - ##[ ##42: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii43 : ∀x:ascii.decidable (ch_f = x). - #x; nnormalize; nelim x; - ##[ ##43: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii44 : ∀x:ascii.decidable (ch_g = x). - #x; nnormalize; nelim x; - ##[ ##44: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii45 : ∀x:ascii.decidable (ch_h = x). - #x; nnormalize; nelim x; - ##[ ##45: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii46 : ∀x:ascii.decidable (ch_i = x). - #x; nnormalize; nelim x; - ##[ ##46: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii47 : ∀x:ascii.decidable (ch_j = x). - #x; nnormalize; nelim x; - ##[ ##47: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii48 : ∀x:ascii.decidable (ch_k = x). - #x; nnormalize; nelim x; - ##[ ##48: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii49 : ∀x:ascii.decidable (ch_l = x). - #x; nnormalize; nelim x; - ##[ ##49: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii50 : ∀x:ascii.decidable (ch_m = x). - #x; nnormalize; nelim x; - ##[ ##50: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii51 : ∀x:ascii.decidable (ch_n = x). - #x; nnormalize; nelim x; - ##[ ##51: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii52 : ∀x:ascii.decidable (ch_o = x). - #x; nnormalize; nelim x; - ##[ ##52: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii53 : ∀x:ascii.decidable (ch_p = x). - #x; nnormalize; nelim x; - ##[ ##53: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii54 : ∀x:ascii.decidable (ch_q = x). - #x; nnormalize; nelim x; - ##[ ##54: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii55 : ∀x:ascii.decidable (ch_r = x). - #x; nnormalize; nelim x; - ##[ ##55: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii56 : ∀x:ascii.decidable (ch_s = x). - #x; nnormalize; nelim x; - ##[ ##56: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii57 : ∀x:ascii.decidable (ch_t = x). - #x; nnormalize; nelim x; - ##[ ##57: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii58 : ∀x:ascii.decidable (ch_u = x). - #x; nnormalize; nelim x; - ##[ ##58: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii59 : ∀x:ascii.decidable (ch_v = x). - #x; nnormalize; nelim x; - ##[ ##59: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii60 : ∀x:ascii.decidable (ch_w = x). - #x; nnormalize; nelim x; - ##[ ##60: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii61 : ∀x:ascii.decidable (ch_x = x). - #x; nnormalize; nelim x; - ##[ ##61: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii62 : ∀x:ascii.decidable (ch_y = x). - #x; nnormalize; nelim x; - ##[ ##62: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii63 : ∀x:ascii.decidable (ch_z = x). - #x; nnormalize; nelim x; - ##[ ##63: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (ascii_destruct … H) - ##] -nqed. - -nlemma decidable_ascii : ∀x,y:ascii.decidable (x = y). - #a1; ncases a1; - ##[ ##1: napply decidable_ascii1 ##| ##2: napply decidable_ascii2 - ##| ##3: napply decidable_ascii3 ##| ##4: napply decidable_ascii4 - ##| ##5: napply decidable_ascii5 ##| ##6: napply decidable_ascii6 - ##| ##7: napply decidable_ascii7 ##| ##8: napply decidable_ascii8 - ##| ##9: napply decidable_ascii9 ##| ##10: napply decidable_ascii10 - ##| ##11: napply decidable_ascii11 ##| ##12: napply decidable_ascii12 - ##| ##13: napply decidable_ascii13 ##| ##14: napply decidable_ascii14 - ##| ##15: napply decidable_ascii15 ##| ##16: napply decidable_ascii16 - ##| ##17: napply decidable_ascii17 ##| ##18: napply decidable_ascii18 - ##| ##19: napply decidable_ascii19 ##| ##20: napply decidable_ascii20 - ##| ##21: napply decidable_ascii21 ##| ##22: napply decidable_ascii22 - ##| ##23: napply decidable_ascii23 ##| ##24: napply decidable_ascii24 - ##| ##25: napply decidable_ascii25 ##| ##26: napply decidable_ascii26 - ##| ##27: napply decidable_ascii27 ##| ##28: napply decidable_ascii28 - ##| ##29: napply decidable_ascii29 ##| ##30: napply decidable_ascii30 - ##| ##31: napply decidable_ascii31 ##| ##32: napply decidable_ascii32 - ##| ##33: napply decidable_ascii33 ##| ##34: napply decidable_ascii34 - ##| ##35: napply decidable_ascii35 ##| ##36: napply decidable_ascii36 - ##| ##37: napply decidable_ascii37 ##| ##38: napply decidable_ascii38 - ##| ##39: napply decidable_ascii39 ##| ##40: napply decidable_ascii40 - ##| ##41: napply decidable_ascii41 ##| ##42: napply decidable_ascii42 - ##| ##43: napply decidable_ascii43 ##| ##44: napply decidable_ascii44 - ##| ##45: napply decidable_ascii45 ##| ##46: napply decidable_ascii46 - ##| ##47: napply decidable_ascii47 ##| ##48: napply decidable_ascii48 - ##| ##49: napply decidable_ascii49 ##| ##50: napply decidable_ascii50 - ##| ##51: napply decidable_ascii51 ##| ##52: napply decidable_ascii52 - ##| ##53: napply decidable_ascii53 ##| ##54: napply decidable_ascii54 - ##| ##55: napply decidable_ascii55 ##| ##56: napply decidable_ascii56 - ##| ##57: napply decidable_ascii57 ##| ##58: napply decidable_ascii58 - ##| ##59: napply decidable_ascii59 ##| ##60: napply decidable_ascii60 - ##| ##61: napply decidable_ascii61 ##| ##62: napply decidable_ascii62 - ##| ##63: napply decidable_ascii63 ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas4.ma b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas4.ma deleted file mode 100755 index 64ee7b2e9..000000000 --- a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas4.ma +++ /dev/null @@ -1,505 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "common/ascii_lemmas1.ma". -include "num/bool_lemmas.ma". - -(* ************************** *) -(* DEFINIZIONE ASCII MINIMALE *) -(* ************************** *) - -nlemma neqascii_to_neq1 : ∀a2.eq_ascii ch_0 a2 = false → ch_0 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##1: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq2 : ∀a2.eq_ascii ch_1 a2 = false → ch_1 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##2: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq3 : ∀a2.eq_ascii ch_2 a2 = false → ch_2 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##3: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq4 : ∀a2.eq_ascii ch_3 a2 = false → ch_3 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##4: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq5 : ∀a2.eq_ascii ch_4 a2 = false → ch_4 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##5: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq6 : ∀a2.eq_ascii ch_5 a2 = false → ch_5 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##6: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq7 : ∀a2.eq_ascii ch_6 a2 = false → ch_6 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##7: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq8 : ∀a2.eq_ascii ch_7 a2 = false → ch_7 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##8: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq9 : ∀a2.eq_ascii ch_8 a2 = false → ch_8 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##9: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq10 : ∀a2.eq_ascii ch_9 a2 = false → ch_9 ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##10: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq11 : ∀a2.eq_ascii ch__ a2 = false → ch__ ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##11: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq12 : ∀a2.eq_ascii ch_A a2 = false → ch_A ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##12: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq13 : ∀a2.eq_ascii ch_B a2 = false → ch_B ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##13: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq14 : ∀a2.eq_ascii ch_C a2 = false → ch_C ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##14: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq15 : ∀a2.eq_ascii ch_D a2 = false → ch_D ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##15: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq16 : ∀a2.eq_ascii ch_E a2 = false → ch_E ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##16: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq17 : ∀a2.eq_ascii ch_F a2 = false → ch_F ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##17: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq18 : ∀a2.eq_ascii ch_G a2 = false → ch_G ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##18: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq19 : ∀a2.eq_ascii ch_H a2 = false → ch_H ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##19: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq20 : ∀a2.eq_ascii ch_I a2 = false → ch_I ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##20: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq21 : ∀a2.eq_ascii ch_J a2 = false → ch_J ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##21: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq22 : ∀a2.eq_ascii ch_K a2 = false → ch_K ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##22: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq23 : ∀a2.eq_ascii ch_L a2 = false → ch_L ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##23: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq24 : ∀a2.eq_ascii ch_M a2 = false → ch_M ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##24: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq25 : ∀a2.eq_ascii ch_N a2 = false → ch_N ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##25: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq26 : ∀a2.eq_ascii ch_O a2 = false → ch_O ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##26: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq27 : ∀a2.eq_ascii ch_P a2 = false → ch_P ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##27: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq28 : ∀a2.eq_ascii ch_Q a2 = false → ch_Q ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##28: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq29 : ∀a2.eq_ascii ch_R a2 = false → ch_R ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##29: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq30 : ∀a2.eq_ascii ch_S a2 = false → ch_S ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##30: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq31 : ∀a2.eq_ascii ch_T a2 = false → ch_T ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##31: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq32 : ∀a2.eq_ascii ch_U a2 = false → ch_U ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##32: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq33 : ∀a2.eq_ascii ch_V a2 = false → ch_V ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##33: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq34 : ∀a2.eq_ascii ch_W a2 = false → ch_W ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##34: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq35 : ∀a2.eq_ascii ch_X a2 = false → ch_X ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##35: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq36 : ∀a2.eq_ascii ch_Y a2 = false → ch_Y ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##36: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq37 : ∀a2.eq_ascii ch_Z a2 = false → ch_Z ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##37: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq38 : ∀a2.eq_ascii ch_a a2 = false → ch_a ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##38: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq39 : ∀a2.eq_ascii ch_b a2 = false → ch_b ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##39: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq40 : ∀a2.eq_ascii ch_c a2 = false → ch_c ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##40: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq41 : ∀a2.eq_ascii ch_d a2 = false → ch_d ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##41: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq42 : ∀a2.eq_ascii ch_e a2 = false → ch_e ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##42: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq43 : ∀a2.eq_ascii ch_f a2 = false → ch_f ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##43: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq44 : ∀a2.eq_ascii ch_g a2 = false → ch_g ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##44: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq45 : ∀a2.eq_ascii ch_h a2 = false → ch_h ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##45: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq46 : ∀a2.eq_ascii ch_i a2 = false → ch_i ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##46: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq47 : ∀a2.eq_ascii ch_j a2 = false → ch_j ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##47: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq48 : ∀a2.eq_ascii ch_k a2 = false → ch_k ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##48: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq49 : ∀a2.eq_ascii ch_l a2 = false → ch_l ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##49: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq50 : ∀a2.eq_ascii ch_m a2 = false → ch_m ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##50: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq51 : ∀a2.eq_ascii ch_n a2 = false → ch_n ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##51: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq52 : ∀a2.eq_ascii ch_o a2 = false → ch_o ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##52: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq53 : ∀a2.eq_ascii ch_p a2 = false → ch_p ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##53: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq54 : ∀a2.eq_ascii ch_q a2 = false → ch_q ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##54: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq55 : ∀a2.eq_ascii ch_r a2 = false → ch_r ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##55: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq56 : ∀a2.eq_ascii ch_s a2 = false → ch_s ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##56: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq57 : ∀a2.eq_ascii ch_t a2 = false → ch_t ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##57: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq58 : ∀a2.eq_ascii ch_u a2 = false → ch_u ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##58: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq59 : ∀a2.eq_ascii ch_v a2 = false → ch_v ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##59: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq60 : ∀a2.eq_ascii ch_w a2 = false → ch_w ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##60: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq61 : ∀a2.eq_ascii ch_x a2 = false → ch_x ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##61: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq62 : ∀a2.eq_ascii ch_y a2 = false → ch_y ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##62: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq63 : ∀a2.eq_ascii ch_z a2 = false → ch_z ≠ a2. - #a2; ncases a2; nnormalize; #H; - ##[ ##63: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (ascii_destruct … H1) - ##] -nqed. - -nlemma neqascii_to_neq : ∀c1,c2.eq_ascii c1 c2 = false → c1 ≠ c2. - #c1; ncases c1; - ##[ ##1: napply neqascii_to_neq1 ##| ##2: napply neqascii_to_neq2 - ##| ##3: napply neqascii_to_neq3 ##| ##4: napply neqascii_to_neq4 - ##| ##5: napply neqascii_to_neq5 ##| ##6: napply neqascii_to_neq6 - ##| ##7: napply neqascii_to_neq7 ##| ##8: napply neqascii_to_neq8 - ##| ##9: napply neqascii_to_neq9 ##| ##10: napply neqascii_to_neq10 - ##| ##11: napply neqascii_to_neq11 ##| ##12: napply neqascii_to_neq12 - ##| ##13: napply neqascii_to_neq13 ##| ##14: napply neqascii_to_neq14 - ##| ##15: napply neqascii_to_neq15 ##| ##16: napply neqascii_to_neq16 - ##| ##17: napply neqascii_to_neq17 ##| ##18: napply neqascii_to_neq18 - ##| ##19: napply neqascii_to_neq19 ##| ##20: napply neqascii_to_neq20 - ##| ##21: napply neqascii_to_neq21 ##| ##22: napply neqascii_to_neq22 - ##| ##23: napply neqascii_to_neq23 ##| ##24: napply neqascii_to_neq24 - ##| ##25: napply neqascii_to_neq25 ##| ##26: napply neqascii_to_neq26 - ##| ##27: napply neqascii_to_neq27 ##| ##28: napply neqascii_to_neq28 - ##| ##29: napply neqascii_to_neq29 ##| ##30: napply neqascii_to_neq30 - ##| ##31: napply neqascii_to_neq31 ##| ##32: napply neqascii_to_neq32 - ##| ##33: napply neqascii_to_neq33 ##| ##34: napply neqascii_to_neq34 - ##| ##35: napply neqascii_to_neq35 ##| ##36: napply neqascii_to_neq36 - ##| ##37: napply neqascii_to_neq37 ##| ##38: napply neqascii_to_neq38 - ##| ##39: napply neqascii_to_neq39 ##| ##40: napply neqascii_to_neq40 - ##| ##41: napply neqascii_to_neq41 ##| ##42: napply neqascii_to_neq42 - ##| ##43: napply neqascii_to_neq43 ##| ##44: napply neqascii_to_neq44 - ##| ##45: napply neqascii_to_neq45 ##| ##46: napply neqascii_to_neq46 - ##| ##47: napply neqascii_to_neq47 ##| ##48: napply neqascii_to_neq48 - ##| ##49: napply neqascii_to_neq49 ##| ##50: napply neqascii_to_neq50 - ##| ##51: napply neqascii_to_neq51 ##| ##52: napply neqascii_to_neq52 - ##| ##53: napply neqascii_to_neq53 ##| ##54: napply neqascii_to_neq54 - ##| ##55: napply neqascii_to_neq55 ##| ##56: napply neqascii_to_neq56 - ##| ##57: napply neqascii_to_neq57 ##| ##58: napply neqascii_to_neq58 - ##| ##59: napply neqascii_to_neq59 ##| ##60: napply neqascii_to_neq60 - ##| ##61: napply neqascii_to_neq61 ##| ##62: napply neqascii_to_neq62 - ##| ##63: napply neqascii_to_neq63 ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas5.ma b/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas5.ma deleted file mode 100755 index 425f4a556..000000000 --- a/helm/software/matita/contribs/ng_assembly/common/ascii_lemmas5.ma +++ /dev/null @@ -1,127 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "common/ascii.ma". - -(* ************************** *) -(* DEFINIZIONE ASCII MINIMALE *) -(* ************************** *) - -nlemma neq_to_neqascii1 : ∀a2.ch_0 ≠ a2 → eq_ascii ch_0 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##1: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii2 : ∀a2.ch_1 ≠ a2 → eq_ascii ch_1 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##2: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii3 : ∀a2.ch_2 ≠ a2 → eq_ascii ch_2 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##3: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii4 : ∀a2.ch_3 ≠ a2 → eq_ascii ch_3 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##4: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii5 : ∀a2.ch_4 ≠ a2 → eq_ascii ch_4 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##5: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii6 : ∀a2.ch_5 ≠ a2 → eq_ascii ch_5 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##6: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii7 : ∀a2.ch_6 ≠ a2 → eq_ascii ch_6 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##7: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii8 : ∀a2.ch_7 ≠ a2 → eq_ascii ch_7 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##8: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii9 : ∀a2.ch_8 ≠ a2 → eq_ascii ch_8 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##9: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii10 : ∀a2.ch_9 ≠ a2 → eq_ascii ch_9 a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##10: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii11 : ∀a2.ch__ ≠ a2 → eq_ascii ch__ a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##11: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii12 : ∀a2.ch_A ≠ a2 → eq_ascii ch_A a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##12: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii13 : ∀a2.ch_B ≠ a2 → eq_ascii ch_B a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##13: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii14 : ∀a2.ch_C ≠ a2 → eq_ascii ch_C a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##14: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii15 : ∀a2.ch_D ≠ a2 → eq_ascii ch_D a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##15: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii16 : ∀a2.ch_E ≠ a2 → eq_ascii ch_E a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##16: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii17 : ∀a2.ch_F ≠ a2 → eq_ascii ch_F a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##17: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii18 : ∀a2.ch_G ≠ a2 → eq_ascii ch_G a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##18: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii19 : ∀a2.ch_H ≠ a2 → eq_ascii ch_H a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##19: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii20 : ∀a2.ch_I ≠ a2 → eq_ascii ch_I a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##20: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii21 : ∀a2.ch_J ≠ a2 → eq_ascii ch_J a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##21: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii22 : ∀a2.ch_K ≠ a2 → eq_ascii ch_K a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##22: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii23 : ∀a2.ch_L ≠ a2 → eq_ascii ch_L a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##23: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii24 : ∀a2.ch_M ≠ a2 → eq_ascii ch_M a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##24: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii25 : ∀a2.ch_N ≠ a2 → eq_ascii ch_N a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##25: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii26 : ∀a2.ch_O ≠ a2 → eq_ascii ch_O a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##26: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii27 : ∀a2.ch_P ≠ a2 → eq_ascii ch_P a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##27: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii28 : ∀a2.ch_Q ≠ a2 → eq_ascii ch_Q a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##28: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii29 : ∀a2.ch_R ≠ a2 → eq_ascii ch_R a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##29: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii30 : ∀a2.ch_S ≠ a2 → eq_ascii ch_S a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##30: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii31 : ∀a2.ch_T ≠ a2 → eq_ascii ch_T a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##31: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii32 : ∀a2.ch_U ≠ a2 → eq_ascii ch_U a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##32: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii33 : ∀a2.ch_V ≠ a2 → eq_ascii ch_V a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##33: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii34 : ∀a2.ch_W ≠ a2 → eq_ascii ch_W a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##34: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii35 : ∀a2.ch_X ≠ a2 → eq_ascii ch_X a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##35: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii36 : ∀a2.ch_Y ≠ a2 → eq_ascii ch_Y a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##36: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii37 : ∀a2.ch_Z ≠ a2 → eq_ascii ch_Z a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##37: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii38 : ∀a2.ch_a ≠ a2 → eq_ascii ch_a a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##38: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii39 : ∀a2.ch_b ≠ a2 → eq_ascii ch_b a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##39: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii40 : ∀a2.ch_c ≠ a2 → eq_ascii ch_c a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##40: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii41 : ∀a2.ch_d ≠ a2 → eq_ascii ch_d a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##41: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii42 : ∀a2.ch_e ≠ a2 → eq_ascii ch_e a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##42: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii43 : ∀a2.ch_f ≠ a2 → eq_ascii ch_f a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##43: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii44 : ∀a2.ch_g ≠ a2 → eq_ascii ch_g a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##44: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii45 : ∀a2.ch_h ≠ a2 → eq_ascii ch_h a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##45: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii46 : ∀a2.ch_i ≠ a2 → eq_ascii ch_i a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##46: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii47 : ∀a2.ch_j ≠ a2 → eq_ascii ch_j a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##47: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii48 : ∀a2.ch_k ≠ a2 → eq_ascii ch_k a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##48: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii49 : ∀a2.ch_l ≠ a2 → eq_ascii ch_l a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##49: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii50 : ∀a2.ch_m ≠ a2 → eq_ascii ch_m a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##50: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii51 : ∀a2.ch_n ≠ a2 → eq_ascii ch_n a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##51: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii52 : ∀a2.ch_o ≠ a2 → eq_ascii ch_o a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##52: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii53 : ∀a2.ch_p ≠ a2 → eq_ascii ch_p a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##53: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii54 : ∀a2.ch_q ≠ a2 → eq_ascii ch_q a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##54: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii55 : ∀a2.ch_r ≠ a2 → eq_ascii ch_r a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##55: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii56 : ∀a2.ch_s ≠ a2 → eq_ascii ch_s a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##56: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii57 : ∀a2.ch_t ≠ a2 → eq_ascii ch_t a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##57: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii58 : ∀a2.ch_u ≠ a2 → eq_ascii ch_u a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##58: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii59 : ∀a2.ch_v ≠ a2 → eq_ascii ch_v a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##59: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii60 : ∀a2.ch_w ≠ a2 → eq_ascii ch_w a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##60: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii61 : ∀a2.ch_x ≠ a2 → eq_ascii ch_x a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##61: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii62 : ∀a2.ch_y ≠ a2 → eq_ascii ch_y a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##62: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqascii63 : ∀a2.ch_z ≠ a2 → eq_ascii ch_z a2 = false. #a2; ncases a2; nnormalize; #H; ##[ ##63: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. - -nlemma neq_to_neqascii : ∀a1,a2.a1 ≠ a2 → eq_ascii a1 a2 = false. - #a1; nelim a1; - ##[ ##1: napply neq_to_neqascii1 ##| ##2: napply neq_to_neqascii2 - ##| ##3: napply neq_to_neqascii3 ##| ##4: napply neq_to_neqascii4 - ##| ##5: napply neq_to_neqascii5 ##| ##6: napply neq_to_neqascii6 - ##| ##7: napply neq_to_neqascii7 ##| ##8: napply neq_to_neqascii8 - ##| ##9: napply neq_to_neqascii9 ##| ##10: napply neq_to_neqascii10 - ##| ##11: napply neq_to_neqascii11 ##| ##12: napply neq_to_neqascii12 - ##| ##13: napply neq_to_neqascii13 ##| ##14: napply neq_to_neqascii14 - ##| ##15: napply neq_to_neqascii15 ##| ##16: napply neq_to_neqascii16 - ##| ##17: napply neq_to_neqascii17 ##| ##18: napply neq_to_neqascii18 - ##| ##19: napply neq_to_neqascii19 ##| ##20: napply neq_to_neqascii20 - ##| ##21: napply neq_to_neqascii21 ##| ##22: napply neq_to_neqascii22 - ##| ##23: napply neq_to_neqascii23 ##| ##24: napply neq_to_neqascii24 - ##| ##25: napply neq_to_neqascii25 ##| ##26: napply neq_to_neqascii26 - ##| ##27: napply neq_to_neqascii27 ##| ##28: napply neq_to_neqascii28 - ##| ##29: napply neq_to_neqascii29 ##| ##30: napply neq_to_neqascii30 - ##| ##31: napply neq_to_neqascii31 ##| ##32: napply neq_to_neqascii32 - ##| ##33: napply neq_to_neqascii33 ##| ##34: napply neq_to_neqascii34 - ##| ##35: napply neq_to_neqascii35 ##| ##36: napply neq_to_neqascii36 - ##| ##37: napply neq_to_neqascii37 ##| ##38: napply neq_to_neqascii38 - ##| ##39: napply neq_to_neqascii39 ##| ##40: napply neq_to_neqascii40 - ##| ##41: napply neq_to_neqascii41 ##| ##42: napply neq_to_neqascii42 - ##| ##43: napply neq_to_neqascii43 ##| ##44: napply neq_to_neqascii44 - ##| ##45: napply neq_to_neqascii45 ##| ##46: napply neq_to_neqascii46 - ##| ##47: napply neq_to_neqascii47 ##| ##48: napply neq_to_neqascii48 - ##| ##49: napply neq_to_neqascii49 ##| ##50: napply neq_to_neqascii50 - ##| ##51: napply neq_to_neqascii51 ##| ##52: napply neq_to_neqascii52 - ##| ##53: napply neq_to_neqascii53 ##| ##54: napply neq_to_neqascii54 - ##| ##55: napply neq_to_neqascii55 ##| ##56: napply neq_to_neqascii56 - ##| ##57: napply neq_to_neqascii57 ##| ##58: napply neq_to_neqascii58 - ##| ##59: napply neq_to_neqascii59 ##| ##60: napply neq_to_neqascii60 - ##| ##61: napply neq_to_neqascii61 ##| ##62: napply neq_to_neqascii62 - ##| ##63: napply neq_to_neqascii63 ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/common/meta_type.ma b/helm/software/matita/contribs/ng_assembly/common/meta_type.ma index 1574f46ca..751a4bb56 100755 --- a/helm/software/matita/contribs/ng_assembly/common/meta_type.ma +++ b/helm/software/matita/contribs/ng_assembly/common/meta_type.ma @@ -39,10 +39,231 @@ nlet rec member_list (T:Type) (elem:T) (f:T → T → bool) (l:list T) on l ≝ (* tutti gli atomi dell'universo che poi saranno raggruppati in sottouniversi *) ninductive UN : Type ≝ - uq0 : UN | uq1 : UN | uq2 : UN | uq3 : UN -| uo0 : UN | uo1 : UN | uo2 : UN | uo3 : UN | uo4 : UN | uo5 : UN | uo6 : UN | uo7 : UN -| ux0 : UN | ux1 : UN | ux2 : UN | ux3 : UN | ux4 : UN | ux5 : UN | ux6 : UN | ux7 : UN -| ux8 : UN | ux9 : UN | uxA : UN | uxB : UN | uxC : UN | uxD : UN | uxE : UN | uxF : UN +(* quaternari[4] 1-4 *) + uq0 : UN +| uq1 : UN +| uq2 : UN +| uq3 : UN + +(* ottali[8] 5-12 *) +| uo0 : UN +| uo1 : UN +| uo2 : UN +| uo3 : UN +| uo4 : UN +| uo5 : UN +| uo6 : UN +| uo7 : UN + +(* esadecimali[16] 13-28 *) +| ux0 : UN +| ux1 : UN +| ux2 : UN +| ux3 : UN +| ux4 : UN +| ux5 : UN +| ux6 : UN +| ux7 : UN +| ux8 : UN +| ux9 : UN +| uxA : UN +| uxB : UN +| uxC : UN +| uxD : UN +| uxE : UN +| uxF : UN + +(* bitrigesimali[32] 29-60 *) +| ut00 : UN +| ut01 : UN +| ut02 : UN +| ut03 : UN +| ut04 : UN +| ut05 : UN +| ut06 : UN +| ut07 : UN +| ut08 : UN +| ut09 : UN +| ut0A : UN +| ut0B : UN +| ut0C : UN +| ut0D : UN +| ut0E : UN +| ut0F : UN +| ut10 : UN +| ut11 : UN +| ut12 : UN +| ut13 : UN +| ut14 : UN +| ut15 : UN +| ut16 : UN +| ut17 : UN +| ut18 : UN +| ut19 : UN +| ut1A : UN +| ut1B : UN +| ut1C : UN +| ut1D : UN +| ut1E : UN +| ut1F : UN + +(* ascii[63] 61-123 *) +| uch_0 : UN +| uch_1 : UN +| uch_2 : UN +| uch_3 : UN +| uch_4 : UN +| uch_5 : UN +| uch_6 : UN +| uch_7 : UN +| uch_8 : UN +| uch_9 : UN +| uch__ : UN +| uch_A : UN +| uch_B : UN +| uch_C : UN +| uch_D : UN +| uch_E : UN +| uch_F : UN +| uch_G : UN +| uch_H : UN +| uch_I : UN +| uch_J : UN +| uch_K : UN +| uch_L : UN +| uch_M : UN +| uch_N : UN +| uch_O : UN +| uch_P : UN +| uch_Q : UN +| uch_R : UN +| uch_S : UN +| uch_T : UN +| uch_U : UN +| uch_V : UN +| uch_W : UN +| uch_X : UN +| uch_Y : UN +| uch_Z : UN +| uch_a : UN +| uch_b : UN +| uch_c : UN +| uch_d : UN +| uch_e : UN +| uch_f : UN +| uch_g : UN +| uch_h : UN +| uch_i : UN +| uch_j : UN +| uch_k : UN +| uch_l : UN +| uch_m : UN +| uch_n : UN +| uch_o : UN +| uch_p : UN +| uch_q : UN +| uch_r : UN +| uch_s : UN +| uch_t : UN +| uch_u : UN +| uch_v : UN +| uch_w : UN +| uch_x : UN +| uch_y : UN +| uch_z : UN + +(* opcode[91] 124-214 *) +| ADC : UN +| ADD : UN +| AIS : UN +| AIX : UN +| AND : UN +| ASL : UN +| ASR : UN +| BCC : UN +| BCLRn : UN +| BCS : UN +| BEQ : UN +| BGE : UN +| BGND : UN +| BGT : UN +| BHCC : UN +| BHCS : UN +| BHI : UN +| BIH : UN +| BIL : UN +| BIT : UN +| BLE : UN +| BLS : UN +| BLT : UN +| BMC : UN +| BMI : UN +| BMS : UN +| BNE : UN +| BPL : UN +| BRA : UN +| BRCLRn : UN +| BRN : UN +| BRSETn : UN +| BSETn : UN +| BSR : UN +| CBEQA : UN +| CBEQX : UN +| CLC : UN +| CLI : UN +| CLR : UN +| CMP : UN +| COM : UN +| CPHX : UN +| CPX : UN +| DAA : UN +| DBNZ : UN +| DEC : UN +| DIV : UN +| EOR : UN +| INC : UN +| JMP : UN +| JSR : UN +| LDA : UN +| LDHX : UN +| LDX : UN +| LSR : UN +| MOV : UN +| MUL : UN +| NEG : UN +| NOP : UN +| NSA : UN +| ORA : UN +| PSHA : UN +| PSHH : UN +| PSHX : UN +| PULA : UN +| PULH : UN +| PULX : UN +| ROL : UN +| ROR : UN +| RSP : UN +| RTI : UN +| RTS : UN +| SBC : UN +| SEC : UN +| SEI : UN +| SHA : UN +| SLA : UN +| STA : UN +| STHX : UN +| STOP : UN +| STX : UN +| SUB : UN +| SWI : UN +| TAP : UN +| TAX : UN +| TPA : UN +| TST : UN +| TSX : UN +| TXA : UN +| TXS : UN +| WAIT : UN . (* funzione di uguaglianza sugli atomi *) @@ -52,6 +273,7 @@ ndefinition eq_UN ≝ | uq1 ⇒ match u2 with [ uq1 ⇒ true | _ ⇒ false ] | uq2 ⇒ match u2 with [ uq2 ⇒ true | _ ⇒ false ] | uq3 ⇒ match u2 with [ uq3 ⇒ true | _ ⇒ false ] + | uo0 ⇒ match u2 with [ uo0 ⇒ true | _ ⇒ false ] | uo1 ⇒ match u2 with [ uo1 ⇒ true | _ ⇒ false ] | uo2 ⇒ match u2 with [ uo2 ⇒ true | _ ⇒ false ] @@ -60,6 +282,7 @@ ndefinition eq_UN ≝ | uo5 ⇒ match u2 with [ uo5 ⇒ true | _ ⇒ false ] | uo6 ⇒ match u2 with [ uo6 ⇒ true | _ ⇒ false ] | uo7 ⇒ match u2 with [ uo7 ⇒ true | _ ⇒ false ] + | ux0 ⇒ match u2 with [ ux0 ⇒ true | _ ⇒ false ] | ux1 ⇒ match u2 with [ ux1 ⇒ true | _ ⇒ false ] | ux2 ⇒ match u2 with [ ux2 ⇒ true | _ ⇒ false ] @@ -76,16 +299,408 @@ ndefinition eq_UN ≝ | uxD ⇒ match u2 with [ uxD ⇒ true | _ ⇒ false ] | uxE ⇒ match u2 with [ uxE ⇒ true | _ ⇒ false ] | uxF ⇒ match u2 with [ uxF ⇒ true | _ ⇒ false ] + + | ut00 ⇒ match u2 with [ ut00 ⇒ true | _ ⇒ false ] + | ut01 ⇒ match u2 with [ ut01 ⇒ true | _ ⇒ false ] + | ut02 ⇒ match u2 with [ ut02 ⇒ true | _ ⇒ false ] + | ut03 ⇒ match u2 with [ ut03 ⇒ true | _ ⇒ false ] + | ut04 ⇒ match u2 with [ ut04 ⇒ true | _ ⇒ false ] + | ut05 ⇒ match u2 with [ ut05 ⇒ true | _ ⇒ false ] + | ut06 ⇒ match u2 with [ ut06 ⇒ true | _ ⇒ false ] + | ut07 ⇒ match u2 with [ ut07 ⇒ true | _ ⇒ false ] + | ut08 ⇒ match u2 with [ ut08 ⇒ true | _ ⇒ false ] + | ut09 ⇒ match u2 with [ ut09 ⇒ true | _ ⇒ false ] + | ut0A ⇒ match u2 with [ ut0A ⇒ true | _ ⇒ false ] + | ut0B ⇒ match u2 with [ ut0B ⇒ true | _ ⇒ false ] + | ut0C ⇒ match u2 with [ ut0C ⇒ true | _ ⇒ false ] + | ut0D ⇒ match u2 with [ ut0D ⇒ true | _ ⇒ false ] + | ut0E ⇒ match u2 with [ ut0E ⇒ true | _ ⇒ false ] + | ut0F ⇒ match u2 with [ ut0F ⇒ true | _ ⇒ false ] + | ut10 ⇒ match u2 with [ ut10 ⇒ true | _ ⇒ false ] + | ut11 ⇒ match u2 with [ ut11 ⇒ true | _ ⇒ false ] + | ut12 ⇒ match u2 with [ ut12 ⇒ true | _ ⇒ false ] + | ut13 ⇒ match u2 with [ ut13 ⇒ true | _ ⇒ false ] + | ut14 ⇒ match u2 with [ ut14 ⇒ true | _ ⇒ false ] + | ut15 ⇒ match u2 with [ ut15 ⇒ true | _ ⇒ false ] + | ut16 ⇒ match u2 with [ ut16 ⇒ true | _ ⇒ false ] + | ut17 ⇒ match u2 with [ ut17 ⇒ true | _ ⇒ false ] + | ut18 ⇒ match u2 with [ ut18 ⇒ true | _ ⇒ false ] + | ut19 ⇒ match u2 with [ ut19 ⇒ true | _ ⇒ false ] + | ut1A ⇒ match u2 with [ ut1A ⇒ true | _ ⇒ false ] + | ut1B ⇒ match u2 with [ ut1B ⇒ true | _ ⇒ false ] + | ut1C ⇒ match u2 with [ ut1C ⇒ true | _ ⇒ false ] + | ut1D ⇒ match u2 with [ ut1D ⇒ true | _ ⇒ false ] + | ut1E ⇒ match u2 with [ ut1E ⇒ true | _ ⇒ false ] + | ut1F ⇒ match u2 with [ ut1F ⇒ true | _ ⇒ false ] + + | uch_0 ⇒ match u2 with [ uch_0 ⇒ true | _ ⇒ false ] + | uch_1 ⇒ match u2 with [ uch_1 ⇒ true | _ ⇒ false ] + | uch_2 ⇒ match u2 with [ uch_2 ⇒ true | _ ⇒ false ] + | uch_3 ⇒ match u2 with [ uch_3 ⇒ true | _ ⇒ false ] + | uch_4 ⇒ match u2 with [ uch_4 ⇒ true | _ ⇒ false ] + | uch_5 ⇒ match u2 with [ uch_5 ⇒ true | _ ⇒ false ] + | uch_6 ⇒ match u2 with [ uch_6 ⇒ true | _ ⇒ false ] + | uch_7 ⇒ match u2 with [ uch_7 ⇒ true | _ ⇒ false ] + | uch_8 ⇒ match u2 with [ uch_8 ⇒ true | _ ⇒ false ] + | uch_9 ⇒ match u2 with [ uch_9 ⇒ true | _ ⇒ false ] + | uch__ ⇒ match u2 with [ uch__ ⇒ true | _ ⇒ false ] + | uch_A ⇒ match u2 with [ uch_A ⇒ true | _ ⇒ false ] + | uch_B ⇒ match u2 with [ uch_B ⇒ true | _ ⇒ false ] + | uch_C ⇒ match u2 with [ uch_C ⇒ true | _ ⇒ false ] + | uch_D ⇒ match u2 with [ uch_D ⇒ true | _ ⇒ false ] + | uch_E ⇒ match u2 with [ uch_E ⇒ true | _ ⇒ false ] + | uch_F ⇒ match u2 with [ uch_F ⇒ true | _ ⇒ false ] + | uch_G ⇒ match u2 with [ uch_G ⇒ true | _ ⇒ false ] + | uch_H ⇒ match u2 with [ uch_H ⇒ true | _ ⇒ false ] + | uch_I ⇒ match u2 with [ uch_I ⇒ true | _ ⇒ false ] + | uch_J ⇒ match u2 with [ uch_J ⇒ true | _ ⇒ false ] + | uch_K ⇒ match u2 with [ uch_K ⇒ true | _ ⇒ false ] + | uch_L ⇒ match u2 with [ uch_L ⇒ true | _ ⇒ false ] + | uch_M ⇒ match u2 with [ uch_M ⇒ true | _ ⇒ false ] + | uch_N ⇒ match u2 with [ uch_N ⇒ true | _ ⇒ false ] + | uch_O ⇒ match u2 with [ uch_O ⇒ true | _ ⇒ false ] + | uch_P ⇒ match u2 with [ uch_P ⇒ true | _ ⇒ false ] + | uch_Q ⇒ match u2 with [ uch_Q ⇒ true | _ ⇒ false ] + | uch_R ⇒ match u2 with [ uch_R ⇒ true | _ ⇒ false ] + | uch_S ⇒ match u2 with [ uch_S ⇒ true | _ ⇒ false ] + | uch_T ⇒ match u2 with [ uch_T ⇒ true | _ ⇒ false ] + | uch_U ⇒ match u2 with [ uch_U ⇒ true | _ ⇒ false ] + | uch_V ⇒ match u2 with [ uch_V ⇒ true | _ ⇒ false ] + | uch_W ⇒ match u2 with [ uch_W ⇒ true | _ ⇒ false ] + | uch_X ⇒ match u2 with [ uch_X ⇒ true | _ ⇒ false ] + | uch_Y ⇒ match u2 with [ uch_Y ⇒ true | _ ⇒ false ] + | uch_Z ⇒ match u2 with [ uch_Z ⇒ true | _ ⇒ false ] + | uch_a ⇒ match u2 with [ uch_a ⇒ true | _ ⇒ false ] + | uch_b ⇒ match u2 with [ uch_b ⇒ true | _ ⇒ false ] + | uch_c ⇒ match u2 with [ uch_c ⇒ true | _ ⇒ false ] + | uch_d ⇒ match u2 with [ uch_d ⇒ true | _ ⇒ false ] + | uch_e ⇒ match u2 with [ uch_e ⇒ true | _ ⇒ false ] + | uch_f ⇒ match u2 with [ uch_f ⇒ true | _ ⇒ false ] + | uch_g ⇒ match u2 with [ uch_g ⇒ true | _ ⇒ false ] + | uch_h ⇒ match u2 with [ uch_h ⇒ true | _ ⇒ false ] + | uch_i ⇒ match u2 with [ uch_i ⇒ true | _ ⇒ false ] + | uch_j ⇒ match u2 with [ uch_j ⇒ true | _ ⇒ false ] + | uch_k ⇒ match u2 with [ uch_k ⇒ true | _ ⇒ false ] + | uch_l ⇒ match u2 with [ uch_l ⇒ true | _ ⇒ false ] + | uch_m ⇒ match u2 with [ uch_m ⇒ true | _ ⇒ false ] + | uch_n ⇒ match u2 with [ uch_n ⇒ true | _ ⇒ false ] + | uch_o ⇒ match u2 with [ uch_o ⇒ true | _ ⇒ false ] + | uch_p ⇒ match u2 with [ uch_p ⇒ true | _ ⇒ false ] + | uch_q ⇒ match u2 with [ uch_q ⇒ true | _ ⇒ false ] + | uch_r ⇒ match u2 with [ uch_r ⇒ true | _ ⇒ false ] + | uch_s ⇒ match u2 with [ uch_s ⇒ true | _ ⇒ false ] + | uch_t ⇒ match u2 with [ uch_t ⇒ true | _ ⇒ false ] + | uch_u ⇒ match u2 with [ uch_u ⇒ true | _ ⇒ false ] + | uch_v ⇒ match u2 with [ uch_v ⇒ true | _ ⇒ false ] + | uch_w ⇒ match u2 with [ uch_w ⇒ true | _ ⇒ false ] + | uch_x ⇒ match u2 with [ uch_x ⇒ true | _ ⇒ false ] + | uch_y ⇒ match u2 with [ uch_y ⇒ true | _ ⇒ false ] + | uch_z ⇒ match u2 with [ uch_z ⇒ true | _ ⇒ false ] + + | ADC ⇒ match u2 with [ ADC ⇒ true | _ ⇒ false ] + | ADD ⇒ match u2 with [ ADD ⇒ true | _ ⇒ false ] + | AIS ⇒ match u2 with [ AIS ⇒ true | _ ⇒ false ] + | AIX ⇒ match u2 with [ AIX ⇒ true | _ ⇒ false ] + | AND ⇒ match u2 with [ AND ⇒ true | _ ⇒ false ] + | ASL ⇒ match u2 with [ ASL ⇒ true | _ ⇒ false ] + | ASR ⇒ match u2 with [ ASR ⇒ true | _ ⇒ false ] + | BCC ⇒ match u2 with [ BCC ⇒ true | _ ⇒ false ] + | BCLRn ⇒ match u2 with [ BCLRn ⇒ true | _ ⇒ false ] + | BCS ⇒ match u2 with [ BCS ⇒ true | _ ⇒ false ] + | BEQ ⇒ match u2 with [ BEQ ⇒ true | _ ⇒ false ] + | BGE ⇒ match u2 with [ BGE ⇒ true | _ ⇒ false ] + | BGND ⇒ match u2 with [ BGND ⇒ true | _ ⇒ false ] + | BGT ⇒ match u2 with [ BGT ⇒ true | _ ⇒ false ] + | BHCC ⇒ match u2 with [ BHCC ⇒ true | _ ⇒ false ] + | BHCS ⇒ match u2 with [ BHCS ⇒ true | _ ⇒ false ] + | BHI ⇒ match u2 with [ BHI ⇒ true | _ ⇒ false ] + | BIH ⇒ match u2 with [ BIH ⇒ true | _ ⇒ false ] + | BIL ⇒ match u2 with [ BIL ⇒ true | _ ⇒ false ] + | BIT ⇒ match u2 with [ BIT ⇒ true | _ ⇒ false ] + | BLE ⇒ match u2 with [ BLE ⇒ true | _ ⇒ false ] + | BLS ⇒ match u2 with [ BLS ⇒ true | _ ⇒ false ] + | BLT ⇒ match u2 with [ BLT ⇒ true | _ ⇒ false ] + | BMC ⇒ match u2 with [ BMC ⇒ true | _ ⇒ false ] + | BMI ⇒ match u2 with [ BMI ⇒ true | _ ⇒ false ] + | BMS ⇒ match u2 with [ BMS ⇒ true | _ ⇒ false ] + | BNE ⇒ match u2 with [ BNE ⇒ true | _ ⇒ false ] + | BPL ⇒ match u2 with [ BPL ⇒ true | _ ⇒ false ] + | BRA ⇒ match u2 with [ BRA ⇒ true | _ ⇒ false ] + | BRCLRn ⇒ match u2 with [ BRCLRn ⇒ true | _ ⇒ false ] + | BRN ⇒ match u2 with [ BRN ⇒ true | _ ⇒ false ] + | BRSETn ⇒ match u2 with [ BRSETn ⇒ true | _ ⇒ false ] + | BSETn ⇒ match u2 with [ BSETn ⇒ true | _ ⇒ false ] + | BSR ⇒ match u2 with [ BSR ⇒ true | _ ⇒ false ] + | CBEQA ⇒ match u2 with [ CBEQA ⇒ true | _ ⇒ false ] + | CBEQX ⇒ match u2 with [ CBEQX ⇒ true | _ ⇒ false ] + | CLC ⇒ match u2 with [ CLC ⇒ true | _ ⇒ false ] + | CLI ⇒ match u2 with [ CLI ⇒ true | _ ⇒ false ] + | CLR ⇒ match u2 with [ CLR ⇒ true | _ ⇒ false ] + | CMP ⇒ match u2 with [ CMP ⇒ true | _ ⇒ false ] + | COM ⇒ match u2 with [ COM ⇒ true | _ ⇒ false ] + | CPHX ⇒ match u2 with [ CPHX ⇒ true | _ ⇒ false ] + | CPX ⇒ match u2 with [ CPX ⇒ true | _ ⇒ false ] + | DAA ⇒ match u2 with [ DAA ⇒ true | _ ⇒ false ] + | DBNZ ⇒ match u2 with [ DBNZ ⇒ true | _ ⇒ false ] + | DEC ⇒ match u2 with [ DEC ⇒ true | _ ⇒ false ] + | DIV ⇒ match u2 with [ DIV ⇒ true | _ ⇒ false ] + | EOR ⇒ match u2 with [ EOR ⇒ true | _ ⇒ false ] + | INC ⇒ match u2 with [ INC ⇒ true | _ ⇒ false ] + | JMP ⇒ match u2 with [ JMP ⇒ true | _ ⇒ false ] + | JSR ⇒ match u2 with [ JSR ⇒ true | _ ⇒ false ] + | LDA ⇒ match u2 with [ LDA ⇒ true | _ ⇒ false ] + | LDHX ⇒ match u2 with [ LDHX ⇒ true | _ ⇒ false ] + | LDX ⇒ match u2 with [ LDX ⇒ true | _ ⇒ false ] + | LSR ⇒ match u2 with [ LSR ⇒ true | _ ⇒ false ] + | MOV ⇒ match u2 with [ MOV ⇒ true | _ ⇒ false ] + | MUL ⇒ match u2 with [ MUL ⇒ true | _ ⇒ false ] + | NEG ⇒ match u2 with [ NEG ⇒ true | _ ⇒ false ] + | NOP ⇒ match u2 with [ NOP ⇒ true | _ ⇒ false ] + | NSA ⇒ match u2 with [ NSA ⇒ true | _ ⇒ false ] + | ORA ⇒ match u2 with [ ORA ⇒ true | _ ⇒ false ] + | PSHA ⇒ match u2 with [ PSHA ⇒ true | _ ⇒ false ] + | PSHH ⇒ match u2 with [ PSHH ⇒ true | _ ⇒ false ] + | PSHX ⇒ match u2 with [ PSHX ⇒ true | _ ⇒ false ] + | PULA ⇒ match u2 with [ PULA ⇒ true | _ ⇒ false ] + | PULH ⇒ match u2 with [ PULH ⇒ true | _ ⇒ false ] + | PULX ⇒ match u2 with [ PULX ⇒ true | _ ⇒ false ] + | ROL ⇒ match u2 with [ ROL ⇒ true | _ ⇒ false ] + | ROR ⇒ match u2 with [ ROR ⇒ true | _ ⇒ false ] + | RSP ⇒ match u2 with [ RSP ⇒ true | _ ⇒ false ] + | RTI ⇒ match u2 with [ RTI ⇒ true | _ ⇒ false ] + | RTS ⇒ match u2 with [ RTS ⇒ true | _ ⇒ false ] + | SBC ⇒ match u2 with [ SBC ⇒ true | _ ⇒ false ] + | SEC ⇒ match u2 with [ SEC ⇒ true | _ ⇒ false ] + | SEI ⇒ match u2 with [ SEI ⇒ true | _ ⇒ false ] + | SHA ⇒ match u2 with [ SHA ⇒ true | _ ⇒ false ] + | SLA ⇒ match u2 with [ SLA ⇒ true | _ ⇒ false ] + | STA ⇒ match u2 with [ STA ⇒ true | _ ⇒ false ] + | STHX ⇒ match u2 with [ STHX ⇒ true | _ ⇒ false ] + | STOP ⇒ match u2 with [ STOP ⇒ true | _ ⇒ false ] + | STX ⇒ match u2 with [ STX ⇒ true | _ ⇒ false ] + | SUB ⇒ match u2 with [ SUB ⇒ true | _ ⇒ false ] + | SWI ⇒ match u2 with [ SWI ⇒ true | _ ⇒ false ] + | TAP ⇒ match u2 with [ TAP ⇒ true | _ ⇒ false ] + | TAX ⇒ match u2 with [ TAX ⇒ true | _ ⇒ false ] + | TPA ⇒ match u2 with [ TPA ⇒ true | _ ⇒ false ] + | TST ⇒ match u2 with [ TST ⇒ true | _ ⇒ false ] + | TSX ⇒ match u2 with [ TSX ⇒ true | _ ⇒ false ] + | TXA ⇒ match u2 with [ TXA ⇒ true | _ ⇒ false ] + | TXS ⇒ match u2 with [ TXS ⇒ true | _ ⇒ false ] + | WAIT ⇒ match u2 with [ WAIT ⇒ true | _ ⇒ false ] + ]. +ndefinition UN_destruct : ∀x,y.∀P:Prop.x = y → match eq_UN x y with [ true ⇒ P → P | false ⇒ P ]. + #x; #y; #P; #H; + nrewrite > H; + nelim y; + nnormalize; + napply (λx.x). +nqed. + +nlemma eq_to_eqUN : ∀e1,e2.e1 = e2 → eq_UN e1 e2 = true. + #e1; #e2; #H; + nrewrite > H; + nelim e2; + nnormalize; + napply refl_eq. +nqed. + +nlemma pippo : ∀A,B:Prop.(A → B) → ((¬B) → (¬A)). + #A; #B; #H; nnormalize; + #H1; #H2; + napply (H1 (H H2)). +nqed. + +nlemma pluto1 : ∀x.x = false → x ≠ true. + #x; nelim x; + ##[ ##1: #H; napply (bool_destruct … H) + ##| ##2: #H; nnormalize; #H1; napply (bool_destruct … H1) + ##] +nqed. + +nlemma pluto2 : ∀x.x = true → x ≠ false. + #x; nelim x; + ##[ ##1: #H; nnormalize; #H1; napply (bool_destruct … H1) + ##| ##2: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma pluto3 : ∀x.x ≠ false → x = true. + #x; nelim x; + ##[ ##1: #H; napply refl_eq + ##| ##2: nnormalize; #H; nelim (H (refl_eq …)) + ##] +nqed. + +nlemma pluto4 : ∀x.x ≠ true → x = false. + #x; nelim x; + ##[ ##1: nnormalize; #H; nelim (H (refl_eq …)) + ##| ##2: #H; napply refl_eq + ##] +nqed. + +nlemma neqUN_to_neq : ∀e1,e2.eq_UN e1 e2 = false → e1 ≠ e2. + #e1; #e2; #H; + napply (pippo (e1 = e2) (eq_UN e1 e2 = true) …); + ##[ ##1: napply (eq_to_eqUN e1 e2) + ##| ##2: napply (pluto1 … H) + ##] +nqed. + +naxiom eqUN_to_eq : ∀e1,e2.eq_UN e1 e2 = true → e1 = e2. + +nlemma neq_to_neqUN : ∀e1,e2.e1 ≠ e2 → eq_UN e1 e2 = false. + #e1; #e2; #H; + napply (pluto4 (eq_UN e1 e2)); + napply (pippo (eq_UN e1 e2 = true) (e1 = e2) ? H); + napply (eqUN_to_eq e1 e2). +nqed. + +nlemma decidable_UN : ∀x,y:UN.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_UN x y = true) (eq_UN x y = false) ?); + ##[ ##1: ncases (eq_UN x y); + ##[ ##1: napply (or2_intro1 (true = true) (true = false) (refl_eq …)) + ##| ##2: napply (or2_intro2 (false = true) (false = false) (refl_eq …)) + ##] + ##| ##2: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqUN_to_eq … H)) + ##| ##3: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqUN_to_neq … H)) + ##] +nqed. + + nrewrite > (eq_to_eqUN e1 e2 ?); + +nlemma eqUN_to_eq : ∀e1,e2.eq_UN e1 e2 = true → e1 = e2. + #e1; #e2; #H; + + +nlemma pippo : ∀P.(¬¬¬P) → (¬P). + #P; nnormalize; #H; #H1; + napply H; #H2; + napply (H2 H1). +nqed. + +nlemma pippo2 : ∀P.(¬¬P) → P. + #P; nnormalize; #H; + napply (or2_elim (¬P) (¬¬¬¬P) ?); + ##[ ##1: napply (or2_intro2 ?? (prop_to_nnprop ? H)) + ##| ##2: #H1; nelim (H H1) + ##| ##3: #H1; napply False_ind; + napply (H (pippo …)); + nnormalize; #H2; + napply False_ind; + napply (pippo ? H1); + #H2; + napply H; + napply False_ind; + napply H1; #H2; + + ##[ ##2: #H1;napply (prop_to_nnprop ? H); + ##| ##1: nnormalize; #H1; + napply False_ind; + napply H; #H1; + napply H; + napply (or2_elim (¬¬P) (¬¬¬P) ?); + ##[ ##1: napply (or2_intro1 ?? H); + + napply (absurd (¬¬¬P) P ??); + ##[ ##2: napply (prop_to_nnprop ? H); + ##| ##1: + napply (pippo P); + nnormalize; + nnormalize in H:(%); + #H1; + #H1; + napply (absurd ? False H ?); + nnormalize; + #H2; + nnormalize; #H; + napply False_ind; + napply H; #H1; + napply (absurd ? False (prop_to_nnprop (¬P) ?)); + ##[ ##1: nnormalize; #H2; napply (H2 H) + ##| ##2: + nnormalize; #H2; + nnormalize in K:(%); + # . +nqed. + +nlemma eqUN_to_eq : ∀e1,e2.eq_UN e1 e2 = true → e1 = e2. + #e1; #e2; + napply (or2_elim (eq_UN e1 e2 = false) (e1 ≠ e2) ?); + ##[ ##3: + nelim e1; + nnormalize; + nchange with (match e2 with [ ? ⇒ true | _ ⇒ false ]); + nelim e2; + #H; + napply (or2_elim (e1 = e2) (e1 ≠ e2) …); + ##[ ##2: + + ##[ ##1: ncases (eq_UN e1 e2); + ##[ ##1: napply (or2_intro1 (true = true) (true = false) (refl_eq …)) + ##| ##2: napply (or2_intro2 (false = true) (false = false) (refl_eq …)) + ##] + ##| ##3: + + + nnormalize; + nrewrite > H; + nelim e2; + nnormalize; + napply refl_eq. +nqed. + +ndefinition decidable_UN1 ≝ λx.∀y:UN.decidable (x = y). + #x; + nnormalize; + nelim x; + ##[ ##1: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq + ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (UN_destruct … H) + ##] +nqed. + +naxiom decidable_UN : ∀x,y:UN.decidable (x = y). + +nlemma neq_to_neqUN : ∀e1,e2.e1 ≠ e2 → eq_UN e1 e2 = false. + #e1; #e2; #H; + +nlemma eqUN_to_eq : ∀e1,e2.eq_UN e1 e2 = true → e1 = e2. + #e1; #e2; #H; napply (or2_elim ??? (decidable_UN e1 e2)); + ##[ ##2: #H1; + +nlemma pippo : ∀e1,e2:UN.decidable (e1 = e2). + #e1; #e2; nnormalize; + nelim e1; + napply (or2_intro1 (? = ?) (? ≠ ?) …); + nchange with (match e2 with [ ? ⇒ refl_eq UN ? | _ ⇒ ? ]); + napply (destruct_UN ? e2 (? = e2) ?); + +nlemma pippo : ∀e1,e2.eq_UN e1 e2 = true → e1 = e2. + #e1; nelim e1; #e2; + + (* costruttore di un sottouniverso: S_EL cioe' uno qualsiasi degli elementi del sottouniverso S_KO cioe' il caso impossibile *) ninductive S_UN (l:list UN) : Type ≝ - S_EL : Πe:UN.(member_list UN e eq_UN l) = true → S_UN l + S_EL : Πx:UN.((member_list UN x eq_UN l) = true) → + (∀y.x = y → (eq_UN x y = true)) → + (∀y.(eq_UN x y = true) → x = y) → + (∀y.decidable (x = y)) → + (∀y.x ≠ y → (eq_UN x y = false)) → + (∀y.(eq_UN x y = false) → x ≠ y) → + S_UN l | S_KO : False → S_UN l. +ndefinition SUN_create : Πl.Πe.(member_list UN e eq_UN l = true) → S_UN l. + #l; #e; #dim; napply (S_EL l e dim …); + ##[ ##1: #y; #H; nrewrite > H; nelim y; nnormalize; napply refl_eq + ##| ##2: #y; + (* sottoinsieme degli esadecimali *) ndefinition EX_UN ≝ [ ux0; ux1; ux2; ux3; ux4; ux5; ux6; ux7; ux8; ux9; uxA; uxB; uxC; uxD; uxE; uxF ]. @@ -140,7 +755,7 @@ ndefinition succ_EX_UN ≝ (S_EL EX_UN uxD (refl_eq …)) (S_EL EX_UN uxE (refl_eq …)) (S_EL EX_UN uxF (refl_eq …)) (S_EL EX_UN ux0 (refl_eq …)). -(* destruct universale per accedere ai due testimoni di esistenza *) +(* lemmi *) nlemma same_UN_1 : ∀l.∀e1,e2.∀dim1,dim2.S_EL l e1 dim1 = S_EL l e2 dim2 → e1 = e2. #l; #e1; #e2; #dim1; #dim2; #H; nchange with (match S_EL l e2 dim2 with [ S_EL a _ ⇒ e1 = a | S_KO _ ⇒ False ]); @@ -149,8 +764,9 @@ nlemma same_UN_1 : ∀l.∀e1,e2.∀dim1,dim2.S_EL l e1 dim1 = S_EL l e2 dim2 napply refl_eq. nqed. -(* destruct universale che funziona su qualsiasi sottouniverso *) -ndefinition destruct_UN + + +ndefinition destruct_SUN : ∀l.∀e1,e2:S_UN l.∀P:Prop. e1 = e2 → match eq_UN (getelem ? e1) (getelem ? e2) with [ true ⇒ P → P | false ⇒ P ]. #l; #e1; nelim e1; @@ -159,20 +775,88 @@ ndefinition destruct_UN ##[ ##2: #H; nelim H ##| ##1: #u2; #dim2; #P; #H; nchange with (match eq_UN u1 u2 with [ true ⇒ P → P | false ⇒ P ]); - nrewrite > (same_UN_1 l … H); - nelim u2; - nnormalize; - napply (λx.x) + napply (destruct_UN u1 u2 P (same_UN_1 l … H)) ##] ##] nqed. -nlemma eqUN_to_eq : ∀l.∀e1,e2:S_UN l.eq_UN (getelem ? e1) (getelem ? e2) = true → (getelem ? e1) = (getelem ? e2). + + +nlemma eq_to_eqSUN + : ∀l.∀e1,e2:S_UN l.(getelem ? e1) = (getelem ? e2) → eq_UN (getelem ? e1) (getelem ? e2) = true. #l; #e1; nelim e1; ##[ ##2: #H; nelim H ##| ##1: #u1; #dim1; #e2; ncases e2; ##[ ##2: #H; nelim H; - ##| ##1: #u2; #dim2; #H; nelim u1; + ##| ##1: #u2; #dim2; nchange with ((u1 = u2) → (eq_UN u1 u2 = true)); + napply (eq_to_eqUN u1 u2); + ##] + ##] +nqed. + +nlet rec scan (T:Type) (e:T) (f:T → T → bool) (l:list T) (n:nat) on l ≝ + match l with + [ nil ⇒ None ? + | cons h t ⇒ match f e h with + [ true ⇒ Some ? n + | false ⇒ scan T e f t (S n) + ] + ]. + +nlemma pippo : ∀l.∀x,y:S_UN l.x = y → scan ? (getelem ? x) eq_UN l O = scan ? (getelem ? y) eq_UN l O. + #l; nelim l; + ##[ ##1: #x; #y; #H; nnormalize; napply refl_eq + ##| ##2: #hh; #tt; #H; #x; nelim x; + ##[ ##2: #F; nelim F + ##| ##1: #u1; #dim1; #y; nelim y; + ##[ ##2: #F; nelim F + ##| ##1: #u2; #dim2; #H1; + nchange with ((scan ? u1 ???) = (scan ? u2 ???)); + nrewrite > (same_UN_1 (hh::tt) … H1); + nchange with + nletin K ≝ (same_UN_1 (hh::tt) … H1); + nchange in K:(%) with (u1 = u2); + nnormalize in K:(%); + nrewrite > (same_UN_1 (hh::tt) … H1) in dim1:(%) dim2:(%) ⊢ %; + nchange with (match eq_UN + + nchange with (scan ? u1 eq_UN ? O = scan ? u2 eq_UN ? O); + + #x; nelim x; + ##[ ##2: #H; nelim H + ##| ##1: #u1; #dim1; #y; nelim y; + ##[ ##2: #H; nelim H + ##| ##1: #u2; #dim2; #H; nchange with (scan ? u1 eq_UN l O = scan ? u2 eq_UN l O); + nrewrite > (same_UN_1 l … H); + nelim l in x:(%) dim1:(%) y:(%) dim2:(%) H:(%) ⊢ %; + ##[ ##1: #x; #dim1; #y; #dim2; #H; nnormalize; napply refl_eq + ##| ##2: #uu1; #ll; #H; #y; + nnormalize; + +nlemma decidable_UN : ∀x,y:UN.decidable (x = y). + #x; nnormalize; #y; + napply (Or2_ind); + + + napply (destruct_UN ? y (Or2 ??) ?); + +nlemma neq_to_neqUN + : ∀l.∀e1,e2:S_UN l.(getelem ? e1) ≠ (getelem ? e2) → eq_UN (getelem ? e1) (getelem ? e2) = false. + #l; #e1; nelim e1; + ##[ ##2: #H; nelim H + ##| ##1: #u1; #dim1; #e2; ncases e2; + ##[ ##2: #H; nelim H; + ##| ##1: #u2; #dim2; nchange with ((u1 ≠ u2) → (eq_UN u1 u2 = false)); + #H; nrewrite > H; + nelim u2; nnormalize; napply refl_eq + ##] + ##] +nqed. + + nelim u1 in dim1:(%) H:(%) ⊢ %; #dim1; #H; + ##[ ##1: nelim u2 in dim2:(%) H:(%) ⊢ %; #dim2; #H; + napply (destruct_UN l (S_EL l uq0 dim1) ?? H); + ##[ ##1: nelim u2; ##[ ##1: diff --git a/helm/software/matita/contribs/ng_assembly/common/string_lemmas.ma b/helm/software/matita/contribs/ng_assembly/common/string_lemmas.ma index b30befbf9..be090076f 100755 --- a/helm/software/matita/contribs/ng_assembly/common/string_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/common/string_lemmas.ma @@ -21,10 +21,7 @@ (* ********************************************************************** *) include "common/string.ma". -include "common/ascii_lemmas2.ma". -include "common/ascii_lemmas3.ma". -include "common/ascii_lemmas4.ma". -include "common/ascii_lemmas5.ma". +include "common/ascii_lemmas.ma". include "common/list_utility_lemmas.ma". (* ************************ *) diff --git a/helm/software/matita/contribs/ng_assembly/common/theory.ma b/helm/software/matita/contribs/ng_assembly/common/theory.ma index c4bd19f16..7f5f90036 100644 --- a/helm/software/matita/contribs/ng_assembly/common/theory.ma +++ b/helm/software/matita/contribs/ng_assembly/common/theory.ma @@ -45,7 +45,7 @@ nlemma absurd : ∀A,C:Prop.A → ¬A → C. nelim (H1 H); nqed. -nlemma not_to_not : ∀A,B:Prop. (A → B) → ¬B →¬A. +nlemma not_to_not : ∀A,B:Prop. (A → B) → ((¬B) → (¬A)). #A; #B; #H; nnormalize; #H1; #H2; @@ -304,6 +304,14 @@ nlemma eq_elim_r: ∀A:Type.∀x:A.∀P:A → Prop.P x → ∀y:A.y=x → P y. napply H. nqed. +nlemma symmetric_neq : ∀T.∀x,y:T.x ≠ y → y ≠ x. + #T; #x; #y; + nnormalize; + #H; #H1; + nrewrite > H1 in H:(%); #H; + napply (H (refl_eq …)). +nqed. + ndefinition relationT : Type → Type → Type ≝ λA,T:Type.A → A → T. diff --git a/helm/software/matita/contribs/ng_assembly/compiler/ast_type_lemmas.ma b/helm/software/matita/contribs/ng_assembly/compiler/ast_type_lemmas.ma index 2753d6118..039e39b0f 100755 --- a/helm/software/matita/contribs/ng_assembly/compiler/ast_type_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/compiler/ast_type_lemmas.ma @@ -39,53 +39,51 @@ ndefinition astbasetype_destruct : astbasetype_destruct_aux. napply (λx.x). nqed. -nlemma symmetric_eqastbasetype : symmetricT ast_base_type bool eq_astbasetype. - #b1; #b2; ncases b1; ncases b2; nnormalize; napply refl_eq. nqed. +nlemma eq_to_eqastbasetype : ∀n1,n2.n1 = n2 → eq_astbasetype n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; + nelim n2; + nnormalize; + napply refl_eq. +nqed. -nlemma eqastbasetype_to_eq : ∀b1,b2.eq_astbasetype b1 b2 = true → b1 = b2. - #b1; #b2; ncases b1; ncases b2; nnormalize; - ##[ ##1,5,9: #H; napply refl_eq - ##| ##*: #H; napply (bool_destruct … H) +nlemma neqastbasetype_to_neq : ∀n1,n2.eq_astbasetype n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_astbasetype n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqastbasetype n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) ##] nqed. -nlemma eq_to_eqastbasetype : ∀b1,b2.b1 = b2 → eq_astbasetype b1 b2 = true. +nlemma eqastbasetype_to_eq : ∀b1,b2.eq_astbasetype b1 b2 = true → b1 = b2. #b1; #b2; ncases b1; ncases b2; nnormalize; ##[ ##1,5,9: #H; napply refl_eq - ##| ##*: #H; napply (astbasetype_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) ##] nqed. -nlemma decidable_astbasetype : ∀x,y:ast_base_type.decidable (x = y). - #x; #y; - nnormalize; - nelim x; - nelim y; - ##[ ##1,5,9: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H; - napply False_ind; - napply (astbasetype_destruct … H) - ##] +nlemma neq_to_neqastbasetype : ∀n1,n2.n1 ≠ n2 → eq_astbasetype n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_astbasetype n1 n2)); + napply (not_to_not (eq_astbasetype n1 n2 = true) (n1 = n2) ? H); + napply (eqastbasetype_to_eq n1 n2). nqed. -nlemma neqastbasetype_to_neq : ∀b1,b2.(eq_astbasetype b1 b2 = false) → (b1 ≠ b2). - #b1; #b2; - ncases b1; - ncases b2; - nnormalize; - ##[ ##1,5,9: #H; napply (bool_destruct … H) - ##| ##*: #H; #H1; napply (astbasetype_destruct … H1) +nlemma decidable_astbasetype : ∀x,y:ast_base_type.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_astbasetype x y = true) (eq_astbasetype x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqastbasetype_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqastbasetype_to_neq … H)) ##] nqed. -nlemma neq_to_neqastbasetype : ∀b1,b2.b1 ≠ b2 → eq_astbasetype b1 b2 = false. - #b1; #b2; - ncases b1; - ncases b2; - nnormalize; - ##[ ##1,5,9: #H; nelim (H (refl_eq …)) - ##| ##*: #H; napply refl_eq +nlemma symmetric_eqastbasetype : symmetricT ast_base_type bool eq_astbasetype. + #n1; #n2; + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_astbasetype n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqastbasetype n1 n2 H); + napply (symmetric_eq ? (eq_astbasetype n2 n1) false); + napply (neq_to_neqastbasetype n2 n1 (symmetric_neq ? n1 n2 H)) ##] nqed. @@ -152,97 +150,6 @@ ndefinition asttype_destruct : asttype_destruct_aux. ##] nqed. -nlemma symmetric_eqasttype_aux1 - : ∀nl1,nl2. - (eq_asttype (AST_TYPE_STRUCT nl1) (AST_TYPE_STRUCT nl2)) = (eq_asttype (AST_TYPE_STRUCT nl2) (AST_TYPE_STRUCT nl1)) → - (bfold_right_neList2 ? (λx,y.eq_asttype x y) nl1 nl2) = (bfold_right_neList2 ? (λx,y.eq_asttype x y) nl2 nl1). - #nl1; #nl2; #H; - napply H. -nqed. - -nlemma symmetric_eqasttype : symmetricT ast_type bool eq_asttype. - #t1; napply (ast_type_index … t1); - ##[ ##1: #b1; #t2; ncases t2; - ##[ ##1: #b2; nchange with ((eq_astbasetype b1 b2) = (eq_astbasetype b2 b1)); - nrewrite > (symmetric_eqastbasetype b1 b2); - napply refl_eq - ##| ##2: #st2; #n2; nnormalize; napply refl_eq - ##| ##3: #nl2; nnormalize; napply refl_eq - ##] - ##| ##2: #st1; #n1; #H; #t2; ncases t2; - ##[ ##2: #st2; #n2; nchange with (((eq_asttype st1 st2)⊗(eq_nat n1 n2)) = ((eq_asttype st2 st1)⊗(eq_nat n2 n1))); - nrewrite > (symmetric_eqnat n1 n2); - nrewrite > (H st2); - napply refl_eq - ##| ##1: #b2; nnormalize; napply refl_eq - ##| ##3: #nl2; nnormalize; napply refl_eq - ##] - ##| ##3: #hh1; #H; #t2; ncases t2; - ##[ ##3: #nl2; ncases nl2; - ##[ ##1: #hh2; nchange with ((eq_asttype hh1 hh2) = (eq_asttype hh2 hh1)); - nrewrite > (H hh2); - napply refl_eq - ##| ##2: #hh2; #ll2; nnormalize; napply refl_eq - ##] - ##| ##1: #b2; nnormalize; napply refl_eq - ##| ##2: #st2; #n2; nnormalize; napply refl_eq - ##] - ##| ##4: #hh1; #ll1; #H; #H1; #t2; ncases t2; - ##[ ##3: #nl2; ncases nl2; - ##[ ##1: #hh2; nnormalize; napply refl_eq - ##| ##2: #hh2; #ll2; nnormalize; - nrewrite > (H hh2); - nrewrite > (symmetric_eqasttype_aux1 ll1 ll2 (H1 (AST_TYPE_STRUCT ll2))); - napply refl_eq - ##] - ##| ##1: #b2; nnormalize; napply refl_eq - ##| ##2: #st2; #n2; nnormalize; napply refl_eq - ##] - ##] -nqed. - -nlemma eqasttype_to_eq : ∀t1,t2.eq_asttype t1 t2 = true → t1 = t2. - #t1; - napply (ast_type_index … t1); - ##[ ##1: #b1; #t2; ncases t2; - ##[ ##1: #b2; #H; nchange in H:(%) with ((eq_astbasetype b1 b2) = true); - nrewrite > (eqastbasetype_to_eq b1 b2 H); - napply refl_eq - ##| ##2: #st2; #n2; nnormalize; #H; napply (bool_destruct … H) - ##| ##3: #nl2; nnormalize; #H; napply (bool_destruct … H) - ##] - ##| ##2: #st1; #n1; #H; #t2; ncases t2; - ##[ ##2: #st2; #n2; #H1; nchange in H1:(%) with (((eq_asttype st1 st2)⊗(eq_nat n1 n2)) = true); - nrewrite > (H st2 (andb_true_true_l … H1)); - nrewrite > (eqnat_to_eq n1 n2 (andb_true_true_r … H1)); - napply refl_eq - ##| ##1: #b2; nnormalize; #H1; napply (bool_destruct … H1) - ##| ##3: #nl2; nnormalize; #H1; napply (bool_destruct … H1) - ##] - ##| ##3: #hh1; #H; #t2; ncases t2; - ##[ ##3: #nl2; ncases nl2; - ##[ ##1: #hh2; #H1; nchange in H1:(%) with ((eq_asttype hh1 hh2) = true); - nrewrite > (H hh2 H1); - napply refl_eq - ##| ##2: #hh2; #ll2; nnormalize; #H1; napply (bool_destruct … H1) - ##] - ##| ##1: #b2; nnormalize; #H1; napply (bool_destruct … H1) - ##| ##2: #st2; #n2; nnormalize; #H1; napply (bool_destruct … H1) - ##] - ##| ##4: #hh1; #ll1; #H; #H1; #t2; ncases t2; - ##[ ##3: #nl2; ncases nl2; - ##[ ##1: #hh2; nnormalize; #H2; napply (bool_destruct … H2) - ##| ##2: #hh2; #ll2; #H2; nchange in H2:(%) with (((eq_asttype hh1 hh2)⊗(bfold_right_neList2 ? (λx,y.eq_asttype x y) ll1 ll2)) = true); - nrewrite > (H hh2 (andb_true_true_l … H2)); - nrewrite > (asttype_destruct_struct_struct ll1 ll2 (H1 (AST_TYPE_STRUCT ll2) (andb_true_true_r … H2))); - napply refl_eq - ##] - ##| ##1: #b2; nnormalize; #H2; napply (bool_destruct … H2) - ##| ##2: #st2; #n2; nnormalize; #H2; napply (bool_destruct … H2) - ##] - ##] -nqed. - nlemma eq_to_eqasttype_aux1 : ∀nl1,nl2. ((eq_asttype (AST_TYPE_STRUCT nl1) (AST_TYPE_STRUCT nl2)) = true) → @@ -298,185 +205,78 @@ nlemma eq_to_eqasttype : ∀t1,t2.t1 = t2 → eq_asttype t1 t2 = true. ##] nqed. -nlemma decidable_asttype : ∀x,y:ast_type.decidable (x = y). - #x; - napply (ast_type_index … x); - ##[ ##1: #b1; #y; ncases y; - ##[ ##1: #b2; nnormalize; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_astbasetype b1 b2)); - ##[ ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##| ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H1; napply (H (asttype_destruct_base_base … H1)) - ##] - ##| ##2: #b2; #n2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H; napply (asttype_destruct … H) - ##| ##3: #n2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H; napply (asttype_destruct … H) - ##] - ##| ##2: #b1; #n1; #H; #y; ncases y; - ##[ ##2: #b2; #n2; nnormalize; napply (or2_elim (? = ?) (? ≠ ?) ? (H b2)); - ##[ ##2: #H1; napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; - #H2; napply (H1 (asttype_destruct_array_array_1 … H2)) - ##| ##1: #H1; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_nat n1 n2)); - ##[ ##2: #H2; napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; - #H3; napply (H2 (asttype_destruct_array_array_2 … H3)) - ##| ##1: #H2; nrewrite > H1; nrewrite > H2; - napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##] - ##] - ##| ##1: #b2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H1; napply (asttype_destruct … H1) - ##| ##3: #n2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H1; napply (asttype_destruct … H1) - ##] - ##| ##3: #hh1; #H; #y; ncases y; - ##[ ##3: #n2; ncases n2; - ##[ ##1: #hh2; nnormalize; napply (or2_elim (? = ?) (? ≠ ?) ? (H hh2)); - ##[ ##2: #H1; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H2; - napply (H1 (nelist_destruct_nil_nil … (asttype_destruct_struct_struct … H2))) - ##| ##1: #H1; nrewrite > H1; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##] - ##| ##2: #hh2; #tt2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H1; napply (nelist_destruct_nil_cons ast_type … (asttype_destruct_struct_struct … H1)) - ##] - ##| ##1: #b2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H1; napply (asttype_destruct … H1) - ##| ##2: #b2; #n2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H1; napply (asttype_destruct … H1) - ##] - ##| ##4: #hh1; #tt1; #H; #H1; #y; ncases y; - ##[ ##3: #n2; ncases n2; - ##[ ##2: #hh2; #tt2; nnormalize; napply (or2_elim (? = ?) (? ≠ ?) ? (H hh2)); - ##[ ##2: #H2; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H3; napply (H2 (nelist_destruct_cons_cons_1 ast_type … (asttype_destruct_struct_struct … H3))) - ##| ##1: #H2; napply (or2_elim (? = ?) (? ≠ ?) ? (H1 (AST_TYPE_STRUCT tt2))); - ##[ ##2: #H3; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H4; napply H3; - nrewrite > (nelist_destruct_cons_cons_2 ast_type … (asttype_destruct_struct_struct … H4)); - napply refl_eq - ##| ##1: #H3; nrewrite > H2; nrewrite > (asttype_destruct_struct_struct … H3); - napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##] - ##] - ##| ##1: #hh2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H2; napply (nelist_destruct_cons_nil ast_type … (asttype_destruct_struct_struct … H2)) - ##] - ##| ##1: #b2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H2; napply (asttype_destruct … H2) - ##| ##2: #b2; #n2; nnormalize; napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H2; napply (asttype_destruct … H2) - ##] +nlemma neqasttype_to_neq : ∀n1,n2.eq_asttype n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_asttype n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqasttype n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) ##] nqed. -nlemma neqasttype_to_neq : ∀t1,t2.eq_asttype t1 t2 = false → t1 ≠ t2. +nlemma eqasttype_to_eq : ∀t1,t2.eq_asttype t1 t2 = true → t1 = t2. #t1; napply (ast_type_index … t1); ##[ ##1: #b1; #t2; ncases t2; - ##[ ##1: #b2; nchange with ((eq_astbasetype b1 b2 = false) → ?); #H; - nnormalize; #H1; napply (neqastbasetype_to_neq b1 b2 H); - napply (asttype_destruct_base_base … H1) - ##| ##2: #b2; #n2; nnormalize; #H; #H1; napply (asttype_destruct … H1) - ##| ##3: #n2; nnormalize; #H; #H1; napply (asttype_destruct … H1) + ##[ ##1: #b2; #H; nchange in H:(%) with ((eq_astbasetype b1 b2) = true); + nrewrite > (eqastbasetype_to_eq b1 b2 H); + napply refl_eq + ##| ##2: #st2; #n2; nnormalize; #H; napply (bool_destruct … H) + ##| ##3: #nl2; nnormalize; #H; napply (bool_destruct … H) ##] - ##| ##2: #b1; #n1; #H; #t2; ncases t2; - ##[ ##2: #b2; #n2; nchange with ((((eq_asttype b1 b2)⊗(eq_nat n1 n2)) = false) → ?); #H1; - napply (or2_elim ??? (andb_false2 … H1)); - ##[ ##1: #H2; nnormalize; #H3; napply (H b2 H2); napply (asttype_destruct_array_array_1 … H3) - ##| ##2: #H2; nnormalize; #H3; napply (neqnat_to_neq n1 n2 H2); napply (asttype_destruct_array_array_2 … H3) - ##] - ##| ##1: #b2; nnormalize; #H1; #H2; napply (asttype_destruct … H2) - ##| ##3: #n2; nnormalize; #H1; #H2; napply (asttype_destruct … H2) + ##| ##2: #st1; #n1; #H; #t2; ncases t2; + ##[ ##2: #st2; #n2; #H1; nchange in H1:(%) with (((eq_asttype st1 st2)⊗(eq_nat n1 n2)) = true); + nrewrite > (H st2 (andb_true_true_l … H1)); + nrewrite > (eqnat_to_eq n1 n2 (andb_true_true_r … H1)); + napply refl_eq + ##| ##1: #b2; nnormalize; #H1; napply (bool_destruct … H1) + ##| ##3: #nl2; nnormalize; #H1; napply (bool_destruct … H1) ##] ##| ##3: #hh1; #H; #t2; ncases t2; - ##[ ##3: #n2; ncases n2; - ##[ ##1: #hh2; nchange with ((eq_asttype hh1 hh2 = false) → ?); #H1; - nnormalize; #H2; napply (H hh2 H1); - napply (nelist_destruct_nil_nil ast_type … (asttype_destruct_struct_struct … H2)) - ##| ##2: #hh2; #tt2; nnormalize; #H1; #H2; - napply (nelist_destruct_nil_cons ast_type … (asttype_destruct_struct_struct … H2)) + ##[ ##3: #nl2; ncases nl2; + ##[ ##1: #hh2; #H1; nchange in H1:(%) with ((eq_asttype hh1 hh2) = true); + nrewrite > (H hh2 H1); + napply refl_eq + ##| ##2: #hh2; #ll2; nnormalize; #H1; napply (bool_destruct … H1) ##] - ##| ##1: #b2; nnormalize; #H1; #H2; napply (asttype_destruct … H2) - ##| ##2: #b2; #n2; nnormalize; #H1; #H2; napply (asttype_destruct … H2) + ##| ##1: #b2; nnormalize; #H1; napply (bool_destruct … H1) + ##| ##2: #st2; #n2; nnormalize; #H1; napply (bool_destruct … H1) ##] - ##| ##4: #hh1; #tt1; #H; #H1; #t2; ncases t2; - ##[ ##3: #n2; ncases n2; - ##[ ##2: #hh2; #tt2; nchange with ((((eq_asttype hh1 hh2)⊗(bfold_right_neList2 ?? tt1 tt2)) = false) → ?); - #H2; napply (or2_elim ??? (andb_false2 … H2)); - ##[ ##1: #H3; nnormalize; #H4; napply (H hh2 H3); - napply (nelist_destruct_cons_cons_1 ast_type … (asttype_destruct_struct_struct … H4)) - ##| ##2: #H3; nnormalize; #H4; napply (H1 (AST_TYPE_STRUCT tt2) H3); - nrewrite > (nelist_destruct_cons_cons_2 ast_type … (asttype_destruct_struct_struct … H4)); - napply refl_eq - ##] - ##| ##1: #hh2; nnormalize; #H2; #H3; - napply (nelist_destruct_cons_nil ast_type … (asttype_destruct_struct_struct … H3)) + ##| ##4: #hh1; #ll1; #H; #H1; #t2; ncases t2; + ##[ ##3: #nl2; ncases nl2; + ##[ ##1: #hh2; nnormalize; #H2; napply (bool_destruct … H2) + ##| ##2: #hh2; #ll2; #H2; nchange in H2:(%) with (((eq_asttype hh1 hh2)⊗(bfold_right_neList2 ? (λx,y.eq_asttype x y) ll1 ll2)) = true); + nrewrite > (H hh2 (andb_true_true_l … H2)); + nrewrite > (asttype_destruct_struct_struct ll1 ll2 (H1 (AST_TYPE_STRUCT ll2) (andb_true_true_r … H2))); + napply refl_eq ##] - ##| ##1: #b2; nnormalize; #H2; #H3; napply (asttype_destruct … H3) - ##| ##2: #b2; #n2; nnormalize; #H2; #H3; napply (asttype_destruct … H3) + ##| ##1: #b2; nnormalize; #H2; napply (bool_destruct … H2) + ##| ##2: #st2; #n2; nnormalize; #H2; napply (bool_destruct … H2) ##] ##] nqed. -nlemma neq_to_neqasttype : ∀t1,t2.t1 ≠ t2 → eq_asttype t1 t2 = false. - #t1; - napply (ast_type_index … t1); - ##[ ##1: #b1; #t2; ncases t2; - ##[ ##1: #b2; nchange with (? → (eq_astbasetype b1 b2 = false)); #H; - napply (neq_to_neqastbasetype b1 b2 ?); nnormalize; #H1; - napply H; nrewrite > H1; napply refl_eq - ##| ##2: #b2; #n2; nnormalize; #H; napply refl_eq - ##| ##3: #n2; nnormalize; #H; napply refl_eq - ##] - ##| ##2: #b1; #n1; #H; #t2; ncases t2; - ##[ ##2: #b2; #n2; nchange with (? → ((eq_asttype b1 b2)⊗(eq_nat n1 n2)) = false); #H1; - napply (or2_elim ??? (decidable_asttype b1 b2)); - ##[ ##2: #H2; nrewrite > (H b2 H2); nnormalize; napply refl_eq - ##| ##1: #H2; napply (or2_elim ??? (decidable_nat n1 n2)) - ##[ ##2: #H3; nrewrite > (neq_to_neqnat n1 n2 H3); - nrewrite > (andb_false2_2 (eq_asttype b1 b2)); - napply refl_eq - ##| ##1: #H3; nrewrite > H2 in H1:(%); nrewrite > H3; #H1; - nelim (H1 (refl_eq …)) - ##] - ##] - ##| ##1: #b2; nnormalize; #H1; napply refl_eq - ##| ##3: #n2; nnormalize; #H1; napply refl_eq - ##] - ##| ##3: #hh1; #H; #t2; ncases t2; - ##[ ##3: #n2; ncases n2; - ##[ ##1: #hh2; nchange with (? → (eq_asttype hh1 hh2 = false)); #H1; - napply (H hh2); nnormalize; #H2; nrewrite > H2 in H1:(%); - nnormalize; #H1; napply (H1 (refl_eq …)) - ##| ##2: #hh2; #tt2; nnormalize; #H1; napply refl_eq - ##] - ##| ##1: #b2; nnormalize; #H1; napply refl_eq - ##| ##2: #b2; #n2; nnormalize; #H1; napply refl_eq - ##] - ##| ##4: #hh1; #tt1; #H; #H1; #t2; ncases t2; - ##[ ##3: #n2; ncases n2; - ##[ ##2: #hh2; #tt2; nchange with (? → ((eq_asttype hh1 hh2)⊗(bfold_right_neList2 ?? tt1 tt2)) = false); - #H2; napply (or2_elim (hh1 ≠ hh2) (tt1 ≠ tt2) …); - ##[ ##2: #H3; nrewrite > (H hh2 H3); nnormalize; napply refl_eq - ##| ##3: #H3; nchange with (((eq_asttype hh1 hh2)⊗(eq_asttype (AST_TYPE_STRUCT tt1) (AST_TYPE_STRUCT tt2))) = false); - nrewrite > (H1 (AST_TYPE_STRUCT tt2) ?); - ##[ ##1: nrewrite > (andb_false2_2 (eq_asttype hh1 hh2)); napply refl_eq - ##| ##2: nnormalize; #H4; napply (H3 (asttype_destruct_struct_struct … H4)) - ##] - ##| ##1: napply (or2_elim ??? (decidable_asttype hh1 hh2)); - ##[ ##2: #H3; napply (or2_intro1 … H3) - ##| ##1: #H3; napply (or2_elim ??? (decidable_nelist ast_type decidable_asttype tt1 tt2)); - ##[ ##2: #H4; napply (or2_intro2 … H4) - ##| ##1: #H4; nrewrite > H3 in H2:(%); nrewrite > H4; #H2; - nelim (H2 (refl_eq …)) - ##] - ##] - ##] - ##| ##1: #hh2; nnormalize; #H2; napply refl_eq - ##] - ##| ##1: #b2; nnormalize; #H2; napply refl_eq - ##| ##2: #b2; #n2; nnormalize; #H2; napply refl_eq - ##] +nlemma neq_to_neqasttype : ∀n1,n2.n1 ≠ n2 → eq_asttype n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_asttype n1 n2)); + napply (not_to_not (eq_asttype n1 n2 = true) (n1 = n2) ? H); + napply (eqasttype_to_eq n1 n2). +nqed. + +nlemma decidable_asttype : ∀x,y:ast_type.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_asttype x y = true) (eq_asttype x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqasttype_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqasttype_to_neq … H)) + ##] +nqed. + +nlemma symmetric_eqasttype : symmetricT ast_type bool eq_asttype. + #n1; #n2; + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_asttype n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqasttype n1 n2 H); + napply (symmetric_eq ? (eq_asttype n2 n1) false); + napply (neq_to_neqasttype n2 n1 (symmetric_neq ? n1 n2 H)) ##] nqed. diff --git a/helm/software/matita/contribs/ng_assembly/depends b/helm/software/matita/contribs/ng_assembly/depends index 6f77e4b62..311889200 100644 --- a/helm/software/matita/contribs/ng_assembly/depends +++ b/helm/software/matita/contribs/ng_assembly/depends @@ -6,24 +6,21 @@ num/bool.ma common/theory.ma freescale/table_HCS08_tests.ma freescale/opcode.ma freescale/table_HCS08.ma compiler/preast_tree.ma common/string.ma compiler/ast_type.ma num/word32.ma freescale/multivm.ma freescale/load_write.ma -common/ascii_lemmas1.ma common/ascii.ma common/nat_to_num.ma common/nat.ma num/word32.ma -common/nat.ma num/bool.ma freescale/opcode_base_lemmas.ma freescale/opcode_base.ma num/bool_lemmas.ma freescale_tests/medium_tests_tools.ma freescale/multivm.ma -common/string_lemmas.ma common/ascii_lemmas2.ma common/ascii_lemmas3.ma common/ascii_lemmas4.ma common/ascii_lemmas5.ma common/list_utility_lemmas.ma common/string.ma +common/string_lemmas.ma common/ascii_lemmas.ma common/list_utility_lemmas.ma common/string.ma +common/nat.ma num/bool.ma compiler/ast_type_lemmas.ma common/list_utility_lemmas.ma compiler/ast_type.ma num/quatern.ma num/bool.ma freescale/table_HC05_tests.ma freescale/opcode.ma freescale/table_HC05.ma num/exadecim.ma common/nat.ma common/prod.ma num/bool.ma num/oct.ma num/quatern.ma num/bitrigesim_lemmas.ma num/bitrigesim.ma num/bool_lemmas.ma num/byte8.ma num/bitrigesim.ma num/exadecim.ma -freescale/opcode_base_lemmas_opcode1.ma freescale/opcode_base.ma num/bool_lemmas.ma freescale/memory_func.ma common/list.ma common/option.ma freescale/memory_struct.ma num/word16.ma freescale/load_write.ma freescale/model.ma freescale/translation.ma -common/ascii_lemmas4.ma common/ascii_lemmas1.ma num/bool_lemmas.ma -common/nat_lemmas.ma common/nat.ma num/bool_lemmas.ma freescale/table_RS08.ma common/list.ma freescale/opcode_base.ma +common/nat_lemmas.ma common/nat.ma num/bool_lemmas.ma common/list_utility_lemmas.ma common/list_lemmas.ma common/list_utility.ma freescale/table_RS08_tests.ma freescale/opcode.ma freescale/table_RS08.ma freescale/translation.ma common/option.ma freescale/table_HC05.ma freescale/table_HC08.ma freescale/table_HCS08.ma freescale/table_RS08.ma @@ -32,21 +29,20 @@ common/meta_type.ma common/string_lemmas.ma freescale/memory_abs.ma freescale/memory_bits.ma freescale/memory_func.ma freescale/memory_trees.ma num/word32_lemmas.ma num/word16_lemmas.ma num/word32.ma test_errori.ma +common/ascii_lemmas.ma common/ascii.ma num/bool_lemmas.ma freescale/memory_struct.ma num/byte8.ma num/oct.ma freescale/model.ma freescale/status.ma freescale/table_HC05.ma common/list.ma freescale/opcode_base.ma common/string.ma common/ascii.ma common/list_utility.ma common/theory.ma compiler/ast_type.ma common/list_utility.ma -common/ascii_lemmas3.ma common/ascii_lemmas1.ma num/bool_lemmas.ma num/word16.ma num/byte8.ma freescale/memory_trees.ma common/list.ma common/option.ma freescale/memory_struct.ma num/word16.ma common/prod.ma num/bool.ma -freescale/opcode_base_lemmas_instrmode2.ma freescale/opcode_base_lemmas_instrmode1.ma num/exadecim_lemmas.ma num/bool_lemmas.ma num/exadecim.ma num/word16_lemmas.ma num/byte8_lemmas.ma num/word16.ma freescale_tests/medium_tests.ma common/list_utility.ma common/nat_to_num.ma freescale_tests/medium_tests_tools.ma -freescale/opcode_base_lemmas1.ma freescale/opcode_base_lemmas_instrmode2.ma freescale/opcode_base_lemmas_opcode2.ma num/word16_lemmas.ma +freescale/opcode_base_lemmas1.ma freescale/opcode_base_lemmas_instrmode.ma freescale/opcode_base_lemmas_opcode.ma num/word16_lemmas.ma freescale/table_HC08.ma common/list.ma freescale/opcode_base.ma num/bool_lemmas.ma num/bool.ma freescale_tests/micro_tests.ma freescale/multivm.ma freescale/status_lemmas.ma @@ -61,14 +57,12 @@ freescale/table_HC08_tests.ma freescale/opcode.ma freescale/table_HC08.ma common/option_lemmas.ma common/option.ma num/bool_lemmas.ma common/option.ma num/bool.ma num/byte8_lemmas.ma num/byte8.ma num/exadecim_lemmas.ma -common/ascii_lemmas2.ma common/ascii_lemmas1.ma num/bool_lemmas.ma +freescale/opcode_base_lemmas_opcode.ma freescale/opcode_base.ma num/bool_lemmas.ma common/list_lemmas.ma common/list.ma common/sigma.ma -freescale/opcode_base_lemmas_instrmode1.ma freescale/opcode_base.ma num/bitrigesim_lemmas.ma num/exadecim_lemmas.ma num/oct_lemmas.ma num/bitrigesim.ma num/bool.ma common/list_utility.ma common/list.ma common/nat_lemmas.ma common/option.ma -freescale/opcode_base_lemmas_opcode2.ma freescale/opcode_base_lemmas_opcode1.ma -common/ascii_lemmas5.ma common/ascii.ma +freescale/opcode_base_lemmas_instrmode.ma freescale/opcode_base.ma num/bitrigesim_lemmas.ma num/exadecim_lemmas.ma num/oct_lemmas.ma common/list.ma common/theory.ma num/oct.ma num/bool.ma freescale/opcode.ma common/list.ma freescale/opcode_base.ma diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma index 0389dc751..78a284c30 100755 --- a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma +++ b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma @@ -20,8 +20,8 @@ (* *) (* ********************************************************************** *) -include "freescale/opcode_base_lemmas_opcode2.ma". -include "freescale/opcode_base_lemmas_instrmode2.ma". +include "freescale/opcode_base_lemmas_opcode.ma". +include "freescale/opcode_base_lemmas_instrmode.ma". include "num/word16_lemmas.ma". (* ********************************************** *) diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma new file mode 100755 index 000000000..26d0bb79d --- /dev/null +++ b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma @@ -0,0 +1,425 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) +(* Ultima modifica: 05/08/2009 *) +(* *) +(* ********************************************************************** *) + +include "num/oct_lemmas.ma". +include "num/bitrigesim_lemmas.ma". +include "num/exadecim_lemmas.ma". +include "freescale/opcode_base.ma". + +(* ********************************************** *) +(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *) +(* ********************************************** *) + +nlemma instrmode_destruct_MODE_DIRn : ∀n1,n2.MODE_DIRn n1 = MODE_DIRn n2 → n1 = n2. + #n1; #n2; #H; + nchange with (match MODE_DIRn n2 with [ MODE_DIRn a ⇒ n1 = a | _ ⇒ False ]); + nrewrite < H; + nnormalize; + napply refl_eq. +nqed. + +nlemma instrmode_destruct_MODE_DIRn_and_IMM1 : ∀n1,n2.MODE_DIRn_and_IMM1 n1 = MODE_DIRn_and_IMM1 n2 → n1 = n2. + #n1; #n2; #H; + nchange with (match MODE_DIRn_and_IMM1 n2 with [ MODE_DIRn_and_IMM1 a ⇒ n1 = a | _ ⇒ False ]); + nrewrite < H; + nnormalize; + napply refl_eq. +nqed. + +nlemma instrmode_destruct_MODE_TNY : ∀e1,e2.MODE_TNY e1 = MODE_TNY e2 → e1 = e2. + #e1; #e2; #H; + nchange with (match MODE_TNY e2 with [ MODE_TNY a ⇒ e1 = a | _ ⇒ False ]); + nrewrite < H; + nnormalize; + napply refl_eq. +nqed. + +nlemma instrmode_destruct_MODE_SRT : ∀t1,t2.MODE_SRT t1 = MODE_SRT t2 → t1 = t2. + #t1; #t2; #H; + nchange with (match MODE_SRT t2 with [ MODE_SRT a ⇒ t1 = a | _ ⇒ False ]); + nrewrite < H; + nnormalize; + napply refl_eq. +nqed. + +ndefinition instrmode_destruct_aux ≝ +Πi1,i2.ΠP:Prop.i1 = i2 → + match eq_im i1 i2 with [ true ⇒ P → P | false ⇒ P ]. + +ndefinition instrmode_destruct : instrmode_destruct_aux. + #t1; #t2; #P; #H; + nrewrite < H; + nelim t1; + nnormalize; + ##[ ##31,32,33,34: #sub; nelim sub; nnormalize ##] + napply (λx.x). +nqed. + +nlemma eq_to_eqim : ∀n1,n2.n1 = n2 → eq_im n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; + nelim n2; + ##[ ##31,32: #n; nchange with (eq_oct n n = true); napply (eq_to_eqoct n n (refl_eq …)) + ##| ##33: #n; nchange with (eq_ex n n = true); napply (eq_to_eqex n n (refl_eq …)) + ##| ##34: #n; nchange with (eq_bit n n = true); napply (eq_to_eqbit n n (refl_eq …)) + ##| ##*: nnormalize; napply refl_eq + ##] +nqed. + +nlemma neqim_to_neq : ∀n1,n2.eq_im n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_im n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqim n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) + ##] +nqed. + +nlemma eqim_to_eq1 : ∀i2.eq_im MODE_INH i2 = true → MODE_INH = i2. + #i2; ncases i2; nnormalize; + ##[ ##1: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq2 : ∀i2.eq_im MODE_INHA i2 = true → MODE_INHA = i2. + #i2; ncases i2; nnormalize; + ##[ ##2: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq3 : ∀i2.eq_im MODE_INHX i2 = true → MODE_INHX = i2. + #i2; ncases i2; nnormalize; + ##[ ##3: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq4 : ∀i2.eq_im MODE_INHH i2 = true → MODE_INHH = i2. + #i2; ncases i2; nnormalize; + ##[ ##4: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq5 : ∀i2.eq_im MODE_INHX0ADD i2 = true → MODE_INHX0ADD = i2. + #i2; ncases i2; nnormalize; + ##[ ##5: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq6 : ∀i2.eq_im MODE_INHX1ADD i2 = true → MODE_INHX1ADD = i2. + #i2; ncases i2; nnormalize; + ##[ ##6: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq7 : ∀i2.eq_im MODE_INHX2ADD i2 = true → MODE_INHX2ADD = i2. + #i2; ncases i2; nnormalize; + ##[ ##7: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq8 : ∀i2.eq_im MODE_IMM1 i2 = true → MODE_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##8: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq9 : ∀i2.eq_im MODE_IMM1EXT i2 = true → MODE_IMM1EXT = i2. + #i2; ncases i2; nnormalize; + ##[ ##9: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq10 : ∀i2.eq_im MODE_IMM2 i2 = true → MODE_IMM2 = i2. + #i2; ncases i2; nnormalize; + ##[ ##10: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq11 : ∀i2.eq_im MODE_DIR1 i2 = true → MODE_DIR1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##11: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq12 : ∀i2.eq_im MODE_DIR2 i2 = true → MODE_DIR2 = i2. + #i2; ncases i2; nnormalize; + ##[ ##12: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq13 : ∀i2.eq_im MODE_IX0 i2 = true → MODE_IX0 = i2. + #i2; ncases i2; nnormalize; + ##[ ##13: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq14 : ∀i2.eq_im MODE_IX1 i2 = true → MODE_IX1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##14: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq15 : ∀i2.eq_im MODE_IX2 i2 = true → MODE_IX2 = i2. + #i2; ncases i2; nnormalize; + ##[ ##15: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq16 : ∀i2.eq_im MODE_SP1 i2 = true → MODE_SP1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##16: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq17 : ∀i2.eq_im MODE_SP2 i2 = true → MODE_SP2 = i2. + #i2; ncases i2; nnormalize; + ##[ ##17: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq18 : ∀i2.eq_im MODE_DIR1_to_DIR1 i2 = true → MODE_DIR1_to_DIR1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##18: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq19 : ∀i2.eq_im MODE_IMM1_to_DIR1 i2 = true → MODE_IMM1_to_DIR1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##19: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq20 : ∀i2.eq_im MODE_IX0p_to_DIR1 i2 = true → MODE_IX0p_to_DIR1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##20: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq21 : ∀i2.eq_im MODE_DIR1_to_IX0p i2 = true → MODE_DIR1_to_IX0p = i2. + #i2; ncases i2; nnormalize; + ##[ ##21: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq22 : ∀i2.eq_im MODE_INHA_and_IMM1 i2 = true → MODE_INHA_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##22: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq23 : ∀i2.eq_im MODE_INHX_and_IMM1 i2 = true → MODE_INHX_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##23: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq24 : ∀i2.eq_im MODE_IMM1_and_IMM1 i2 = true → MODE_IMM1_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##24: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq25 : ∀i2.eq_im MODE_DIR1_and_IMM1 i2 = true → MODE_DIR1_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##25: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq26 : ∀i2.eq_im MODE_IX0_and_IMM1 i2 = true → MODE_IX0_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##26: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq27 : ∀i2.eq_im MODE_IX0p_and_IMM1 i2 = true → MODE_IX0p_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##27: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq28 : ∀i2.eq_im MODE_IX1_and_IMM1 i2 = true → MODE_IX1_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##28: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq29 : ∀i2.eq_im MODE_IX1p_and_IMM1 i2 = true → MODE_IX1p_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##29: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq30 : ∀i2.eq_im MODE_SP1_and_IMM1 i2 = true → MODE_SP1_and_IMM1 = i2. + #i2; ncases i2; nnormalize; + ##[ ##30: #H; napply refl_eq + ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq31 : ∀n1,i2.eq_im (MODE_DIRn n1) i2 = true → MODE_DIRn n1 = i2. + #n1; #i2; ncases i2; + ##[ ##31: #n2; #H; + nchange in H:(%) with (eq_oct n1 n2 = true); + nrewrite > (eqoct_to_eq … H); + napply refl_eq + ##| ##32,33,34: nnormalize; #n2; #H; napply (bool_destruct … H) + ##| ##*: nnormalize; #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq32 : ∀n1,i2.eq_im (MODE_DIRn_and_IMM1 n1) i2 = true → MODE_DIRn_and_IMM1 n1 = i2. + #n1; #i2; ncases i2; + ##[ ##32: #n2; #H; + nchange in H:(%) with (eq_oct n1 n2 = true); + nrewrite > (eqoct_to_eq … H); + napply refl_eq + ##| ##31,33,34: nnormalize; #n2; #H; napply (bool_destruct … H) + ##| ##*: nnormalize; #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq33 : ∀n1,i2.eq_im (MODE_TNY n1) i2 = true → MODE_TNY n1 = i2. + #n1; #i2; ncases i2; + ##[ ##33: #n2; #H; + nchange in H:(%) with (eq_ex n1 n2 = true); + nrewrite > (eqex_to_eq … H); + napply refl_eq + ##| ##31,32,34: nnormalize; #n2; #H; napply (bool_destruct … H) + ##| ##*: nnormalize; #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq34 : ∀n1,i2.eq_im (MODE_SRT n1) i2 = true → MODE_SRT n1 = i2. + #n1; #i2; ncases i2; + ##[ ##34: #n2; #H; + nchange in H:(%) with (eq_bit n1 n2 = true); + nrewrite > (eqbit_to_eq … H); + napply refl_eq + ##| ##31,32,33: nnormalize; #n2; #H; napply (bool_destruct … H) + ##| ##*: nnormalize; #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma eqim_to_eq : ∀i1,i2.eq_im i1 i2 = true → i1 = i2. + #i1; ncases i1; + ##[ ##1: napply eqim_to_eq1 ##| ##2: napply eqim_to_eq2 + ##| ##3: napply eqim_to_eq3 ##| ##4: napply eqim_to_eq4 + ##| ##5: napply eqim_to_eq5 ##| ##6: napply eqim_to_eq6 + ##| ##7: napply eqim_to_eq7 ##| ##8: napply eqim_to_eq8 + ##| ##9: napply eqim_to_eq9 ##| ##10: napply eqim_to_eq10 + ##| ##11: napply eqim_to_eq11 ##| ##12: napply eqim_to_eq12 + ##| ##13: napply eqim_to_eq13 ##| ##14: napply eqim_to_eq14 + ##| ##15: napply eqim_to_eq15 ##| ##16: napply eqim_to_eq16 + ##| ##17: napply eqim_to_eq17 ##| ##18: napply eqim_to_eq18 + ##| ##19: napply eqim_to_eq19 ##| ##20: napply eqim_to_eq20 + ##| ##21: napply eqim_to_eq21 ##| ##22: napply eqim_to_eq22 + ##| ##23: napply eqim_to_eq23 ##| ##24: napply eqim_to_eq24 + ##| ##25: napply eqim_to_eq25 ##| ##26: napply eqim_to_eq26 + ##| ##27: napply eqim_to_eq27 ##| ##28: napply eqim_to_eq28 + ##| ##29: napply eqim_to_eq29 ##| ##30: napply eqim_to_eq30 + ##| ##31: napply eqim_to_eq31 ##| ##32: napply eqim_to_eq32 + ##| ##33: napply eqim_to_eq33 ##| ##34: napply eqim_to_eq34 + ##] +nqed. + +nlemma neq_to_neqim : ∀n1,n2.n1 ≠ n2 → eq_im n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_im n1 n2)); + napply (not_to_not (eq_im n1 n2 = true) (n1 = n2) ? H); + napply (eqim_to_eq n1 n2). +nqed. + +nlemma decidable_im : ∀x,y:instr_mode.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_im x y = true) (eq_im x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqim_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqim_to_neq … H)) + ##] +nqed. + +nlemma symmetric_eqim : symmetricT instr_mode bool eq_im. + #n1; #n2; + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_im n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqim n1 n2 H); + napply (symmetric_eq ? (eq_im n2 n1) false); + napply (neq_to_neqim n2 n1 (symmetric_neq ? n1 n2 H)) + ##] +nqed. diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode1.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode1.ma deleted file mode 100755 index 2d851ffc4..000000000 --- a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode1.ma +++ /dev/null @@ -1,755 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "num/oct_lemmas.ma". -include "num/bitrigesim_lemmas.ma". -include "num/exadecim_lemmas.ma". -include "freescale/opcode_base.ma". - -(* ********************************************** *) -(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *) -(* ********************************************** *) - -nlemma instrmode_destruct_MODE_DIRn : ∀n1,n2.MODE_DIRn n1 = MODE_DIRn n2 → n1 = n2. - #n1; #n2; #H; - nchange with (match MODE_DIRn n2 with [ MODE_DIRn a ⇒ n1 = a | _ ⇒ False ]); - nrewrite < H; - nnormalize; - napply refl_eq. -nqed. - -nlemma instrmode_destruct_MODE_DIRn_and_IMM1 : ∀n1,n2.MODE_DIRn_and_IMM1 n1 = MODE_DIRn_and_IMM1 n2 → n1 = n2. - #n1; #n2; #H; - nchange with (match MODE_DIRn_and_IMM1 n2 with [ MODE_DIRn_and_IMM1 a ⇒ n1 = a | _ ⇒ False ]); - nrewrite < H; - nnormalize; - napply refl_eq. -nqed. - -nlemma instrmode_destruct_MODE_TNY : ∀e1,e2.MODE_TNY e1 = MODE_TNY e2 → e1 = e2. - #e1; #e2; #H; - nchange with (match MODE_TNY e2 with [ MODE_TNY a ⇒ e1 = a | _ ⇒ False ]); - nrewrite < H; - nnormalize; - napply refl_eq. -nqed. - -nlemma instrmode_destruct_MODE_SRT : ∀t1,t2.MODE_SRT t1 = MODE_SRT t2 → t1 = t2. - #t1; #t2; #H; - nchange with (match MODE_SRT t2 with [ MODE_SRT a ⇒ t1 = a | _ ⇒ False ]); - nrewrite < H; - nnormalize; - napply refl_eq. -nqed. - -ndefinition instrmode_destruct_aux ≝ -Πi1,i2.ΠP:Prop.i1 = i2 → - match eq_im i1 i2 with [ true ⇒ P → P | false ⇒ P ]. - -ndefinition instrmode_destruct : instrmode_destruct_aux. - #t1; #t2; #P; #H; - nrewrite < H; - nelim t1; - nnormalize; - ##[ ##31,32,33,34: #sub; nelim sub; nnormalize ##] - napply (λx.x). -nqed. - -nlemma symmetric_eqim : symmetricT instr_mode bool eq_im. - #i1; #i2; - ncases i1; - ##[ ##1: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##2: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##3: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##4: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##5: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##6: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##7: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##8: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##9: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##10: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##11: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##12: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##13: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##14: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##15: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##16: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##17: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##18: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##19: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##20: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##21: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##22: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##23: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##24: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##25: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##26: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##27: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##28: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##29: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##30: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply refl_eq - ##| ##31: ncases i2; #n1; - ##[ ##31: #n2; - nchange with (eq_oct n2 n1 = eq_oct n1 n2); - nrewrite > (symmetric_eqoct n1 n2); - ##| ##32,33,34: #n2; nnormalize - ##] - nnormalize; napply refl_eq - ##| ##32: ncases i2; #n1; - ##[ ##32: #n2; - nchange with (eq_oct n2 n1 = eq_oct n1 n2); - nrewrite > (symmetric_eqoct n1 n2); - ##| ##31,33,34: #n2; nnormalize - ##] - nnormalize; napply refl_eq - ##| ##33: ncases i2; #n1; - ##[ ##33: #n2; - nchange with (eq_ex n2 n1 = eq_ex n1 n2); - nrewrite > (symmetric_eqex n1 n2); - ##| ##31,32,34: #n2; nnormalize - ##] - nnormalize; napply refl_eq - ##| ##34: ncases i2; #n1; - ##[ ##34: #n2; - nchange with (eq_bit n2 n1 = eq_bit n1 n2); - nrewrite > (symmetric_eqbit n1 n2); - ##| ##31,32,33: #n2; nnormalize - ##] - nnormalize; napply refl_eq - ##] -nqed. - -nlemma eqim_to_eq1 : ∀i2.eq_im MODE_INH i2 = true → MODE_INH = i2. - #i2; ncases i2; nnormalize; - ##[ ##1: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq2 : ∀i2.eq_im MODE_INHA i2 = true → MODE_INHA = i2. - #i2; ncases i2; nnormalize; - ##[ ##2: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq3 : ∀i2.eq_im MODE_INHX i2 = true → MODE_INHX = i2. - #i2; ncases i2; nnormalize; - ##[ ##3: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq4 : ∀i2.eq_im MODE_INHH i2 = true → MODE_INHH = i2. - #i2; ncases i2; nnormalize; - ##[ ##4: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq5 : ∀i2.eq_im MODE_INHX0ADD i2 = true → MODE_INHX0ADD = i2. - #i2; ncases i2; nnormalize; - ##[ ##5: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq6 : ∀i2.eq_im MODE_INHX1ADD i2 = true → MODE_INHX1ADD = i2. - #i2; ncases i2; nnormalize; - ##[ ##6: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq7 : ∀i2.eq_im MODE_INHX2ADD i2 = true → MODE_INHX2ADD = i2. - #i2; ncases i2; nnormalize; - ##[ ##7: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq8 : ∀i2.eq_im MODE_IMM1 i2 = true → MODE_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##8: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq9 : ∀i2.eq_im MODE_IMM1EXT i2 = true → MODE_IMM1EXT = i2. - #i2; ncases i2; nnormalize; - ##[ ##9: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq10 : ∀i2.eq_im MODE_IMM2 i2 = true → MODE_IMM2 = i2. - #i2; ncases i2; nnormalize; - ##[ ##10: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq11 : ∀i2.eq_im MODE_DIR1 i2 = true → MODE_DIR1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##11: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq12 : ∀i2.eq_im MODE_DIR2 i2 = true → MODE_DIR2 = i2. - #i2; ncases i2; nnormalize; - ##[ ##12: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq13 : ∀i2.eq_im MODE_IX0 i2 = true → MODE_IX0 = i2. - #i2; ncases i2; nnormalize; - ##[ ##13: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq14 : ∀i2.eq_im MODE_IX1 i2 = true → MODE_IX1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##14: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq15 : ∀i2.eq_im MODE_IX2 i2 = true → MODE_IX2 = i2. - #i2; ncases i2; nnormalize; - ##[ ##15: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq16 : ∀i2.eq_im MODE_SP1 i2 = true → MODE_SP1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##16: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq17 : ∀i2.eq_im MODE_SP2 i2 = true → MODE_SP2 = i2. - #i2; ncases i2; nnormalize; - ##[ ##17: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq18 : ∀i2.eq_im MODE_DIR1_to_DIR1 i2 = true → MODE_DIR1_to_DIR1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##18: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq19 : ∀i2.eq_im MODE_IMM1_to_DIR1 i2 = true → MODE_IMM1_to_DIR1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##19: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq20 : ∀i2.eq_im MODE_IX0p_to_DIR1 i2 = true → MODE_IX0p_to_DIR1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##20: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq21 : ∀i2.eq_im MODE_DIR1_to_IX0p i2 = true → MODE_DIR1_to_IX0p = i2. - #i2; ncases i2; nnormalize; - ##[ ##21: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq22 : ∀i2.eq_im MODE_INHA_and_IMM1 i2 = true → MODE_INHA_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##22: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq23 : ∀i2.eq_im MODE_INHX_and_IMM1 i2 = true → MODE_INHX_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##23: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq24 : ∀i2.eq_im MODE_IMM1_and_IMM1 i2 = true → MODE_IMM1_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##24: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq25 : ∀i2.eq_im MODE_DIR1_and_IMM1 i2 = true → MODE_DIR1_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##25: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq26 : ∀i2.eq_im MODE_IX0_and_IMM1 i2 = true → MODE_IX0_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##26: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq27 : ∀i2.eq_im MODE_IX0p_and_IMM1 i2 = true → MODE_IX0p_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##27: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq28 : ∀i2.eq_im MODE_IX1_and_IMM1 i2 = true → MODE_IX1_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##28: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq29 : ∀i2.eq_im MODE_IX1p_and_IMM1 i2 = true → MODE_IX1p_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##29: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq30 : ∀i2.eq_im MODE_SP1_and_IMM1 i2 = true → MODE_SP1_and_IMM1 = i2. - #i2; ncases i2; nnormalize; - ##[ ##30: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (bool_destruct … H) - ##| ##*: #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq31 : ∀n1,i2.eq_im (MODE_DIRn n1) i2 = true → MODE_DIRn n1 = i2. - #n1; #i2; ncases i2; - ##[ ##31: #n2; #H; - nchange in H:(%) with (eq_oct n1 n2 = true); - nrewrite > (eqoct_to_eq … H); - napply refl_eq - ##| ##32,33,34: nnormalize; #n2; #H; napply (bool_destruct … H) - ##| ##*: nnormalize; #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq32 : ∀n1,i2.eq_im (MODE_DIRn_and_IMM1 n1) i2 = true → MODE_DIRn_and_IMM1 n1 = i2. - #n1; #i2; ncases i2; - ##[ ##32: #n2; #H; - nchange in H:(%) with (eq_oct n1 n2 = true); - nrewrite > (eqoct_to_eq … H); - napply refl_eq - ##| ##31,33,34: nnormalize; #n2; #H; napply (bool_destruct … H) - ##| ##*: nnormalize; #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq33 : ∀n1,i2.eq_im (MODE_TNY n1) i2 = true → MODE_TNY n1 = i2. - #n1; #i2; ncases i2; - ##[ ##33: #n2; #H; - nchange in H:(%) with (eq_ex n1 n2 = true); - nrewrite > (eqex_to_eq … H); - napply refl_eq - ##| ##31,32,34: nnormalize; #n2; #H; napply (bool_destruct … H) - ##| ##*: nnormalize; #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq34 : ∀n1,i2.eq_im (MODE_SRT n1) i2 = true → MODE_SRT n1 = i2. - #n1; #i2; ncases i2; - ##[ ##34: #n2; #H; - nchange in H:(%) with (eq_bit n1 n2 = true); - nrewrite > (eqbit_to_eq … H); - napply refl_eq - ##| ##31,32,33: nnormalize; #n2; #H; napply (bool_destruct … H) - ##| ##*: nnormalize; #H; napply (bool_destruct … H) - ##] -nqed. - -nlemma eqim_to_eq : ∀i1,i2.eq_im i1 i2 = true → i1 = i2. - #i1; ncases i1; - ##[ ##1: napply eqim_to_eq1 ##| ##2: napply eqim_to_eq2 - ##| ##3: napply eqim_to_eq3 ##| ##4: napply eqim_to_eq4 - ##| ##5: napply eqim_to_eq5 ##| ##6: napply eqim_to_eq6 - ##| ##7: napply eqim_to_eq7 ##| ##8: napply eqim_to_eq8 - ##| ##9: napply eqim_to_eq9 ##| ##10: napply eqim_to_eq10 - ##| ##11: napply eqim_to_eq11 ##| ##12: napply eqim_to_eq12 - ##| ##13: napply eqim_to_eq13 ##| ##14: napply eqim_to_eq14 - ##| ##15: napply eqim_to_eq15 ##| ##16: napply eqim_to_eq16 - ##| ##17: napply eqim_to_eq17 ##| ##18: napply eqim_to_eq18 - ##| ##19: napply eqim_to_eq19 ##| ##20: napply eqim_to_eq20 - ##| ##21: napply eqim_to_eq21 ##| ##22: napply eqim_to_eq22 - ##| ##23: napply eqim_to_eq23 ##| ##24: napply eqim_to_eq24 - ##| ##25: napply eqim_to_eq25 ##| ##26: napply eqim_to_eq26 - ##| ##27: napply eqim_to_eq27 ##| ##28: napply eqim_to_eq28 - ##| ##29: napply eqim_to_eq29 ##| ##30: napply eqim_to_eq30 - ##| ##31: napply eqim_to_eq31 ##| ##32: napply eqim_to_eq32 - ##| ##33: napply eqim_to_eq33 ##| ##34: napply eqim_to_eq34 - ##] -nqed. - -nlemma eq_to_eqim1 : ∀i2.MODE_INH = i2 → eq_im MODE_INH i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##1: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim2 : ∀i2.MODE_INHA = i2 → eq_im MODE_INHA i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##2: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim3 : ∀i2.MODE_INHX = i2 → eq_im MODE_INHX i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##3: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim4 : ∀i2.MODE_INHH = i2 → eq_im MODE_INHH i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##4: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim5 : ∀i2.MODE_INHX0ADD = i2 → eq_im MODE_INHX0ADD i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##5: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim6 : ∀i2.MODE_INHX1ADD = i2 → eq_im MODE_INHX1ADD i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##6: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim7 : ∀i2.MODE_INHX2ADD = i2 → eq_im MODE_INHX2ADD i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##7: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim8 : ∀i2.MODE_IMM1 = i2 → eq_im MODE_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##8: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim9 : ∀i2.MODE_IMM1EXT = i2 → eq_im MODE_IMM1EXT i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##9: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim10 : ∀i2.MODE_IMM2 = i2 → eq_im MODE_IMM2 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##10: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim11 : ∀i2.MODE_DIR1 = i2 → eq_im MODE_DIR1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##11: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim12 : ∀i2.MODE_DIR2 = i2 → eq_im MODE_DIR2 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##12: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim13 : ∀i2.MODE_IX0 = i2 → eq_im MODE_IX0 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##13: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim14 : ∀i2.MODE_IX1 = i2 → eq_im MODE_IX1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##14: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim15 : ∀i2.MODE_IX2 = i2 → eq_im MODE_IX2 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##15: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim16 : ∀i2.MODE_SP1 = i2 → eq_im MODE_SP1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##16: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim17 : ∀i2.MODE_SP2 = i2 → eq_im MODE_SP2 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##17: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim18 : ∀i2.MODE_DIR1_to_DIR1 = i2 → eq_im MODE_DIR1_to_DIR1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##18: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim19 : ∀i2.MODE_IMM1_to_DIR1 = i2 → eq_im MODE_IMM1_to_DIR1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##19: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim20 : ∀i2.MODE_IX0p_to_DIR1 = i2 → eq_im MODE_IX0p_to_DIR1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##20: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim21 : ∀i2.MODE_DIR1_to_IX0p = i2 → eq_im MODE_DIR1_to_IX0p i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##21: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim22 : ∀i2.MODE_INHA_and_IMM1 = i2 → eq_im MODE_INHA_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##22: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim23 : ∀i2.MODE_INHX_and_IMM1 = i2 → eq_im MODE_INHX_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##23: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim24 : ∀i2.MODE_IMM1_and_IMM1 = i2 → eq_im MODE_IMM1_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##24: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim25 : ∀i2.MODE_DIR1_and_IMM1 = i2 → eq_im MODE_DIR1_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##25: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim26 : ∀i2.MODE_IX0_and_IMM1 = i2 → eq_im MODE_IX0_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##26: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim27 : ∀i2.MODE_IX0p_and_IMM1 = i2 → eq_im MODE_IX0p_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##27: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim28 : ∀i2.MODE_IX1_and_IMM1 = i2 → eq_im MODE_IX1_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##28: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim29 : ∀i2.MODE_IX1p_and_IMM1 = i2 → eq_im MODE_IX1p_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##29: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim30 : ∀i2.MODE_SP1_and_IMM1 = i2 → eq_im MODE_SP1_and_IMM1 i2 = true. - #t2; ncases t2; nnormalize; - ##[ ##30: #H; napply refl_eq - ##| ##31,32,33,34: #n; #H; napply (instrmode_destruct … H) - ##| ##*: #H; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim31 : ∀n1,i2.MODE_DIRn n1 = i2 → eq_im (MODE_DIRn n1) i2 = true. - #n1; #t2; ncases t2; - ##[ ##31: #n2; #H; - nchange with (eq_oct n1 n2 = true); - nrewrite > (instrmode_destruct_MODE_DIRn n1 n2 H); - nrewrite > (eq_to_eqoct n2 n2 (refl_eq …)); - napply refl_eq - ##| ##32,33,34: #n; #H; nnormalize; napply (instrmode_destruct … H) - ##| ##*: #H; nnormalize; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim32 : ∀n1,i2.MODE_DIRn_and_IMM1 n1 = i2 → eq_im (MODE_DIRn_and_IMM1 n1) i2 = true. - #n1; #t2; ncases t2; - ##[ ##32: #n2; #H; - nchange with (eq_oct n1 n2 = true); - nrewrite > (instrmode_destruct_MODE_DIRn_and_IMM1 … H); - nrewrite > (eq_to_eqoct n2 n2 (refl_eq …)); - napply refl_eq - ##| ##31,33,34: #n; #H; nnormalize; napply (instrmode_destruct … H) - ##| ##*: #H; nnormalize; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim33 : ∀n1,i2.MODE_TNY n1 = i2 → eq_im (MODE_TNY n1) i2 = true. - #n1; #t2; ncases t2; - ##[ ##33: #n2; #H; - nchange with (eq_ex n1 n2 = true); - nrewrite > (instrmode_destruct_MODE_TNY … H); - nrewrite > (eq_to_eqex n2 n2 (refl_eq …)); - napply refl_eq - ##| ##31,32,34: #n; #H; nnormalize; napply (instrmode_destruct … H) - ##| ##*: #H; nnormalize; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim34 : ∀n1,i2.MODE_SRT n1 = i2 → eq_im (MODE_SRT n1) i2 = true. - #n1; #t2; ncases t2; - ##[ ##34: #n2; #H; - nchange with (eq_bit n1 n2 = true); - nrewrite > (instrmode_destruct_MODE_SRT … H); - nrewrite > (eq_to_eqbit n2 n2 (refl_eq …)); - napply refl_eq - ##| ##31,32,33: #n; #H; nnormalize; napply (instrmode_destruct … H) - ##| ##*: #H; nnormalize; napply (instrmode_destruct … H) - ##] -nqed. - -nlemma eq_to_eqim : ∀i1,i2.i1 = i2 → eq_im i1 i2 = true. - #i1; ncases i1; - ##[ ##1: napply eq_to_eqim1 ##| ##2: napply eq_to_eqim2 - ##| ##3: napply eq_to_eqim3 ##| ##4: napply eq_to_eqim4 - ##| ##5: napply eq_to_eqim5 ##| ##6: napply eq_to_eqim6 - ##| ##7: napply eq_to_eqim7 ##| ##8: napply eq_to_eqim8 - ##| ##9: napply eq_to_eqim9 ##| ##10: napply eq_to_eqim10 - ##| ##11: napply eq_to_eqim11 ##| ##12: napply eq_to_eqim12 - ##| ##13: napply eq_to_eqim13 ##| ##14: napply eq_to_eqim14 - ##| ##15: napply eq_to_eqim15 ##| ##16: napply eq_to_eqim16 - ##| ##17: napply eq_to_eqim17 ##| ##18: napply eq_to_eqim18 - ##| ##19: napply eq_to_eqim19 ##| ##20: napply eq_to_eqim20 - ##| ##21: napply eq_to_eqim21 ##| ##22: napply eq_to_eqim22 - ##| ##23: napply eq_to_eqim23 ##| ##24: napply eq_to_eqim24 - ##| ##25: napply eq_to_eqim25 ##| ##26: napply eq_to_eqim26 - ##| ##27: napply eq_to_eqim27 ##| ##28: napply eq_to_eqim28 - ##| ##29: napply eq_to_eqim29 ##| ##30: napply eq_to_eqim30 - ##| ##31: napply eq_to_eqim31 ##| ##32: napply eq_to_eqim32 - ##| ##33: napply eq_to_eqim33 ##| ##34: napply eq_to_eqim34 - ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode2.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode2.ma deleted file mode 100755 index ca759ad8e..000000000 --- a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode2.ma +++ /dev/null @@ -1,895 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "freescale/opcode_base_lemmas_instrmode1.ma". - -(* ********************************************** *) -(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *) -(* ********************************************** *) - -nlemma decidable_im1 : ∀x:instr_mode.decidable (MODE_INH = x). - #x; nnormalize; nelim x; - ##[ ##1: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im2 : ∀x:instr_mode.decidable (MODE_INHA = x). - #x; nnormalize; nelim x; - ##[ ##2: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im3 : ∀x:instr_mode.decidable (MODE_INHX = x). - #x; nnormalize; nelim x; - ##[ ##3: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im4 : ∀x:instr_mode.decidable (MODE_INHH = x). - #x; nnormalize; nelim x; - ##[ ##4: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im5 : ∀x:instr_mode.decidable (MODE_INHX0ADD = x). - #x; nnormalize; nelim x; - ##[ ##5: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im6 : ∀x:instr_mode.decidable (MODE_INHX1ADD = x). - #x; nnormalize; nelim x; - ##[ ##6: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im7 : ∀x:instr_mode.decidable (MODE_INHX2ADD = x). - #x; nnormalize; nelim x; - ##[ ##7: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im8 : ∀x:instr_mode.decidable (MODE_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##8: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im9 : ∀x:instr_mode.decidable (MODE_IMM1EXT = x). - #x; nnormalize; nelim x; - ##[ ##9: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im10 : ∀x:instr_mode.decidable (MODE_IMM2 = x). - #x; nnormalize; nelim x; - ##[ ##10: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im11 : ∀x:instr_mode.decidable (MODE_DIR1 = x). - #x; nnormalize; nelim x; - ##[ ##11: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im12 : ∀x:instr_mode.decidable (MODE_DIR2 = x). - #x; nnormalize; nelim x; - ##[ ##12: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im13 : ∀x:instr_mode.decidable (MODE_IX0 = x). - #x; nnormalize; nelim x; - ##[ ##13: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im14 : ∀x:instr_mode.decidable (MODE_IX1 = x). - #x; nnormalize; nelim x; - ##[ ##14: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im15 : ∀x:instr_mode.decidable (MODE_IX2 = x). - #x; nnormalize; nelim x; - ##[ ##15: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im16 : ∀x:instr_mode.decidable (MODE_SP1 = x). - #x; nnormalize; nelim x; - ##[ ##16: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im17 : ∀x:instr_mode.decidable (MODE_SP2 = x). - #x; nnormalize; nelim x; - ##[ ##17: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im18 : ∀x:instr_mode.decidable (MODE_DIR1_to_DIR1 = x). - #x; nnormalize; nelim x; - ##[ ##18: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im19 : ∀x:instr_mode.decidable (MODE_IMM1_to_DIR1 = x). - #x; nnormalize; nelim x; - ##[ ##19: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im20 : ∀x:instr_mode.decidable (MODE_IX0p_to_DIR1 = x). - #x; nnormalize; nelim x; - ##[ ##20: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im21 : ∀x:instr_mode.decidable (MODE_DIR1_to_IX0p = x). - #x; nnormalize; nelim x; - ##[ ##21: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im22 : ∀x:instr_mode.decidable (MODE_INHA_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##22: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im23 : ∀x:instr_mode.decidable (MODE_INHX_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##23: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im24 : ∀x:instr_mode.decidable (MODE_IMM1_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##24: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im25 : ∀x:instr_mode.decidable (MODE_DIR1_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##25: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im26 : ∀x:instr_mode.decidable (MODE_IX0_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##26: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im27 : ∀x:instr_mode.decidable (MODE_IX0p_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##27: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im28 : ∀x:instr_mode.decidable (MODE_IX1_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##28: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im29 : ∀x:instr_mode.decidable (MODE_IX1p_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##29: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im30 : ∀x:instr_mode.decidable (MODE_SP1_and_IMM1 = x). - #x; nnormalize; nelim x; - ##[ ##30: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##31,32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im31 : ∀n.∀x:instr_mode.decidable ((MODE_DIRn n) = x). - #n1; #x; nnormalize; nelim x; - ##[ ##31: #n2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_oct n1 n2) …); - ##[ ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##| ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) ?); #H1; napply (H (instrmode_destruct_MODE_DIRn … H1)) - ##] - ##| ##32,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im32 : ∀n.∀x:instr_mode.decidable ((MODE_DIRn_and_IMM1 n) = x). - #n1; #x; nnormalize; nelim x; - ##[ ##32: #n2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_oct n1 n2) …); - ##[ ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##| ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) ?); #H1; napply (H (instrmode_destruct_MODE_DIRn_and_IMM1 … H1)) - ##] - ##| ##31,33,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im33 : ∀n.∀x:instr_mode.decidable ((MODE_TNY n) = x). - #n1; #x; nnormalize; nelim x; - ##[ ##33: #n2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_ex n1 n2) …); - ##[ ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##| ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) ?); #H1; napply (H (instrmode_destruct_MODE_TNY … H1)) - ##] - ##| ##31,32,34: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im34 : ∀n.∀x:instr_mode.decidable ((MODE_SRT n) = x). - #n1; #x; nnormalize; nelim x; - ##[ ##34: #n2; napply (or2_elim (? = ?) (? ≠ ?) ? (decidable_bit n1 n2) …); - ##[ ##1: #H; nrewrite > H; napply (or2_intro1 (? = ?) (? ≠ ?) (refl_eq …)) - ##| ##2: #H; napply (or2_intro2 (? = ?) (? ≠ ?) ?); #H1; napply (H (instrmode_destruct_MODE_SRT … H1)) - ##] - ##| ##31,32,33: #n; ##] - ##[ ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (instrmode_destruct … H) ##] -nqed. - -nlemma decidable_im : ∀x,y:instr_mode.decidable (x = y). - #x; nelim x; - ##[ ##1: napply decidable_im1 ##| ##2: napply decidable_im2 - ##| ##3: napply decidable_im3 ##| ##4: napply decidable_im4 - ##| ##5: napply decidable_im5 ##| ##6: napply decidable_im6 - ##| ##7: napply decidable_im7 ##| ##8: napply decidable_im8 - ##| ##9: napply decidable_im9 ##| ##10: napply decidable_im10 - ##| ##11: napply decidable_im11 ##| ##12: napply decidable_im12 - ##| ##13: napply decidable_im13 ##| ##14: napply decidable_im14 - ##| ##15: napply decidable_im15 ##| ##16: napply decidable_im16 - ##| ##17: napply decidable_im17 ##| ##18: napply decidable_im18 - ##| ##19: napply decidable_im19 ##| ##20: napply decidable_im20 - ##| ##21: napply decidable_im21 ##| ##22: napply decidable_im22 - ##| ##23: napply decidable_im23 ##| ##24: napply decidable_im24 - ##| ##25: napply decidable_im25 ##| ##26: napply decidable_im26 - ##| ##27: napply decidable_im27 ##| ##28: napply decidable_im28 - ##| ##29: napply decidable_im29 ##| ##30: napply decidable_im30 - ##| ##31: napply decidable_im31 ##| ##32: napply decidable_im32 - ##| ##33: napply decidable_im33 ##| ##34: napply decidable_im34 - ##] -nqed. - -nlemma neqim_to_neq1 : ∀i2.(eq_im MODE_INH i2 = false) → (MODE_INH ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##1: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq2 : ∀i2.(eq_im MODE_INHA i2 = false) → (MODE_INHA ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##2: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq3 : ∀i2.(eq_im MODE_INHX i2 = false) → (MODE_INHX ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##3: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq4 : ∀i2.(eq_im MODE_INHH i2 = false) → (MODE_INHH ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##4: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq5 : ∀i2.(eq_im MODE_INHX0ADD i2 = false) → (MODE_INHX0ADD ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##5: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq6 : ∀i2.(eq_im MODE_INHX1ADD i2 = false) → (MODE_INHX1ADD ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##6: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq7 : ∀i2.(eq_im MODE_INHX2ADD i2 = false) → (MODE_INHX2ADD ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##7: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq8 : ∀i2.(eq_im MODE_IMM1 i2 = false) → (MODE_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##8: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq9 : ∀i2.(eq_im MODE_IMM1EXT i2 = false) → (MODE_IMM1EXT ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##9: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq10 : ∀i2.(eq_im MODE_IMM2 i2 = false) → (MODE_IMM2 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##10: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq11 : ∀i2.(eq_im MODE_DIR1 i2 = false) → (MODE_DIR1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##11: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq12 : ∀i2.(eq_im MODE_DIR2 i2 = false) → (MODE_DIR2 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##12: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq13 : ∀i2.(eq_im MODE_IX0 i2 = false) → (MODE_IX0 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##13: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq14 : ∀i2.(eq_im MODE_IX1 i2 = false) → (MODE_IX1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##14: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq15 : ∀i2.(eq_im MODE_IX2 i2 = false) → (MODE_IX2 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##15: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq16 : ∀i2.(eq_im MODE_SP1 i2 = false) → (MODE_SP1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##16: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq17 : ∀i2.(eq_im MODE_SP2 i2 = false) → (MODE_SP2 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##17: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq18 : ∀i2.(eq_im MODE_DIR1_to_DIR1 i2 = false) → (MODE_DIR1_to_DIR1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##18: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq19 : ∀i2.(eq_im MODE_IMM1_to_DIR1 i2 = false) → (MODE_IMM1_to_DIR1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##19: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq20 : ∀i2.(eq_im MODE_IX0p_to_DIR1 i2 = false) → (MODE_IX0p_to_DIR1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##20: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq21 : ∀i2.(eq_im MODE_DIR1_to_IX0p i2 = false) → (MODE_DIR1_to_IX0p ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##21: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq22 : ∀i2.(eq_im MODE_INHA_and_IMM1 i2 = false) → (MODE_INHA_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##22: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq23 : ∀i2.(eq_im MODE_INHX_and_IMM1 i2 = false) → (MODE_INHX_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##23: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq24 : ∀i2.(eq_im MODE_IMM1_and_IMM1 i2 = false) → (MODE_IMM1_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##24: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq25 : ∀i2.(eq_im MODE_DIR1_and_IMM1 i2 = false) → (MODE_DIR1_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##25: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq26 : ∀i2.(eq_im MODE_IX0_and_IMM1 i2 = false) → (MODE_IX0_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##26: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq27 : ∀i2.(eq_im MODE_IX0p_and_IMM1 i2 = false) → (MODE_IX0p_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##27: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq28 : ∀i2.(eq_im MODE_IX1_and_IMM1 i2 = false) → (MODE_IX1_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##28: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq29 : ∀i2.(eq_im MODE_IX1p_and_IMM1 i2 = false) → (MODE_IX1p_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##29: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq30 : ∀i2.(eq_im MODE_SP1_and_IMM1 i2 = false) → (MODE_SP1_and_IMM1 ≠ i2). - #i2; nelim i2; nnormalize; - ##[ ##30: #H; napply (bool_destruct … H) - ##| ##31,32,33,34: #n ##] - ##[ ##*: #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq31 : ∀n.∀i2.(eq_im (MODE_DIRn n) i2 = false) → ((MODE_DIRn n) ≠ i2). - #n1; #i2; nelim i2; - ##[ ##31: #n2; #H; nchange in H:(%) with (eq_oct n1 n2 = false); - nnormalize; #H1; napply (neqoct_to_neq … H); napply (instrmode_destruct_MODE_DIRn … H1) - ##| ##32,33,34: #n ##] - ##[ ##*: nnormalize; #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq32 : ∀n.∀i2.(eq_im (MODE_DIRn_and_IMM1 n) i2 = false) → ((MODE_DIRn_and_IMM1 n) ≠ i2). - #n1; #i2; nelim i2; - ##[ ##32: #n2; #H; nchange in H:(%) with (eq_oct n1 n2 = false); - nnormalize; #H1; napply (neqoct_to_neq … H); napply (instrmode_destruct_MODE_DIRn_and_IMM1 … H1) - ##| ##31,33,34: #n ##] - ##[ ##*: nnormalize; #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq33 : ∀n.∀i2.(eq_im (MODE_TNY n) i2 = false) → ((MODE_TNY n) ≠ i2). - #n1; #i2; nelim i2; - ##[ ##33: #n2; #H; nchange in H:(%) with (eq_ex n1 n2 = false); - nnormalize; #H1; napply (neqex_to_neq … H); napply (instrmode_destruct_MODE_TNY … H1) - ##| ##31,32,34: #n ##] - ##[ ##*: nnormalize; #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq34 : ∀n.∀i2.(eq_im (MODE_SRT n) i2 = false) → ((MODE_SRT n) ≠ i2). - #n1; #i2; nelim i2; - ##[ ##34: #n2; #H; nchange in H:(%) with (eq_bit n1 n2 = false); - nnormalize; #H1; napply (neqbit_to_neq … H); napply (instrmode_destruct_MODE_SRT … H1) - ##| ##31,32,33: #n ##] - ##[ ##*: nnormalize; #H; #H1; napply (instrmode_destruct … H1) - ##] -nqed. - -nlemma neqim_to_neq : ∀i1,i2.(eq_im i1 i2 = false) → (i1 ≠ i2). - #i1; nelim i1; - ##[ ##1: napply neqim_to_neq1 ##| ##2: napply neqim_to_neq2 - ##| ##3: napply neqim_to_neq3 ##| ##4: napply neqim_to_neq4 - ##| ##5: napply neqim_to_neq5 ##| ##6: napply neqim_to_neq6 - ##| ##7: napply neqim_to_neq7 ##| ##8: napply neqim_to_neq8 - ##| ##9: napply neqim_to_neq9 ##| ##10: napply neqim_to_neq10 - ##| ##11: napply neqim_to_neq11 ##| ##12: napply neqim_to_neq12 - ##| ##13: napply neqim_to_neq13 ##| ##14: napply neqim_to_neq14 - ##| ##15: napply neqim_to_neq15 ##| ##16: napply neqim_to_neq16 - ##| ##17: napply neqim_to_neq17 ##| ##18: napply neqim_to_neq18 - ##| ##19: napply neqim_to_neq19 ##| ##20: napply neqim_to_neq20 - ##| ##21: napply neqim_to_neq21 ##| ##22: napply neqim_to_neq22 - ##| ##23: napply neqim_to_neq23 ##| ##24: napply neqim_to_neq24 - ##| ##25: napply neqim_to_neq25 ##| ##26: napply neqim_to_neq26 - ##| ##27: napply neqim_to_neq27 ##| ##28: napply neqim_to_neq28 - ##| ##29: napply neqim_to_neq29 ##| ##30: napply neqim_to_neq30 - ##| ##31: napply neqim_to_neq31 ##| ##32: napply neqim_to_neq32 - ##| ##33: napply neqim_to_neq33 ##| ##34: napply neqim_to_neq34 - ##] -nqed. - -nlemma neq_to_neqim1 : ∀i2.MODE_INH ≠ i2 → eq_im MODE_INH i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##1: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim2 : ∀i2.MODE_INHA ≠ i2 → eq_im MODE_INHA i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##2: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim3 : ∀i2.MODE_INHX ≠ i2 → eq_im MODE_INHX i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##3: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim4 : ∀i2.MODE_INHH ≠ i2 → eq_im MODE_INHH i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##4: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim5 : ∀i2.MODE_INHX0ADD ≠ i2 → eq_im MODE_INHX0ADD i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##5: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim6 : ∀i2.MODE_INHX1ADD ≠ i2 → eq_im MODE_INHX1ADD i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##6: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim7 : ∀i2.MODE_INHX2ADD ≠ i2 → eq_im MODE_INHX2ADD i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##7: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim8 : ∀i2.MODE_IMM1 ≠ i2 → eq_im MODE_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##8: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim9 : ∀i2.MODE_IMM1EXT ≠ i2 → eq_im MODE_IMM1EXT i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##9: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim10 : ∀i2.MODE_IMM2 ≠ i2 → eq_im MODE_IMM2 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##10: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim11 : ∀i2.MODE_DIR1 ≠ i2 → eq_im MODE_DIR1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##11: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim12 : ∀i2.MODE_DIR2 ≠ i2 → eq_im MODE_DIR2 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##12: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim13 : ∀i2.MODE_IX0 ≠ i2 → eq_im MODE_IX0 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##13: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim14 : ∀i2.MODE_IX1 ≠ i2 → eq_im MODE_IX1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##14: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim15 : ∀i2.MODE_IX2 ≠ i2 → eq_im MODE_IX2 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##15: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim16 : ∀i2.MODE_SP1 ≠ i2 → eq_im MODE_SP1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##16: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim17 : ∀i2.MODE_SP2 ≠ i2 → eq_im MODE_SP2 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##17: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim18 : ∀i2.MODE_DIR1_to_DIR1 ≠ i2 → eq_im MODE_DIR1_to_DIR1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##18: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim19 : ∀i2.MODE_IMM1_to_DIR1 ≠ i2 → eq_im MODE_IMM1_to_DIR1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##19: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim20 : ∀i2.MODE_IX0p_to_DIR1 ≠ i2 → eq_im MODE_IX0p_to_DIR1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##20: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim21 : ∀i2.MODE_DIR1_to_IX0p ≠ i2 → eq_im MODE_DIR1_to_IX0p i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##21: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim22 : ∀i2.MODE_INHA_and_IMM1≠ i2 → eq_im MODE_INHA_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##22: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim23 : ∀i2.MODE_INHX_and_IMM1 ≠ i2 → eq_im MODE_INHX_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##23: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim24 : ∀i2.MODE_IMM1_and_IMM1 ≠ i2 → eq_im MODE_IMM1_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##24: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim25 : ∀i2.MODE_DIR1_and_IMM1 ≠ i2 → eq_im MODE_DIR1_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##25: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim26 : ∀i2.MODE_IX0_and_IMM1 ≠ i2 → eq_im MODE_IX0_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##26: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim27 : ∀i2.MODE_IX0p_and_IMM1 ≠ i2 → eq_im MODE_IX0p_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##27: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim28 : ∀i2.MODE_IX1_and_IMM1 ≠ i2 → eq_im MODE_IX1_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##28: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim29 : ∀i2.MODE_IX1p_and_IMM1 ≠ i2 → eq_im MODE_IX1p_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##29: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim30 : ∀i2.MODE_SP1_and_IMM1 ≠ i2 → eq_im MODE_SP1_and_IMM1 i2 = false. - #i2; nelim i2; nnormalize; - ##[ ##30: #H; nelim (H (refl_eq …)) - ##| ##31,32,33,34: #n; ##] - ##[ ##*: #H; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim31 : ∀n.∀i2.(MODE_DIRn n) ≠ i2 → eq_im (MODE_DIRn n) i2 = false. - #n1; #i2; nelim i2; - ##[ ##31: #n2; #H; nchange with (eq_oct n1 n2 = false); napply (neq_to_neqoct n1 n2 ?); - nnormalize; #H1; nrewrite > H1 in H:(%); #H; nelim (H (refl_eq …)) - ##| ##32,33,34: #n; ##] - ##[ ##*: #H; nnormalize; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim32 : ∀n.∀i2.(MODE_DIRn_and_IMM1 n) ≠ i2 → eq_im (MODE_DIRn_and_IMM1 n) i2 = false. - #n1; #i2; nelim i2; - ##[ ##32: #n2; #H; nchange with (eq_oct n1 n2 = false); napply (neq_to_neqoct n1 n2 ?); - nnormalize; #H1; nrewrite > H1 in H:(%); #H; nelim (H (refl_eq …)) - ##| ##31,33,34: #n; ##] - ##[ ##*: #H; nnormalize; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim33 : ∀n.∀i2.(MODE_TNY n) ≠ i2 → eq_im (MODE_TNY n) i2 = false. - #n1; #i2; nelim i2; - ##[ ##33: #n2; #H; nchange with (eq_ex n1 n2 = false); napply (neq_to_neqex n1 n2 ?); - nnormalize; #H1; nrewrite > H1 in H:(%); #H; nelim (H (refl_eq …)) - ##| ##31,32,34: #n; ##] - ##[ ##*: #H; nnormalize; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim34 : ∀n.∀i2.(MODE_SRT n) ≠ i2 → eq_im (MODE_SRT n) i2 = false. - #n1; #i2; nelim i2; - ##[ ##34: #n2; #H; nchange with (eq_bit n1 n2 = false); napply (neq_to_neqbit n1 n2 ?); - nnormalize; #H1; nrewrite > H1 in H:(%); #H; nelim (H (refl_eq …)) - ##| ##31,32,33: #n; ##] - ##[ ##*: #H; nnormalize; napply refl_eq - ##] -nqed. - -nlemma neq_to_neqim : ∀i1,i2.i1 ≠ i2 → eq_im i1 i2 = false. - #i1; nelim i1; - ##[ ##1: napply neq_to_neqim1 ##| ##2: napply neq_to_neqim2 - ##| ##3: napply neq_to_neqim3 ##| ##4: napply neq_to_neqim4 - ##| ##5: napply neq_to_neqim5 ##| ##6: napply neq_to_neqim6 - ##| ##7: napply neq_to_neqim7 ##| ##8: napply neq_to_neqim8 - ##| ##9: napply neq_to_neqim9 ##| ##10: napply neq_to_neqim10 - ##| ##11: napply neq_to_neqim11 ##| ##12: napply neq_to_neqim12 - ##| ##13: napply neq_to_neqim13 ##| ##14: napply neq_to_neqim14 - ##| ##15: napply neq_to_neqim15 ##| ##16: napply neq_to_neqim16 - ##| ##17: napply neq_to_neqim17 ##| ##18: napply neq_to_neqim18 - ##| ##19: napply neq_to_neqim19 ##| ##20: napply neq_to_neqim20 - ##| ##21: napply neq_to_neqim21 ##| ##22: napply neq_to_neqim22 - ##| ##23: napply neq_to_neqim23 ##| ##24: napply neq_to_neqim24 - ##| ##25: napply neq_to_neqim25 ##| ##26: napply neq_to_neqim26 - ##| ##27: napply neq_to_neqim27 ##| ##28: napply neq_to_neqim28 - ##| ##29: napply neq_to_neqim29 ##| ##30: napply neq_to_neqim30 - ##| ##31: napply neq_to_neqim31 ##| ##32: napply neq_to_neqim32 - ##| ##33: napply neq_to_neqim33 ##| ##34: napply neq_to_neqim34 - ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma new file mode 100755 index 000000000..d91fa0595 --- /dev/null +++ b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma @@ -0,0 +1,200 @@ +(**************************************************************************) +(* ___ *) +(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) +(* Ultima modifica: 05/08/2009 *) +(* *) +(* ********************************************************************** *) + +include "num/bool_lemmas.ma". +include "freescale/opcode_base.ma". + +(* ********************************************** *) +(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *) +(* ********************************************** *) + +ndefinition opcode_destruct_aux ≝ +Πop1,op2.ΠP:Prop.op1 = op2 → + match eq_op op1 op2 with [ true ⇒ P → P | false ⇒ P ]. + +ndefinition opcode_destruct : opcode_destruct_aux. + #op1; #op2; #P; #H; + nrewrite < H; + nelim op1; + nnormalize; + napply (λx.x). +nqed. + +nlemma eq_to_eqop : ∀n1,n2.n1 = n2 → eq_op n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; + nelim n2; + nnormalize; + napply refl_eq. +nqed. + +nlemma neqop_to_neq : ∀n1,n2.eq_op n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_op n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqop n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) + ##] +nqed. + +nlemma eqop_to_eq1 : ∀op2.eq_op ADC op2 = true → ADC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq2 : ∀op2.eq_op ADD op2 = true → ADD = op2. #op2; ncases op2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq3 : ∀op2.eq_op AIS op2 = true → AIS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq4 : ∀op2.eq_op AIX op2 = true → AIX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq5 : ∀op2.eq_op AND op2 = true → AND = op2. #op2; ncases op2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq6 : ∀op2.eq_op ASL op2 = true → ASL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq7 : ∀op2.eq_op ASR op2 = true → ASR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq8 : ∀op2.eq_op BCC op2 = true → BCC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq9 : ∀op2.eq_op BCLRn op2 = true → BCLRn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq10 : ∀op2.eq_op BCS op2 = true → BCS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq11 : ∀op2.eq_op BEQ op2 = true → BEQ = op2. #op2; ncases op2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq12 : ∀op2.eq_op BGE op2 = true → BGE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq13 : ∀op2.eq_op BGND op2 = true → BGND = op2. #op2; ncases op2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq14 : ∀op2.eq_op BGT op2 = true → BGT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq15 : ∀op2.eq_op BHCC op2 = true → BHCC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq16 : ∀op2.eq_op BHCS op2 = true → BHCS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq17 : ∀op2.eq_op BHI op2 = true → BHI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq18 : ∀op2.eq_op BIH op2 = true → BIH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq19 : ∀op2.eq_op BIL op2 = true → BIL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq20 : ∀op2.eq_op BIT op2 = true → BIT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq21 : ∀op2.eq_op BLE op2 = true → BLE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq22 : ∀op2.eq_op BLS op2 = true → BLS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq23 : ∀op2.eq_op BLT op2 = true → BLT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq24 : ∀op2.eq_op BMC op2 = true → BMC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq25 : ∀op2.eq_op BMI op2 = true → BMI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq26 : ∀op2.eq_op BMS op2 = true → BMS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq27 : ∀op2.eq_op BNE op2 = true → BNE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq28 : ∀op2.eq_op BPL op2 = true → BPL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq29 : ∀op2.eq_op BRA op2 = true → BRA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq30 : ∀op2.eq_op BRCLRn op2 = true → BRCLRn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq31 : ∀op2.eq_op BRN op2 = true → BRN = op2. #op2; ncases op2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq32 : ∀op2.eq_op BRSETn op2 = true → BRSETn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq33 : ∀op2.eq_op BSETn op2 = true → BSETn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##33: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq34 : ∀op2.eq_op BSR op2 = true → BSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##34: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq35 : ∀op2.eq_op CBEQA op2 = true → CBEQA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##35: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq36 : ∀op2.eq_op CBEQX op2 = true → CBEQX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##36: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq37 : ∀op2.eq_op CLC op2 = true → CLC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##37: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq38 : ∀op2.eq_op CLI op2 = true → CLI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##38: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq39 : ∀op2.eq_op CLR op2 = true → CLR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##39: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq40 : ∀op2.eq_op CMP op2 = true → CMP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##40: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq41 : ∀op2.eq_op COM op2 = true → COM = op2. #op2; ncases op2; nnormalize; #H; ##[ ##41: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq42 : ∀op2.eq_op CPHX op2 = true → CPHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##42: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq43 : ∀op2.eq_op CPX op2 = true → CPX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##43: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq44 : ∀op2.eq_op DAA op2 = true → DAA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##44: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq45 : ∀op2.eq_op DBNZ op2 = true → DBNZ = op2. #op2; ncases op2; nnormalize; #H; ##[ ##45: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq46 : ∀op2.eq_op DEC op2 = true → DEC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##46: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq47 : ∀op2.eq_op DIV op2 = true → DIV = op2. #op2; ncases op2; nnormalize; #H; ##[ ##47: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq48 : ∀op2.eq_op EOR op2 = true → EOR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##48: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq49 : ∀op2.eq_op INC op2 = true → INC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##49: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq50 : ∀op2.eq_op JMP op2 = true → JMP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##50: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq51 : ∀op2.eq_op JSR op2 = true → JSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##51: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq52 : ∀op2.eq_op LDA op2 = true → LDA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##52: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq53 : ∀op2.eq_op LDHX op2 = true → LDHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##53: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq54 : ∀op2.eq_op LDX op2 = true → LDX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##54: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq55 : ∀op2.eq_op LSR op2 = true → LSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##55: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq56 : ∀op2.eq_op MOV op2 = true → MOV = op2. #op2; ncases op2; nnormalize; #H; ##[ ##56: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq57 : ∀op2.eq_op MUL op2 = true → MUL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##57: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq58 : ∀op2.eq_op NEG op2 = true → NEG = op2. #op2; ncases op2; nnormalize; #H; ##[ ##58: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq59 : ∀op2.eq_op NOP op2 = true → NOP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##59: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq60 : ∀op2.eq_op NSA op2 = true → NSA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##60: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq61 : ∀op2.eq_op ORA op2 = true → ORA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##61: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq62 : ∀op2.eq_op PSHA op2 = true → PSHA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##62: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq63 : ∀op2.eq_op PSHH op2 = true → PSHH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##63: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq64 : ∀op2.eq_op PSHX op2 = true → PSHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##64: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq65 : ∀op2.eq_op PULA op2 = true → PULA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##65: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq66 : ∀op2.eq_op PULH op2 = true → PULH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##66: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq67 : ∀op2.eq_op PULX op2 = true → PULX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##67: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq68 : ∀op2.eq_op ROL op2 = true → ROL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##68: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq69 : ∀op2.eq_op ROR op2 = true → ROR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##69: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq70 : ∀op2.eq_op RSP op2 = true → RSP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##70: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq71 : ∀op2.eq_op RTI op2 = true → RTI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##71: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq72 : ∀op2.eq_op RTS op2 = true → RTS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##72: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq73 : ∀op2.eq_op SBC op2 = true → SBC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##73: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq74 : ∀op2.eq_op SEC op2 = true → SEC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##74: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq75 : ∀op2.eq_op SEI op2 = true → SEI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##75: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq76 : ∀op2.eq_op SHA op2 = true → SHA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##76: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq77 : ∀op2.eq_op SLA op2 = true → SLA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##77: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq78 : ∀op2.eq_op STA op2 = true → STA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##78: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq79 : ∀op2.eq_op STHX op2 = true → STHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##79: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq80 : ∀op2.eq_op STOP op2 = true → STOP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##80: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq81 : ∀op2.eq_op STX op2 = true → STX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##81: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq82 : ∀op2.eq_op SUB op2 = true → SUB = op2. #op2; ncases op2; nnormalize; #H; ##[ ##82: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq83 : ∀op2.eq_op SWI op2 = true → SWI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##83: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq84 : ∀op2.eq_op TAP op2 = true → TAP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##84: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq85 : ∀op2.eq_op TAX op2 = true → TAX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##85: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq86 : ∀op2.eq_op TPA op2 = true → TPA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##86: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq87 : ∀op2.eq_op TST op2 = true → TST = op2. #op2; ncases op2; nnormalize; #H; ##[ ##87: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq88 : ∀op2.eq_op TSX op2 = true → TSX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##88: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq89 : ∀op2.eq_op TXA op2 = true → TXA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##89: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq90 : ∀op2.eq_op TXS op2 = true → TXS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##90: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. +nlemma eqop_to_eq91 : ∀op2.eq_op WAIT op2 = true → WAIT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##91: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. + +nlemma eqop_to_eq : ∀op1,op2.eq_op op1 op2 = true → op1 = op2. + #op1; ncases op1; + ##[ ##1: napply eqop_to_eq1 ##| ##2: napply eqop_to_eq2 ##| ##3: napply eqop_to_eq3 ##| ##4: napply eqop_to_eq4 + ##| ##5: napply eqop_to_eq5 ##| ##6: napply eqop_to_eq6 ##| ##7: napply eqop_to_eq7 ##| ##8: napply eqop_to_eq8 + ##| ##9: napply eqop_to_eq9 ##| ##10: napply eqop_to_eq10 ##| ##11: napply eqop_to_eq11 ##| ##12: napply eqop_to_eq12 + ##| ##13: napply eqop_to_eq13 ##| ##14: napply eqop_to_eq14 ##| ##15: napply eqop_to_eq15 ##| ##16: napply eqop_to_eq16 + ##| ##17: napply eqop_to_eq17 ##| ##18: napply eqop_to_eq18 ##| ##19: napply eqop_to_eq19 ##| ##20: napply eqop_to_eq20 + ##| ##21: napply eqop_to_eq21 ##| ##22: napply eqop_to_eq22 ##| ##23: napply eqop_to_eq23 ##| ##24: napply eqop_to_eq24 + ##| ##25: napply eqop_to_eq25 ##| ##26: napply eqop_to_eq26 ##| ##27: napply eqop_to_eq27 ##| ##28: napply eqop_to_eq28 + ##| ##29: napply eqop_to_eq29 ##| ##30: napply eqop_to_eq30 ##| ##31: napply eqop_to_eq31 ##| ##32: napply eqop_to_eq32 + ##| ##33: napply eqop_to_eq33 ##| ##34: napply eqop_to_eq34 ##| ##35: napply eqop_to_eq35 ##| ##36: napply eqop_to_eq36 + ##| ##37: napply eqop_to_eq37 ##| ##38: napply eqop_to_eq38 ##| ##39: napply eqop_to_eq39 ##| ##40: napply eqop_to_eq40 + ##| ##41: napply eqop_to_eq41 ##| ##42: napply eqop_to_eq42 ##| ##43: napply eqop_to_eq43 ##| ##44: napply eqop_to_eq44 + ##| ##45: napply eqop_to_eq45 ##| ##46: napply eqop_to_eq46 ##| ##47: napply eqop_to_eq47 ##| ##48: napply eqop_to_eq48 + ##| ##49: napply eqop_to_eq49 ##| ##50: napply eqop_to_eq50 ##| ##51: napply eqop_to_eq51 ##| ##52: napply eqop_to_eq52 + ##| ##53: napply eqop_to_eq53 ##| ##54: napply eqop_to_eq54 ##| ##55: napply eqop_to_eq55 ##| ##56: napply eqop_to_eq56 + ##| ##57: napply eqop_to_eq57 ##| ##58: napply eqop_to_eq58 ##| ##59: napply eqop_to_eq59 ##| ##60: napply eqop_to_eq60 + ##| ##61: napply eqop_to_eq61 ##| ##62: napply eqop_to_eq62 ##| ##63: napply eqop_to_eq63 ##| ##64: napply eqop_to_eq64 + ##| ##65: napply eqop_to_eq65 ##| ##66: napply eqop_to_eq66 ##| ##67: napply eqop_to_eq67 ##| ##68: napply eqop_to_eq68 + ##| ##69: napply eqop_to_eq69 ##| ##70: napply eqop_to_eq70 ##| ##71: napply eqop_to_eq71 ##| ##72: napply eqop_to_eq72 + ##| ##73: napply eqop_to_eq73 ##| ##74: napply eqop_to_eq74 ##| ##75: napply eqop_to_eq75 ##| ##76: napply eqop_to_eq76 + ##| ##77: napply eqop_to_eq77 ##| ##78: napply eqop_to_eq78 ##| ##79: napply eqop_to_eq79 ##| ##80: napply eqop_to_eq80 + ##| ##81: napply eqop_to_eq81 ##| ##82: napply eqop_to_eq82 ##| ##83: napply eqop_to_eq83 ##| ##84: napply eqop_to_eq84 + ##| ##85: napply eqop_to_eq85 ##| ##86: napply eqop_to_eq86 ##| ##87: napply eqop_to_eq87 ##| ##88: napply eqop_to_eq88 + ##| ##89: napply eqop_to_eq89 ##| ##90: napply eqop_to_eq90 ##| ##91: napply eqop_to_eq91 ##] +nqed. + +nlemma neq_to_neqop : ∀n1,n2.n1 ≠ n2 → eq_op n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_op n1 n2)); + napply (not_to_not (eq_op n1 n2 = true) (n1 = n2) ? H); + napply (eqop_to_eq n1 n2). +nqed. + +nlemma decidable_op : ∀x,y:opcode.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_op x y = true) (eq_op x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqop_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqop_to_neq … H)) + ##] +nqed. + +nlemma symmetric_eqop : symmetricT opcode bool eq_op. + #n1; #n2; + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_op n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqop n1 n2 H); + napply (symmetric_eq ? (eq_op n2 n1) false); + napply (neq_to_neqop n2 n1 (symmetric_neq ? n1 n2 H)) + ##] +nqed. diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode1.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode1.ma deleted file mode 100755 index ffc7eab82..000000000 --- a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode1.ma +++ /dev/null @@ -1,397 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "num/bool_lemmas.ma". -include "freescale/opcode_base.ma". - -(* ********************************************** *) -(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *) -(* ********************************************** *) - -ndefinition opcode_destruct_aux ≝ -Πop1,op2.ΠP:Prop.op1 = op2 → - match eq_op op1 op2 with [ true ⇒ P → P | false ⇒ P ]. - -ndefinition opcode_destruct : opcode_destruct_aux. - #op1; #op2; #P; #H; - nrewrite < H; - nelim op1; - nnormalize; - napply (λx.x). -nqed. - -nlemma symmetric_eqop1 : ∀op2.eq_op ADC op2 = eq_op op2 ADC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop2 : ∀op2.eq_op ADD op2 = eq_op op2 ADD. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop3 : ∀op2.eq_op AIS op2 = eq_op op2 AIS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop4 : ∀op2.eq_op AIX op2 = eq_op op2 AIX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop5 : ∀op2.eq_op AND op2 = eq_op op2 AND. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop6 : ∀op2.eq_op ASL op2 = eq_op op2 ASL. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop7 : ∀op2.eq_op ASR op2 = eq_op op2 ASR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop8 : ∀op2.eq_op BCC op2 = eq_op op2 BCC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop9 : ∀op2.eq_op BCLRn op2 = eq_op op2 BCLRn. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop10 : ∀op2.eq_op BCS op2 = eq_op op2 BCS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop11 : ∀op2.eq_op BEQ op2 = eq_op op2 BEQ. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop12 : ∀op2.eq_op BGE op2 = eq_op op2 BGE. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop13 : ∀op2.eq_op BGND op2 = eq_op op2 BGND. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop14 : ∀op2.eq_op BGT op2 = eq_op op2 BGT. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop15 : ∀op2.eq_op BHCC op2 = eq_op op2 BHCC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop16 : ∀op2.eq_op BHCS op2 = eq_op op2 BHCS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop17 : ∀op2.eq_op BHI op2 = eq_op op2 BHI. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop18 : ∀op2.eq_op BIH op2 = eq_op op2 BIH. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop19 : ∀op2.eq_op BIL op2 = eq_op op2 BIL. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop20 : ∀op2.eq_op BIT op2 = eq_op op2 BIT. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop21 : ∀op2.eq_op BLE op2 = eq_op op2 BLE. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop22 : ∀op2.eq_op BLS op2 = eq_op op2 BLS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop23 : ∀op2.eq_op BLT op2 = eq_op op2 BLT. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop24 : ∀op2.eq_op BMC op2 = eq_op op2 BMC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop25 : ∀op2.eq_op BMI op2 = eq_op op2 BMI. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop26 : ∀op2.eq_op BMS op2 = eq_op op2 BMS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop27 : ∀op2.eq_op BNE op2 = eq_op op2 BNE. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop28 : ∀op2.eq_op BPL op2 = eq_op op2 BPL. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop29 : ∀op2.eq_op BRA op2 = eq_op op2 BRA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop30 : ∀op2.eq_op BRCLRn op2 = eq_op op2 BRCLRn. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop31 : ∀op2.eq_op BRN op2 = eq_op op2 BRN. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop32 : ∀op2.eq_op BRSETn op2 = eq_op op2 BRSETn. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop33 : ∀op2.eq_op BSETn op2 = eq_op op2 BSETn. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop34 : ∀op2.eq_op BSR op2 = eq_op op2 BSR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop35 : ∀op2.eq_op CBEQA op2 = eq_op op2 CBEQA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop36 : ∀op2.eq_op CBEQX op2 = eq_op op2 CBEQX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop37 : ∀op2.eq_op CLC op2 = eq_op op2 CLC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop38 : ∀op2.eq_op CLI op2 = eq_op op2 CLI. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop39 : ∀op2.eq_op CLR op2 = eq_op op2 CLR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop40 : ∀op2.eq_op CMP op2 = eq_op op2 CMP. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop41 : ∀op2.eq_op COM op2 = eq_op op2 COM. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop42 : ∀op2.eq_op CPHX op2 = eq_op op2 CPHX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop43 : ∀op2.eq_op CPX op2 = eq_op op2 CPX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop44 : ∀op2.eq_op DAA op2 = eq_op op2 DAA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop45 : ∀op2.eq_op DBNZ op2 = eq_op op2 DBNZ. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop46 : ∀op2.eq_op DEC op2 = eq_op op2 DEC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop47 : ∀op2.eq_op DIV op2 = eq_op op2 DIV. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop48 : ∀op2.eq_op EOR op2 = eq_op op2 EOR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop49 : ∀op2.eq_op INC op2 = eq_op op2 INC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop50 : ∀op2.eq_op JMP op2 = eq_op op2 JMP. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop51 : ∀op2.eq_op JSR op2 = eq_op op2 JSR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop52 : ∀op2.eq_op LDA op2 = eq_op op2 LDA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop53 : ∀op2.eq_op LDHX op2 = eq_op op2 LDHX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop54 : ∀op2.eq_op LDX op2 = eq_op op2 LDX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop55 : ∀op2.eq_op LSR op2 = eq_op op2 LSR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop56 : ∀op2.eq_op MOV op2 = eq_op op2 MOV. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop57 : ∀op2.eq_op MUL op2 = eq_op op2 MUL. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop58 : ∀op2.eq_op NEG op2 = eq_op op2 NEG. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop59 : ∀op2.eq_op NOP op2 = eq_op op2 NOP. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop60 : ∀op2.eq_op NSA op2 = eq_op op2 NSA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop61 : ∀op2.eq_op ORA op2 = eq_op op2 ORA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop62 : ∀op2.eq_op PSHA op2 = eq_op op2 PSHA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop63 : ∀op2.eq_op PSHH op2 = eq_op op2 PSHH. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop64 : ∀op2.eq_op PSHX op2 = eq_op op2 PSHX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop65 : ∀op2.eq_op PULA op2 = eq_op op2 PULA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop66 : ∀op2.eq_op PULH op2 = eq_op op2 PULH. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop67 : ∀op2.eq_op PULX op2 = eq_op op2 PULX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop68 : ∀op2.eq_op ROL op2 = eq_op op2 ROL. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop69 : ∀op2.eq_op ROR op2 = eq_op op2 ROR. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop70 : ∀op2.eq_op RSP op2 = eq_op op2 RSP. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop71 : ∀op2.eq_op RTI op2 = eq_op op2 RTI. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop72 : ∀op2.eq_op RTS op2 = eq_op op2 RTS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop73 : ∀op2.eq_op SBC op2 = eq_op op2 SBC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop74 : ∀op2.eq_op SEC op2 = eq_op op2 SEC. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop75 : ∀op2.eq_op SEI op2 = eq_op op2 SEI. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop76 : ∀op2.eq_op SHA op2 = eq_op op2 SHA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop77 : ∀op2.eq_op SLA op2 = eq_op op2 SLA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop78 : ∀op2.eq_op STA op2 = eq_op op2 STA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop79 : ∀op2.eq_op STHX op2 = eq_op op2 STHX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop80 : ∀op2.eq_op STOP op2 = eq_op op2 STOP. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop81 : ∀op2.eq_op STX op2 = eq_op op2 STX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop82 : ∀op2.eq_op SUB op2 = eq_op op2 SUB. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop83 : ∀op2.eq_op SWI op2 = eq_op op2 SWI. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop84 : ∀op2.eq_op TAP op2 = eq_op op2 TAP. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop85 : ∀op2.eq_op TAX op2 = eq_op op2 TAX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop86 : ∀op2.eq_op TPA op2 = eq_op op2 TPA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop87 : ∀op2.eq_op TST op2 = eq_op op2 TST. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop88 : ∀op2.eq_op TSX op2 = eq_op op2 TSX. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop89 : ∀op2.eq_op TXA op2 = eq_op op2 TXA. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop90 : ∀op2.eq_op TXS op2 = eq_op op2 TXS. #op2; nnormalize; napply refl_eq.nqed. -nlemma symmetric_eqop91 : ∀op2.eq_op WAIT op2 = eq_op op2 WAIT. #op2; nnormalize; napply refl_eq.nqed. - -nlemma symmetric_eqop : symmetricT opcode bool eq_op. - #op1; ncases op1; - ##[ ##1: napply symmetric_eqop1 ##| ##2: napply symmetric_eqop2 ##| ##3: napply symmetric_eqop3 ##| ##4: napply symmetric_eqop4 - ##| ##5: napply symmetric_eqop5 ##| ##6: napply symmetric_eqop6 ##| ##7: napply symmetric_eqop7 ##| ##8: napply symmetric_eqop8 - ##| ##9: napply symmetric_eqop9 ##| ##10: napply symmetric_eqop10 ##| ##11: napply symmetric_eqop11 ##| ##12: napply symmetric_eqop12 - ##| ##13: napply symmetric_eqop13 ##| ##14: napply symmetric_eqop14 ##| ##15: napply symmetric_eqop15 ##| ##16: napply symmetric_eqop16 - ##| ##17: napply symmetric_eqop17 ##| ##18: napply symmetric_eqop18 ##| ##19: napply symmetric_eqop19 ##| ##20: napply symmetric_eqop20 - ##| ##21: napply symmetric_eqop21 ##| ##22: napply symmetric_eqop22 ##| ##23: napply symmetric_eqop23 ##| ##24: napply symmetric_eqop24 - ##| ##25: napply symmetric_eqop25 ##| ##26: napply symmetric_eqop26 ##| ##27: napply symmetric_eqop27 ##| ##28: napply symmetric_eqop28 - ##| ##29: napply symmetric_eqop29 ##| ##30: napply symmetric_eqop30 ##| ##31: napply symmetric_eqop31 ##| ##32: napply symmetric_eqop32 - ##| ##33: napply symmetric_eqop33 ##| ##34: napply symmetric_eqop34 ##| ##35: napply symmetric_eqop35 ##| ##36: napply symmetric_eqop36 - ##| ##37: napply symmetric_eqop37 ##| ##38: napply symmetric_eqop38 ##| ##39: napply symmetric_eqop39 ##| ##40: napply symmetric_eqop40 - ##| ##41: napply symmetric_eqop41 ##| ##42: napply symmetric_eqop42 ##| ##43: napply symmetric_eqop43 ##| ##44: napply symmetric_eqop44 - ##| ##45: napply symmetric_eqop45 ##| ##46: napply symmetric_eqop46 ##| ##47: napply symmetric_eqop47 ##| ##48: napply symmetric_eqop48 - ##| ##49: napply symmetric_eqop49 ##| ##50: napply symmetric_eqop50 ##| ##51: napply symmetric_eqop51 ##| ##52: napply symmetric_eqop52 - ##| ##53: napply symmetric_eqop53 ##| ##54: napply symmetric_eqop54 ##| ##55: napply symmetric_eqop55 ##| ##56: napply symmetric_eqop56 - ##| ##57: napply symmetric_eqop57 ##| ##58: napply symmetric_eqop58 ##| ##59: napply symmetric_eqop59 ##| ##60: napply symmetric_eqop60 - ##| ##61: napply symmetric_eqop61 ##| ##62: napply symmetric_eqop62 ##| ##63: napply symmetric_eqop63 ##| ##64: napply symmetric_eqop64 - ##| ##65: napply symmetric_eqop65 ##| ##66: napply symmetric_eqop66 ##| ##67: napply symmetric_eqop67 ##| ##68: napply symmetric_eqop68 - ##| ##69: napply symmetric_eqop69 ##| ##70: napply symmetric_eqop70 ##| ##71: napply symmetric_eqop71 ##| ##72: napply symmetric_eqop72 - ##| ##73: napply symmetric_eqop73 ##| ##74: napply symmetric_eqop74 ##| ##75: napply symmetric_eqop75 ##| ##76: napply symmetric_eqop76 - ##| ##77: napply symmetric_eqop77 ##| ##78: napply symmetric_eqop78 ##| ##79: napply symmetric_eqop79 ##| ##80: napply symmetric_eqop80 - ##| ##81: napply symmetric_eqop81 ##| ##82: napply symmetric_eqop82 ##| ##83: napply symmetric_eqop83 ##| ##84: napply symmetric_eqop84 - ##| ##85: napply symmetric_eqop85 ##| ##86: napply symmetric_eqop86 ##| ##87: napply symmetric_eqop87 ##| ##88: napply symmetric_eqop88 - ##| ##89: napply symmetric_eqop89 ##| ##90: napply symmetric_eqop90 ##| ##91: napply symmetric_eqop91 ##] -nqed. - -nlemma eqop_to_eq1 : ∀op2.eq_op ADC op2 = true → ADC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq2 : ∀op2.eq_op ADD op2 = true → ADD = op2. #op2; ncases op2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq3 : ∀op2.eq_op AIS op2 = true → AIS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq4 : ∀op2.eq_op AIX op2 = true → AIX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq5 : ∀op2.eq_op AND op2 = true → AND = op2. #op2; ncases op2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq6 : ∀op2.eq_op ASL op2 = true → ASL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq7 : ∀op2.eq_op ASR op2 = true → ASR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq8 : ∀op2.eq_op BCC op2 = true → BCC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq9 : ∀op2.eq_op BCLRn op2 = true → BCLRn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq10 : ∀op2.eq_op BCS op2 = true → BCS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq11 : ∀op2.eq_op BEQ op2 = true → BEQ = op2. #op2; ncases op2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq12 : ∀op2.eq_op BGE op2 = true → BGE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq13 : ∀op2.eq_op BGND op2 = true → BGND = op2. #op2; ncases op2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq14 : ∀op2.eq_op BGT op2 = true → BGT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq15 : ∀op2.eq_op BHCC op2 = true → BHCC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq16 : ∀op2.eq_op BHCS op2 = true → BHCS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq17 : ∀op2.eq_op BHI op2 = true → BHI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq18 : ∀op2.eq_op BIH op2 = true → BIH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq19 : ∀op2.eq_op BIL op2 = true → BIL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq20 : ∀op2.eq_op BIT op2 = true → BIT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq21 : ∀op2.eq_op BLE op2 = true → BLE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq22 : ∀op2.eq_op BLS op2 = true → BLS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq23 : ∀op2.eq_op BLT op2 = true → BLT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq24 : ∀op2.eq_op BMC op2 = true → BMC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq25 : ∀op2.eq_op BMI op2 = true → BMI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq26 : ∀op2.eq_op BMS op2 = true → BMS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq27 : ∀op2.eq_op BNE op2 = true → BNE = op2. #op2; ncases op2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq28 : ∀op2.eq_op BPL op2 = true → BPL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq29 : ∀op2.eq_op BRA op2 = true → BRA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq30 : ∀op2.eq_op BRCLRn op2 = true → BRCLRn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq31 : ∀op2.eq_op BRN op2 = true → BRN = op2. #op2; ncases op2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq32 : ∀op2.eq_op BRSETn op2 = true → BRSETn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq33 : ∀op2.eq_op BSETn op2 = true → BSETn = op2. #op2; ncases op2; nnormalize; #H; ##[ ##33: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq34 : ∀op2.eq_op BSR op2 = true → BSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##34: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq35 : ∀op2.eq_op CBEQA op2 = true → CBEQA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##35: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq36 : ∀op2.eq_op CBEQX op2 = true → CBEQX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##36: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq37 : ∀op2.eq_op CLC op2 = true → CLC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##37: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq38 : ∀op2.eq_op CLI op2 = true → CLI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##38: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq39 : ∀op2.eq_op CLR op2 = true → CLR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##39: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq40 : ∀op2.eq_op CMP op2 = true → CMP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##40: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq41 : ∀op2.eq_op COM op2 = true → COM = op2. #op2; ncases op2; nnormalize; #H; ##[ ##41: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq42 : ∀op2.eq_op CPHX op2 = true → CPHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##42: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq43 : ∀op2.eq_op CPX op2 = true → CPX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##43: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq44 : ∀op2.eq_op DAA op2 = true → DAA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##44: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq45 : ∀op2.eq_op DBNZ op2 = true → DBNZ = op2. #op2; ncases op2; nnormalize; #H; ##[ ##45: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq46 : ∀op2.eq_op DEC op2 = true → DEC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##46: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq47 : ∀op2.eq_op DIV op2 = true → DIV = op2. #op2; ncases op2; nnormalize; #H; ##[ ##47: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq48 : ∀op2.eq_op EOR op2 = true → EOR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##48: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq49 : ∀op2.eq_op INC op2 = true → INC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##49: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq50 : ∀op2.eq_op JMP op2 = true → JMP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##50: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq51 : ∀op2.eq_op JSR op2 = true → JSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##51: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq52 : ∀op2.eq_op LDA op2 = true → LDA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##52: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq53 : ∀op2.eq_op LDHX op2 = true → LDHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##53: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq54 : ∀op2.eq_op LDX op2 = true → LDX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##54: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq55 : ∀op2.eq_op LSR op2 = true → LSR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##55: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq56 : ∀op2.eq_op MOV op2 = true → MOV = op2. #op2; ncases op2; nnormalize; #H; ##[ ##56: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq57 : ∀op2.eq_op MUL op2 = true → MUL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##57: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq58 : ∀op2.eq_op NEG op2 = true → NEG = op2. #op2; ncases op2; nnormalize; #H; ##[ ##58: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq59 : ∀op2.eq_op NOP op2 = true → NOP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##59: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq60 : ∀op2.eq_op NSA op2 = true → NSA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##60: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq61 : ∀op2.eq_op ORA op2 = true → ORA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##61: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq62 : ∀op2.eq_op PSHA op2 = true → PSHA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##62: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq63 : ∀op2.eq_op PSHH op2 = true → PSHH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##63: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq64 : ∀op2.eq_op PSHX op2 = true → PSHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##64: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq65 : ∀op2.eq_op PULA op2 = true → PULA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##65: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq66 : ∀op2.eq_op PULH op2 = true → PULH = op2. #op2; ncases op2; nnormalize; #H; ##[ ##66: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq67 : ∀op2.eq_op PULX op2 = true → PULX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##67: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq68 : ∀op2.eq_op ROL op2 = true → ROL = op2. #op2; ncases op2; nnormalize; #H; ##[ ##68: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq69 : ∀op2.eq_op ROR op2 = true → ROR = op2. #op2; ncases op2; nnormalize; #H; ##[ ##69: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq70 : ∀op2.eq_op RSP op2 = true → RSP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##70: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq71 : ∀op2.eq_op RTI op2 = true → RTI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##71: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq72 : ∀op2.eq_op RTS op2 = true → RTS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##72: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq73 : ∀op2.eq_op SBC op2 = true → SBC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##73: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq74 : ∀op2.eq_op SEC op2 = true → SEC = op2. #op2; ncases op2; nnormalize; #H; ##[ ##74: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq75 : ∀op2.eq_op SEI op2 = true → SEI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##75: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq76 : ∀op2.eq_op SHA op2 = true → SHA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##76: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq77 : ∀op2.eq_op SLA op2 = true → SLA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##77: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq78 : ∀op2.eq_op STA op2 = true → STA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##78: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq79 : ∀op2.eq_op STHX op2 = true → STHX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##79: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq80 : ∀op2.eq_op STOP op2 = true → STOP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##80: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq81 : ∀op2.eq_op STX op2 = true → STX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##81: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq82 : ∀op2.eq_op SUB op2 = true → SUB = op2. #op2; ncases op2; nnormalize; #H; ##[ ##82: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq83 : ∀op2.eq_op SWI op2 = true → SWI = op2. #op2; ncases op2; nnormalize; #H; ##[ ##83: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq84 : ∀op2.eq_op TAP op2 = true → TAP = op2. #op2; ncases op2; nnormalize; #H; ##[ ##84: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq85 : ∀op2.eq_op TAX op2 = true → TAX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##85: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq86 : ∀op2.eq_op TPA op2 = true → TPA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##86: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq87 : ∀op2.eq_op TST op2 = true → TST = op2. #op2; ncases op2; nnormalize; #H; ##[ ##87: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq88 : ∀op2.eq_op TSX op2 = true → TSX = op2. #op2; ncases op2; nnormalize; #H; ##[ ##88: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq89 : ∀op2.eq_op TXA op2 = true → TXA = op2. #op2; ncases op2; nnormalize; #H; ##[ ##89: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq90 : ∀op2.eq_op TXS op2 = true → TXS = op2. #op2; ncases op2; nnormalize; #H; ##[ ##90: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. -nlemma eqop_to_eq91 : ∀op2.eq_op WAIT op2 = true → WAIT = op2. #op2; ncases op2; nnormalize; #H; ##[ ##91: napply refl_eq ##| ##*: napply (bool_destruct … H) ##]nqed. - -nlemma eqop_to_eq : ∀op1,op2.eq_op op1 op2 = true → op1 = op2. - #op1; ncases op1; - ##[ ##1: napply eqop_to_eq1 ##| ##2: napply eqop_to_eq2 ##| ##3: napply eqop_to_eq3 ##| ##4: napply eqop_to_eq4 - ##| ##5: napply eqop_to_eq5 ##| ##6: napply eqop_to_eq6 ##| ##7: napply eqop_to_eq7 ##| ##8: napply eqop_to_eq8 - ##| ##9: napply eqop_to_eq9 ##| ##10: napply eqop_to_eq10 ##| ##11: napply eqop_to_eq11 ##| ##12: napply eqop_to_eq12 - ##| ##13: napply eqop_to_eq13 ##| ##14: napply eqop_to_eq14 ##| ##15: napply eqop_to_eq15 ##| ##16: napply eqop_to_eq16 - ##| ##17: napply eqop_to_eq17 ##| ##18: napply eqop_to_eq18 ##| ##19: napply eqop_to_eq19 ##| ##20: napply eqop_to_eq20 - ##| ##21: napply eqop_to_eq21 ##| ##22: napply eqop_to_eq22 ##| ##23: napply eqop_to_eq23 ##| ##24: napply eqop_to_eq24 - ##| ##25: napply eqop_to_eq25 ##| ##26: napply eqop_to_eq26 ##| ##27: napply eqop_to_eq27 ##| ##28: napply eqop_to_eq28 - ##| ##29: napply eqop_to_eq29 ##| ##30: napply eqop_to_eq30 ##| ##31: napply eqop_to_eq31 ##| ##32: napply eqop_to_eq32 - ##| ##33: napply eqop_to_eq33 ##| ##34: napply eqop_to_eq34 ##| ##35: napply eqop_to_eq35 ##| ##36: napply eqop_to_eq36 - ##| ##37: napply eqop_to_eq37 ##| ##38: napply eqop_to_eq38 ##| ##39: napply eqop_to_eq39 ##| ##40: napply eqop_to_eq40 - ##| ##41: napply eqop_to_eq41 ##| ##42: napply eqop_to_eq42 ##| ##43: napply eqop_to_eq43 ##| ##44: napply eqop_to_eq44 - ##| ##45: napply eqop_to_eq45 ##| ##46: napply eqop_to_eq46 ##| ##47: napply eqop_to_eq47 ##| ##48: napply eqop_to_eq48 - ##| ##49: napply eqop_to_eq49 ##| ##50: napply eqop_to_eq50 ##| ##51: napply eqop_to_eq51 ##| ##52: napply eqop_to_eq52 - ##| ##53: napply eqop_to_eq53 ##| ##54: napply eqop_to_eq54 ##| ##55: napply eqop_to_eq55 ##| ##56: napply eqop_to_eq56 - ##| ##57: napply eqop_to_eq57 ##| ##58: napply eqop_to_eq58 ##| ##59: napply eqop_to_eq59 ##| ##60: napply eqop_to_eq60 - ##| ##61: napply eqop_to_eq61 ##| ##62: napply eqop_to_eq62 ##| ##63: napply eqop_to_eq63 ##| ##64: napply eqop_to_eq64 - ##| ##65: napply eqop_to_eq65 ##| ##66: napply eqop_to_eq66 ##| ##67: napply eqop_to_eq67 ##| ##68: napply eqop_to_eq68 - ##| ##69: napply eqop_to_eq69 ##| ##70: napply eqop_to_eq70 ##| ##71: napply eqop_to_eq71 ##| ##72: napply eqop_to_eq72 - ##| ##73: napply eqop_to_eq73 ##| ##74: napply eqop_to_eq74 ##| ##75: napply eqop_to_eq75 ##| ##76: napply eqop_to_eq76 - ##| ##77: napply eqop_to_eq77 ##| ##78: napply eqop_to_eq78 ##| ##79: napply eqop_to_eq79 ##| ##80: napply eqop_to_eq80 - ##| ##81: napply eqop_to_eq81 ##| ##82: napply eqop_to_eq82 ##| ##83: napply eqop_to_eq83 ##| ##84: napply eqop_to_eq84 - ##| ##85: napply eqop_to_eq85 ##| ##86: napply eqop_to_eq86 ##| ##87: napply eqop_to_eq87 ##| ##88: napply eqop_to_eq88 - ##| ##89: napply eqop_to_eq89 ##| ##90: napply eqop_to_eq90 ##| ##91: napply eqop_to_eq91 ##] -nqed. - -nlemma eq_to_eqop1 : ∀op2.ADC = op2 → eq_op ADC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop2 : ∀op2.ADD = op2 → eq_op ADD op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop3 : ∀op2.AIS = op2 → eq_op AIS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop4 : ∀op2.AIX = op2 → eq_op AIX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop5 : ∀op2.AND = op2 → eq_op AND op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop6 : ∀op2.ASL = op2 → eq_op ASL op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop7 : ∀op2.ASR = op2 → eq_op ASR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop8 : ∀op2.BCC = op2 → eq_op BCC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop9 : ∀op2.BCLRn = op2 → eq_op BCLRn op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop10 : ∀op2.BCS = op2 → eq_op BCS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop11 : ∀op2.BEQ = op2 → eq_op BEQ op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop12 : ∀op2.BGE = op2 → eq_op BGE op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop13 : ∀op2.BGND = op2 → eq_op BGND op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop14 : ∀op2.BGT = op2 → eq_op BGT op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop15 : ∀op2.BHCC = op2 → eq_op BHCC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop16 : ∀op2.BHCS = op2 → eq_op BHCS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop17 : ∀op2.BHI = op2 → eq_op BHI op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop18 : ∀op2.BIH = op2 → eq_op BIH op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop19 : ∀op2.BIL = op2 → eq_op BIL op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop20 : ∀op2.BIT = op2 → eq_op BIT op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop21 : ∀op2.BLE = op2 → eq_op BLE op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop22 : ∀op2.BLS = op2 → eq_op BLS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop23 : ∀op2.BLT = op2 → eq_op BLT op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop24 : ∀op2.BMC = op2 → eq_op BMC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop25 : ∀op2.BMI = op2 → eq_op BMI op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop26 : ∀op2.BMS = op2 → eq_op BMS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop27 : ∀op2.BNE = op2 → eq_op BNE op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop28 : ∀op2.BPL = op2 → eq_op BPL op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop29 : ∀op2.BRA = op2 → eq_op BRA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop30 : ∀op2.BRCLRn = op2 → eq_op BRCLRn op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop31 : ∀op2.BRN = op2 → eq_op BRN op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop32 : ∀op2.BRSETn = op2 → eq_op BRSETn op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop33 : ∀op2.BSETn = op2 → eq_op BSETn op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##33: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop34 : ∀op2.BSR = op2 → eq_op BSR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##34: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop35 : ∀op2.CBEQA = op2 → eq_op CBEQA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##35: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop36 : ∀op2.CBEQX = op2 → eq_op CBEQX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##36: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop37 : ∀op2.CLC = op2 → eq_op CLC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##37: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop38 : ∀op2.CLI = op2 → eq_op CLI op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##38: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop39 : ∀op2.CLR = op2 → eq_op CLR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##39: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop40 : ∀op2.CMP = op2 → eq_op CMP op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##40: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop41 : ∀op2.COM = op2 → eq_op COM op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##41: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop42 : ∀op2.CPHX = op2 → eq_op CPHX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##42: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop43 : ∀op2.CPX = op2 → eq_op CPX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##43: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop44 : ∀op2.DAA = op2 → eq_op DAA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##44: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop45 : ∀op2.DBNZ = op2 → eq_op DBNZ op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##45: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop46 : ∀op2.DEC = op2 → eq_op DEC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##46: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop47 : ∀op2.DIV = op2 → eq_op DIV op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##47: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop48 : ∀op2.EOR = op2 → eq_op EOR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##48: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop49 : ∀op2.INC = op2 → eq_op INC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##49: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop50 : ∀op2.JMP = op2 → eq_op JMP op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##50: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop51 : ∀op2.JSR = op2 → eq_op JSR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##51: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop52 : ∀op2.LDA = op2 → eq_op LDA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##52: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop53 : ∀op2.LDHX = op2 → eq_op LDHX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##53: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop54 : ∀op2.LDX = op2 → eq_op LDX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##54: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop55 : ∀op2.LSR = op2 → eq_op LSR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##55: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop56 : ∀op2.MOV = op2 → eq_op MOV op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##56: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop57 : ∀op2.MUL = op2 → eq_op MUL op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##57: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop58 : ∀op2.NEG = op2 → eq_op NEG op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##58: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop59 : ∀op2.NOP = op2 → eq_op NOP op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##59: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop60 : ∀op2.NSA = op2 → eq_op NSA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##60: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop61 : ∀op2.ORA = op2 → eq_op ORA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##61: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop62 : ∀op2.PSHA = op2 → eq_op PSHA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##62: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop63 : ∀op2.PSHH = op2 → eq_op PSHH op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##63: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop64 : ∀op2.PSHX = op2 → eq_op PSHX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##64: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop65 : ∀op2.PULA = op2 → eq_op PULA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##65: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop66 : ∀op2.PULH = op2 → eq_op PULH op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##66: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop67 : ∀op2.PULX = op2 → eq_op PULX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##67: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop68 : ∀op2.ROL = op2 → eq_op ROL op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##68: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop69 : ∀op2.ROR = op2 → eq_op ROR op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##69: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop70 : ∀op2.RSP = op2 → eq_op RSP op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##70: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop71 : ∀op2.RTI = op2 → eq_op RTI op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##71: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop72 : ∀op2.RTS = op2 → eq_op RTS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##72: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop73 : ∀op2.SBC = op2 → eq_op SBC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##73: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop74 : ∀op2.SEC = op2 → eq_op SEC op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##74: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop75 : ∀op2.SEI = op2 → eq_op SEI op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##75: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop76 : ∀op2.SHA = op2 → eq_op SHA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##76: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop77 : ∀op2.SLA = op2 → eq_op SLA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##77: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop78 : ∀op2.STA = op2 → eq_op STA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##78: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop79 : ∀op2.STHX = op2 → eq_op STHX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##79: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop80 : ∀op2.STOP = op2 → eq_op STOP op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##80: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop81 : ∀op2.STX = op2 → eq_op STX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##81: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop82 : ∀op2.SUB = op2 → eq_op SUB op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##82: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop83 : ∀op2.SWI = op2 → eq_op SWI op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##83: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop84 : ∀op2.TAP = op2 → eq_op TAP op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##84: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop85 : ∀op2.TAX = op2 → eq_op TAX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##85: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop86 : ∀op2.TPA = op2 → eq_op TPA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##86: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop87 : ∀op2.TST = op2 → eq_op TST op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##87: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop88 : ∀op2.TSX = op2 → eq_op TSX op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##88: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop89 : ∀op2.TXA = op2 → eq_op TXA op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##89: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop90 : ∀op2.TXS = op2 → eq_op TXS op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##90: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. -nlemma eq_to_eqop91 : ∀op2.WAIT = op2 → eq_op WAIT op2 = true. #op2; ncases op2; nnormalize; #H; ##[ ##91: napply refl_eq ##| ##*: napply (opcode_destruct … (false = true) H) ##]nqed. - -nlemma eq_to_eqop : ∀op1,op2.op1 = op2 → eq_op op1 op2 = true. - #op1; ncases op1; - ##[ ##1: napply eq_to_eqop1 ##| ##2: napply eq_to_eqop2 ##| ##3: napply eq_to_eqop3 ##| ##4: napply eq_to_eqop4 - ##| ##5: napply eq_to_eqop5 ##| ##6: napply eq_to_eqop6 ##| ##7: napply eq_to_eqop7 ##| ##8: napply eq_to_eqop8 - ##| ##9: napply eq_to_eqop9 ##| ##10: napply eq_to_eqop10 ##| ##11: napply eq_to_eqop11 ##| ##12: napply eq_to_eqop12 - ##| ##13: napply eq_to_eqop13 ##| ##14: napply eq_to_eqop14 ##| ##15: napply eq_to_eqop15 ##| ##16: napply eq_to_eqop16 - ##| ##17: napply eq_to_eqop17 ##| ##18: napply eq_to_eqop18 ##| ##19: napply eq_to_eqop19 ##| ##20: napply eq_to_eqop20 - ##| ##21: napply eq_to_eqop21 ##| ##22: napply eq_to_eqop22 ##| ##23: napply eq_to_eqop23 ##| ##24: napply eq_to_eqop24 - ##| ##25: napply eq_to_eqop25 ##| ##26: napply eq_to_eqop26 ##| ##27: napply eq_to_eqop27 ##| ##28: napply eq_to_eqop28 - ##| ##29: napply eq_to_eqop29 ##| ##30: napply eq_to_eqop30 ##| ##31: napply eq_to_eqop31 ##| ##32: napply eq_to_eqop32 - ##| ##33: napply eq_to_eqop33 ##| ##34: napply eq_to_eqop34 ##| ##35: napply eq_to_eqop35 ##| ##36: napply eq_to_eqop36 - ##| ##37: napply eq_to_eqop37 ##| ##38: napply eq_to_eqop38 ##| ##39: napply eq_to_eqop39 ##| ##40: napply eq_to_eqop40 - ##| ##41: napply eq_to_eqop41 ##| ##42: napply eq_to_eqop42 ##| ##43: napply eq_to_eqop43 ##| ##44: napply eq_to_eqop44 - ##| ##45: napply eq_to_eqop45 ##| ##46: napply eq_to_eqop46 ##| ##47: napply eq_to_eqop47 ##| ##48: napply eq_to_eqop48 - ##| ##49: napply eq_to_eqop49 ##| ##50: napply eq_to_eqop50 ##| ##51: napply eq_to_eqop51 ##| ##52: napply eq_to_eqop52 - ##| ##53: napply eq_to_eqop53 ##| ##54: napply eq_to_eqop54 ##| ##55: napply eq_to_eqop55 ##| ##56: napply eq_to_eqop56 - ##| ##57: napply eq_to_eqop57 ##| ##58: napply eq_to_eqop58 ##| ##59: napply eq_to_eqop59 ##| ##60: napply eq_to_eqop60 - ##| ##61: napply eq_to_eqop61 ##| ##62: napply eq_to_eqop62 ##| ##63: napply eq_to_eqop63 ##| ##64: napply eq_to_eqop64 - ##| ##65: napply eq_to_eqop65 ##| ##66: napply eq_to_eqop66 ##| ##67: napply eq_to_eqop67 ##| ##68: napply eq_to_eqop68 - ##| ##69: napply eq_to_eqop69 ##| ##70: napply eq_to_eqop70 ##| ##71: napply eq_to_eqop71 ##| ##72: napply eq_to_eqop72 - ##| ##73: napply eq_to_eqop73 ##| ##74: napply eq_to_eqop74 ##| ##75: napply eq_to_eqop75 ##| ##76: napply eq_to_eqop76 - ##| ##77: napply eq_to_eqop77 ##| ##78: napply eq_to_eqop78 ##| ##79: napply eq_to_eqop79 ##| ##80: napply eq_to_eqop80 - ##| ##81: napply eq_to_eqop81 ##| ##82: napply eq_to_eqop82 ##| ##83: napply eq_to_eqop83 ##| ##84: napply eq_to_eqop84 - ##| ##85: napply eq_to_eqop85 ##| ##86: napply eq_to_eqop86 ##| ##87: napply eq_to_eqop87 ##| ##88: napply eq_to_eqop88 - ##| ##89: napply eq_to_eqop89 ##| ##90: napply eq_to_eqop90 ##| ##91: napply eq_to_eqop91 ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode2.ma b/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode2.ma deleted file mode 100755 index dca4a5d57..000000000 --- a/helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode2.ma +++ /dev/null @@ -1,384 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *) -(* Ultima modifica: 05/08/2009 *) -(* *) -(* ********************************************************************** *) - -include "freescale/opcode_base_lemmas_opcode1.ma". - -(* ********************************************** *) -(* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *) -(* ********************************************** *) - -nlemma decidable_op1 : ∀x:opcode.decidable (ADC = x). #x; nnormalize; nelim x; ##[ ##1: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op2 : ∀x:opcode.decidable (ADD = x). #x; nnormalize; nelim x; ##[ ##2: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op3 : ∀x:opcode.decidable (AIS = x). #x; nnormalize; nelim x; ##[ ##3: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op4 : ∀x:opcode.decidable (AIX = x). #x; nnormalize; nelim x; ##[ ##4: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op5 : ∀x:opcode.decidable (AND = x). #x; nnormalize; nelim x; ##[ ##5: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op6 : ∀x:opcode.decidable (ASL = x). #x; nnormalize; nelim x; ##[ ##6: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op7 : ∀x:opcode.decidable (ASR = x). #x; nnormalize; nelim x; ##[ ##7: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op8 : ∀x:opcode.decidable (BCC = x). #x; nnormalize; nelim x; ##[ ##8: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op9 : ∀x:opcode.decidable (BCLRn = x). #x; nnormalize; nelim x; ##[ ##9: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op10 : ∀x:opcode.decidable (BCS = x). #x; nnormalize; nelim x; ##[ ##10: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op11 : ∀x:opcode.decidable (BEQ = x). #x; nnormalize; nelim x; ##[ ##11: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op12 : ∀x:opcode.decidable (BGE = x). #x; nnormalize; nelim x; ##[ ##12: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op13 : ∀x:opcode.decidable (BGND = x). #x; nnormalize; nelim x; ##[ ##13: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op14 : ∀x:opcode.decidable (BGT = x). #x; nnormalize; nelim x; ##[ ##14: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op15 : ∀x:opcode.decidable (BHCC = x). #x; nnormalize; nelim x; ##[ ##15: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op16 : ∀x:opcode.decidable (BHCS = x). #x; nnormalize; nelim x; ##[ ##16: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op17 : ∀x:opcode.decidable (BHI = x). #x; nnormalize; nelim x; ##[ ##17: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op18 : ∀x:opcode.decidable (BIH = x). #x; nnormalize; nelim x; ##[ ##18: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op19 : ∀x:opcode.decidable (BIL = x). #x; nnormalize; nelim x; ##[ ##19: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op20 : ∀x:opcode.decidable (BIT = x). #x; nnormalize; nelim x; ##[ ##20: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op21 : ∀x:opcode.decidable (BLE = x). #x; nnormalize; nelim x; ##[ ##21: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op22 : ∀x:opcode.decidable (BLS = x). #x; nnormalize; nelim x; ##[ ##22: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op23 : ∀x:opcode.decidable (BLT = x). #x; nnormalize; nelim x; ##[ ##23: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op24 : ∀x:opcode.decidable (BMC = x). #x; nnormalize; nelim x; ##[ ##24: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op25 : ∀x:opcode.decidable (BMI = x). #x; nnormalize; nelim x; ##[ ##25: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op26 : ∀x:opcode.decidable (BMS = x). #x; nnormalize; nelim x; ##[ ##26: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op27 : ∀x:opcode.decidable (BNE = x). #x; nnormalize; nelim x; ##[ ##27: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op28 : ∀x:opcode.decidable (BPL = x). #x; nnormalize; nelim x; ##[ ##28: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op29 : ∀x:opcode.decidable (BRA = x). #x; nnormalize; nelim x; ##[ ##29: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op30 : ∀x:opcode.decidable (BRCLRn = x). #x; nnormalize; nelim x; ##[ ##30: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op31 : ∀x:opcode.decidable (BRN = x). #x; nnormalize; nelim x; ##[ ##31: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op32 : ∀x:opcode.decidable (BRSETn = x). #x; nnormalize; nelim x; ##[ ##32: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op33 : ∀x:opcode.decidable (BSETn = x). #x; nnormalize; nelim x; ##[ ##33: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op34 : ∀x:opcode.decidable (BSR = x). #x; nnormalize; nelim x; ##[ ##34: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op35 : ∀x:opcode.decidable (CBEQA = x). #x; nnormalize; nelim x; ##[ ##35: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op36 : ∀x:opcode.decidable (CBEQX = x). #x; nnormalize; nelim x; ##[ ##36: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op37 : ∀x:opcode.decidable (CLC = x). #x; nnormalize; nelim x; ##[ ##37: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op38 : ∀x:opcode.decidable (CLI = x). #x; nnormalize; nelim x; ##[ ##38: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op39 : ∀x:opcode.decidable (CLR = x). #x; nnormalize; nelim x; ##[ ##39: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op40 : ∀x:opcode.decidable (CMP = x). #x; nnormalize; nelim x; ##[ ##40: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op41 : ∀x:opcode.decidable (COM = x). #x; nnormalize; nelim x; ##[ ##41: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op42 : ∀x:opcode.decidable (CPHX = x). #x; nnormalize; nelim x; ##[ ##42: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op43 : ∀x:opcode.decidable (CPX = x). #x; nnormalize; nelim x; ##[ ##43: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op44 : ∀x:opcode.decidable (DAA = x). #x; nnormalize; nelim x; ##[ ##44: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op45 : ∀x:opcode.decidable (DBNZ = x). #x; nnormalize; nelim x; ##[ ##45: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op46 : ∀x:opcode.decidable (DEC = x). #x; nnormalize; nelim x; ##[ ##46: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op47 : ∀x:opcode.decidable (DIV = x). #x; nnormalize; nelim x; ##[ ##47: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op48 : ∀x:opcode.decidable (EOR = x). #x; nnormalize; nelim x; ##[ ##48: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op49 : ∀x:opcode.decidable (INC = x). #x; nnormalize; nelim x; ##[ ##49: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op50 : ∀x:opcode.decidable (JMP = x). #x; nnormalize; nelim x; ##[ ##50: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op51 : ∀x:opcode.decidable (JSR = x). #x; nnormalize; nelim x; ##[ ##51: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op52 : ∀x:opcode.decidable (LDA = x). #x; nnormalize; nelim x; ##[ ##52: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op53 : ∀x:opcode.decidable (LDHX = x). #x; nnormalize; nelim x; ##[ ##53: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op54 : ∀x:opcode.decidable (LDX = x). #x; nnormalize; nelim x; ##[ ##54: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op55 : ∀x:opcode.decidable (LSR = x). #x; nnormalize; nelim x; ##[ ##55: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op56 : ∀x:opcode.decidable (MOV = x). #x; nnormalize; nelim x; ##[ ##56: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op57 : ∀x:opcode.decidable (MUL = x). #x; nnormalize; nelim x; ##[ ##57: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op58 : ∀x:opcode.decidable (NEG = x). #x; nnormalize; nelim x; ##[ ##58: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op59 : ∀x:opcode.decidable (NOP = x). #x; nnormalize; nelim x; ##[ ##59: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op60 : ∀x:opcode.decidable (NSA = x). #x; nnormalize; nelim x; ##[ ##60: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op61 : ∀x:opcode.decidable (ORA = x). #x; nnormalize; nelim x; ##[ ##61: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op62 : ∀x:opcode.decidable (PSHA = x). #x; nnormalize; nelim x; ##[ ##62: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op63 : ∀x:opcode.decidable (PSHH = x). #x; nnormalize; nelim x; ##[ ##63: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op64 : ∀x:opcode.decidable (PSHX = x). #x; nnormalize; nelim x; ##[ ##64: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op65 : ∀x:opcode.decidable (PULA = x). #x; nnormalize; nelim x; ##[ ##65: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op66 : ∀x:opcode.decidable (PULH = x). #x; nnormalize; nelim x; ##[ ##66: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op67 : ∀x:opcode.decidable (PULX = x). #x; nnormalize; nelim x; ##[ ##67: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op68 : ∀x:opcode.decidable (ROL = x). #x; nnormalize; nelim x; ##[ ##68: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op69 : ∀x:opcode.decidable (ROR = x). #x; nnormalize; nelim x; ##[ ##69: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op70 : ∀x:opcode.decidable (RSP = x). #x; nnormalize; nelim x; ##[ ##70: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op71 : ∀x:opcode.decidable (RTI = x). #x; nnormalize; nelim x; ##[ ##71: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op72 : ∀x:opcode.decidable (RTS = x). #x; nnormalize; nelim x; ##[ ##72: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op73 : ∀x:opcode.decidable (SBC = x). #x; nnormalize; nelim x; ##[ ##73: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op74 : ∀x:opcode.decidable (SEC = x). #x; nnormalize; nelim x; ##[ ##74: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op75 : ∀x:opcode.decidable (SEI = x). #x; nnormalize; nelim x; ##[ ##75: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op76 : ∀x:opcode.decidable (SHA = x). #x; nnormalize; nelim x; ##[ ##76: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op77 : ∀x:opcode.decidable (SLA = x). #x; nnormalize; nelim x; ##[ ##77: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op78 : ∀x:opcode.decidable (STA = x). #x; nnormalize; nelim x; ##[ ##78: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op79 : ∀x:opcode.decidable (STHX = x). #x; nnormalize; nelim x; ##[ ##79: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op80 : ∀x:opcode.decidable (STOP = x). #x; nnormalize; nelim x; ##[ ##80: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op81 : ∀x:opcode.decidable (STX = x). #x; nnormalize; nelim x; ##[ ##81: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op82 : ∀x:opcode.decidable (SUB = x). #x; nnormalize; nelim x; ##[ ##82: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op83 : ∀x:opcode.decidable (SWI = x). #x; nnormalize; nelim x; ##[ ##83: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op84 : ∀x:opcode.decidable (TAP = x). #x; nnormalize; nelim x; ##[ ##84: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op85 : ∀x:opcode.decidable (TAX = x). #x; nnormalize; nelim x; ##[ ##85: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op86 : ∀x:opcode.decidable (TPA = x). #x; nnormalize; nelim x; ##[ ##86: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op87 : ∀x:opcode.decidable (TST = x). #x; nnormalize; nelim x; ##[ ##87: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op88 : ∀x:opcode.decidable (TSX = x). #x; nnormalize; nelim x; ##[ ##88: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op89 : ∀x:opcode.decidable (TXA = x). #x; nnormalize; nelim x; ##[ ##89: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op90 : ∀x:opcode.decidable (TXS = x). #x; nnormalize; nelim x; ##[ ##90: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. -nlemma decidable_op91 : ∀x:opcode.decidable (WAIT = x). #x; nnormalize; nelim x; ##[ ##91: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); #H; napply (opcode_destruct … H) ##] nqed. - -nlemma decidable_op : ∀x,y:opcode.decidable (x = y). - #op1; ncases op1; - ##[ ##1: napply decidable_op1 ##| ##2: napply decidable_op2 ##| ##3: napply decidable_op3 ##| ##4: napply decidable_op4 - ##| ##5: napply decidable_op5 ##| ##6: napply decidable_op6 ##| ##7: napply decidable_op7 ##| ##8: napply decidable_op8 - ##| ##9: napply decidable_op9 ##| ##10: napply decidable_op10 ##| ##11: napply decidable_op11 ##| ##12: napply decidable_op12 - ##| ##13: napply decidable_op13 ##| ##14: napply decidable_op14 ##| ##15: napply decidable_op15 ##| ##16: napply decidable_op16 - ##| ##17: napply decidable_op17 ##| ##18: napply decidable_op18 ##| ##19: napply decidable_op19 ##| ##20: napply decidable_op20 - ##| ##21: napply decidable_op21 ##| ##22: napply decidable_op22 ##| ##23: napply decidable_op23 ##| ##24: napply decidable_op24 - ##| ##25: napply decidable_op25 ##| ##26: napply decidable_op26 ##| ##27: napply decidable_op27 ##| ##28: napply decidable_op28 - ##| ##29: napply decidable_op29 ##| ##30: napply decidable_op30 ##| ##31: napply decidable_op31 ##| ##32: napply decidable_op32 - ##| ##33: napply decidable_op33 ##| ##34: napply decidable_op34 ##| ##35: napply decidable_op35 ##| ##36: napply decidable_op36 - ##| ##37: napply decidable_op37 ##| ##38: napply decidable_op38 ##| ##39: napply decidable_op39 ##| ##40: napply decidable_op40 - ##| ##41: napply decidable_op41 ##| ##42: napply decidable_op42 ##| ##43: napply decidable_op43 ##| ##44: napply decidable_op44 - ##| ##45: napply decidable_op45 ##| ##46: napply decidable_op46 ##| ##47: napply decidable_op47 ##| ##48: napply decidable_op48 - ##| ##49: napply decidable_op49 ##| ##50: napply decidable_op50 ##| ##51: napply decidable_op51 ##| ##52: napply decidable_op52 - ##| ##53: napply decidable_op53 ##| ##54: napply decidable_op54 ##| ##55: napply decidable_op55 ##| ##56: napply decidable_op56 - ##| ##57: napply decidable_op57 ##| ##58: napply decidable_op58 ##| ##59: napply decidable_op59 ##| ##60: napply decidable_op60 - ##| ##61: napply decidable_op61 ##| ##62: napply decidable_op62 ##| ##63: napply decidable_op63 ##| ##64: napply decidable_op64 - ##| ##65: napply decidable_op65 ##| ##66: napply decidable_op66 ##| ##67: napply decidable_op67 ##| ##68: napply decidable_op68 - ##| ##69: napply decidable_op69 ##| ##70: napply decidable_op70 ##| ##71: napply decidable_op71 ##| ##72: napply decidable_op72 - ##| ##73: napply decidable_op73 ##| ##74: napply decidable_op74 ##| ##75: napply decidable_op75 ##| ##76: napply decidable_op76 - ##| ##77: napply decidable_op77 ##| ##78: napply decidable_op78 ##| ##79: napply decidable_op79 ##| ##80: napply decidable_op80 - ##| ##81: napply decidable_op81 ##| ##82: napply decidable_op82 ##| ##83: napply decidable_op83 ##| ##84: napply decidable_op84 - ##| ##85: napply decidable_op85 ##| ##86: napply decidable_op86 ##| ##87: napply decidable_op87 ##| ##88: napply decidable_op88 - ##| ##89: napply decidable_op89 ##| ##90: napply decidable_op90 ##| ##91: napply decidable_op91 ##] -nqed. - -nlemma neqop_to_neq1 : ∀op2.eq_op ADC op2 = false → ADC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##1: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq2 : ∀op2.eq_op ADD op2 = false → ADD ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##2: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq3 : ∀op2.eq_op AIS op2 = false → AIS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##3: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq4 : ∀op2.eq_op AIX op2 = false → AIX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##4: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq5 : ∀op2.eq_op AND op2 = false → AND ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##5: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq6 : ∀op2.eq_op ASL op2 = false → ASL ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##6: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq7 : ∀op2.eq_op ASR op2 = false → ASR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##7: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq8 : ∀op2.eq_op BCC op2 = false → BCC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##8: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq9 : ∀op2.eq_op BCLRn op2 = false → BCLRn ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##9: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq10 : ∀op2.eq_op BCS op2 = false → BCS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##10: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq11 : ∀op2.eq_op BEQ op2 = false → BEQ ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##11: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq12 : ∀op2.eq_op BGE op2 = false → BGE ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##12: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq13 : ∀op2.eq_op BGND op2 = false → BGND ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##13: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq14 : ∀op2.eq_op BGT op2 = false → BGT ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##14: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq15 : ∀op2.eq_op BHCC op2 = false → BHCC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##15: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq16 : ∀op2.eq_op BHCS op2 = false → BHCS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##16: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq17 : ∀op2.eq_op BHI op2 = false → BHI ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##17: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq18 : ∀op2.eq_op BIH op2 = false → BIH ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##18: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq19 : ∀op2.eq_op BIL op2 = false → BIL ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##19: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq20 : ∀op2.eq_op BIT op2 = false → BIT ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##20: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq21 : ∀op2.eq_op BLE op2 = false → BLE ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##21: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq22 : ∀op2.eq_op BLS op2 = false → BLS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##22: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq23 : ∀op2.eq_op BLT op2 = false → BLT ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##23: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq24 : ∀op2.eq_op BMC op2 = false → BMC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##24: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq25 : ∀op2.eq_op BMI op2 = false → BMI ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##25: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq26 : ∀op2.eq_op BMS op2 = false → BMS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##26: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq27 : ∀op2.eq_op BNE op2 = false → BNE ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##27: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq28 : ∀op2.eq_op BPL op2 = false → BPL ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##28: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq29 : ∀op2.eq_op BRA op2 = false → BRA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##29: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq30 : ∀op2.eq_op BRCLRn op2 = false → BRCLRn ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##30: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq31 : ∀op2.eq_op BRN op2 = false → BRN ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##31: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq32 : ∀op2.eq_op BRSETn op2 = false → BRSETn ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##32: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq33 : ∀op2.eq_op BSETn op2 = false → BSETn ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##33: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq34 : ∀op2.eq_op BSR op2 = false → BSR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##34: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq35 : ∀op2.eq_op CBEQA op2 = false → CBEQA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##35: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq36 : ∀op2.eq_op CBEQX op2 = false → CBEQX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##36: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq37 : ∀op2.eq_op CLC op2 = false → CLC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##37: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq38 : ∀op2.eq_op CLI op2 = false → CLI ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##38: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq39 : ∀op2.eq_op CLR op2 = false → CLR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##39: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq40 : ∀op2.eq_op CMP op2 = false → CMP ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##40: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq41 : ∀op2.eq_op COM op2 = false → COM ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##41: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq42 : ∀op2.eq_op CPHX op2 = false → CPHX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##42: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq43 : ∀op2.eq_op CPX op2 = false → CPX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##43: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq44 : ∀op2.eq_op DAA op2 = false → DAA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##44: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq45 : ∀op2.eq_op DBNZ op2 = false → DBNZ ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##45: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq46 : ∀op2.eq_op DEC op2 = false → DEC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##46: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq47 : ∀op2.eq_op DIV op2 = false → DIV ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##47: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq48 : ∀op2.eq_op EOR op2 = false → EOR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##48: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq49 : ∀op2.eq_op INC op2 = false → INC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##49: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq50 : ∀op2.eq_op JMP op2 = false → JMP ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##50: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq51 : ∀op2.eq_op JSR op2 = false → JSR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##51: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq52 : ∀op2.eq_op LDA op2 = false → LDA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##52: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq53 : ∀op2.eq_op LDHX op2 = false → LDHX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##53: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq54 : ∀op2.eq_op LDX op2 = false → LDX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##54: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq55 : ∀op2.eq_op LSR op2 = false → LSR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##55: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq56 : ∀op2.eq_op MOV op2 = false → MOV ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##56: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq57 : ∀op2.eq_op MUL op2 = false → MUL ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##57: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq58 : ∀op2.eq_op NEG op2 = false → NEG ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##58: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq59 : ∀op2.eq_op NOP op2 = false → NOP ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##59: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq60 : ∀op2.eq_op NSA op2 = false → NSA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##60: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq61 : ∀op2.eq_op ORA op2 = false → ORA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##61: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq62 : ∀op2.eq_op PSHA op2 = false → PSHA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##62: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq63 : ∀op2.eq_op PSHH op2 = false → PSHH ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##63: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq64 : ∀op2.eq_op PSHX op2 = false → PSHX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##64: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq65 : ∀op2.eq_op PULA op2 = false → PULA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##65: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq66 : ∀op2.eq_op PULH op2 = false → PULH ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##66: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq67 : ∀op2.eq_op PULX op2 = false → PULX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##67: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq68 : ∀op2.eq_op ROL op2 = false → ROL ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##68: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq69 : ∀op2.eq_op ROR op2 = false → ROR ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##69: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq70 : ∀op2.eq_op RSP op2 = false → RSP ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##70: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq71 : ∀op2.eq_op RTI op2 = false → RTI ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##71: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq72 : ∀op2.eq_op RTS op2 = false → RTS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##72: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq73 : ∀op2.eq_op SBC op2 = false → SBC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##73: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq74 : ∀op2.eq_op SEC op2 = false → SEC ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##74: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq75 : ∀op2.eq_op SEI op2 = false → SEI ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##75: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq76 : ∀op2.eq_op SHA op2 = false → SHA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##76: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq77 : ∀op2.eq_op SLA op2 = false → SLA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##77: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq78 : ∀op2.eq_op STA op2 = false → STA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##78: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq79 : ∀op2.eq_op STHX op2 = false → STHX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##79: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq80 : ∀op2.eq_op STOP op2 = false → STOP ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##80: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq81 : ∀op2.eq_op STX op2 = false → STX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##81: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq82 : ∀op2.eq_op SUB op2 = false → SUB ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##82: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq83 : ∀op2.eq_op SWI op2 = false → SWI ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##83: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq84 : ∀op2.eq_op TAP op2 = false → TAP ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##84: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq85 : ∀op2.eq_op TAX op2 = false → TAX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##85: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq86 : ∀op2.eq_op TPA op2 = false → TPA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##86: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq87 : ∀op2.eq_op TST op2 = false → TST ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##87: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq88 : ∀op2.eq_op TSX op2 = false → TSX ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##88: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq89 : ∀op2.eq_op TXA op2 = false → TXA ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##89: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq90 : ∀op2.eq_op TXS op2 = false → TXS ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##90: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. -nlemma neqop_to_neq91 : ∀op2.eq_op WAIT op2 = false → WAIT ≠ op2. #op2; ncases op2; nnormalize; #H; ##[ ##91: napply (bool_destruct … H) ##| ##*: #H1; napply False_ind; napply (opcode_destruct … H1) ##] nqed. - -nlemma neqop_to_neq : ∀op1,op2.eq_op op1 op2 = false → op1 ≠ op2. - #op1; ncases op1; - ##[ ##1: napply neqop_to_neq1 ##| ##2: napply neqop_to_neq2 ##| ##3: napply neqop_to_neq3 ##| ##4: napply neqop_to_neq4 - ##| ##5: napply neqop_to_neq5 ##| ##6: napply neqop_to_neq6 ##| ##7: napply neqop_to_neq7 ##| ##8: napply neqop_to_neq8 - ##| ##9: napply neqop_to_neq9 ##| ##10: napply neqop_to_neq10 ##| ##11: napply neqop_to_neq11 ##| ##12: napply neqop_to_neq12 - ##| ##13: napply neqop_to_neq13 ##| ##14: napply neqop_to_neq14 ##| ##15: napply neqop_to_neq15 ##| ##16: napply neqop_to_neq16 - ##| ##17: napply neqop_to_neq17 ##| ##18: napply neqop_to_neq18 ##| ##19: napply neqop_to_neq19 ##| ##20: napply neqop_to_neq20 - ##| ##21: napply neqop_to_neq21 ##| ##22: napply neqop_to_neq22 ##| ##23: napply neqop_to_neq23 ##| ##24: napply neqop_to_neq24 - ##| ##25: napply neqop_to_neq25 ##| ##26: napply neqop_to_neq26 ##| ##27: napply neqop_to_neq27 ##| ##28: napply neqop_to_neq28 - ##| ##29: napply neqop_to_neq29 ##| ##30: napply neqop_to_neq30 ##| ##31: napply neqop_to_neq31 ##| ##32: napply neqop_to_neq32 - ##| ##33: napply neqop_to_neq33 ##| ##34: napply neqop_to_neq34 ##| ##35: napply neqop_to_neq35 ##| ##36: napply neqop_to_neq36 - ##| ##37: napply neqop_to_neq37 ##| ##38: napply neqop_to_neq38 ##| ##39: napply neqop_to_neq39 ##| ##40: napply neqop_to_neq40 - ##| ##41: napply neqop_to_neq41 ##| ##42: napply neqop_to_neq42 ##| ##43: napply neqop_to_neq43 ##| ##44: napply neqop_to_neq44 - ##| ##45: napply neqop_to_neq45 ##| ##46: napply neqop_to_neq46 ##| ##47: napply neqop_to_neq47 ##| ##48: napply neqop_to_neq48 - ##| ##49: napply neqop_to_neq49 ##| ##50: napply neqop_to_neq50 ##| ##51: napply neqop_to_neq51 ##| ##52: napply neqop_to_neq52 - ##| ##53: napply neqop_to_neq53 ##| ##54: napply neqop_to_neq54 ##| ##55: napply neqop_to_neq55 ##| ##56: napply neqop_to_neq56 - ##| ##57: napply neqop_to_neq57 ##| ##58: napply neqop_to_neq58 ##| ##59: napply neqop_to_neq59 ##| ##60: napply neqop_to_neq60 - ##| ##61: napply neqop_to_neq61 ##| ##62: napply neqop_to_neq62 ##| ##63: napply neqop_to_neq63 ##| ##64: napply neqop_to_neq64 - ##| ##65: napply neqop_to_neq65 ##| ##66: napply neqop_to_neq66 ##| ##67: napply neqop_to_neq67 ##| ##68: napply neqop_to_neq68 - ##| ##69: napply neqop_to_neq69 ##| ##70: napply neqop_to_neq70 ##| ##71: napply neqop_to_neq71 ##| ##72: napply neqop_to_neq72 - ##| ##73: napply neqop_to_neq73 ##| ##74: napply neqop_to_neq74 ##| ##75: napply neqop_to_neq75 ##| ##76: napply neqop_to_neq76 - ##| ##77: napply neqop_to_neq77 ##| ##78: napply neqop_to_neq78 ##| ##79: napply neqop_to_neq79 ##| ##80: napply neqop_to_neq80 - ##| ##81: napply neqop_to_neq81 ##| ##82: napply neqop_to_neq82 ##| ##83: napply neqop_to_neq83 ##| ##84: napply neqop_to_neq84 - ##| ##85: napply neqop_to_neq85 ##| ##86: napply neqop_to_neq86 ##| ##87: napply neqop_to_neq87 ##| ##88: napply neqop_to_neq88 - ##| ##89: napply neqop_to_neq89 ##| ##90: napply neqop_to_neq90 ##| ##91: napply neqop_to_neq91 ##] -nqed. - -nlemma neq_to_neqop1 : ∀op2.ADC ≠ op2 → eq_op ADC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##1: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop2 : ∀op2.ADD ≠ op2 → eq_op ADD op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##2: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop3 : ∀op2.AIS ≠ op2 → eq_op AIS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##3: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop4 : ∀op2.AIX ≠ op2 → eq_op AIX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##4: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop5 : ∀op2.AND ≠ op2 → eq_op AND op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##5: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop6 : ∀op2.ASL ≠ op2 → eq_op ASL op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##6: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop7 : ∀op2.ASR ≠ op2 → eq_op ASR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##7: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop8 : ∀op2.BCC ≠ op2 → eq_op BCC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##8: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop9 : ∀op2.BCLRn ≠ op2 → eq_op BCLRn op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##9: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop10 : ∀op2.BCS ≠ op2 → eq_op BCS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##10: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop11 : ∀op2.BEQ ≠ op2 → eq_op BEQ op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##11: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop12 : ∀op2.BGE ≠ op2 → eq_op BGE op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##12: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop13 : ∀op2.BGND ≠ op2 → eq_op BGND op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##13: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop14 : ∀op2.BGT ≠ op2 → eq_op BGT op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##14: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop15 : ∀op2.BHCC ≠ op2 → eq_op BHCC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##15: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop16 : ∀op2.BHCS ≠ op2 → eq_op BHCS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##16: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop17 : ∀op2.BHI ≠ op2 → eq_op BHI op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##17: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop18 : ∀op2.BIH ≠ op2 → eq_op BIH op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##18: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop19 : ∀op2.BIL ≠ op2 → eq_op BIL op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##19: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop20 : ∀op2.BIT ≠ op2 → eq_op BIT op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##20: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop21 : ∀op2.BLE ≠ op2 → eq_op BLE op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##21: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop22 : ∀op2.BLS ≠ op2 → eq_op BLS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##22: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop23 : ∀op2.BLT ≠ op2 → eq_op BLT op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##23: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop24 : ∀op2.BMC ≠ op2 → eq_op BMC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##24: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop25 : ∀op2.BMI ≠ op2 → eq_op BMI op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##25: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop26 : ∀op2.BMS ≠ op2 → eq_op BMS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##26: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop27 : ∀op2.BNE ≠ op2 → eq_op BNE op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##27: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop28 : ∀op2.BPL ≠ op2 → eq_op BPL op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##28: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop29 : ∀op2.BRA ≠ op2 → eq_op BRA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##29: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop30 : ∀op2.BRCLRn ≠ op2 → eq_op BRCLRn op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##30: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop31 : ∀op2.BRN ≠ op2 → eq_op BRN op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##31: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop32 : ∀op2.BRSETn ≠ op2 → eq_op BRSETn op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##32: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop33 : ∀op2.BSETn ≠ op2 → eq_op BSETn op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##33: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop34 : ∀op2.BSR ≠ op2 → eq_op BSR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##34: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop35 : ∀op2.CBEQA ≠ op2 → eq_op CBEQA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##35: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop36 : ∀op2.CBEQX ≠ op2 → eq_op CBEQX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##36: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop37 : ∀op2.CLC ≠ op2 → eq_op CLC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##37: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop38 : ∀op2.CLI ≠ op2 → eq_op CLI op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##38: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop39 : ∀op2.CLR ≠ op2 → eq_op CLR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##39: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop40 : ∀op2.CMP ≠ op2 → eq_op CMP op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##40: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop41 : ∀op2.COM ≠ op2 → eq_op COM op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##41: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop42 : ∀op2.CPHX ≠ op2 → eq_op CPHX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##42: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop43 : ∀op2.CPX ≠ op2 → eq_op CPX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##43: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop44 : ∀op2.DAA ≠ op2 → eq_op DAA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##44: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop45 : ∀op2.DBNZ ≠ op2 → eq_op DBNZ op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##45: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop46 : ∀op2.DEC ≠ op2 → eq_op DEC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##46: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop47 : ∀op2.DIV ≠ op2 → eq_op DIV op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##47: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop48 : ∀op2.EOR ≠ op2 → eq_op EOR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##48: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop49 : ∀op2.INC ≠ op2 → eq_op INC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##49: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop50 : ∀op2.JMP ≠ op2 → eq_op JMP op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##50: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop51 : ∀op2.JSR ≠ op2 → eq_op JSR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##51: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop52 : ∀op2.LDA ≠ op2 → eq_op LDA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##52: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop53 : ∀op2.LDHX ≠ op2 → eq_op LDHX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##53: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop54 : ∀op2.LDX ≠ op2 → eq_op LDX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##54: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop55 : ∀op2.LSR ≠ op2 → eq_op LSR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##55: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop56 : ∀op2.MOV ≠ op2 → eq_op MOV op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##56: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop57 : ∀op2.MUL ≠ op2 → eq_op MUL op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##57: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop58 : ∀op2.NEG ≠ op2 → eq_op NEG op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##58: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop59 : ∀op2.NOP ≠ op2 → eq_op NOP op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##59: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop60 : ∀op2.NSA ≠ op2 → eq_op NSA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##60: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop61 : ∀op2.ORA ≠ op2 → eq_op ORA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##61: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop62 : ∀op2.PSHA ≠ op2 → eq_op PSHA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##62: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop63 : ∀op2.PSHH ≠ op2 → eq_op PSHH op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##63: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop64 : ∀op2.PSHX ≠ op2 → eq_op PSHX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##64: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop65 : ∀op2.PULA ≠ op2 → eq_op PULA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##65: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop66 : ∀op2.PULH ≠ op2 → eq_op PULH op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##66: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop67 : ∀op2.PULX ≠ op2 → eq_op PULX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##67: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop68 : ∀op2.ROL ≠ op2 → eq_op ROL op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##68: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop69 : ∀op2.ROR ≠ op2 → eq_op ROR op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##69: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop70 : ∀op2.RSP ≠ op2 → eq_op RSP op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##70: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop71 : ∀op2.RTI ≠ op2 → eq_op RTI op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##71: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop72 : ∀op2.RTS ≠ op2 → eq_op RTS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##72: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop73 : ∀op2.SBC ≠ op2 → eq_op SBC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##73: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop74 : ∀op2.SEC ≠ op2 → eq_op SEC op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##74: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop75 : ∀op2.SEI ≠ op2 → eq_op SEI op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##75: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop76 : ∀op2.SHA ≠ op2 → eq_op SHA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##76: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop77 : ∀op2.SLA ≠ op2 → eq_op SLA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##77: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop78 : ∀op2.STA ≠ op2 → eq_op STA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##78: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop79 : ∀op2.STHX ≠ op2 → eq_op STHX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##79: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop80 : ∀op2.STOP ≠ op2 → eq_op STOP op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##80: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop81 : ∀op2.STX ≠ op2 → eq_op STX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##81: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop82 : ∀op2.SUB ≠ op2 → eq_op SUB op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##82: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop83 : ∀op2.SWI ≠ op2 → eq_op SWI op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##83: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop84 : ∀op2.TAP ≠ op2 → eq_op TAP op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##84: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop85 : ∀op2.TAX ≠ op2 → eq_op TAX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##85: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop86 : ∀op2.TPA ≠ op2 → eq_op TPA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##86: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop87 : ∀op2.TST ≠ op2 → eq_op TST op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##87: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop88 : ∀op2.TSX ≠ op2 → eq_op TSX op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##88: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop89 : ∀op2.TXA ≠ op2 → eq_op TXA op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##89: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop90 : ∀op2.TXS ≠ op2 → eq_op TXS op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##90: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. -nlemma neq_to_neqop91 : ∀op2.WAIT ≠ op2 → eq_op WAIT op2 = false. #op2; ncases op2; nnormalize; #H; ##[ ##91: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] nqed. - -nlemma neq_to_neqop : ∀op1,op2.op1 ≠ op2 → eq_op op1 op2 = false. - #op1; ncases op1; - ##[ ##1: napply neq_to_neqop1 ##| ##2: napply neq_to_neqop2 ##| ##3: napply neq_to_neqop3 ##| ##4: napply neq_to_neqop4 - ##| ##5: napply neq_to_neqop5 ##| ##6: napply neq_to_neqop6 ##| ##7: napply neq_to_neqop7 ##| ##8: napply neq_to_neqop8 - ##| ##9: napply neq_to_neqop9 ##| ##10: napply neq_to_neqop10 ##| ##11: napply neq_to_neqop11 ##| ##12: napply neq_to_neqop12 - ##| ##13: napply neq_to_neqop13 ##| ##14: napply neq_to_neqop14 ##| ##15: napply neq_to_neqop15 ##| ##16: napply neq_to_neqop16 - ##| ##17: napply neq_to_neqop17 ##| ##18: napply neq_to_neqop18 ##| ##19: napply neq_to_neqop19 ##| ##20: napply neq_to_neqop20 - ##| ##21: napply neq_to_neqop21 ##| ##22: napply neq_to_neqop22 ##| ##23: napply neq_to_neqop23 ##| ##24: napply neq_to_neqop24 - ##| ##25: napply neq_to_neqop25 ##| ##26: napply neq_to_neqop26 ##| ##27: napply neq_to_neqop27 ##| ##28: napply neq_to_neqop28 - ##| ##29: napply neq_to_neqop29 ##| ##30: napply neq_to_neqop30 ##| ##31: napply neq_to_neqop31 ##| ##32: napply neq_to_neqop32 - ##| ##33: napply neq_to_neqop33 ##| ##34: napply neq_to_neqop34 ##| ##35: napply neq_to_neqop35 ##| ##36: napply neq_to_neqop36 - ##| ##37: napply neq_to_neqop37 ##| ##38: napply neq_to_neqop38 ##| ##39: napply neq_to_neqop39 ##| ##40: napply neq_to_neqop40 - ##| ##41: napply neq_to_neqop41 ##| ##42: napply neq_to_neqop42 ##| ##43: napply neq_to_neqop43 ##| ##44: napply neq_to_neqop44 - ##| ##45: napply neq_to_neqop45 ##| ##46: napply neq_to_neqop46 ##| ##47: napply neq_to_neqop47 ##| ##48: napply neq_to_neqop48 - ##| ##49: napply neq_to_neqop49 ##| ##50: napply neq_to_neqop50 ##| ##51: napply neq_to_neqop51 ##| ##52: napply neq_to_neqop52 - ##| ##53: napply neq_to_neqop53 ##| ##54: napply neq_to_neqop54 ##| ##55: napply neq_to_neqop55 ##| ##56: napply neq_to_neqop56 - ##| ##57: napply neq_to_neqop57 ##| ##58: napply neq_to_neqop58 ##| ##59: napply neq_to_neqop59 ##| ##60: napply neq_to_neqop60 - ##| ##61: napply neq_to_neqop61 ##| ##62: napply neq_to_neqop62 ##| ##63: napply neq_to_neqop63 ##| ##64: napply neq_to_neqop64 - ##| ##65: napply neq_to_neqop65 ##| ##66: napply neq_to_neqop66 ##| ##67: napply neq_to_neqop67 ##| ##68: napply neq_to_neqop68 - ##| ##69: napply neq_to_neqop69 ##| ##70: napply neq_to_neqop70 ##| ##71: napply neq_to_neqop71 ##| ##72: napply neq_to_neqop72 - ##| ##73: napply neq_to_neqop73 ##| ##74: napply neq_to_neqop74 ##| ##75: napply neq_to_neqop75 ##| ##76: napply neq_to_neqop76 - ##| ##77: napply neq_to_neqop77 ##| ##78: napply neq_to_neqop78 ##| ##79: napply neq_to_neqop79 ##| ##80: napply neq_to_neqop80 - ##| ##81: napply neq_to_neqop81 ##| ##82: napply neq_to_neqop82 ##| ##83: napply neq_to_neqop83 ##| ##84: napply neq_to_neqop84 - ##| ##85: napply neq_to_neqop85 ##| ##86: napply neq_to_neqop86 ##| ##87: napply neq_to_neqop87 ##| ##88: napply neq_to_neqop88 - ##| ##89: napply neq_to_neqop89 ##| ##90: napply neq_to_neqop90 ##| ##91: napply neq_to_neqop91 ##] -nqed. diff --git a/helm/software/matita/contribs/ng_assembly/num/bitrigesim_lemmas.ma b/helm/software/matita/contribs/ng_assembly/num/bitrigesim_lemmas.ma index 9d9a95cbb..5eecaff91 100755 --- a/helm/software/matita/contribs/ng_assembly/num/bitrigesim_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/num/bitrigesim_lemmas.ma @@ -39,171 +39,54 @@ ndefinition bitrigesim_destruct : bitrigesim_destruct_aux. napply (λx.x). nqed. -nlemma symmetric_eqbit : symmetricT bitrigesim bool eq_bit. - #t1; - nelim t1; - ##[ ##1: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##2: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##3: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##4: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##5: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##6: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##7: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##8: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##9: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##10: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##11: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##12: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##13: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##14: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##15: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##16: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##17: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##18: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##19: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##20: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##21: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##22: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##23: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##24: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##25: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##26: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##27: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##28: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##29: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##30: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##31: #t2; nelim t2; nnormalize; napply refl_eq - ##| ##32: #t2; nelim t2; nnormalize; napply refl_eq - ##] -nqed. - -nlemma eqbit_to_eq1 : ∀t2.eq_bit t00 t2 = true → t00 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq2 : ∀t2.eq_bit t01 t2 = true → t01 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq3 : ∀t2.eq_bit t02 t2 = true → t02 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq4 : ∀t2.eq_bit t03 t2 = true → t03 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq5 : ∀t2.eq_bit t04 t2 = true → t04 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq6 : ∀t2.eq_bit t05 t2 = true → t05 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq7 : ∀t2.eq_bit t06 t2 = true → t06 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq8 : ∀t2.eq_bit t07 t2 = true → t07 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq9 : ∀t2.eq_bit t08 t2 = true → t08 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq10 : ∀t2.eq_bit t09 t2 = true → t09 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq11 : ∀t2.eq_bit t0A t2 = true → t0A = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq12 : ∀t2.eq_bit t0B t2 = true → t0B = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq13 : ∀t2.eq_bit t0C t2 = true → t0C = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq14 : ∀t2.eq_bit t0D t2 = true → t0D = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq15 : ∀t2.eq_bit t0E t2 = true → t0E = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq16 : ∀t2.eq_bit t0F t2 = true → t0F = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq17 : ∀t2.eq_bit t10 t2 = true → t10 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq18 : ∀t2.eq_bit t11 t2 = true → t11 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq19 : ∀t2.eq_bit t12 t2 = true → t12 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq20 : ∀t2.eq_bit t13 t2 = true → t13 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq21 : ∀t2.eq_bit t14 t2 = true → t14 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq22 : ∀t2.eq_bit t15 t2 = true → t15 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq23 : ∀t2.eq_bit t16 t2 = true → t16 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq24 : ∀t2.eq_bit t17 t2 = true → t17 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq25 : ∀t2.eq_bit t18 t2 = true → t18 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq26 : ∀t2.eq_bit t19 t2 = true → t19 = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq27 : ∀t2.eq_bit t1A t2 = true → t1A = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq28 : ∀t2.eq_bit t1B t2 = true → t1B = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq29 : ∀t2.eq_bit t1C t2 = true → t1C = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq30 : ∀t2.eq_bit t1D t2 = true → t1D = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq31 : ∀t2.eq_bit t1E t2 = true → t1E = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. - -nlemma eqbit_to_eq32 : ∀t2.eq_bit t1F t2 = true → t1F = t2. - #t2; ncases t2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] -nqed. +nlemma eq_to_eqbit : ∀n1,n2.n1 = n2 → eq_bit n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; + nelim n2; + nnormalize; + napply refl_eq. +nqed. + +nlemma neqbit_to_neq : ∀n1,n2.eq_bit n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_bit n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqbit n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) + ##] +nqed. + +nlemma eqbit_to_eq1 : ∀t2.eq_bit t00 t2 = true → t00 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq2 : ∀t2.eq_bit t01 t2 = true → t01 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq3 : ∀t2.eq_bit t02 t2 = true → t02 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq4 : ∀t2.eq_bit t03 t2 = true → t03 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq5 : ∀t2.eq_bit t04 t2 = true → t04 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq6 : ∀t2.eq_bit t05 t2 = true → t05 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq7 : ∀t2.eq_bit t06 t2 = true → t06 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq8 : ∀t2.eq_bit t07 t2 = true → t07 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq9 : ∀t2.eq_bit t08 t2 = true → t08 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq10 : ∀t2.eq_bit t09 t2 = true → t09 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq11 : ∀t2.eq_bit t0A t2 = true → t0A = t2. #t2; ncases t2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq12 : ∀t2.eq_bit t0B t2 = true → t0B = t2. #t2; ncases t2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq13 : ∀t2.eq_bit t0C t2 = true → t0C = t2. #t2; ncases t2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq14 : ∀t2.eq_bit t0D t2 = true → t0D = t2. #t2; ncases t2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq15 : ∀t2.eq_bit t0E t2 = true → t0E = t2. #t2; ncases t2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq16 : ∀t2.eq_bit t0F t2 = true → t0F = t2. #t2; ncases t2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq17 : ∀t2.eq_bit t10 t2 = true → t10 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq18 : ∀t2.eq_bit t11 t2 = true → t11 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq19 : ∀t2.eq_bit t12 t2 = true → t12 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq20 : ∀t2.eq_bit t13 t2 = true → t13 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq21 : ∀t2.eq_bit t14 t2 = true → t14 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq22 : ∀t2.eq_bit t15 t2 = true → t15 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq23 : ∀t2.eq_bit t16 t2 = true → t16 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq24 : ∀t2.eq_bit t17 t2 = true → t17 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq25 : ∀t2.eq_bit t18 t2 = true → t18 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq26 : ∀t2.eq_bit t19 t2 = true → t19 = t2. #t2; ncases t2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq27 : ∀t2.eq_bit t1A t2 = true → t1A = t2. #t2; ncases t2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq28 : ∀t2.eq_bit t1B t2 = true → t1B = t2. #t2; ncases t2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq29 : ∀t2.eq_bit t1C t2 = true → t1C = t2. #t2; ncases t2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq30 : ∀t2.eq_bit t1D t2 = true → t1D = t2. #t2; ncases t2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq31 : ∀t2.eq_bit t1E t2 = true → t1E = t2. #t2; ncases t2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. +nlemma eqbit_to_eq32 : ∀t2.eq_bit t1F t2 = true → t1F = t2. #t2; ncases t2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (bool_destruct … H) ##] nqed. nlemma eqbit_to_eq : ∀t1,t2.eq_bit t1 t2 = true → t1 = t2. #t1; ncases t1; @@ -226,790 +109,27 @@ nlemma eqbit_to_eq : ∀t1,t2.eq_bit t1 t2 = true → t1 = t2. ##] nqed. -nlemma eq_to_eqbit1 : ∀t2.t00 = t2 → eq_bit t00 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##1: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit2 : ∀t2.t01 = t2 → eq_bit t01 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##2: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit3 : ∀t2.t02 = t2 → eq_bit t02 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##3: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit4 : ∀t2.t03 = t2 → eq_bit t03 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##4: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit5 : ∀t2.t04 = t2 → eq_bit t04 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##5: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit6 : ∀t2.t05 = t2 → eq_bit t05 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##6: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit7 : ∀t2.t06 = t2 → eq_bit t06 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##7: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit8 : ∀t2.t07 = t2 → eq_bit t07 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##8: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit9 : ∀t2.t08 = t2 → eq_bit t08 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##9: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit10 : ∀t2.t09 = t2 → eq_bit t09 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##10: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit11 : ∀t2.t0A = t2 → eq_bit t0A t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##11: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit12 : ∀t2.t0B = t2 → eq_bit t0B t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##12: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit13 : ∀t2.t0C = t2 → eq_bit t0C t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##13: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit14 : ∀t2.t0D = t2 → eq_bit t0D t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##14: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit15 : ∀t2.t0E = t2 → eq_bit t0E t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##15: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit16 : ∀t2.t0F = t2 → eq_bit t0F t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##16: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit17 : ∀t2.t10 = t2 → eq_bit t10 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##17: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit18 : ∀t2.t11 = t2 → eq_bit t11 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##18: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit19 : ∀t2.t12 = t2 → eq_bit t12 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##19: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit20 : ∀t2.t13 = t2 → eq_bit t13 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##20: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit21 : ∀t2.t14 = t2 → eq_bit t14 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##21: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit22 : ∀t2.t15 = t2 → eq_bit t15 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##22: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit23 : ∀t2.t16 = t2 → eq_bit t16 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##23: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit24 : ∀t2.t17 = t2 → eq_bit t17 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##24: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit25 : ∀t2.t18 = t2 → eq_bit t18 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##25: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit26 : ∀t2.t19 = t2 → eq_bit t19 t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##26: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit27 : ∀t2.t1A = t2 → eq_bit t1A t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##27: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit28 : ∀t2.t1B = t2 → eq_bit t1B t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##28: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit29 : ∀t2.t1C = t2 → eq_bit t1C t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##29: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit30 : ∀t2.t1D = t2 → eq_bit t1D t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##30: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit31 : ∀t2.t1E = t2 → eq_bit t1E t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##31: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit32 : ∀t2.t1F = t2 → eq_bit t1F t2 = true. - #t2; ncases t2; nnormalize; #H; ##[ ##32: napply refl_eq ##| ##*: napply (bitrigesim_destruct … H) ##] -nqed. - -nlemma eq_to_eqbit : ∀t1,t2.t1 = t2 → eq_bit t1 t2 = true. - #t1; ncases t1; - ##[ ##1: napply eq_to_eqbit1 ##| ##2: napply eq_to_eqbit2 - ##| ##3: napply eq_to_eqbit3 ##| ##4: napply eq_to_eqbit4 - ##| ##5: napply eq_to_eqbit5 ##| ##6: napply eq_to_eqbit6 - ##| ##7: napply eq_to_eqbit7 ##| ##8: napply eq_to_eqbit8 - ##| ##9: napply eq_to_eqbit9 ##| ##10: napply eq_to_eqbit10 - ##| ##11: napply eq_to_eqbit11 ##| ##12: napply eq_to_eqbit12 - ##| ##13: napply eq_to_eqbit13 ##| ##14: napply eq_to_eqbit14 - ##| ##15: napply eq_to_eqbit15 ##| ##16: napply eq_to_eqbit16 - ##| ##17: napply eq_to_eqbit17 ##| ##18: napply eq_to_eqbit18 - ##| ##19: napply eq_to_eqbit19 ##| ##20: napply eq_to_eqbit20 - ##| ##21: napply eq_to_eqbit21 ##| ##22: napply eq_to_eqbit22 - ##| ##23: napply eq_to_eqbit23 ##| ##24: napply eq_to_eqbit24 - ##| ##25: napply eq_to_eqbit25 ##| ##26: napply eq_to_eqbit26 - ##| ##27: napply eq_to_eqbit27 ##| ##28: napply eq_to_eqbit28 - ##| ##29: napply eq_to_eqbit29 ##| ##30: napply eq_to_eqbit30 - ##| ##31: napply eq_to_eqbit31 ##| ##32: napply eq_to_eqbit32 - ##] -nqed. - -nlemma decidable_bit1 : ∀x:bitrigesim.decidable (t00 = x). - #x; nnormalize; nelim x; - ##[ ##1: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit2 : ∀x:bitrigesim.decidable (t01 = x). - #x; nnormalize; nelim x; - ##[ ##2: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit3 : ∀x:bitrigesim.decidable (t02 = x). - #x; nnormalize; nelim x; - ##[ ##3: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit4 : ∀x:bitrigesim.decidable (t03 = x). - #x; nnormalize; nelim x; - ##[ ##4: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit5 : ∀x:bitrigesim.decidable (t04 = x). - #x; nnormalize; nelim x; - ##[ ##5: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit6 : ∀x:bitrigesim.decidable (t05 = x). - #x; nnormalize; nelim x; - ##[ ##6: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit7 : ∀x:bitrigesim.decidable (t06 = x). - #x; nnormalize; nelim x; - ##[ ##7: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit8 : ∀x:bitrigesim.decidable (t07 = x). - #x; nnormalize; nelim x; - ##[ ##8: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit9 : ∀x:bitrigesim.decidable (t08 = x). - #x; nnormalize; nelim x; - ##[ ##9: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit10 : ∀x:bitrigesim.decidable (t09 = x). - #x; nnormalize; nelim x; - ##[ ##10: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit11 : ∀x:bitrigesim.decidable (t0A = x). - #x; nnormalize; nelim x; - ##[ ##11: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit12 : ∀x:bitrigesim.decidable (t0B = x). - #x; nnormalize; nelim x; - ##[ ##12: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit13 : ∀x:bitrigesim.decidable (t0C = x). - #x; nnormalize; nelim x; - ##[ ##13: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit14 : ∀x:bitrigesim.decidable (t0D = x). - #x; nnormalize; nelim x; - ##[ ##14: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit15 : ∀x:bitrigesim.decidable (t0E = x). - #x; nnormalize; nelim x; - ##[ ##15: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit16 : ∀x:bitrigesim.decidable (t0F = x). - #x; nnormalize; nelim x; - ##[ ##16: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit17 : ∀x:bitrigesim.decidable (t10 = x). - #x; nnormalize; nelim x; - ##[ ##17: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit18 : ∀x:bitrigesim.decidable (t11 = x). - #x; nnormalize; nelim x; - ##[ ##18: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit19 : ∀x:bitrigesim.decidable (t12 = x). - #x; nnormalize; nelim x; - ##[ ##19: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit20 : ∀x:bitrigesim.decidable (t13 = x). - #x; nnormalize; nelim x; - ##[ ##20: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit21 : ∀x:bitrigesim.decidable (t14 = x). - #x; nnormalize; nelim x; - ##[ ##21: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit22 : ∀x:bitrigesim.decidable (t15 = x). - #x; nnormalize; nelim x; - ##[ ##22: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit23 : ∀x:bitrigesim.decidable (t16 = x). - #x; nnormalize; nelim x; - ##[ ##23: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit24 : ∀x:bitrigesim.decidable (t17 = x). - #x; nnormalize; nelim x; - ##[ ##24: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit25 : ∀x:bitrigesim.decidable (t18 = x). - #x; nnormalize; nelim x; - ##[ ##25: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit26 : ∀x:bitrigesim.decidable (t19 = x). - #x; nnormalize; nelim x; - ##[ ##26: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit27 : ∀x:bitrigesim.decidable (t1A = x). - #x; nnormalize; nelim x; - ##[ ##27: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit28 : ∀x:bitrigesim.decidable (t1B = x). - #x; nnormalize; nelim x; - ##[ ##28: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit29 : ∀x:bitrigesim.decidable (t1C = x). - #x; nnormalize; nelim x; - ##[ ##29: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit30 : ∀x:bitrigesim.decidable (t1D = x). - #x; nnormalize; nelim x; - ##[ ##30: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit31 : ∀x:bitrigesim.decidable (t1E = x). - #x; nnormalize; nelim x; - ##[ ##31: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] -nqed. - -nlemma decidable_bit32 : ∀x:bitrigesim.decidable (t1F = x). - #x; nnormalize; nelim x; - ##[ ##32: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); nnormalize; #H; napply False_ind; napply (bitrigesim_destruct … H) - ##] +nlemma neq_to_neqbit : ∀n1,n2.n1 ≠ n2 → eq_bit n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_bit n1 n2)); + napply (not_to_not (eq_bit n1 n2 = true) (n1 = n2) ? H); + napply (eqbit_to_eq n1 n2). nqed. nlemma decidable_bit : ∀x,y:bitrigesim.decidable (x = y). - #x; nnormalize; nelim x; - ##[ ##1: napply decidable_bit1 ##| ##2: napply decidable_bit2 - ##| ##3: napply decidable_bit3 ##| ##4: napply decidable_bit4 - ##| ##5: napply decidable_bit5 ##| ##6: napply decidable_bit6 - ##| ##7: napply decidable_bit7 ##| ##8: napply decidable_bit8 - ##| ##9: napply decidable_bit9 ##| ##10: napply decidable_bit10 - ##| ##11: napply decidable_bit11 ##| ##12: napply decidable_bit12 - ##| ##13: napply decidable_bit13 ##| ##14: napply decidable_bit14 - ##| ##15: napply decidable_bit15 ##| ##16: napply decidable_bit16 - ##| ##17: napply decidable_bit17 ##| ##18: napply decidable_bit18 - ##| ##19: napply decidable_bit19 ##| ##20: napply decidable_bit20 - ##| ##21: napply decidable_bit21 ##| ##22: napply decidable_bit22 - ##| ##23: napply decidable_bit23 ##| ##24: napply decidable_bit24 - ##| ##25: napply decidable_bit25 ##| ##26: napply decidable_bit26 - ##| ##27: napply decidable_bit27 ##| ##28: napply decidable_bit28 - ##| ##29: napply decidable_bit29 ##| ##30: napply decidable_bit30 - ##| ##31: napply decidable_bit31 ##| ##32: napply decidable_bit32 - ##] -nqed. - -nlemma neqbit_to_neq1 : ∀t2.eq_bit t00 t2 = false → t00 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##1: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq2 : ∀t2.eq_bit t01 t2 = false → t01 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##2: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq3 : ∀t2.eq_bit t02 t2 = false → t02 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##3: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq4 : ∀t2.eq_bit t03 t2 = false → t03 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##4: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq5 : ∀t2.eq_bit t04 t2 = false → t04 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##5: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq6 : ∀t2.eq_bit t05 t2 = false → t05 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##6: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq7 : ∀t2.eq_bit t06 t2 = false → t06 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##7: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq8 : ∀t2.eq_bit t07 t2 = false → t07 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##8: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq9 : ∀t2.eq_bit t08 t2 = false → t08 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##9: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq10 : ∀t2.eq_bit t09 t2 = false → t09 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##10: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq11 : ∀t2.eq_bit t0A t2 = false → t0A ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##11: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq12 : ∀t2.eq_bit t0B t2 = false → t0B ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##12: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq13 : ∀t2.eq_bit t0C t2 = false → t0C ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##13: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq14 : ∀t2.eq_bit t0D t2 = false → t0D ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##14: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq15 : ∀t2.eq_bit t0E t2 = false → t0E ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##15: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq16 : ∀t2.eq_bit t0F t2 = false → t0F ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##16: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq17 : ∀t2.eq_bit t10 t2 = false → t10 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##17: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq18 : ∀t2.eq_bit t11 t2 = false → t11 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##18: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq19 : ∀t2.eq_bit t12 t2 = false → t12 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##19: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq20 : ∀t2.eq_bit t13 t2 = false → t13 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##20: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq21 : ∀t2.eq_bit t14 t2 = false → t14 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##21: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq22 : ∀t2.eq_bit t15 t2 = false → t15 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##22: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) + #x; #y; nnormalize; + napply (or2_elim (eq_bit x y = true) (eq_bit x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqbit_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqbit_to_neq … H)) ##] nqed. -nlemma neqbit_to_neq23 : ∀t2.eq_bit t16 t2 = false → t16 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##23: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq24 : ∀t2.eq_bit t17 t2 = false → t17 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##24: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq25 : ∀t2.eq_bit t18 t2 = false → t18 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##25: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq26 : ∀t2.eq_bit t19 t2 = false → t19 ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##26: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq27 : ∀t2.eq_bit t1A t2 = false → t1A ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##27: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq28 : ∀t2.eq_bit t1B t2 = false → t1B ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##28: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq29 : ∀t2.eq_bit t1C t2 = false → t1C ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##29: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq30 : ∀t2.eq_bit t1D t2 = false → t1D ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##30: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq31 : ∀t2.eq_bit t1E t2 = false → t1E ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##31: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq32 : ∀t2.eq_bit t1F t2 = false → t1F ≠ t2. - #t2; ncases t2; nnormalize; #H; - ##[ ##32: napply (bool_destruct … H) - ##| ##*: #H1; napply False_ind; napply (bitrigesim_destruct … H1) - ##] -nqed. - -nlemma neqbit_to_neq : ∀t1,t2.eq_bit t1 t2 = false → t1 ≠ t2. - #t1; nelim t1; - ##[ ##1: napply neqbit_to_neq1 ##| ##2: napply neqbit_to_neq2 - ##| ##3: napply neqbit_to_neq3 ##| ##4: napply neqbit_to_neq4 - ##| ##5: napply neqbit_to_neq5 ##| ##6: napply neqbit_to_neq6 - ##| ##7: napply neqbit_to_neq7 ##| ##8: napply neqbit_to_neq8 - ##| ##9: napply neqbit_to_neq9 ##| ##10: napply neqbit_to_neq10 - ##| ##11: napply neqbit_to_neq11 ##| ##12: napply neqbit_to_neq12 - ##| ##13: napply neqbit_to_neq13 ##| ##14: napply neqbit_to_neq14 - ##| ##15: napply neqbit_to_neq15 ##| ##16: napply neqbit_to_neq16 - ##| ##17: napply neqbit_to_neq17 ##| ##18: napply neqbit_to_neq18 - ##| ##19: napply neqbit_to_neq19 ##| ##20: napply neqbit_to_neq20 - ##| ##21: napply neqbit_to_neq21 ##| ##22: napply neqbit_to_neq22 - ##| ##23: napply neqbit_to_neq23 ##| ##24: napply neqbit_to_neq24 - ##| ##25: napply neqbit_to_neq25 ##| ##26: napply neqbit_to_neq26 - ##| ##27: napply neqbit_to_neq27 ##| ##28: napply neqbit_to_neq28 - ##| ##29: napply neqbit_to_neq29 ##| ##30: napply neqbit_to_neq30 - ##| ##31: napply neqbit_to_neq31 ##| ##32: napply neqbit_to_neq32 - ##] -nqed. - -nlemma neq_to_neqbit1 : ∀t2.t00 ≠ t2 → eq_bit t00 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##1: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit2 : ∀t2.t01 ≠ t2 → eq_bit t01 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##2: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit3 : ∀t2.t02 ≠ t2 → eq_bit t02 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##3: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit4 : ∀t2.t03 ≠ t2 → eq_bit t03 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##4: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit5 : ∀t2.t04 ≠ t2 → eq_bit t04 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##5: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit6 : ∀t2.t05 ≠ t2 → eq_bit t05 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##6: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit7 : ∀t2.t06 ≠ t2 → eq_bit t06 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##7: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit8 : ∀t2.t07 ≠ t2 → eq_bit t07 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##8: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit9 : ∀t2.t08 ≠ t2 → eq_bit t08 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##9: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit10 : ∀t2.t09 ≠ t2 → eq_bit t09 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##10: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit11 : ∀t2.t0A ≠ t2 → eq_bit t0A t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##11: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit12 : ∀t2.t0B ≠ t2 → eq_bit t0B t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##12: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit13 : ∀t2.t0C ≠ t2 → eq_bit t0C t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##13: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit14 : ∀t2.t0D ≠ t2 → eq_bit t0D t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##14: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit15 : ∀t2.t0E ≠ t2 → eq_bit t0E t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##15: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit16 : ∀t2.t0F ≠ t2 → eq_bit t0F t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##16: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit17 : ∀t2.t10 ≠ t2 → eq_bit t10 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##17: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit18 : ∀t2.t11 ≠ t2 → eq_bit t11 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##18: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit19 : ∀t2.t12 ≠ t2 → eq_bit t12 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##19: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit20 : ∀t2.t13 ≠ t2 → eq_bit t13 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##20: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit21 : ∀t2.t14 ≠ t2 → eq_bit t14 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##21: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit22 : ∀t2.t15 ≠ t2 → eq_bit t15 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##22: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit23 : ∀t2.t16 ≠ t2 → eq_bit t16 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##23: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit24 : ∀t2.t17 ≠ t2 → eq_bit t17 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##24: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit25 : ∀t2.t18 ≠ t2 → eq_bit t18 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##25: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit26 : ∀t2.t19 ≠ t2 → eq_bit t19 t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##26: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit27 : ∀t2.t1A ≠ t2 → eq_bit t1A t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##27: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit28 : ∀t2.t1B ≠ t2 → eq_bit t1B t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##28: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit29 : ∀t2.t1C ≠ t2 → eq_bit t1C t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##29: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit30 : ∀t2.t1D ≠ t2 → eq_bit t1D t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##30: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit31 : ∀t2.t1E ≠ t2 → eq_bit t1E t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##31: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit32 : ∀t2.t1F ≠ t2 → eq_bit t1F t2 = false. - #t2; ncases t2; nnormalize; #H; ##[ ##32: nelim (H (refl_eq …)) ##| ##*: napply refl_eq ##] -nqed. - -nlemma neq_to_neqbit : ∀t1,t2.t1 ≠ t2 → eq_bit t1 t2 = false. - #t1; nelim t1; - ##[ ##1: napply neq_to_neqbit1 ##| ##2: napply neq_to_neqbit2 - ##| ##3: napply neq_to_neqbit3 ##| ##4: napply neq_to_neqbit4 - ##| ##5: napply neq_to_neqbit5 ##| ##6: napply neq_to_neqbit6 - ##| ##7: napply neq_to_neqbit7 ##| ##8: napply neq_to_neqbit8 - ##| ##9: napply neq_to_neqbit9 ##| ##10: napply neq_to_neqbit10 - ##| ##11: napply neq_to_neqbit11 ##| ##12: napply neq_to_neqbit12 - ##| ##13: napply neq_to_neqbit13 ##| ##14: napply neq_to_neqbit14 - ##| ##15: napply neq_to_neqbit15 ##| ##16: napply neq_to_neqbit16 - ##| ##17: napply neq_to_neqbit17 ##| ##18: napply neq_to_neqbit18 - ##| ##19: napply neq_to_neqbit19 ##| ##20: napply neq_to_neqbit20 - ##| ##21: napply neq_to_neqbit21 ##| ##22: napply neq_to_neqbit22 - ##| ##23: napply neq_to_neqbit23 ##| ##24: napply neq_to_neqbit24 - ##| ##25: napply neq_to_neqbit25 ##| ##26: napply neq_to_neqbit26 - ##| ##27: napply neq_to_neqbit27 ##| ##28: napply neq_to_neqbit28 - ##| ##29: napply neq_to_neqbit29 ##| ##30: napply neq_to_neqbit30 - ##| ##31: napply neq_to_neqbit31 ##| ##32: napply neq_to_neqbit32 +nlemma symmetric_eqbit : symmetricT bitrigesim bool eq_bit. + #n1; #n2; + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_bit n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqbit n1 n2 H); + napply (symmetric_eq ? (eq_bit n2 n1) false); + napply (neq_to_neqbit n2 n1 (symmetric_neq ? n1 n2 H)) ##] nqed. diff --git a/helm/software/matita/contribs/ng_assembly/num/bool_lemmas.ma b/helm/software/matita/contribs/ng_assembly/num/bool_lemmas.ma index 241ee8675..b7b9096e8 100755 --- a/helm/software/matita/contribs/ng_assembly/num/bool_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/num/bool_lemmas.ma @@ -130,6 +130,13 @@ nlemma decidable_bool : ∀x,y:bool.decidable (x = y). ##] nqed. +nlemma decidable_bexpr : ∀x.(x = true) ∨ (x = false). + #x; ncases x; + ##[ ##1: napply (or2_intro1 (true = true) (true = false) (refl_eq …)) + ##| ##2: napply (or2_intro2 (false = true) (false = false) (refl_eq …)) + ##] +nqed. + nlemma neqbool_to_neq : ∀b1,b2:bool.(eq_bool b1 b2 = false) → (b1 ≠ b2). #b1; #b2; ncases b1; @@ -150,6 +157,34 @@ nlemma neq_to_neqbool : ∀b1,b2.b1 ≠ b2 → eq_bool b1 b2 = false. ##] nqed. +nlemma eqfalse_to_neqtrue : ∀x.x = false → x ≠ true. + #x; nelim x; + ##[ ##1: #H; napply (bool_destruct … H) + ##| ##2: #H; nnormalize; #H1; napply (bool_destruct … H1) + ##] +nqed. + +nlemma eqtrue_to_neqfalse : ∀x.x = true → x ≠ false. + #x; nelim x; + ##[ ##1: #H; nnormalize; #H1; napply (bool_destruct … H1) + ##| ##2: #H; napply (bool_destruct … H) + ##] +nqed. + +nlemma neqfalse_to_eqtrue : ∀x.x ≠ false → x = true. + #x; nelim x; + ##[ ##1: #H; napply refl_eq + ##| ##2: nnormalize; #H; nelim (H (refl_eq …)) + ##] +nqed. + +nlemma neqtrue_to_eqfalse : ∀x.x ≠ true → x = false. + #x; nelim x; + ##[ ##1: nnormalize; #H; nelim (H (refl_eq …)) + ##| ##2: #H; napply refl_eq + ##] +nqed. + nlemma andb_true_true_l: ∀b1,b2.(b1 ⊗ b2) = true → b1 = true. #b1; #b2; ncases b1; diff --git a/helm/software/matita/contribs/ng_assembly/num/exadecim_lemmas.ma b/helm/software/matita/contribs/ng_assembly/num/exadecim_lemmas.ma index 2ccd1e3c1..6e4d25e1e 100755 --- a/helm/software/matita/contribs/ng_assembly/num/exadecim_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/num/exadecim_lemmas.ma @@ -39,14 +39,6 @@ ndefinition exadecim_destruct : exadecim_destruct_aux. napply (λx.x). nqed. -nlemma symmetric_eqex : symmetricT exadecim bool eq_ex. - #e1; #e2; - nelim e1; - nelim e2; - nnormalize; - napply refl_eq. -nqed. - nlemma symmetric_andex : symmetricT exadecim exadecim and_ex. #e1; #e2; nelim e1; @@ -300,55 +292,53 @@ nlemma symmetric_plusex_d_c : ∀e1,e2.plus_ex_d_c e1 e2 = plus_ex_d_c e2 e1. napply refl_eq. nqed. -nlemma eqex_to_eq : ∀e1,e2:exadecim.(eq_ex e1 e2 = true) → (e1 = e2). - #e1; #e2; - ncases e1; - ncases e2; +nlemma eq_to_eqex : ∀n1,n2.n1 = n2 → eq_ex n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; + nelim n2; nnormalize; - ##[ ##1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256: #H; napply refl_eq - ##| ##*: #H; napply (bool_destruct … H) + napply refl_eq. +nqed. + +nlemma neqex_to_neq : ∀n1,n2.eq_ex n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_ex n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqex n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) ##] nqed. -nlemma eq_to_eqex : ∀e1,e2.e1 = e2 → eq_ex e1 e2 = true. - #m1; #m2; - ncases m1; - ncases m2; +nlemma eqex_to_eq : ∀n1,n2.eq_ex n1 n2 = true → n1 = n2. + #n1; #n2; + ncases n1; + ncases n2; nnormalize; ##[ ##1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256: #H; napply refl_eq - ##| ##*: #H; napply (exadecim_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) ##] nqed. -nlemma decidable_ex : ∀x,y:exadecim.decidable (x = y). - #x; #y; - nnormalize; - nelim x; - nelim y; - ##[ ##1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H; - napply False_ind; - napply (exadecim_destruct … H) - ##] +nlemma neq_to_neqex : ∀n1,n2.n1 ≠ n2 → eq_ex n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_ex n1 n2)); + napply (not_to_not (eq_ex n1 n2 = true) (n1 = n2) ? H); + napply (eqex_to_eq n1 n2). nqed. -nlemma neqex_to_neq : ∀e1,e2:exadecim.(eq_ex e1 e2 = false) → (e1 ≠ e2). - #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256: #H; napply (bool_destruct … H) - ##| ##*: #H; #H1; napply (exadecim_destruct … H1) +nlemma decidable_ex : ∀x,y:exadecim.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_ex x y = true) (eq_ex x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqex_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqex_to_neq … H)) ##] nqed. -nlemma neq_to_neqex : ∀e1,e2.e1 ≠ e2 → eq_ex e1 e2 = false. +nlemma symmetric_eqex : symmetricT exadecim bool eq_ex. #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256: #H; nelim (H (refl_eq …)) - ##| ##*: #H; napply refl_eq + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_ex n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqex n1 n2 H); + napply (symmetric_eq ? (eq_ex n2 n1) false); + napply (neq_to_neqex n2 n1 (symmetric_neq ? n1 n2 H)) ##] nqed. diff --git a/helm/software/matita/contribs/ng_assembly/num/oct_lemmas.ma b/helm/software/matita/contribs/ng_assembly/num/oct_lemmas.ma index 7cb82090d..d6c014598 100755 --- a/helm/software/matita/contribs/ng_assembly/num/oct_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/num/oct_lemmas.ma @@ -39,63 +39,53 @@ ndefinition oct_destruct : oct_destruct_aux. napply (λx.x). nqed. -nlemma symmetric_eqoct : symmetricT oct bool eq_oct. - #n1; #n2; - nelim n1; +nlemma eq_to_eqoct : ∀n1,n2.n1 = n2 → eq_oct n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; nelim n2; nnormalize; napply refl_eq. nqed. -nlemma eqoct_to_eq : ∀n1,n2.eq_oct n1 n2 = true → n1 = n2. - #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,10,19,28,37,46,55,64: #H; napply refl_eq - ##| ##*: #H; napply (bool_destruct … H) +nlemma neqoct_to_neq : ∀n1,n2.eq_oct n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_oct n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqoct n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) ##] nqed. -nlemma eq_to_eqoct : ∀n1,n2.n1 = n2 → eq_oct n1 n2 = true. +nlemma eqoct_to_eq : ∀n1,n2.eq_oct n1 n2 = true → n1 = n2. #n1; #n2; ncases n1; ncases n2; nnormalize; ##[ ##1,10,19,28,37,46,55,64: #H; napply refl_eq - ##| ##*: #H; napply (oct_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) ##] nqed. -nlemma decidable_oct : ∀x,y:oct.decidable (x = y). - #x; #y; - nnormalize; - nelim x; - nelim y; - ##[ ##1,10,19,28,37,46,55,64: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H; - napply False_ind; - napply (oct_destruct … H) - ##] +nlemma neq_to_neqoct : ∀n1,n2.n1 ≠ n2 → eq_oct n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_oct n1 n2)); + napply (not_to_not (eq_oct n1 n2 = true) (n1 = n2) ? H); + napply (eqoct_to_eq n1 n2). nqed. -nlemma neqoct_to_neq : ∀n1,n2.eq_oct n1 n2 = false → n1 ≠ n2. - #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,10,19,28,37,46,55,64: #H; napply (bool_destruct … H) - ##| ##*: #H; #H1; napply (oct_destruct … H1) +nlemma decidable_oct : ∀x,y:oct.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_oct x y = true) (eq_oct x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqoct_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqoct_to_neq … H)) ##] nqed. -nlemma neq_to_neqoct : ∀n1,n2.n1 ≠ n2 → eq_oct n1 n2 = false. +nlemma symmetric_eqoct : symmetricT oct bool eq_oct. #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,10,19,28,37,46,55,64: #H; nelim (H (refl_eq …)) - ##| ##*: #H; napply refl_eq + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_oct n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqoct n1 n2 H); + napply (symmetric_eq ? (eq_oct n2 n1) false); + napply (neq_to_neqoct n2 n1 (symmetric_neq ? n1 n2 H)) ##] nqed. diff --git a/helm/software/matita/contribs/ng_assembly/num/quatern_lemmas.ma b/helm/software/matita/contribs/ng_assembly/num/quatern_lemmas.ma index 339d4f701..c2c8a3399 100755 --- a/helm/software/matita/contribs/ng_assembly/num/quatern_lemmas.ma +++ b/helm/software/matita/contribs/ng_assembly/num/quatern_lemmas.ma @@ -39,63 +39,53 @@ ndefinition quatern_destruct : quatern_destruct_aux. napply (λx.x). nqed. -nlemma symmetric_eqqu : symmetricT quatern bool eq_qu. - #n1; #n2; - nelim n1; +nlemma eq_to_eqqu : ∀n1,n2.n1 = n2 → eq_qu n1 n2 = true. + #n1; #n2; #H; + nrewrite > H; nelim n2; nnormalize; napply refl_eq. nqed. -nlemma eqqu_to_eq : ∀n1,n2.eq_qu n1 n2 = true → n1 = n2. - #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,6,11,16: #H; napply refl_eq - ##| ##*: #H; napply (bool_destruct … H) +nlemma neqqu_to_neq : ∀n1,n2.eq_qu n1 n2 = false → n1 ≠ n2. + #n1; #n2; #H; + napply (not_to_not (n1 = n2) (eq_qu n1 n2 = true) …); + ##[ ##1: napply (eq_to_eqqu n1 n2) + ##| ##2: napply (eqfalse_to_neqtrue … H) ##] nqed. -nlemma eq_to_eqqu : ∀n1,n2.n1 = n2 → eq_qu n1 n2 = true. +nlemma eqqu_to_eq : ∀n1,n2.eq_qu n1 n2 = true → n1 = n2. #n1; #n2; ncases n1; ncases n2; nnormalize; ##[ ##1,6,11,16: #H; napply refl_eq - ##| ##*: #H; napply (quatern_destruct … H) + ##| ##*: #H; napply (bool_destruct … H) ##] nqed. -nlemma decidable_qu : ∀x,y:quatern.decidable (x = y). - #x; #y; - nnormalize; - nelim x; - nelim y; - ##[ ##1,6,11,16: napply (or2_intro1 (? = ?) (? ≠ ?) …); napply refl_eq - ##| ##*: napply (or2_intro2 (? = ?) (? ≠ ?) …); - nnormalize; #H; - napply False_ind; - napply (quatern_destruct … H) - ##] +nlemma neq_to_neqqu : ∀n1,n2.n1 ≠ n2 → eq_qu n1 n2 = false. + #n1; #n2; #H; + napply (neqtrue_to_eqfalse (eq_qu n1 n2)); + napply (not_to_not (eq_qu n1 n2 = true) (n1 = n2) ? H); + napply (eqqu_to_eq n1 n2). nqed. -nlemma neqqu_to_neq : ∀n1,n2.eq_qu n1 n2 = false → n1 ≠ n2. - #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,6,11,16: #H; napply (bool_destruct … H) - ##| ##*: #H; #H1; napply (quatern_destruct … H1) +nlemma decidable_qu : ∀x,y:quatern.decidable (x = y). + #x; #y; nnormalize; + napply (or2_elim (eq_qu x y = true) (eq_qu x y = false) ? (decidable_bexpr ?)); + ##[ ##1: #H; napply (or2_intro1 (x = y) (x ≠ y) (eqqu_to_eq … H)) + ##| ##2: #H; napply (or2_intro2 (x = y) (x ≠ y) (neqqu_to_neq … H)) ##] nqed. -nlemma neq_to_neqqu : ∀n1,n2.n1 ≠ n2 → eq_qu n1 n2 = false. +nlemma symmetric_eqqu : symmetricT quatern bool eq_qu. #n1; #n2; - ncases n1; - ncases n2; - nnormalize; - ##[ ##1,6,11,16: #H; nelim (H (refl_eq …)) - ##| ##*: #H; napply refl_eq + napply (or2_elim (n1 = n2) (n1 ≠ n2) ? (decidable_qu n1 n2)); + ##[ ##1: #H; nrewrite > H; napply refl_eq + ##| ##2: #H; nrewrite > (neq_to_neqqu n1 n2 H); + napply (symmetric_eq ? (eq_qu n2 n1) false); + napply (neq_to_neqqu n2 n1 (symmetric_neq ? n1 n2 H)) ##] nqed.