]> matita.cs.unibo.it Git - helm.git/commitdiff
freescale porting, work in progress
authorCosimo Oliboni <??>
Tue, 11 Aug 2009 02:30:12 +0000 (02:30 +0000)
committerCosimo Oliboni <??>
Tue, 11 Aug 2009 02:30:12 +0000 (02:30 +0000)
23 files changed:
helm/software/matita/contribs/ng_assembly/common/ascii_lemmas.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/common/ascii_lemmas1.ma [deleted file]
helm/software/matita/contribs/ng_assembly/common/ascii_lemmas2.ma [deleted file]
helm/software/matita/contribs/ng_assembly/common/ascii_lemmas3.ma [deleted file]
helm/software/matita/contribs/ng_assembly/common/ascii_lemmas4.ma [deleted file]
helm/software/matita/contribs/ng_assembly/common/ascii_lemmas5.ma [deleted file]
helm/software/matita/contribs/ng_assembly/common/meta_type.ma
helm/software/matita/contribs/ng_assembly/common/string_lemmas.ma
helm/software/matita/contribs/ng_assembly/common/theory.ma
helm/software/matita/contribs/ng_assembly/compiler/ast_type_lemmas.ma
helm/software/matita/contribs/ng_assembly/depends
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas1.ma
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode1.ma [deleted file]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode2.ma [deleted file]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode.ma [new file with mode: 0755]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode1.ma [deleted file]
helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_opcode2.ma [deleted file]
helm/software/matita/contribs/ng_assembly/num/bitrigesim_lemmas.ma
helm/software/matita/contribs/ng_assembly/num/bool_lemmas.ma
helm/software/matita/contribs/ng_assembly/num/exadecim_lemmas.ma
helm/software/matita/contribs/ng_assembly/num/oct_lemmas.ma
helm/software/matita/contribs/ng_assembly/num/quatern_lemmas.ma

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 (executable)
index 0000000..0d10de4
--- /dev/null
@@ -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 (executable)
index 3a5c00a..0000000
+++ /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 (executable)
index e7cbe0e..0000000
+++ /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 (executable)
index 98dabd5..0000000
+++ /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 (executable)
index 64ee7b2..0000000
+++ /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 (executable)
index 425f4a5..0000000
+++ /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.
index 1574f46ca947ebbab785ce13a8db1dd4e0b66eac..751a4bb56cca5537a9523a56abd77043bf3bc474 100755 (executable)
@@ -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:
                     
 
index b30befbf9a41ced577d514b1b3bd8b99a4c88532..be090076f0166fd3c0535010175f0fa7fcb11a70 100755 (executable)
 (* ********************************************************************** *)
 
 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".
 
 (* ************************ *)
index c4bd19f167a1974ff29e08707c916e27da28a92b..7f5f9003658d6d621d2b8240357f4ada4565a1a0 100644 (file)
@@ -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.
 
index 2753d6118cf510c563dbe01ee9d5b079205d48d1..039e39b0fad9382eac9bb2ffd42c77affb41eb69 100755 (executable)
@@ -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.
 
index 6f77e4b6203733ad1e30a99945af7364f731127f..31188920045e753b3b40974a2df1eac2d723924d 100644 (file)
@@ -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
index 0389dc751bac06902881edb09303e6b626384ee8..78a284c30224a49246ee638633eb3bf76d543e1e 100755 (executable)
@@ -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 (executable)
index 0000000..26d0bb7
--- /dev/null
@@ -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 (executable)
index 2d851ff..0000000
+++ /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 (executable)
index ca759ad..0000000
+++ /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 (executable)
index 0000000..d91fa05
--- /dev/null
@@ -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 (executable)
index ffc7eab..0000000
+++ /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 (executable)
index dca4a5d..0000000
+++ /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.
index 9d9a95cbb844df10a98d6f520175a7af110bf716..5eecaff9160d2ec82a5eb69b683aa96bb77987ce 100755 (executable)
@@ -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.
index 241ee867562d49ba33e1e7e0479fc61d04b5c170..b7b9096e871706bddcb98a46ce4b85db2221168c 100755 (executable)
@@ -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;
index 2ccd1e3c10e41af7f722aa8599ceae85bcd5f8d7..6e4d25e1ec71e6593fcde7ce685bbd84abf28991 100755 (executable)
@@ -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.
index 7cb82090dac1d0945cd867272545e200bea83d5d..d6c0145980c93c28c7635ff3c592d61d828a3e6f 100755 (executable)
@@ -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.
index 339d4f701484e529cf85a24927c921e4bc319e62..c2c8a33998be710b0b0d4379f06a0c9dc4b3bc11 100755 (executable)
@@ -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.