]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/ng_assembly/freescale/opcode_base_lemmas_instrmode2.ma
e64b10cc531632c2f043a77f591848965292071f
[helm.git] / helm / software / matita / contribs / ng_assembly / freescale / opcode_base_lemmas_instrmode2.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* ********************************************************************** *)
16 (*                          Progetto FreeScale                            *)
17 (*                                                                        *)
18 (*   Sviluppato da: Cosimo Oliboni, oliboni@cs.unibo.it                   *)
19 (*     Cosimo Oliboni, oliboni@cs.unibo.it                                *)
20 (*                                                                        *)
21 (* ********************************************************************** *)
22
23 include "freescale/opcode_base_lemmas_instrmode1.ma".
24
25 (* ********************************************** *)
26 (* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
27 (* ********************************************** *)
28
29 nlemma symmetric_eqinstrmode : symmetricT instr_mode bool eq_instrmode.
30  #i1; #i2;
31  ncases i1;
32  ##[ ##1: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
33  ##| ##2: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
34  ##| ##3: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
35  ##| ##4: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
36  ##| ##5: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
37  ##| ##6: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
38  ##| ##7: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
39  ##| ##8: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
40  ##| ##9: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
41  ##| ##10: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
42  ##| ##11: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
43  ##| ##12: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
44  ##| ##13: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
45  ##| ##14: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
46  ##| ##15: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
47  ##| ##16: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
48  ##| ##17: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
49  ##| ##18: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
50  ##| ##19: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
51  ##| ##20: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
52  ##| ##21: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
53  ##| ##22: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
54  ##| ##23: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
55  ##| ##24: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
56  ##| ##25: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
57  ##| ##26: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
58  ##| ##27: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
59  ##| ##28: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
60  ##| ##29: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
61  ##| ##30: ncases i2; nnormalize; ##[ ##31,32,33,34: #n ##] napply (refl_eq ??)
62  ##| ##31: ncases i2; #n1;
63      ##[ ##31: #n2;
64                nchange with (eq_oct n2 n1 = eq_oct n1 n2);
65                nrewrite > (symmetric_eqoct n1 n2);
66      ##| ##32,33,34: #n2; nnormalize 
67      ##]
68      nnormalize; napply (refl_eq ??)
69  ##| ##32: ncases i2; #n1;
70      ##[ ##32: #n2;
71                nchange with (eq_oct n2 n1 = eq_oct n1 n2);
72                nrewrite > (symmetric_eqoct n1 n2);
73      ##| ##31,33,34: #n2; nnormalize 
74      ##]
75      nnormalize; napply (refl_eq ??)
76  ##| ##33: ncases i2; #n1;
77      ##[ ##33: #n2;
78                nchange with (eq_ex n2 n1 = eq_ex n1 n2);
79                nrewrite > (symmetric_eqex n1 n2);
80      ##| ##31,32,34: #n2; nnormalize 
81      ##]
82      nnormalize; napply (refl_eq ??)
83  ##| ##34: ncases i2; #n1;
84      ##[ ##34: #n2;
85                nchange with (eq_bitrig n2 n1 = eq_bitrig n1 n2);
86                nrewrite > (symmetric_eqbitrig n1 n2);
87      ##| ##31,32,33: #n2; nnormalize 
88      ##]
89      nnormalize; napply (refl_eq ??)
90  ##]
91 nqed.
92
93 nlemma eqinstrmode_to_eq1 : ∀i2.eq_instrmode MODE_INH i2 = true → MODE_INH = i2.
94  #i2; ncases i2; nnormalize;
95  ##[ ##1: #H; napply (refl_eq ??)
96  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
97  ##| ##*: #H; napply (bool_destruct ??? H)
98  ##]
99 nqed.
100
101 nlemma eqinstrmode_to_eq2 : ∀i2.eq_instrmode MODE_INHA i2 = true → MODE_INHA = i2.
102  #i2; ncases i2; nnormalize;
103  ##[ ##2: #H; napply (refl_eq ??)
104  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
105  ##| ##*: #H; napply (bool_destruct ??? H)
106  ##]
107 nqed.
108
109 nlemma eqinstrmode_to_eq3 : ∀i2.eq_instrmode MODE_INHX i2 = true → MODE_INHX = i2.
110  #i2; ncases i2; nnormalize;
111  ##[ ##3: #H; napply (refl_eq ??)
112  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
113  ##| ##*: #H; napply (bool_destruct ??? H)
114  ##]
115 nqed.
116
117 nlemma eqinstrmode_to_eq4 : ∀i2.eq_instrmode MODE_INHH i2 = true → MODE_INHH = i2.
118  #i2; ncases i2; nnormalize;
119  ##[ ##4: #H; napply (refl_eq ??)
120  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
121  ##| ##*: #H; napply (bool_destruct ??? H)
122  ##]
123 nqed.
124
125 nlemma eqinstrmode_to_eq5 : ∀i2.eq_instrmode MODE_INHX0ADD i2 = true → MODE_INHX0ADD = i2.
126  #i2; ncases i2; nnormalize;
127  ##[ ##5: #H; napply (refl_eq ??)
128  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
129  ##| ##*: #H; napply (bool_destruct ??? H)
130  ##]
131 nqed.
132
133 nlemma eqinstrmode_to_eq6 : ∀i2.eq_instrmode MODE_INHX1ADD i2 = true → MODE_INHX1ADD = i2.
134  #i2; ncases i2; nnormalize;
135  ##[ ##6: #H; napply (refl_eq ??)
136  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
137  ##| ##*: #H; napply (bool_destruct ??? H)
138  ##]
139 nqed.
140
141 nlemma eqinstrmode_to_eq7 : ∀i2.eq_instrmode MODE_INHX2ADD i2 = true → MODE_INHX2ADD = i2.
142  #i2; ncases i2; nnormalize;
143  ##[ ##7: #H; napply (refl_eq ??)
144  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
145  ##| ##*: #H; napply (bool_destruct ??? H)
146  ##]
147 nqed.
148
149 nlemma eqinstrmode_to_eq8 : ∀i2.eq_instrmode MODE_IMM1 i2 = true → MODE_IMM1 = i2.
150  #i2; ncases i2; nnormalize;
151  ##[ ##8: #H; napply (refl_eq ??)
152  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
153  ##| ##*: #H; napply (bool_destruct ??? H)
154  ##]
155 nqed.
156
157 nlemma eqinstrmode_to_eq9 : ∀i2.eq_instrmode MODE_IMM1EXT i2 = true → MODE_IMM1EXT = i2.
158  #i2; ncases i2; nnormalize;
159  ##[ ##9: #H; napply (refl_eq ??)
160  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
161  ##| ##*: #H; napply (bool_destruct ??? H)
162  ##]
163 nqed.
164
165 nlemma eqinstrmode_to_eq10 : ∀i2.eq_instrmode MODE_IMM2 i2 = true → MODE_IMM2 = i2.
166  #i2; ncases i2; nnormalize;
167  ##[ ##10: #H; napply (refl_eq ??)
168  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
169  ##| ##*: #H; napply (bool_destruct ??? H)
170  ##]
171 nqed.
172
173 nlemma eqinstrmode_to_eq11 : ∀i2.eq_instrmode MODE_DIR1 i2 = true → MODE_DIR1 = i2.
174  #i2; ncases i2; nnormalize;
175  ##[ ##11: #H; napply (refl_eq ??)
176  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
177  ##| ##*: #H; napply (bool_destruct ??? H)
178  ##]
179 nqed.
180
181 nlemma eqinstrmode_to_eq12 : ∀i2.eq_instrmode MODE_DIR2 i2 = true → MODE_DIR2 = i2.
182  #i2; ncases i2; nnormalize;
183  ##[ ##12: #H; napply (refl_eq ??)
184  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
185  ##| ##*: #H; napply (bool_destruct ??? H)
186  ##]
187 nqed.
188
189 nlemma eqinstrmode_to_eq13 : ∀i2.eq_instrmode MODE_IX0 i2 = true → MODE_IX0 = i2.
190  #i2; ncases i2; nnormalize;
191  ##[ ##13: #H; napply (refl_eq ??)
192  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
193  ##| ##*: #H; napply (bool_destruct ??? H)
194  ##]
195 nqed.
196
197 nlemma eqinstrmode_to_eq14 : ∀i2.eq_instrmode MODE_IX1 i2 = true → MODE_IX1 = i2.
198  #i2; ncases i2; nnormalize;
199  ##[ ##14: #H; napply (refl_eq ??)
200  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
201  ##| ##*: #H; napply (bool_destruct ??? H)
202  ##]
203 nqed.
204
205 nlemma eqinstrmode_to_eq15 : ∀i2.eq_instrmode MODE_IX2 i2 = true → MODE_IX2 = i2.
206  #i2; ncases i2; nnormalize;
207  ##[ ##15: #H; napply (refl_eq ??)
208  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
209  ##| ##*: #H; napply (bool_destruct ??? H)
210  ##]
211 nqed.
212
213 nlemma eqinstrmode_to_eq16 : ∀i2.eq_instrmode MODE_SP1 i2 = true → MODE_SP1 = i2.
214  #i2; ncases i2; nnormalize;
215  ##[ ##16: #H; napply (refl_eq ??)
216  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
217  ##| ##*: #H; napply (bool_destruct ??? H)
218  ##]
219 nqed.
220
221 nlemma eqinstrmode_to_eq17 : ∀i2.eq_instrmode MODE_SP2 i2 = true → MODE_SP2 = i2.
222  #i2; ncases i2; nnormalize;
223  ##[ ##17: #H; napply (refl_eq ??)
224  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
225  ##| ##*: #H; napply (bool_destruct ??? H)
226  ##]
227 nqed.
228
229 nlemma eqinstrmode_to_eq18 : ∀i2.eq_instrmode MODE_DIR1_to_DIR1 i2 = true → MODE_DIR1_to_DIR1 = i2.
230  #i2; ncases i2; nnormalize;
231  ##[ ##18: #H; napply (refl_eq ??)
232  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
233  ##| ##*: #H; napply (bool_destruct ??? H)
234  ##]
235 nqed.
236
237 nlemma eqinstrmode_to_eq19 : ∀i2.eq_instrmode MODE_IMM1_to_DIR1 i2 = true → MODE_IMM1_to_DIR1 = i2.
238  #i2; ncases i2; nnormalize;
239  ##[ ##19: #H; napply (refl_eq ??)
240  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
241  ##| ##*: #H; napply (bool_destruct ??? H)
242  ##]
243 nqed.
244
245 nlemma eqinstrmode_to_eq20 : ∀i2.eq_instrmode MODE_IX0p_to_DIR1 i2 = true → MODE_IX0p_to_DIR1 = i2.
246  #i2; ncases i2; nnormalize;
247  ##[ ##20: #H; napply (refl_eq ??)
248  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
249  ##| ##*: #H; napply (bool_destruct ??? H)
250  ##]
251 nqed.
252
253 nlemma eqinstrmode_to_eq21 : ∀i2.eq_instrmode MODE_DIR1_to_IX0p i2 = true → MODE_DIR1_to_IX0p = i2.
254  #i2; ncases i2; nnormalize;
255  ##[ ##21: #H; napply (refl_eq ??)
256  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
257  ##| ##*: #H; napply (bool_destruct ??? H)
258  ##]
259 nqed.
260
261 nlemma eqinstrmode_to_eq22 : ∀i2.eq_instrmode MODE_INHA_and_IMM1 i2 = true → MODE_INHA_and_IMM1 = i2.
262  #i2; ncases i2; nnormalize;
263  ##[ ##22: #H; napply (refl_eq ??)
264  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
265  ##| ##*: #H; napply (bool_destruct ??? H)
266  ##]
267 nqed.
268
269 nlemma eqinstrmode_to_eq23 : ∀i2.eq_instrmode MODE_INHX_and_IMM1 i2 = true → MODE_INHX_and_IMM1 = i2.
270  #i2; ncases i2; nnormalize;
271  ##[ ##23: #H; napply (refl_eq ??)
272  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
273  ##| ##*: #H; napply (bool_destruct ??? H)
274  ##]
275 nqed.
276
277 nlemma eqinstrmode_to_eq24 : ∀i2.eq_instrmode MODE_IMM1_and_IMM1 i2 = true → MODE_IMM1_and_IMM1 = i2.
278  #i2; ncases i2; nnormalize;
279  ##[ ##24: #H; napply (refl_eq ??)
280  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
281  ##| ##*: #H; napply (bool_destruct ??? H)
282  ##]
283 nqed.
284
285 nlemma eqinstrmode_to_eq25 : ∀i2.eq_instrmode MODE_DIR1_and_IMM1 i2 = true → MODE_DIR1_and_IMM1 = i2.
286  #i2; ncases i2; nnormalize;
287  ##[ ##25: #H; napply (refl_eq ??)
288  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
289  ##| ##*: #H; napply (bool_destruct ??? H)
290  ##]
291 nqed.
292
293 nlemma eqinstrmode_to_eq26 : ∀i2.eq_instrmode MODE_IX0_and_IMM1 i2 = true → MODE_IX0_and_IMM1 = i2.
294  #i2; ncases i2; nnormalize;
295  ##[ ##26: #H; napply (refl_eq ??)
296  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
297  ##| ##*: #H; napply (bool_destruct ??? H)
298  ##]
299 nqed.
300
301 nlemma eqinstrmode_to_eq27 : ∀i2.eq_instrmode MODE_IX0p_and_IMM1 i2 = true → MODE_IX0p_and_IMM1 = i2.
302  #i2; ncases i2; nnormalize;
303  ##[ ##27: #H; napply (refl_eq ??)
304  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
305  ##| ##*: #H; napply (bool_destruct ??? H)
306  ##]
307 nqed.
308
309 nlemma eqinstrmode_to_eq28 : ∀i2.eq_instrmode MODE_IX1_and_IMM1 i2 = true → MODE_IX1_and_IMM1 = i2.
310  #i2; ncases i2; nnormalize;
311  ##[ ##28: #H; napply (refl_eq ??)
312  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
313  ##| ##*: #H; napply (bool_destruct ??? H)
314  ##]
315 nqed.
316
317 nlemma eqinstrmode_to_eq29 : ∀i2.eq_instrmode MODE_IX1p_and_IMM1 i2 = true → MODE_IX1p_and_IMM1 = i2.
318  #i2; ncases i2; nnormalize;
319  ##[ ##29: #H; napply (refl_eq ??)
320  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
321  ##| ##*: #H; napply (bool_destruct ??? H)
322  ##]
323 nqed.
324
325 nlemma eqinstrmode_to_eq30 : ∀i2.eq_instrmode MODE_SP1_and_IMM1 i2 = true → MODE_SP1_and_IMM1 = i2.
326  #i2; ncases i2; nnormalize;
327  ##[ ##30: #H; napply (refl_eq ??)
328  ##| ##31,32,33,34: #n; #H; napply (bool_destruct ??? H)
329  ##| ##*: #H; napply (bool_destruct ??? H)
330  ##]
331 nqed.
332
333 nlemma eqinstrmode_to_eq31 : ∀n1,i2.eq_instrmode (MODE_DIRn n1) i2 = true → MODE_DIRn n1 = i2.
334  #n1; #i2; ncases i2;
335  ##[ ##31: #n2; #H;
336      nchange in H:(%) with (eq_oct n1 n2 = true);
337      nrewrite > (eqoct_to_eq ?? H);
338      napply (refl_eq ??)
339  ##| ##32,33,34: nnormalize; #n2; #H; napply (bool_destruct ??? H)
340  ##| ##*: nnormalize; #H; napply (bool_destruct ??? H)
341  ##]
342 nqed.
343
344 nlemma eqinstrmode_to_eq32 : ∀n1,i2.eq_instrmode (MODE_DIRn_and_IMM1 n1) i2 = true → MODE_DIRn_and_IMM1 n1 = i2.
345  #n1; #i2; ncases i2;
346  ##[ ##32: #n2; #H;
347      nchange in H:(%) with (eq_oct n1 n2 = true);
348      nrewrite > (eqoct_to_eq ?? H);
349      napply (refl_eq ??)
350  ##| ##31,33,34: nnormalize; #n2; #H; napply (bool_destruct ??? H)
351  ##| ##*: nnormalize; #H; napply (bool_destruct ??? H)
352  ##]
353 nqed.
354
355 nlemma eqinstrmode_to_eq33 : ∀n1,i2.eq_instrmode (MODE_TNY n1) i2 = true → MODE_TNY n1 = i2.
356  #n1; #i2; ncases i2;
357  ##[ ##33: #n2; #H;
358      nchange in H:(%) with (eq_ex n1 n2 = true);
359      nrewrite > (eqex_to_eq ?? H);
360      napply (refl_eq ??)
361  ##| ##31,32,34: nnormalize; #n2; #H; napply (bool_destruct ??? H)
362  ##| ##*: nnormalize; #H; napply (bool_destruct ??? H)
363  ##]
364 nqed.
365
366 nlemma eqinstrmode_to_eq34 : ∀n1,i2.eq_instrmode (MODE_SRT n1) i2 = true → MODE_SRT n1 = i2.
367  #n1; #i2; ncases i2;
368  ##[ ##34: #n2; #H;
369      nchange in H:(%) with (eq_bitrig n1 n2 = true);
370      nrewrite > (eqbitrig_to_eq ?? H);
371      napply (refl_eq ??)
372  ##| ##31,32,33: nnormalize; #n2; #H; napply (bool_destruct ??? H)
373  ##| ##*: nnormalize; #H; napply (bool_destruct ??? H)
374  ##]
375 nqed.
376
377 nlemma eqinstrmode_to_eq : ∀i1,i2.eq_instrmode i1 i2 = true → i1 = i2.
378  #i1; ncases i1;
379  ##[ ##1: napply eqinstrmode_to_eq1 ##| ##2: napply eqinstrmode_to_eq2
380  ##| ##3: napply eqinstrmode_to_eq3 ##| ##4: napply eqinstrmode_to_eq4
381  ##| ##5: napply eqinstrmode_to_eq5 ##| ##6: napply eqinstrmode_to_eq6
382  ##| ##7: napply eqinstrmode_to_eq7 ##| ##8: napply eqinstrmode_to_eq8
383  ##| ##9: napply eqinstrmode_to_eq9 ##| ##10: napply eqinstrmode_to_eq10
384  ##| ##11: napply eqinstrmode_to_eq11 ##| ##12: napply eqinstrmode_to_eq12
385  ##| ##13: napply eqinstrmode_to_eq13 ##| ##14: napply eqinstrmode_to_eq14
386  ##| ##15: napply eqinstrmode_to_eq15 ##| ##16: napply eqinstrmode_to_eq16
387  ##| ##17: napply eqinstrmode_to_eq17 ##| ##18: napply eqinstrmode_to_eq18
388  ##| ##19: napply eqinstrmode_to_eq19 ##| ##20: napply eqinstrmode_to_eq20
389  ##| ##21: napply eqinstrmode_to_eq21 ##| ##22: napply eqinstrmode_to_eq22
390  ##| ##23: napply eqinstrmode_to_eq23 ##| ##24: napply eqinstrmode_to_eq24
391  ##| ##25: napply eqinstrmode_to_eq25 ##| ##26: napply eqinstrmode_to_eq26
392  ##| ##27: napply eqinstrmode_to_eq27 ##| ##28: napply eqinstrmode_to_eq28
393  ##| ##29: napply eqinstrmode_to_eq29 ##| ##30: napply eqinstrmode_to_eq30
394  ##| ##31: napply eqinstrmode_to_eq31 ##| ##32: napply eqinstrmode_to_eq32
395  ##| ##33: napply eqinstrmode_to_eq33 ##| ##34: napply eqinstrmode_to_eq34
396  ##]
397 nqed. 
398
399 nlemma eq_to_eqinstrmode1 : ∀i2.MODE_INH = i2 → eq_instrmode MODE_INH i2 = true.
400  #t2; ncases t2; nnormalize;
401  ##[ ##1: #H; napply (refl_eq ??)
402  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
403  ##| ##*: #H; napply (instr_mode_destruct ??? H)
404  ##]
405 nqed.
406
407 nlemma eq_to_eqinstrmode2 : ∀i2.MODE_INHA = i2 → eq_instrmode MODE_INHA i2 = true.
408  #t2; ncases t2; nnormalize;
409  ##[ ##2: #H; napply (refl_eq ??)
410  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
411  ##| ##*: #H; napply (instr_mode_destruct ??? H)
412  ##]
413 nqed.
414
415 nlemma eq_to_eqinstrmode3 : ∀i2.MODE_INHX = i2 → eq_instrmode MODE_INHX i2 = true.
416  #t2; ncases t2; nnormalize;
417  ##[ ##3: #H; napply (refl_eq ??)
418  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
419  ##| ##*: #H; napply (instr_mode_destruct ??? H)
420  ##]
421 nqed.
422
423 nlemma eq_to_eqinstrmode4 : ∀i2.MODE_INHH = i2 → eq_instrmode MODE_INHH i2 = true.
424  #t2; ncases t2; nnormalize;
425  ##[ ##4: #H; napply (refl_eq ??)
426  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
427  ##| ##*: #H; napply (instr_mode_destruct ??? H)
428  ##]
429 nqed.
430
431 nlemma eq_to_eqinstrmode5 : ∀i2.MODE_INHX0ADD = i2 → eq_instrmode MODE_INHX0ADD i2 = true.
432  #t2; ncases t2; nnormalize;
433  ##[ ##5: #H; napply (refl_eq ??)
434  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
435  ##| ##*: #H; napply (instr_mode_destruct ??? H)
436  ##]
437 nqed.
438
439 nlemma eq_to_eqinstrmode6 : ∀i2.MODE_INHX1ADD = i2 → eq_instrmode MODE_INHX1ADD i2 = true.
440  #t2; ncases t2; nnormalize;
441  ##[ ##6: #H; napply (refl_eq ??)
442  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
443  ##| ##*: #H; napply (instr_mode_destruct ??? H)
444  ##]
445 nqed.
446
447 nlemma eq_to_eqinstrmode7 : ∀i2.MODE_INHX2ADD = i2 → eq_instrmode MODE_INHX2ADD i2 = true.
448  #t2; ncases t2; nnormalize;
449  ##[ ##7: #H; napply (refl_eq ??)
450  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
451  ##| ##*: #H; napply (instr_mode_destruct ??? H)
452  ##]
453 nqed.
454
455 nlemma eq_to_eqinstrmode8 : ∀i2.MODE_IMM1 = i2 → eq_instrmode MODE_IMM1 i2 = true.
456  #t2; ncases t2; nnormalize;
457  ##[ ##8: #H; napply (refl_eq ??)
458  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
459  ##| ##*: #H; napply (instr_mode_destruct ??? H)
460  ##]
461 nqed.
462
463 nlemma eq_to_eqinstrmode9 : ∀i2.MODE_IMM1EXT = i2 → eq_instrmode MODE_IMM1EXT i2 = true.
464  #t2; ncases t2; nnormalize;
465  ##[ ##9: #H; napply (refl_eq ??)
466  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
467  ##| ##*: #H; napply (instr_mode_destruct ??? H)
468  ##]
469 nqed.
470
471 nlemma eq_to_eqinstrmode10 : ∀i2.MODE_IMM2 = i2 → eq_instrmode MODE_IMM2 i2 = true.
472  #t2; ncases t2; nnormalize;
473  ##[ ##10: #H; napply (refl_eq ??)
474  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
475  ##| ##*: #H; napply (instr_mode_destruct ??? H)
476  ##]
477 nqed.
478
479 nlemma eq_to_eqinstrmode11 : ∀i2.MODE_DIR1 = i2 → eq_instrmode MODE_DIR1 i2 = true.
480  #t2; ncases t2; nnormalize;
481  ##[ ##11: #H; napply (refl_eq ??)
482  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
483  ##| ##*: #H; napply (instr_mode_destruct ??? H)
484  ##]
485 nqed.
486
487 nlemma eq_to_eqinstrmode12 : ∀i2.MODE_DIR2 = i2 → eq_instrmode MODE_DIR2 i2 = true.
488  #t2; ncases t2; nnormalize;
489  ##[ ##12: #H; napply (refl_eq ??)
490  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
491  ##| ##*: #H; napply (instr_mode_destruct ??? H)
492  ##]
493 nqed.
494
495 nlemma eq_to_eqinstrmode13 : ∀i2.MODE_IX0 = i2 → eq_instrmode MODE_IX0 i2 = true.
496  #t2; ncases t2; nnormalize;
497  ##[ ##13: #H; napply (refl_eq ??)
498  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
499  ##| ##*: #H; napply (instr_mode_destruct ??? H)
500  ##]
501 nqed.
502
503 nlemma eq_to_eqinstrmode14 : ∀i2.MODE_IX1 = i2 → eq_instrmode MODE_IX1 i2 = true.
504  #t2; ncases t2; nnormalize;
505  ##[ ##14: #H; napply (refl_eq ??)
506  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
507  ##| ##*: #H; napply (instr_mode_destruct ??? H)
508  ##]
509 nqed.
510
511 nlemma eq_to_eqinstrmode15 : ∀i2.MODE_IX2 = i2 → eq_instrmode MODE_IX2 i2 = true.
512  #t2; ncases t2; nnormalize;
513  ##[ ##15: #H; napply (refl_eq ??)
514  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
515  ##| ##*: #H; napply (instr_mode_destruct ??? H)
516  ##]
517 nqed.
518
519 nlemma eq_to_eqinstrmode16 : ∀i2.MODE_SP1 = i2 → eq_instrmode MODE_SP1 i2 = true.
520  #t2; ncases t2; nnormalize;
521  ##[ ##16: #H; napply (refl_eq ??)
522  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
523  ##| ##*: #H; napply (instr_mode_destruct ??? H)
524  ##]
525 nqed.
526
527 nlemma eq_to_eqinstrmode17 : ∀i2.MODE_SP2 = i2 → eq_instrmode MODE_SP2 i2 = true.
528  #t2; ncases t2; nnormalize;
529  ##[ ##17: #H; napply (refl_eq ??)
530  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
531  ##| ##*: #H; napply (instr_mode_destruct ??? H)
532  ##]
533 nqed.
534
535 nlemma eq_to_eqinstrmode18 : ∀i2.MODE_DIR1_to_DIR1 = i2 → eq_instrmode MODE_DIR1_to_DIR1 i2 = true.
536  #t2; ncases t2; nnormalize;
537  ##[ ##18: #H; napply (refl_eq ??)
538  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
539  ##| ##*: #H; napply (instr_mode_destruct ??? H)
540  ##]
541 nqed.
542
543 nlemma eq_to_eqinstrmode19 : ∀i2.MODE_IMM1_to_DIR1 = i2 → eq_instrmode MODE_IMM1_to_DIR1 i2 = true.
544  #t2; ncases t2; nnormalize;
545  ##[ ##19: #H; napply (refl_eq ??)
546  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
547  ##| ##*: #H; napply (instr_mode_destruct ??? H)
548  ##]
549 nqed.
550
551 nlemma eq_to_eqinstrmode20 : ∀i2.MODE_IX0p_to_DIR1 = i2 → eq_instrmode MODE_IX0p_to_DIR1 i2 = true.
552  #t2; ncases t2; nnormalize;
553  ##[ ##20: #H; napply (refl_eq ??)
554  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
555  ##| ##*: #H; napply (instr_mode_destruct ??? H)
556  ##]
557 nqed.
558
559 nlemma eq_to_eqinstrmode21 : ∀i2.MODE_DIR1_to_IX0p = i2 → eq_instrmode MODE_DIR1_to_IX0p i2 = true.
560  #t2; ncases t2; nnormalize;
561  ##[ ##21: #H; napply (refl_eq ??)
562  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
563  ##| ##*: #H; napply (instr_mode_destruct ??? H)
564  ##]
565 nqed.
566
567 nlemma eq_to_eqinstrmode22 : ∀i2.MODE_INHA_and_IMM1 = i2 → eq_instrmode MODE_INHA_and_IMM1 i2 = true.
568  #t2; ncases t2; nnormalize;
569  ##[ ##22: #H; napply (refl_eq ??)
570  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
571  ##| ##*: #H; napply (instr_mode_destruct ??? H)
572  ##]
573 nqed.
574
575 nlemma eq_to_eqinstrmode23 : ∀i2.MODE_INHX_and_IMM1 = i2 → eq_instrmode MODE_INHX_and_IMM1 i2 = true.
576  #t2; ncases t2; nnormalize;
577  ##[ ##23: #H; napply (refl_eq ??)
578  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
579  ##| ##*: #H; napply (instr_mode_destruct ??? H)
580  ##]
581 nqed.
582
583 nlemma eq_to_eqinstrmode24 : ∀i2.MODE_IMM1_and_IMM1 = i2 → eq_instrmode MODE_IMM1_and_IMM1 i2 = true.
584  #t2; ncases t2; nnormalize;
585  ##[ ##24: #H; napply (refl_eq ??)
586  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
587  ##| ##*: #H; napply (instr_mode_destruct ??? H)
588  ##]
589 nqed.
590
591 nlemma eq_to_eqinstrmode25 : ∀i2.MODE_DIR1_and_IMM1 = i2 → eq_instrmode MODE_DIR1_and_IMM1 i2 = true.
592  #t2; ncases t2; nnormalize;
593  ##[ ##25: #H; napply (refl_eq ??)
594  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
595  ##| ##*: #H; napply (instr_mode_destruct ??? H)
596  ##]
597 nqed.
598
599 nlemma eq_to_eqinstrmode26 : ∀i2.MODE_IX0_and_IMM1 = i2 → eq_instrmode MODE_IX0_and_IMM1 i2 = true.
600  #t2; ncases t2; nnormalize;
601  ##[ ##26: #H; napply (refl_eq ??)
602  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
603  ##| ##*: #H; napply (instr_mode_destruct ??? H)
604  ##]
605 nqed.
606
607 nlemma eq_to_eqinstrmode27 : ∀i2.MODE_IX0p_and_IMM1 = i2 → eq_instrmode MODE_IX0p_and_IMM1 i2 = true.
608  #t2; ncases t2; nnormalize;
609  ##[ ##27: #H; napply (refl_eq ??)
610  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
611  ##| ##*: #H; napply (instr_mode_destruct ??? H)
612  ##]
613 nqed.
614
615 nlemma eq_to_eqinstrmode28 : ∀i2.MODE_IX1_and_IMM1 = i2 → eq_instrmode MODE_IX1_and_IMM1 i2 = true.
616  #t2; ncases t2; nnormalize;
617  ##[ ##28: #H; napply (refl_eq ??)
618  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
619  ##| ##*: #H; napply (instr_mode_destruct ??? H)
620  ##]
621 nqed.
622
623 nlemma eq_to_eqinstrmode29 : ∀i2.MODE_IX1p_and_IMM1 = i2 → eq_instrmode MODE_IX1p_and_IMM1 i2 = true.
624  #t2; ncases t2; nnormalize;
625  ##[ ##29: #H; napply (refl_eq ??)
626  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
627  ##| ##*: #H; napply (instr_mode_destruct ??? H)
628  ##]
629 nqed.
630
631 nlemma eq_to_eqinstrmode30 : ∀i2.MODE_SP1_and_IMM1 = i2 → eq_instrmode MODE_SP1_and_IMM1 i2 = true.
632  #t2; ncases t2; nnormalize;
633  ##[ ##30: #H; napply (refl_eq ??)
634  ##| ##31,32,33,34: #n; #H; napply (instr_mode_destruct ??? H)
635  ##| ##*: #H; napply (instr_mode_destruct ??? H)
636  ##]
637 nqed.
638
639 nlemma eq_to_eqinstrmode31 : ∀n1,i2.MODE_DIRn n1 = i2 → eq_instrmode (MODE_DIRn n1) i2 = true.
640  #n1; #t2; ncases t2;
641  ##[ ##31: #n2; #H;
642      nchange with (eq_oct n1 n2 = true);
643      nrewrite > (instr_mode_destruct_MODE_DIRn ?? H);
644      nrewrite > (eq_to_eqoct n2 n2 (refl_eq ??));
645      napply (refl_eq ??)
646  ##| ##32,33,34: #n; #H; nnormalize; napply (instr_mode_destruct ??? H)
647  ##| ##*: #H; nnormalize; napply (instr_mode_destruct ??? H)
648  ##]
649 nqed.
650
651 nlemma eq_to_eqinstrmode32 : ∀n1,i2.MODE_DIRn_and_IMM1 n1 = i2 → eq_instrmode (MODE_DIRn_and_IMM1 n1) i2 = true.
652  #n1; #t2; ncases t2;
653  ##[ ##32: #n2; #H;
654      nchange with (eq_oct n1 n2 = true);
655      nrewrite > (instr_mode_destruct_MODE_DIRn_and_IMM1 ?? H);
656      nrewrite > (eq_to_eqoct n2 n2 (refl_eq ??));
657      napply (refl_eq ??)
658  ##| ##31,33,34: #n; #H; nnormalize; napply (instr_mode_destruct ??? H)
659  ##| ##*: #H; nnormalize; napply (instr_mode_destruct ??? H)
660  ##]
661 nqed.
662
663 nlemma eq_to_eqinstrmode33 : ∀n1,i2.MODE_TNY n1 = i2 → eq_instrmode (MODE_TNY n1) i2 = true.
664  #n1; #t2; ncases t2;
665  ##[ ##33: #n2; #H;
666      nchange with (eq_ex n1 n2 = true);
667      nrewrite > (instr_mode_destruct_MODE_TNY ?? H);
668      nrewrite > (eq_to_eqex n2 n2 (refl_eq ??));
669      napply (refl_eq ??)
670  ##| ##31,32,34: #n; #H; nnormalize; napply (instr_mode_destruct ??? H)
671  ##| ##*: #H; nnormalize; napply (instr_mode_destruct ??? H)
672  ##]
673 nqed.
674
675 nlemma eq_to_eqinstrmode34 : ∀n1,i2.MODE_SRT n1 = i2 → eq_instrmode (MODE_SRT n1) i2 = true.
676  #n1; #t2; ncases t2;
677  ##[ ##34: #n2; #H;
678      nchange with (eq_bitrig n1 n2 = true);
679      nrewrite > (instr_mode_destruct_MODE_SRT ?? H);
680      nrewrite > (eq_to_eqbitrig n2 n2 (refl_eq ??));
681      napply (refl_eq ??)
682  ##| ##31,32,33: #n; #H; nnormalize; napply (instr_mode_destruct ??? H)
683  ##| ##*: #H; nnormalize; napply (instr_mode_destruct ??? H)
684  ##]
685 nqed.
686
687 nlemma eq_to_eqinstrmode : ∀i1,i2.i1 = i2 → eq_instrmode i1 i2 = true.
688  #i1; ncases i1;
689  ##[ ##1: napply eq_to_eqinstrmode1 ##| ##2: napply eq_to_eqinstrmode2
690  ##| ##3: napply eq_to_eqinstrmode3 ##| ##4: napply eq_to_eqinstrmode4
691  ##| ##5: napply eq_to_eqinstrmode5 ##| ##6: napply eq_to_eqinstrmode6
692  ##| ##7: napply eq_to_eqinstrmode7 ##| ##8: napply eq_to_eqinstrmode8
693  ##| ##9: napply eq_to_eqinstrmode9 ##| ##10: napply eq_to_eqinstrmode10 
694  ##| ##11: napply eq_to_eqinstrmode11 ##| ##12: napply eq_to_eqinstrmode12
695  ##| ##13: napply eq_to_eqinstrmode13 ##| ##14: napply eq_to_eqinstrmode14
696  ##| ##15: napply eq_to_eqinstrmode15 ##| ##16: napply eq_to_eqinstrmode16
697  ##| ##17: napply eq_to_eqinstrmode17 ##| ##18: napply eq_to_eqinstrmode18
698  ##| ##19: napply eq_to_eqinstrmode19 ##| ##20: napply eq_to_eqinstrmode20
699  ##| ##21: napply eq_to_eqinstrmode21 ##| ##22: napply eq_to_eqinstrmode22
700  ##| ##23: napply eq_to_eqinstrmode23 ##| ##24: napply eq_to_eqinstrmode24
701  ##| ##25: napply eq_to_eqinstrmode25 ##| ##26: napply eq_to_eqinstrmode26
702  ##| ##27: napply eq_to_eqinstrmode27 ##| ##28: napply eq_to_eqinstrmode28
703  ##| ##29: napply eq_to_eqinstrmode29 ##| ##30: napply eq_to_eqinstrmode30
704  ##| ##31: napply eq_to_eqinstrmode31 ##| ##32: napply eq_to_eqinstrmode32
705  ##| ##33: napply eq_to_eqinstrmode33 ##| ##34: napply eq_to_eqinstrmode34
706  ##]
707 nqed.