1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* ********************************************************************** *)
16 (* Progetto FreeScale *)
19 (* Cosimo Oliboni, oliboni@cs.unibo.it *)
21 (* Questo materiale fa parte della tesi: *)
22 (* "Formalizzazione Interattiva dei Microcontroller a 8bit FreeScale" *)
24 (* data ultima modifica 15/11/2007 *)
25 (* ********************************************************************** *)
27 include "freescale/bool_lemmas.ma".
28 include "freescale/opcode_base.ma".
30 (* ********************************************** *)
31 (* MATTONI BASE PER DEFINIRE LE TABELLE DELLE MCU *)
32 (* ********************************************** *)
34 ndefinition opcode_destruct1 : Πop2.ΠP:Prop.ADC = op2 → match op2 with [ ADC ⇒ P → P | _ ⇒ P ].
35 #op2; #P; ncases op2; nnormalize;
36 ##[ ##1: #H; napply (λx:P.x)
37 ##| ##*: #H; napply (False_ind ??);
38 nchange with (match ADC with [ ADC ⇒ False | _ ⇒ True ]);
39 nrewrite > H; nnormalize; napply I
43 ndefinition opcode_destruct2 : Πop2.ΠP:Prop.ADD = op2 → match op2 with [ ADD ⇒ P → P | _ ⇒ P ].
44 #op2; #P; ncases op2; nnormalize;
45 ##[ ##2: #H; napply (λx:P.x)
46 ##| ##*: #H; napply (False_ind ??);
47 nchange with (match ADD with [ ADD ⇒ False | _ ⇒ True ]);
48 nrewrite > H; nnormalize; napply I
52 ndefinition opcode_destruct3 : Πop2.ΠP:Prop.AIS = op2 → match op2 with [ AIS ⇒ P → P | _ ⇒ P ].
53 #op2; #P; ncases op2; nnormalize;
54 ##[ ##3: #H; napply (λx:P.x)
55 ##| ##*: #H; napply (False_ind ??);
56 nchange with (match AIS with [ AIS ⇒ False | _ ⇒ True ]);
57 nrewrite > H; nnormalize; napply I
61 ndefinition opcode_destruct4 : Πop2.ΠP:Prop.AIX = op2 → match op2 with [ AIX ⇒ P → P | _ ⇒ P ].
62 #op2; #P; ncases op2; nnormalize;
63 ##[ ##4: #H; napply (λx:P.x)
64 ##| ##*: #H; napply (False_ind ??);
65 nchange with (match AIX with [ AIX ⇒ False | _ ⇒ True ]);
66 nrewrite > H; nnormalize; napply I
70 ndefinition opcode_destruct5 : Πop2.ΠP:Prop.AND = op2 → match op2 with [ AND ⇒ P → P | _ ⇒ P ].
71 #op2; #P; ncases op2; nnormalize;
72 ##[ ##5: #H; napply (λx:P.x)
73 ##| ##*: #H; napply (False_ind ??);
74 nchange with (match AND with [ AND ⇒ False | _ ⇒ True ]);
75 nrewrite > H; nnormalize; napply I
79 ndefinition opcode_destruct6 : Πop2.ΠP:Prop.ASL = op2 → match op2 with [ ASL ⇒ P → P | _ ⇒ P ].
80 #op2; #P; ncases op2; nnormalize;
81 ##[ ##6: #H; napply (λx:P.x)
82 ##| ##*: #H; napply (False_ind ??);
83 nchange with (match ASL with [ ASL ⇒ False | _ ⇒ True ]);
84 nrewrite > H; nnormalize; napply I
88 ndefinition opcode_destruct7 : Πop2.ΠP:Prop.ASR = op2 → match op2 with [ ASR ⇒ P → P | _ ⇒ P ].
89 #op2; #P; ncases op2; nnormalize;
90 ##[ ##7: #H; napply (λx:P.x)
91 ##| ##*: #H; napply (False_ind ??);
92 nchange with (match ASR with [ ASR ⇒ False | _ ⇒ True ]);
93 nrewrite > H; nnormalize; napply I
97 ndefinition opcode_destruct8 : Πop2.ΠP:Prop.BCC = op2 → match op2 with [ BCC ⇒ P → P | _ ⇒ P ].
98 #op2; #P; ncases op2; nnormalize;
99 ##[ ##8: #H; napply (λx:P.x)
100 ##| ##*: #H; napply (False_ind ??);
101 nchange with (match BCC with [ BCC ⇒ False | _ ⇒ True ]);
102 nrewrite > H; nnormalize; napply I
106 ndefinition opcode_destruct9 : Πop2.ΠP:Prop.BCLRn = op2 → match op2 with [ BCLRn ⇒ P → P | _ ⇒ P ].
107 #op2; #P; ncases op2; nnormalize;
108 ##[ ##9: #H; napply (λx:P.x)
109 ##| ##*: #H; napply (False_ind ??);
110 nchange with (match BCLRn with [ BCLRn ⇒ False | _ ⇒ True ]);
111 nrewrite > H; nnormalize; napply I
115 ndefinition opcode_destruct10 : Πop2.ΠP:Prop.BCS = op2 → match op2 with [ BCS ⇒ P → P | _ ⇒ P ].
116 #op2; #P; ncases op2; nnormalize;
117 ##[ ##10: #H; napply (λx:P.x)
118 ##| ##*: #H; napply (False_ind ??);
119 nchange with (match BCS with [ BCS ⇒ False | _ ⇒ True ]);
120 nrewrite > H; nnormalize; napply I
124 ndefinition opcode_destruct11 : Πop2.ΠP:Prop.BEQ = op2 → match op2 with [ BEQ ⇒ P → P | _ ⇒ P ].
125 #op2; #P; ncases op2; nnormalize;
126 ##[ ##11: #H; napply (λx:P.x)
127 ##| ##*: #H; napply (False_ind ??);
128 nchange with (match BEQ with [ BEQ ⇒ False | _ ⇒ True ]);
129 nrewrite > H; nnormalize; napply I
133 ndefinition opcode_destruct12 : Πop2.ΠP:Prop.BGE = op2 → match op2 with [ BGE ⇒ P → P | _ ⇒ P ].
134 #op2; #P; ncases op2; nnormalize;
135 ##[ ##12: #H; napply (λx:P.x)
136 ##| ##*: #H; napply (False_ind ??);
137 nchange with (match BGE with [ BGE ⇒ False | _ ⇒ True ]);
138 nrewrite > H; nnormalize; napply I
142 ndefinition opcode_destruct13 : Πop2.ΠP:Prop.BGND = op2 → match op2 with [ BGND ⇒ P → P | _ ⇒ P ].
143 #op2; #P; ncases op2; nnormalize;
144 ##[ ##13: #H; napply (λx:P.x)
145 ##| ##*: #H; napply (False_ind ??);
146 nchange with (match BGND with [ BGND ⇒ False | _ ⇒ True ]);
147 nrewrite > H; nnormalize; napply I
151 ndefinition opcode_destruct14 : Πop2.ΠP:Prop.BGT = op2 → match op2 with [ BGT ⇒ P → P | _ ⇒ P ].
152 #op2; #P; ncases op2; nnormalize;
153 ##[ ##14: #H; napply (λx:P.x)
154 ##| ##*: #H; napply (False_ind ??);
155 nchange with (match BGT with [ BGT ⇒ False | _ ⇒ True ]);
156 nrewrite > H; nnormalize; napply I
160 ndefinition opcode_destruct15 : Πop2.ΠP:Prop.BHCC = op2 → match op2 with [ BHCC ⇒ P → P | _ ⇒ P ].
161 #op2; #P; ncases op2; nnormalize;
162 ##[ ##15: #H; napply (λx:P.x)
163 ##| ##*: #H; napply (False_ind ??);
164 nchange with (match BHCC with [ BHCC ⇒ False | _ ⇒ True ]);
165 nrewrite > H; nnormalize; napply I
169 ndefinition opcode_destruct16 : Πop2.ΠP:Prop.BHCS = op2 → match op2 with [ BHCS ⇒ P → P | _ ⇒ P ].
170 #op2; #P; ncases op2; nnormalize;
171 ##[ ##16: #H; napply (λx:P.x)
172 ##| ##*: #H; napply (False_ind ??);
173 nchange with (match BHCS with [ BHCS ⇒ False | _ ⇒ True ]);
174 nrewrite > H; nnormalize; napply I
178 ndefinition opcode_destruct17 : Πop2.ΠP:Prop.BHI = op2 → match op2 with [ BHI ⇒ P → P | _ ⇒ P ].
179 #op2; #P; ncases op2; nnormalize;
180 ##[ ##17: #H; napply (λx:P.x)
181 ##| ##*: #H; napply (False_ind ??);
182 nchange with (match BHI with [ BHI ⇒ False | _ ⇒ True ]);
183 nrewrite > H; nnormalize; napply I
187 ndefinition opcode_destruct18 : Πop2.ΠP:Prop.BIH = op2 → match op2 with [ BIH ⇒ P → P | _ ⇒ P ].
188 #op2; #P; ncases op2; nnormalize;
189 ##[ ##18: #H; napply (λx:P.x)
190 ##| ##*: #H; napply (False_ind ??);
191 nchange with (match BIH with [ BIH ⇒ False | _ ⇒ True ]);
192 nrewrite > H; nnormalize; napply I
196 ndefinition opcode_destruct19 : Πop2.ΠP:Prop.BIL = op2 → match op2 with [ BIL ⇒ P → P | _ ⇒ P ].
197 #op2; #P; ncases op2; nnormalize;
198 ##[ ##19: #H; napply (λx:P.x)
199 ##| ##*: #H; napply (False_ind ??);
200 nchange with (match BIL with [ BIL ⇒ False | _ ⇒ True ]);
201 nrewrite > H; nnormalize; napply I
205 ndefinition opcode_destruct20 : Πop2.ΠP:Prop.BIT = op2 → match op2 with [ BIT ⇒ P → P | _ ⇒ P ].
206 #op2; #P; ncases op2; nnormalize;
207 ##[ ##20: #H; napply (λx:P.x)
208 ##| ##*: #H; napply (False_ind ??);
209 nchange with (match BIT with [ BIT ⇒ False | _ ⇒ True ]);
210 nrewrite > H; nnormalize; napply I
214 ndefinition opcode_destruct21 : Πop2.ΠP:Prop.BLE = op2 → match op2 with [ BLE ⇒ P → P | _ ⇒ P ].
215 #op2; #P; ncases op2; nnormalize;
216 ##[ ##21: #H; napply (λx:P.x)
217 ##| ##*: #H; napply (False_ind ??);
218 nchange with (match BLE with [ BLE ⇒ False | _ ⇒ True ]);
219 nrewrite > H; nnormalize; napply I
223 ndefinition opcode_destruct22 : Πop2.ΠP:Prop.BLS = op2 → match op2 with [ BLS ⇒ P → P | _ ⇒ P ].
224 #op2; #P; ncases op2; nnormalize;
225 ##[ ##22: #H; napply (λx:P.x)
226 ##| ##*: #H; napply (False_ind ??);
227 nchange with (match BLS with [ BLS ⇒ False | _ ⇒ True ]);
228 nrewrite > H; nnormalize; napply I
232 ndefinition opcode_destruct23 : Πop2.ΠP:Prop.BLT = op2 → match op2 with [ BLT ⇒ P → P | _ ⇒ P ].
233 #op2; #P; ncases op2; nnormalize;
234 ##[ ##23: #H; napply (λx:P.x)
235 ##| ##*: #H; napply (False_ind ??);
236 nchange with (match BLT with [ BLT ⇒ False | _ ⇒ True ]);
237 nrewrite > H; nnormalize; napply I
241 ndefinition opcode_destruct24 : Πop2.ΠP:Prop.BMC = op2 → match op2 with [ BMC ⇒ P → P | _ ⇒ P ].
242 #op2; #P; ncases op2; nnormalize;
243 ##[ ##24: #H; napply (λx:P.x)
244 ##| ##*: #H; napply (False_ind ??);
245 nchange with (match BMC with [ BMC ⇒ False | _ ⇒ True ]);
246 nrewrite > H; nnormalize; napply I
250 ndefinition opcode_destruct25 : Πop2.ΠP:Prop.BMI = op2 → match op2 with [ BMI ⇒ P → P | _ ⇒ P ].
251 #op2; #P; ncases op2; nnormalize;
252 ##[ ##25: #H; napply (λx:P.x)
253 ##| ##*: #H; napply (False_ind ??);
254 nchange with (match BMI with [ BMI ⇒ False | _ ⇒ True ]);
255 nrewrite > H; nnormalize; napply I
259 ndefinition opcode_destruct26 : Πop2.ΠP:Prop.BMS = op2 → match op2 with [ BMS ⇒ P → P | _ ⇒ P ].
260 #op2; #P; ncases op2; nnormalize;
261 ##[ ##26: #H; napply (λx:P.x)
262 ##| ##*: #H; napply (False_ind ??);
263 nchange with (match BMS with [ BMS ⇒ False | _ ⇒ True ]);
264 nrewrite > H; nnormalize; napply I
268 ndefinition opcode_destruct27 : Πop2.ΠP:Prop.BNE = op2 → match op2 with [ BNE ⇒ P → P | _ ⇒ P ].
269 #op2; #P; ncases op2; nnormalize;
270 ##[ ##27: #H; napply (λx:P.x)
271 ##| ##*: #H; napply (False_ind ??);
272 nchange with (match BNE with [ BNE ⇒ False | _ ⇒ True ]);
273 nrewrite > H; nnormalize; napply I
277 ndefinition opcode_destruct28 : Πop2.ΠP:Prop.BPL = op2 → match op2 with [ BPL ⇒ P → P | _ ⇒ P ].
278 #op2; #P; ncases op2; nnormalize;
279 ##[ ##28: #H; napply (λx:P.x)
280 ##| ##*: #H; napply (False_ind ??);
281 nchange with (match BPL with [ BPL ⇒ False | _ ⇒ True ]);
282 nrewrite > H; nnormalize; napply I
286 ndefinition opcode_destruct29 : Πop2.ΠP:Prop.BRA = op2 → match op2 with [ BRA ⇒ P → P | _ ⇒ P ].
287 #op2; #P; ncases op2; nnormalize;
288 ##[ ##29: #H; napply (λx:P.x)
289 ##| ##*: #H; napply (False_ind ??);
290 nchange with (match BRA with [ BRA ⇒ False | _ ⇒ True ]);
291 nrewrite > H; nnormalize; napply I
295 ndefinition opcode_destruct30 : Πop2.ΠP:Prop.BRCLRn = op2 → match op2 with [ BRCLRn ⇒ P → P | _ ⇒ P ].
296 #op2; #P; ncases op2; nnormalize;
297 ##[ ##30: #H; napply (λx:P.x)
298 ##| ##*: #H; napply (False_ind ??);
299 nchange with (match BRCLRn with [ BRCLRn ⇒ False | _ ⇒ True ]);
300 nrewrite > H; nnormalize; napply I
304 ndefinition opcode_destruct31 : Πop2.ΠP:Prop.BRN = op2 → match op2 with [ BRN ⇒ P → P | _ ⇒ P ].
305 #op2; #P; ncases op2; nnormalize;
306 ##[ ##31: #H; napply (λx:P.x)
307 ##| ##*: #H; napply (False_ind ??);
308 nchange with (match BRN with [ BRN ⇒ False | _ ⇒ True ]);
309 nrewrite > H; nnormalize; napply I
313 ndefinition opcode_destruct32 : Πop2.ΠP:Prop.BRSETn = op2 → match op2 with [ BRSETn ⇒ P → P | _ ⇒ P ].
314 #op2; #P; ncases op2; nnormalize;
315 ##[ ##32: #H; napply (λx:P.x)
316 ##| ##*: #H; napply (False_ind ??);
317 nchange with (match BRSETn with [ BRSETn ⇒ False | _ ⇒ True ]);
318 nrewrite > H; nnormalize; napply I
322 ndefinition opcode_destruct33 : Πop2.ΠP:Prop.BSETn = op2 → match op2 with [ BSETn ⇒ P → P | _ ⇒ P ].
323 #op2; #P; ncases op2; nnormalize;
324 ##[ ##33: #H; napply (λx:P.x)
325 ##| ##*: #H; napply (False_ind ??);
326 nchange with (match BSETn with [ BSETn ⇒ False | _ ⇒ True ]);
327 nrewrite > H; nnormalize; napply I
331 ndefinition opcode_destruct34 : Πop2.ΠP:Prop.BSR = op2 → match op2 with [ BSR ⇒ P → P | _ ⇒ P ].
332 #op2; #P; ncases op2; nnormalize;
333 ##[ ##34: #H; napply (λx:P.x)
334 ##| ##*: #H; napply (False_ind ??);
335 nchange with (match BSR with [ BSR ⇒ False | _ ⇒ True ]);
336 nrewrite > H; nnormalize; napply I
340 ndefinition opcode_destruct35 : Πop2.ΠP:Prop.CBEQA = op2 → match op2 with [ CBEQA ⇒ P → P | _ ⇒ P ].
341 #op2; #P; ncases op2; nnormalize;
342 ##[ ##35: #H; napply (λx:P.x)
343 ##| ##*: #H; napply (False_ind ??);
344 nchange with (match CBEQA with [ CBEQA ⇒ False | _ ⇒ True ]);
345 nrewrite > H; nnormalize; napply I
349 ndefinition opcode_destruct36 : Πop2.ΠP:Prop.CBEQX = op2 → match op2 with [ CBEQX ⇒ P → P | _ ⇒ P ].
350 #op2; #P; ncases op2; nnormalize;
351 ##[ ##36: #H; napply (λx:P.x)
352 ##| ##*: #H; napply (False_ind ??);
353 nchange with (match CBEQX with [ CBEQX ⇒ False | _ ⇒ True ]);
354 nrewrite > H; nnormalize; napply I
358 ndefinition opcode_destruct37 : Πop2.ΠP:Prop.CLC = op2 → match op2 with [ CLC ⇒ P → P | _ ⇒ P ].
359 #op2; #P; ncases op2; nnormalize;
360 ##[ ##37: #H; napply (λx:P.x)
361 ##| ##*: #H; napply (False_ind ??);
362 nchange with (match CLC with [ CLC ⇒ False | _ ⇒ True ]);
363 nrewrite > H; nnormalize; napply I
367 ndefinition opcode_destruct38 : Πop2.ΠP:Prop.CLI = op2 → match op2 with [ CLI ⇒ P → P | _ ⇒ P ].
368 #op2; #P; ncases op2; nnormalize;
369 ##[ ##38: #H; napply (λx:P.x)
370 ##| ##*: #H; napply (False_ind ??);
371 nchange with (match CLI with [ CLI ⇒ False | _ ⇒ True ]);
372 nrewrite > H; nnormalize; napply I
376 ndefinition opcode_destruct39 : Πop2.ΠP:Prop.CLR = op2 → match op2 with [ CLR ⇒ P → P | _ ⇒ P ].
377 #op2; #P; ncases op2; nnormalize;
378 ##[ ##39: #H; napply (λx:P.x)
379 ##| ##*: #H; napply (False_ind ??);
380 nchange with (match CLR with [ CLR ⇒ False | _ ⇒ True ]);
381 nrewrite > H; nnormalize; napply I
385 ndefinition opcode_destruct40 : Πop2.ΠP:Prop.CMP = op2 → match op2 with [ CMP ⇒ P → P | _ ⇒ P ].
386 #op2; #P; ncases op2; nnormalize;
387 ##[ ##40: #H; napply (λx:P.x)
388 ##| ##*: #H; napply (False_ind ??);
389 nchange with (match CMP with [ CMP ⇒ False | _ ⇒ True ]);
390 nrewrite > H; nnormalize; napply I
394 ndefinition opcode_destruct41 : Πop2.ΠP:Prop.COM = op2 → match op2 with [ COM ⇒ P → P | _ ⇒ P ].
395 #op2; #P; ncases op2; nnormalize;
396 ##[ ##41: #H; napply (λx:P.x)
397 ##| ##*: #H; napply (False_ind ??);
398 nchange with (match COM with [ COM ⇒ False | _ ⇒ True ]);
399 nrewrite > H; nnormalize; napply I
403 ndefinition opcode_destruct42 : Πop2.ΠP:Prop.CPHX = op2 → match op2 with [ CPHX ⇒ P → P | _ ⇒ P ].
404 #op2; #P; ncases op2; nnormalize;
405 ##[ ##42: #H; napply (λx:P.x)
406 ##| ##*: #H; napply (False_ind ??);
407 nchange with (match CPHX with [ CPHX ⇒ False | _ ⇒ True ]);
408 nrewrite > H; nnormalize; napply I
412 ndefinition opcode_destruct43 : Πop2.ΠP:Prop.CPX = op2 → match op2 with [ CPX ⇒ P → P | _ ⇒ P ].
413 #op2; #P; ncases op2; nnormalize;
414 ##[ ##43: #H; napply (λx:P.x)
415 ##| ##*: #H; napply (False_ind ??);
416 nchange with (match CPX with [ CPX ⇒ False | _ ⇒ True ]);
417 nrewrite > H; nnormalize; napply I
421 ndefinition opcode_destruct44 : Πop2.ΠP:Prop.DAA = op2 → match op2 with [ DAA ⇒ P → P | _ ⇒ P ].
422 #op2; #P; ncases op2; nnormalize;
423 ##[ ##44: #H; napply (λx:P.x)
424 ##| ##*: #H; napply (False_ind ??);
425 nchange with (match DAA with [ DAA ⇒ False | _ ⇒ True ]);
426 nrewrite > H; nnormalize; napply I
430 ndefinition opcode_destruct45 : Πop2.ΠP:Prop.DBNZ = op2 → match op2 with [ DBNZ ⇒ P → P | _ ⇒ P ].
431 #op2; #P; ncases op2; nnormalize;
432 ##[ ##45: #H; napply (λx:P.x)
433 ##| ##*: #H; napply (False_ind ??);
434 nchange with (match DBNZ with [ DBNZ ⇒ False | _ ⇒ True ]);
435 nrewrite > H; nnormalize; napply I
439 ndefinition opcode_destruct46 : Πop2.ΠP:Prop.DEC = op2 → match op2 with [ DEC ⇒ P → P | _ ⇒ P ].
440 #op2; #P; ncases op2; nnormalize;
441 ##[ ##46: #H; napply (λx:P.x)
442 ##| ##*: #H; napply (False_ind ??);
443 nchange with (match DEC with [ DEC ⇒ False | _ ⇒ True ]);
444 nrewrite > H; nnormalize; napply I
448 ndefinition opcode_destruct47 : Πop2.ΠP:Prop.DIV = op2 → match op2 with [ DIV ⇒ P → P | _ ⇒ P ].
449 #op2; #P; ncases op2; nnormalize;
450 ##[ ##47: #H; napply (λx:P.x)
451 ##| ##*: #H; napply (False_ind ??);
452 nchange with (match DIV with [ DIV ⇒ False | _ ⇒ True ]);
453 nrewrite > H; nnormalize; napply I
457 ndefinition opcode_destruct48 : Πop2.ΠP:Prop.EOR = op2 → match op2 with [ EOR ⇒ P → P | _ ⇒ P ].
458 #op2; #P; ncases op2; nnormalize;
459 ##[ ##48: #H; napply (λx:P.x)
460 ##| ##*: #H; napply (False_ind ??);
461 nchange with (match EOR with [ EOR ⇒ False | _ ⇒ True ]);
462 nrewrite > H; nnormalize; napply I
466 ndefinition opcode_destruct49 : Πop2.ΠP:Prop.INC = op2 → match op2 with [ INC ⇒ P → P | _ ⇒ P ].
467 #op2; #P; ncases op2; nnormalize;
468 ##[ ##49: #H; napply (λx:P.x)
469 ##| ##*: #H; napply (False_ind ??);
470 nchange with (match INC with [ INC ⇒ False | _ ⇒ True ]);
471 nrewrite > H; nnormalize; napply I
475 ndefinition opcode_destruct50 : Πop2.ΠP:Prop.JMP = op2 → match op2 with [ JMP ⇒ P → P | _ ⇒ P ].
476 #op2; #P; ncases op2; nnormalize;
477 ##[ ##50: #H; napply (λx:P.x)
478 ##| ##*: #H; napply (False_ind ??);
479 nchange with (match JMP with [ JMP ⇒ False | _ ⇒ True ]);
480 nrewrite > H; nnormalize; napply I
484 ndefinition opcode_destruct51 : Πop2.ΠP:Prop.JSR = op2 → match op2 with [ JSR ⇒ P → P | _ ⇒ P ].
485 #op2; #P; ncases op2; nnormalize;
486 ##[ ##51: #H; napply (λx:P.x)
487 ##| ##*: #H; napply (False_ind ??);
488 nchange with (match JSR with [ JSR ⇒ False | _ ⇒ True ]);
489 nrewrite > H; nnormalize; napply I
493 ndefinition opcode_destruct52 : Πop2.ΠP:Prop.LDA = op2 → match op2 with [ LDA ⇒ P → P | _ ⇒ P ].
494 #op2; #P; ncases op2; nnormalize;
495 ##[ ##52: #H; napply (λx:P.x)
496 ##| ##*: #H; napply (False_ind ??);
497 nchange with (match LDA with [ LDA ⇒ False | _ ⇒ True ]);
498 nrewrite > H; nnormalize; napply I
502 ndefinition opcode_destruct53 : Πop2.ΠP:Prop.LDHX = op2 → match op2 with [ LDHX ⇒ P → P | _ ⇒ P ].
503 #op2; #P; ncases op2; nnormalize;
504 ##[ ##53: #H; napply (λx:P.x)
505 ##| ##*: #H; napply (False_ind ??);
506 nchange with (match LDHX with [ LDHX ⇒ False | _ ⇒ True ]);
507 nrewrite > H; nnormalize; napply I
511 ndefinition opcode_destruct54 : Πop2.ΠP:Prop.LDX = op2 → match op2 with [ LDX ⇒ P → P | _ ⇒ P ].
512 #op2; #P; ncases op2; nnormalize;
513 ##[ ##54: #H; napply (λx:P.x)
514 ##| ##*: #H; napply (False_ind ??);
515 nchange with (match LDX with [ LDX ⇒ False | _ ⇒ True ]);
516 nrewrite > H; nnormalize; napply I
520 ndefinition opcode_destruct55 : Πop2.ΠP:Prop.LSR = op2 → match op2 with [ LSR ⇒ P → P | _ ⇒ P ].
521 #op2; #P; ncases op2; nnormalize;
522 ##[ ##55: #H; napply (λx:P.x)
523 ##| ##*: #H; napply (False_ind ??);
524 nchange with (match LSR with [ LSR ⇒ False | _ ⇒ True ]);
525 nrewrite > H; nnormalize; napply I
529 ndefinition opcode_destruct56 : Πop2.ΠP:Prop.MOV = op2 → match op2 with [ MOV ⇒ P → P | _ ⇒ P ].
530 #op2; #P; ncases op2; nnormalize;
531 ##[ ##56: #H; napply (λx:P.x)
532 ##| ##*: #H; napply (False_ind ??);
533 nchange with (match MOV with [ MOV ⇒ False | _ ⇒ True ]);
534 nrewrite > H; nnormalize; napply I
538 ndefinition opcode_destruct57 : Πop2.ΠP:Prop.MUL = op2 → match op2 with [ MUL ⇒ P → P | _ ⇒ P ].
539 #op2; #P; ncases op2; nnormalize;
540 ##[ ##57: #H; napply (λx:P.x)
541 ##| ##*: #H; napply (False_ind ??);
542 nchange with (match MUL with [ MUL ⇒ False | _ ⇒ True ]);
543 nrewrite > H; nnormalize; napply I
547 ndefinition opcode_destruct58 : Πop2.ΠP:Prop.NEG = op2 → match op2 with [ NEG ⇒ P → P | _ ⇒ P ].
548 #op2; #P; ncases op2; nnormalize;
549 ##[ ##58: #H; napply (λx:P.x)
550 ##| ##*: #H; napply (False_ind ??);
551 nchange with (match NEG with [ NEG ⇒ False | _ ⇒ True ]);
552 nrewrite > H; nnormalize; napply I
556 ndefinition opcode_destruct59 : Πop2.ΠP:Prop.NOP = op2 → match op2 with [ NOP ⇒ P → P | _ ⇒ P ].
557 #op2; #P; ncases op2; nnormalize;
558 ##[ ##59: #H; napply (λx:P.x)
559 ##| ##*: #H; napply (False_ind ??);
560 nchange with (match NOP with [ NOP ⇒ False | _ ⇒ True ]);
561 nrewrite > H; nnormalize; napply I
565 ndefinition opcode_destruct60 : Πop2.ΠP:Prop.NSA = op2 → match op2 with [ NSA ⇒ P → P | _ ⇒ P ].
566 #op2; #P; ncases op2; nnormalize;
567 ##[ ##60: #H; napply (λx:P.x)
568 ##| ##*: #H; napply (False_ind ??);
569 nchange with (match NSA with [ NSA ⇒ False | _ ⇒ True ]);
570 nrewrite > H; nnormalize; napply I
574 ndefinition opcode_destruct61 : Πop2.ΠP:Prop.ORA = op2 → match op2 with [ ORA ⇒ P → P | _ ⇒ P ].
575 #op2; #P; ncases op2; nnormalize;
576 ##[ ##61: #H; napply (λx:P.x)
577 ##| ##*: #H; napply (False_ind ??);
578 nchange with (match ORA with [ ORA ⇒ False | _ ⇒ True ]);
579 nrewrite > H; nnormalize; napply I
583 ndefinition opcode_destruct62 : Πop2.ΠP:Prop.PSHA = op2 → match op2 with [ PSHA ⇒ P → P | _ ⇒ P ].
584 #op2; #P; ncases op2; nnormalize;
585 ##[ ##62: #H; napply (λx:P.x)
586 ##| ##*: #H; napply (False_ind ??);
587 nchange with (match PSHA with [ PSHA ⇒ False | _ ⇒ True ]);
588 nrewrite > H; nnormalize; napply I
592 ndefinition opcode_destruct63 : Πop2.ΠP:Prop.PSHH = op2 → match op2 with [ PSHH ⇒ P → P | _ ⇒ P ].
593 #op2; #P; ncases op2; nnormalize;
594 ##[ ##63: #H; napply (λx:P.x)
595 ##| ##*: #H; napply (False_ind ??);
596 nchange with (match PSHH with [ PSHH ⇒ False | _ ⇒ True ]);
597 nrewrite > H; nnormalize; napply I
601 ndefinition opcode_destruct64 : Πop2.ΠP:Prop.PSHX = op2 → match op2 with [ PSHX ⇒ P → P | _ ⇒ P ].
602 #op2; #P; ncases op2; nnormalize;
603 ##[ ##64: #H; napply (λx:P.x)
604 ##| ##*: #H; napply (False_ind ??);
605 nchange with (match PSHX with [ PSHX ⇒ False | _ ⇒ True ]);
606 nrewrite > H; nnormalize; napply I
610 ndefinition opcode_destruct65 : Πop2.ΠP:Prop.PULA = op2 → match op2 with [ PULA ⇒ P → P | _ ⇒ P ].
611 #op2; #P; ncases op2; nnormalize;
612 ##[ ##65: #H; napply (λx:P.x)
613 ##| ##*: #H; napply (False_ind ??);
614 nchange with (match PULA with [ PULA ⇒ False | _ ⇒ True ]);
615 nrewrite > H; nnormalize; napply I
619 ndefinition opcode_destruct66 : Πop2.ΠP:Prop.PULH = op2 → match op2 with [ PULH ⇒ P → P | _ ⇒ P ].
620 #op2; #P; ncases op2; nnormalize;
621 ##[ ##66: #H; napply (λx:P.x)
622 ##| ##*: #H; napply (False_ind ??);
623 nchange with (match PULH with [ PULH ⇒ False | _ ⇒ True ]);
624 nrewrite > H; nnormalize; napply I
628 ndefinition opcode_destruct67 : Πop2.ΠP:Prop.PULX = op2 → match op2 with [ PULX ⇒ P → P | _ ⇒ P ].
629 #op2; #P; ncases op2; nnormalize;
630 ##[ ##67: #H; napply (λx:P.x)
631 ##| ##*: #H; napply (False_ind ??);
632 nchange with (match PULX with [ PULX ⇒ False | _ ⇒ True ]);
633 nrewrite > H; nnormalize; napply I
637 ndefinition opcode_destruct68 : Πop2.ΠP:Prop.ROL = op2 → match op2 with [ ROL ⇒ P → P | _ ⇒ P ].
638 #op2; #P; ncases op2; nnormalize;
639 ##[ ##68: #H; napply (λx:P.x)
640 ##| ##*: #H; napply (False_ind ??);
641 nchange with (match ROL with [ ROL ⇒ False | _ ⇒ True ]);
642 nrewrite > H; nnormalize; napply I
646 ndefinition opcode_destruct69 : Πop2.ΠP:Prop.ROR = op2 → match op2 with [ ROR ⇒ P → P | _ ⇒ P ].
647 #op2; #P; ncases op2; nnormalize;
648 ##[ ##69: #H; napply (λx:P.x)
649 ##| ##*: #H; napply (False_ind ??);
650 nchange with (match ROR with [ ROR ⇒ False | _ ⇒ True ]);
651 nrewrite > H; nnormalize; napply I
655 ndefinition opcode_destruct70 : Πop2.ΠP:Prop.RSP = op2 → match op2 with [ RSP ⇒ P → P | _ ⇒ P ].
656 #op2; #P; ncases op2; nnormalize;
657 ##[ ##70: #H; napply (λx:P.x)
658 ##| ##*: #H; napply (False_ind ??);
659 nchange with (match RSP with [ RSP ⇒ False | _ ⇒ True ]);
660 nrewrite > H; nnormalize; napply I
664 ndefinition opcode_destruct71 : Πop2.ΠP:Prop.RTI = op2 → match op2 with [ RTI ⇒ P → P | _ ⇒ P ].
665 #op2; #P; ncases op2; nnormalize;
666 ##[ ##71: #H; napply (λx:P.x)
667 ##| ##*: #H; napply (False_ind ??);
668 nchange with (match RTI with [ RTI ⇒ False | _ ⇒ True ]);
669 nrewrite > H; nnormalize; napply I
673 ndefinition opcode_destruct72 : Πop2.ΠP:Prop.RTS = op2 → match op2 with [ RTS ⇒ P → P | _ ⇒ P ].
674 #op2; #P; ncases op2; nnormalize;
675 ##[ ##72: #H; napply (λx:P.x)
676 ##| ##*: #H; napply (False_ind ??);
677 nchange with (match RTS with [ RTS ⇒ False | _ ⇒ True ]);
678 nrewrite > H; nnormalize; napply I
682 ndefinition opcode_destruct73 : Πop2.ΠP:Prop.SBC = op2 → match op2 with [ SBC ⇒ P → P | _ ⇒ P ].
683 #op2; #P; ncases op2; nnormalize;
684 ##[ ##73: #H; napply (λx:P.x)
685 ##| ##*: #H; napply (False_ind ??);
686 nchange with (match SBC with [ SBC ⇒ False | _ ⇒ True ]);
687 nrewrite > H; nnormalize; napply I
691 ndefinition opcode_destruct74 : Πop2.ΠP:Prop.SEC = op2 → match op2 with [ SEC ⇒ P → P | _ ⇒ P ].
692 #op2; #P; ncases op2; nnormalize;
693 ##[ ##74: #H; napply (λx:P.x)
694 ##| ##*: #H; napply (False_ind ??);
695 nchange with (match SEC with [ SEC ⇒ False | _ ⇒ True ]);
696 nrewrite > H; nnormalize; napply I
700 ndefinition opcode_destruct75 : Πop2.ΠP:Prop.SEI = op2 → match op2 with [ SEI ⇒ P → P | _ ⇒ P ].
701 #op2; #P; ncases op2; nnormalize;
702 ##[ ##75: #H; napply (λx:P.x)
703 ##| ##*: #H; napply (False_ind ??);
704 nchange with (match SEI with [ SEI ⇒ False | _ ⇒ True ]);
705 nrewrite > H; nnormalize; napply I
709 ndefinition opcode_destruct76 : Πop2.ΠP:Prop.SHA = op2 → match op2 with [ SHA ⇒ P → P | _ ⇒ P ].
710 #op2; #P; ncases op2; nnormalize;
711 ##[ ##76: #H; napply (λx:P.x)
712 ##| ##*: #H; napply (False_ind ??);
713 nchange with (match SHA with [ SHA ⇒ False | _ ⇒ True ]);
714 nrewrite > H; nnormalize; napply I
718 ndefinition opcode_destruct77 : Πop2.ΠP:Prop.SLA = op2 → match op2 with [ SLA ⇒ P → P | _ ⇒ P ].
719 #op2; #P; ncases op2; nnormalize;
720 ##[ ##77: #H; napply (λx:P.x)
721 ##| ##*: #H; napply (False_ind ??);
722 nchange with (match SLA with [ SLA ⇒ False | _ ⇒ True ]);
723 nrewrite > H; nnormalize; napply I
727 ndefinition opcode_destruct78 : Πop2.ΠP:Prop.STA = op2 → match op2 with [ STA ⇒ P → P | _ ⇒ P ].
728 #op2; #P; ncases op2; nnormalize;
729 ##[ ##78: #H; napply (λx:P.x)
730 ##| ##*: #H; napply (False_ind ??);
731 nchange with (match STA with [ STA ⇒ False | _ ⇒ True ]);
732 nrewrite > H; nnormalize; napply I
736 ndefinition opcode_destruct79 : Πop2.ΠP:Prop.STHX = op2 → match op2 with [ STHX ⇒ P → P | _ ⇒ P ].
737 #op2; #P; ncases op2; nnormalize;
738 ##[ ##79: #H; napply (λx:P.x)
739 ##| ##*: #H; napply (False_ind ??);
740 nchange with (match STHX with [ STHX ⇒ False | _ ⇒ True ]);
741 nrewrite > H; nnormalize; napply I
745 ndefinition opcode_destruct80 : Πop2.ΠP:Prop.STOP = op2 → match op2 with [ STOP ⇒ P → P | _ ⇒ P ].
746 #op2; #P; ncases op2; nnormalize;
747 ##[ ##80: #H; napply (λx:P.x)
748 ##| ##*: #H; napply (False_ind ??);
749 nchange with (match STOP with [ STOP ⇒ False | _ ⇒ True ]);
750 nrewrite > H; nnormalize; napply I
754 ndefinition opcode_destruct81 : Πop2.ΠP:Prop.STX = op2 → match op2 with [ STX ⇒ P → P | _ ⇒ P ].
755 #op2; #P; ncases op2; nnormalize;
756 ##[ ##81: #H; napply (λx:P.x)
757 ##| ##*: #H; napply (False_ind ??);
758 nchange with (match STX with [ STX ⇒ False | _ ⇒ True ]);
759 nrewrite > H; nnormalize; napply I
763 ndefinition opcode_destruct82 : Πop2.ΠP:Prop.SUB = op2 → match op2 with [ SUB ⇒ P → P | _ ⇒ P ].
764 #op2; #P; ncases op2; nnormalize;
765 ##[ ##82: #H; napply (λx:P.x)
766 ##| ##*: #H; napply (False_ind ??);
767 nchange with (match SUB with [ SUB ⇒ False | _ ⇒ True ]);
768 nrewrite > H; nnormalize; napply I
772 ndefinition opcode_destruct83 : Πop2.ΠP:Prop.SWI = op2 → match op2 with [ SWI ⇒ P → P | _ ⇒ P ].
773 #op2; #P; ncases op2; nnormalize;
774 ##[ ##83: #H; napply (λx:P.x)
775 ##| ##*: #H; napply (False_ind ??);
776 nchange with (match SWI with [ SWI ⇒ False | _ ⇒ True ]);
777 nrewrite > H; nnormalize; napply I
781 ndefinition opcode_destruct84 : Πop2.ΠP:Prop.TAP = op2 → match op2 with [ TAP ⇒ P → P | _ ⇒ P ].
782 #op2; #P; ncases op2; nnormalize;
783 ##[ ##84: #H; napply (λx:P.x)
784 ##| ##*: #H; napply (False_ind ??);
785 nchange with (match TAP with [ TAP ⇒ False | _ ⇒ True ]);
786 nrewrite > H; nnormalize; napply I
790 ndefinition opcode_destruct85 : Πop2.ΠP:Prop.TAX = op2 → match op2 with [ TAX ⇒ P → P | _ ⇒ P ].
791 #op2; #P; ncases op2; nnormalize;
792 ##[ ##85: #H; napply (λx:P.x)
793 ##| ##*: #H; napply (False_ind ??);
794 nchange with (match TAX with [ TAX ⇒ False | _ ⇒ True ]);
795 nrewrite > H; nnormalize; napply I
799 ndefinition opcode_destruct86 : Πop2.ΠP:Prop.TPA = op2 → match op2 with [ TPA ⇒ P → P | _ ⇒ P ].
800 #op2; #P; ncases op2; nnormalize;
801 ##[ ##86: #H; napply (λx:P.x)
802 ##| ##*: #H; napply (False_ind ??);
803 nchange with (match TPA with [ TPA ⇒ False | _ ⇒ True ]);
804 nrewrite > H; nnormalize; napply I
808 ndefinition opcode_destruct87 : Πop2.ΠP:Prop.TST = op2 → match op2 with [ TST ⇒ P → P | _ ⇒ P ].
809 #op2; #P; ncases op2; nnormalize;
810 ##[ ##87: #H; napply (λx:P.x)
811 ##| ##*: #H; napply (False_ind ??);
812 nchange with (match TST with [ TST ⇒ False | _ ⇒ True ]);
813 nrewrite > H; nnormalize; napply I
817 ndefinition opcode_destruct88 : Πop2.ΠP:Prop.TSX = op2 → match op2 with [ TSX ⇒ P → P | _ ⇒ P ].
818 #op2; #P; ncases op2; nnormalize;
819 ##[ ##88: #H; napply (λx:P.x)
820 ##| ##*: #H; napply (False_ind ??);
821 nchange with (match TSX with [ TSX ⇒ False | _ ⇒ True ]);
822 nrewrite > H; nnormalize; napply I
826 ndefinition opcode_destruct89 : Πop2.ΠP:Prop.TXA = op2 → match op2 with [ TXA ⇒ P → P | _ ⇒ P ].
827 #op2; #P; ncases op2; nnormalize;
828 ##[ ##89: #H; napply (λx:P.x)
829 ##| ##*: #H; napply (False_ind ??);
830 nchange with (match TXA with [ TXA ⇒ False | _ ⇒ True ]);
831 nrewrite > H; nnormalize; napply I
835 ndefinition opcode_destruct90 : Πop2.ΠP:Prop.TXS = op2 → match op2 with [ TXS ⇒ P → P | _ ⇒ P ].
836 #op2; #P; ncases op2; nnormalize;
837 ##[ ##90: #H; napply (λx:P.x)
838 ##| ##*: #H; napply (False_ind ??);
839 nchange with (match TXS with [ TXS ⇒ False | _ ⇒ True ]);
840 nrewrite > H; nnormalize; napply I
844 ndefinition opcode_destruct91 : Πop2.ΠP:Prop.WAIT = op2 → match op2 with [ WAIT ⇒ P → P | _ ⇒ P ].
845 #op2; #P; ncases op2; nnormalize;
846 ##[ ##91: #H; napply (λx:P.x)
847 ##| ##*: #H; napply (False_ind ??);
848 nchange with (match WAIT with [ WAIT ⇒ False | _ ⇒ True ]);
849 nrewrite > H; nnormalize; napply I
853 ndefinition opcode_destruct_aux ≝
854 Πop1,op2.ΠP:Prop.op1 = op2 →
856 [ ADC ⇒ match op2 with [ ADC ⇒ P → P | _ ⇒ P ]
857 | ADD ⇒ match op2 with [ ADD ⇒ P → P | _ ⇒ P ]
858 | AIS ⇒ match op2 with [ AIS ⇒ P → P | _ ⇒ P ]
859 | AIX ⇒ match op2 with [ AIX ⇒ P → P | _ ⇒ P ]
860 | AND ⇒ match op2 with [ AND ⇒ P → P | _ ⇒ P ]
861 | ASL ⇒ match op2 with [ ASL ⇒ P → P | _ ⇒ P ]
862 | ASR ⇒ match op2 with [ ASR ⇒ P → P | _ ⇒ P ]
863 | BCC ⇒ match op2 with [ BCC ⇒ P → P | _ ⇒ P ]
864 | BCLRn ⇒ match op2 with [ BCLRn ⇒ P → P | _ ⇒ P ]
865 | BCS ⇒ match op2 with [ BCS ⇒ P → P | _ ⇒ P ]
866 | BEQ ⇒ match op2 with [ BEQ ⇒ P → P | _ ⇒ P ]
867 | BGE ⇒ match op2 with [ BGE ⇒ P → P | _ ⇒ P ]
868 | BGND ⇒ match op2 with [ BGND ⇒ P → P | _ ⇒ P ]
869 | BGT ⇒ match op2 with [ BGT ⇒ P → P | _ ⇒ P ]
870 | BHCC ⇒ match op2 with [ BHCC ⇒ P → P | _ ⇒ P ]
871 | BHCS ⇒ match op2 with [ BHCS ⇒ P → P | _ ⇒ P ]
872 | BHI ⇒ match op2 with [ BHI ⇒ P → P | _ ⇒ P ]
873 | BIH ⇒ match op2 with [ BIH ⇒ P → P | _ ⇒ P ]
874 | BIL ⇒ match op2 with [ BIL ⇒ P → P | _ ⇒ P ]
875 | BIT ⇒ match op2 with [ BIT ⇒ P → P | _ ⇒ P ]
876 | BLE ⇒ match op2 with [ BLE ⇒ P → P | _ ⇒ P ]
877 | BLS ⇒ match op2 with [ BLS ⇒ P → P | _ ⇒ P ]
878 | BLT ⇒ match op2 with [ BLT ⇒ P → P | _ ⇒ P ]
879 | BMC ⇒ match op2 with [ BMC ⇒ P → P | _ ⇒ P ]
880 | BMI ⇒ match op2 with [ BMI ⇒ P → P | _ ⇒ P ]
881 | BMS ⇒ match op2 with [ BMS ⇒ P → P | _ ⇒ P ]
882 | BNE ⇒ match op2 with [ BNE ⇒ P → P | _ ⇒ P ]
883 | BPL ⇒ match op2 with [ BPL ⇒ P → P | _ ⇒ P ]
884 | BRA ⇒ match op2 with [ BRA ⇒ P → P | _ ⇒ P ]
885 | BRCLRn ⇒ match op2 with [ BRCLRn ⇒ P → P | _ ⇒ P ]
886 | BRN ⇒ match op2 with [ BRN ⇒ P → P | _ ⇒ P ]
887 | BRSETn ⇒ match op2 with [ BRSETn ⇒ P → P | _ ⇒ P ]
888 | BSETn ⇒ match op2 with [ BSETn ⇒ P → P | _ ⇒ P ]
889 | BSR ⇒ match op2 with [ BSR ⇒ P → P | _ ⇒ P ]
890 | CBEQA ⇒ match op2 with [ CBEQA ⇒ P → P | _ ⇒ P ]
891 | CBEQX ⇒ match op2 with [ CBEQX ⇒ P → P | _ ⇒ P ]
892 | CLC ⇒ match op2 with [ CLC ⇒ P → P | _ ⇒ P ]
893 | CLI ⇒ match op2 with [ CLI ⇒ P → P | _ ⇒ P ]
894 | CLR ⇒ match op2 with [ CLR ⇒ P → P | _ ⇒ P ]
895 | CMP ⇒ match op2 with [ CMP ⇒ P → P | _ ⇒ P ]
896 | COM ⇒ match op2 with [ COM ⇒ P → P | _ ⇒ P ]
897 | CPHX ⇒ match op2 with [ CPHX ⇒ P → P | _ ⇒ P ]
898 | CPX ⇒ match op2 with [ CPX ⇒ P → P | _ ⇒ P ]
899 | DAA ⇒ match op2 with [ DAA ⇒ P → P | _ ⇒ P ]
900 | DBNZ ⇒ match op2 with [ DBNZ ⇒ P → P | _ ⇒ P ]
901 | DEC ⇒ match op2 with [ DEC ⇒ P → P | _ ⇒ P ]
902 | DIV ⇒ match op2 with [ DIV ⇒ P → P | _ ⇒ P ]
903 | EOR ⇒ match op2 with [ EOR ⇒ P → P | _ ⇒ P ]
904 | INC ⇒ match op2 with [ INC ⇒ P → P | _ ⇒ P ]
905 | JMP ⇒ match op2 with [ JMP ⇒ P → P | _ ⇒ P ]
906 | JSR ⇒ match op2 with [ JSR ⇒ P → P | _ ⇒ P ]
907 | LDA ⇒ match op2 with [ LDA ⇒ P → P | _ ⇒ P ]
908 | LDHX ⇒ match op2 with [ LDHX ⇒ P → P | _ ⇒ P ]
909 | LDX ⇒ match op2 with [ LDX ⇒ P → P | _ ⇒ P ]
910 | LSR ⇒ match op2 with [ LSR ⇒ P → P | _ ⇒ P ]
911 | MOV ⇒ match op2 with [ MOV ⇒ P → P | _ ⇒ P ]
912 | MUL ⇒ match op2 with [ MUL ⇒ P → P | _ ⇒ P ]
913 | NEG ⇒ match op2 with [ NEG ⇒ P → P | _ ⇒ P ]
914 | NOP ⇒ match op2 with [ NOP ⇒ P → P | _ ⇒ P ]
915 | NSA ⇒ match op2 with [ NSA ⇒ P → P | _ ⇒ P ]
916 | ORA ⇒ match op2 with [ ORA ⇒ P → P | _ ⇒ P ]
917 | PSHA ⇒ match op2 with [ PSHA ⇒ P → P | _ ⇒ P ]
918 | PSHH ⇒ match op2 with [ PSHH ⇒ P → P | _ ⇒ P ]
919 | PSHX ⇒ match op2 with [ PSHX ⇒ P → P | _ ⇒ P ]
920 | PULA ⇒ match op2 with [ PULA ⇒ P → P | _ ⇒ P ]
921 | PULH ⇒ match op2 with [ PULH ⇒ P → P | _ ⇒ P ]
922 | PULX ⇒ match op2 with [ PULX ⇒ P → P | _ ⇒ P ]
923 | ROL ⇒ match op2 with [ ROL ⇒ P → P | _ ⇒ P ]
924 | ROR ⇒ match op2 with [ ROR ⇒ P → P | _ ⇒ P ]
925 | RSP ⇒ match op2 with [ RSP ⇒ P → P | _ ⇒ P ]
926 | RTI ⇒ match op2 with [ RTI ⇒ P → P | _ ⇒ P ]
927 | RTS ⇒ match op2 with [ RTS ⇒ P → P | _ ⇒ P ]
928 | SBC ⇒ match op2 with [ SBC ⇒ P → P | _ ⇒ P ]
929 | SEC ⇒ match op2 with [ SEC ⇒ P → P | _ ⇒ P ]
930 | SEI ⇒ match op2 with [ SEI ⇒ P → P | _ ⇒ P ]
931 | SHA ⇒ match op2 with [ SHA ⇒ P → P | _ ⇒ P ]
932 | SLA ⇒ match op2 with [ SLA ⇒ P → P | _ ⇒ P ]
933 | STA ⇒ match op2 with [ STA ⇒ P → P | _ ⇒ P ]
934 | STHX ⇒ match op2 with [ STHX ⇒ P → P | _ ⇒ P ]
935 | STOP ⇒ match op2 with [ STOP ⇒ P → P | _ ⇒ P ]
936 | STX ⇒ match op2 with [ STX ⇒ P → P | _ ⇒ P ]
937 | SUB ⇒ match op2 with [ SUB ⇒ P → P | _ ⇒ P ]
938 | SWI ⇒ match op2 with [ SWI ⇒ P → P | _ ⇒ P ]
939 | TAP ⇒ match op2 with [ TAP ⇒ P → P | _ ⇒ P ]
940 | TAX ⇒ match op2 with [ TAX ⇒ P → P | _ ⇒ P ]
941 | TPA ⇒ match op2 with [ TPA ⇒ P → P | _ ⇒ P ]
942 | TST ⇒ match op2 with [ TST ⇒ P → P | _ ⇒ P ]
943 | TSX ⇒ match op2 with [ TSX ⇒ P → P | _ ⇒ P ]
944 | TXA ⇒ match op2 with [ TXA ⇒ P → P | _ ⇒ P ]
945 | TXS ⇒ match op2 with [ TXS ⇒ P → P | _ ⇒ P ]
946 | WAIT ⇒ match op2 with [ WAIT ⇒ P → P | _ ⇒ P ]
949 ndefinition opcode_destruct : opcode_destruct_aux.
951 ##[ ##1: napply opcode_destruct1 ##| ##2: napply opcode_destruct2 ##| ##3: napply opcode_destruct3 ##| ##4: napply opcode_destruct4
952 ##| ##5: napply opcode_destruct5 ##| ##6: napply opcode_destruct6 ##| ##7: napply opcode_destruct7 ##| ##8: napply opcode_destruct8
953 ##| ##9: napply opcode_destruct9 ##| ##10: napply opcode_destruct10 ##| ##11: napply opcode_destruct11 ##| ##12: napply opcode_destruct12
954 ##| ##13: napply opcode_destruct13 ##| ##14: napply opcode_destruct14 ##| ##15: napply opcode_destruct15 ##| ##16: napply opcode_destruct16
955 ##| ##17: napply opcode_destruct17 ##| ##18: napply opcode_destruct18 ##| ##19: napply opcode_destruct19 ##| ##20: napply opcode_destruct20
956 ##| ##21: napply opcode_destruct21 ##| ##22: napply opcode_destruct22 ##| ##23: napply opcode_destruct23 ##| ##24: napply opcode_destruct24
957 ##| ##25: napply opcode_destruct25 ##| ##26: napply opcode_destruct26 ##| ##27: napply opcode_destruct27 ##| ##28: napply opcode_destruct28
958 ##| ##29: napply opcode_destruct29 ##| ##30: napply opcode_destruct30 ##| ##31: napply opcode_destruct31 ##| ##32: napply opcode_destruct32
959 ##| ##33: napply opcode_destruct33 ##| ##34: napply opcode_destruct34 ##| ##35: napply opcode_destruct35 ##| ##36: napply opcode_destruct36
960 ##| ##37: napply opcode_destruct37 ##| ##38: napply opcode_destruct38 ##| ##39: napply opcode_destruct39 ##| ##40: napply opcode_destruct40
961 ##| ##41: napply opcode_destruct41 ##| ##42: napply opcode_destruct42 ##| ##43: napply opcode_destruct43 ##| ##44: napply opcode_destruct44
962 ##| ##45: napply opcode_destruct45 ##| ##46: napply opcode_destruct46 ##| ##47: napply opcode_destruct47 ##| ##48: napply opcode_destruct48
963 ##| ##49: napply opcode_destruct49 ##| ##50: napply opcode_destruct50 ##| ##51: napply opcode_destruct51 ##| ##52: napply opcode_destruct52
964 ##| ##53: napply opcode_destruct53 ##| ##54: napply opcode_destruct54 ##| ##55: napply opcode_destruct55 ##| ##56: napply opcode_destruct56
965 ##| ##57: napply opcode_destruct57 ##| ##58: napply opcode_destruct58 ##| ##59: napply opcode_destruct59 ##| ##60: napply opcode_destruct60
966 ##| ##61: napply opcode_destruct61 ##| ##62: napply opcode_destruct62 ##| ##63: napply opcode_destruct63 ##| ##64: napply opcode_destruct64
967 ##| ##65: napply opcode_destruct65 ##| ##66: napply opcode_destruct66 ##| ##67: napply opcode_destruct67 ##| ##68: napply opcode_destruct68
968 ##| ##69: napply opcode_destruct69 ##| ##70: napply opcode_destruct70 ##| ##71: napply opcode_destruct71 ##| ##72: napply opcode_destruct72
969 ##| ##73: napply opcode_destruct73 ##| ##74: napply opcode_destruct74 ##| ##75: napply opcode_destruct75 ##| ##76: napply opcode_destruct76
970 ##| ##77: napply opcode_destruct77 ##| ##78: napply opcode_destruct78 ##| ##79: napply opcode_destruct79 ##| ##80: napply opcode_destruct80
971 ##| ##81: napply opcode_destruct81 ##| ##82: napply opcode_destruct82 ##| ##83: napply opcode_destruct83 ##| ##84: napply opcode_destruct84
972 ##| ##85: napply opcode_destruct85 ##| ##86: napply opcode_destruct86 ##| ##87: napply opcode_destruct87 ##| ##88: napply opcode_destruct88
973 ##| ##89: napply opcode_destruct89 ##| ##90: napply opcode_destruct90 ##| ##91: napply opcode_destruct91 ##]