1structure ILTheory :> ILTheory =
2struct
3  val _ = if !Globals.print_thy_loads then print "Loading ILTheory ... " else ()
4  open Type Term Thm
5  infixr -->
6  fun C s t ty = mk_thy_const{Name=s,Thy=t,Ty=ty}
7  fun T s t A = mk_thy_type{Tyop=s, Thy=t,Args=A}
8  fun V s q = mk_var(s,q)
9  val U     = mk_vartype
10
11  (*  Parents *)
12  local open ARMCompositionTheory
13  in end;
14  val _ = Theory.link_parents
15          ("IL",Arbnum.fromString "1157171238",Arbnum.fromString "41829")
16          [("ARMComposition",
17           Arbnum.fromString "1157170992",
18           Arbnum.fromString "779283")];
19  val _ = Theory.incorporate_types "IL"
20       [("MEXP",0), ("DOPER",0), ("MREG",0), ("CTL_STRUCTURE",0)];
21  val _ = Theory.incorporate_consts "IL"
22     [("translate_condition",
23       ((T"prod" "pair"
24          [T"MREG" "IL" [], T"prod" "pair" [alpha, T"MEXP" "IL" []]] -->
25         T"prod" "pair"
26          [T"EXP" "preARM" [],
27           T"prod" "pair" [alpha, T"EXP" "preARM" []]]))),
28      ("index_of_reg",((T"MREG" "IL" [] --> T"num" "num" []))),
29      ("dest_DOPER",
30       ((T"DOPER" "IL" [] -->
31         T"recspace" "ind_type"
32          [T"prod" "pair"
33            [T"MREG" "IL" [],
34             T"prod" "pair"
35              [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
36               T"prod" "pair"
37                [T"MEXP" "IL" [],
38                 T"prod" "pair"
39                  [T"MREG" "IL" [],
40                   T"prod" "pair"
41                    [T"MREG" "IL" [],
42                     T"prod" "pair"
43                      [T"cart" "fcp" [bool, T"i5" "words" []],
44                       T"prod" "pair"
45                        [T"num" "num" [],
46                         T"list" "list" [T"num" "num" []]]]]]]]]]))),
47      ("run_ir",
48       ((T"CTL_STRUCTURE" "IL" [] -->
49         (T"prod" "pair"
50           [T"fmap" "finite_map"
51             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
52            T"fmap" "finite_map"
53             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]
54          -->
55          T"prod" "pair"
56           [T"fmap" "finite_map"
57             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
58            T"fmap" "finite_map"
59             [T"num" "num" [],
60              T"cart" "fcp" [bool, T"i32" "words" []]]])))),
61      ("WELL_FORMED",((T"CTL_STRUCTURE" "IL" [] --> bool))),
62      ("eval_il_cond",
63       ((T"prod" "pair"
64          [T"MREG" "IL" [],
65           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
66         (T"prod" "pair"
67           [T"fmap" "finite_map"
68             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
69            T"fmap" "finite_map"
70             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]
71          --> bool)))),
72      ("WELL_FORMED_SUB",((T"CTL_STRUCTURE" "IL" [] --> bool))),
73      ("num2MREG",((T"num" "num" [] --> T"MREG" "IL" []))),
74      ("mdecode",
75       ((T"prod" "pair"
76          [T"fmap" "finite_map"
77            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
78           T"fmap" "finite_map"
79            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
80         (T"DOPER" "IL" [] -->
81          T"prod" "pair"
82           [T"fmap" "finite_map"
83             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
84            T"fmap" "finite_map"
85             [T"num" "num" [],
86              T"cart" "fcp" [bool, T"i32" "words" []]]])))),
87      ("DOPER_case",
88       (((T"MREG" "IL" [] -->
89          (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
90           alpha)) -->
91         ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
92           (T"MREG" "IL" [] --> alpha)) -->
93          ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)) -->
94           ((T"MREG" "IL" [] -->
95             (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
96            ((T"MREG" "IL" [] -->
97              (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
98             ((T"MREG" "IL" [] -->
99               (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
100              ((T"MREG" "IL" [] -->
101                (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> alpha))) -->
102               ((T"MREG" "IL" [] -->
103                 (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
104                ((T"MREG" "IL" [] -->
105                  (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
106                 ((T"MREG" "IL" [] -->
107                   (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
108                  ((T"MREG" "IL" [] -->
109                    (T"MREG" "IL" [] -->
110                     (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))
111                   -->
112                   ((T"MREG" "IL" [] -->
113                     (T"MREG" "IL" [] -->
114                      (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))
115                    -->
116                    ((T"MREG" "IL" [] -->
117                      (T"MREG" "IL" [] -->
118                       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))
119                     -->
120                     ((T"MREG" "IL" [] -->
121                       (T"MREG" "IL" [] -->
122                        (T"cart" "fcp" [bool, T"i5" "words" []] -->
123                         alpha))) -->
124                      ((T"num" "num" [] -->
125                        (T"list" "list" [T"num" "num" []] --> alpha)) -->
126                       ((T"num" "num" [] -->
127                         (T"list" "list" [T"num" "num" []] --> alpha)) -->
128                        (T"DOPER" "IL" [] --> alpha))))))))))))))))))),
129      ("R14",(T"MREG" "IL" [])), ("R13",(T"MREG" "IL" [])),
130      ("R12",(T"MREG" "IL" [])), ("R11",(T"MREG" "IL" [])),
131      ("R10",(T"MREG" "IL" [])),
132      ("IL9",
133       ((T"MREG" "IL" [] -->
134         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
135      ("IL8",
136       ((T"MREG" "IL" [] -->
137         (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" []))))),
138      ("IL7",
139       ((T"MREG" "IL" [] -->
140         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
141      ("IL6",
142       ((T"MREG" "IL" [] -->
143         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
144      ("IL5",
145       ((T"MREG" "IL" [] -->
146         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
147      ("IL4",
148       ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
149      ("IL3",
150       ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
151         (T"MREG" "IL" [] --> T"DOPER" "IL" [])))),
152      ("IL2",
153       ((T"MREG" "IL" [] -->
154         (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
155          T"DOPER" "IL" [])))),
156      ("IL1",
157       ((T"cart" "fcp" [bool, T"i4" "words" []] -->
158         (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" [])))),
159      ("IL0",((T"MREG" "IL" [] --> T"MEXP" "IL" []))),
160      ("popL",
161       ((T"prod" "pair"
162          [T"fmap" "finite_map"
163            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
164           T"fmap" "finite_map"
165            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
166         (T"num" "num" [] -->
167          (T"list" "list" [T"num" "num" []] -->
168           T"prod" "pair"
169            [T"fmap" "finite_map"
170              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
171             T"fmap" "finite_map"
172              [T"num" "num" [],
173               T"cart" "fcp" [bool, T"i32" "words" []]]]))))),
174      ("BLK",
175       ((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" []))),
176      ("run_arm",
177       ((T"list" "list"
178          [T"prod" "pair"
179            [T"prod" "pair"
180              [T"OPERATOR" "preARM" [],
181               T"prod" "pair"
182                [T"option" "option" [T"COND" "preARM" []], bool]],
183             T"prod" "pair"
184              [T"option" "option" [T"EXP" "preARM" []],
185               T"prod" "pair"
186                [T"list" "list" [T"EXP" "preARM" []],
187                 T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
188         (T"prod" "pair"
189           [T"prod" "pair"
190             [T"num" "num" [],
191              T"prod" "pair"
192               [T"cart" "fcp" [bool, T"i32" "words" []],
193                T"prod" "pair"
194                 [T"fmap" "finite_map"
195                   [T"num" "num" [],
196                    T"cart" "fcp" [bool, T"i32" "words" []]],
197                  T"fmap" "finite_map"
198                   [T"num" "num" [],
199                    T"cart" "fcp" [bool, T"i32" "words" []]]]]],
200            (T"num" "num" [] --> bool)] -->
201          T"prod" "pair"
202           [T"prod" "pair"
203             [T"num" "num" [],
204              T"prod" "pair"
205               [T"cart" "fcp" [bool, T"i32" "words" []],
206                T"prod" "pair"
207                 [T"fmap" "finite_map"
208                   [T"num" "num" [],
209                    T"cart" "fcp" [bool, T"i32" "words" []]],
210                  T"fmap" "finite_map"
211                   [T"num" "num" [],
212                    T"cart" "fcp" [bool, T"i32" "words" []]]]]],
213            (T"num" "num" [] --> bool)])))),
214      ("dest_MEXP",
215       ((T"MEXP" "IL" [] -->
216         T"recspace" "ind_type"
217          [T"prod" "pair"
218            [T"MREG" "IL" [],
219             T"prod" "pair"
220              [T"cart" "fcp" [bool, T"i4" "words" []],
221               T"cart" "fcp" [bool, T"i8" "words" []]]]]))),
222      ("translate",
223       ((T"CTL_STRUCTURE" "IL" [] -->
224         T"list" "list"
225          [T"prod" "pair"
226            [T"prod" "pair"
227              [T"OPERATOR" "preARM" [],
228               T"prod" "pair"
229                [T"option" "option" [T"COND" "preARM" []], bool]],
230             T"prod" "pair"
231              [T"option" "option" [T"EXP" "preARM" []],
232               T"prod" "pair"
233                [T"list" "list" [T"EXP" "preARM" []],
234                 T"option" "option" [T"OFFSET" "preARM" []]]]]]))),
235      ("MREG_case",
236       ((alpha -->
237         (alpha -->
238          (alpha -->
239           (alpha -->
240            (alpha -->
241             (alpha -->
242              (alpha -->
243               (alpha -->
244                (alpha -->
245                 (alpha -->
246                  (alpha -->
247                   (alpha -->
248                    (alpha -->
249                     (alpha -->
250                      (alpha -->
251                       (T"MREG" "IL" [] --> alpha)))))))))))))))))),
252      ("MEXP_case",
253       (((T"MREG" "IL" [] --> alpha) -->
254         ((T"cart" "fcp" [bool, T"i4" "words" []] -->
255           (T"cart" "fcp" [bool, T"i8" "words" []] --> alpha)) -->
256          (T"MEXP" "IL" [] --> alpha))))),
257      ("CTL_STRUCTURE_size",
258       ((T"CTL_STRUCTURE" "IL" [] --> T"num" "num" []))),
259      ("mk_MEXP",
260       ((T"recspace" "ind_type"
261          [T"prod" "pair"
262            [T"MREG" "IL" [],
263             T"prod" "pair"
264              [T"cart" "fcp" [bool, T"i4" "words" []],
265               T"cart" "fcp" [bool, T"i8" "words" []]]]] -->
266         T"MEXP" "IL" []))),
267      ("dest_CTL_STRUCTURE",
268       ((T"CTL_STRUCTURE" "IL" [] -->
269         T"recspace" "ind_type"
270          [T"prod" "pair"
271            [T"list" "list" [T"DOPER" "IL" []],
272             T"prod" "pair"
273              [T"MREG" "IL" [],
274               T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]))),
275      ("DOPER_size",((T"DOPER" "IL" [] --> T"num" "num" []))),
276      ("mk_DOPER",
277       ((T"recspace" "ind_type"
278          [T"prod" "pair"
279            [T"MREG" "IL" [],
280             T"prod" "pair"
281              [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
282               T"prod" "pair"
283                [T"MEXP" "IL" [],
284                 T"prod" "pair"
285                  [T"MREG" "IL" [],
286                   T"prod" "pair"
287                    [T"MREG" "IL" [],
288                     T"prod" "pair"
289                      [T"cart" "fcp" [bool, T"i5" "words" []],
290                       T"prod" "pair"
291                        [T"num" "num" [],
292                         T"list" "list" [T"num" "num" []]]]]]]]]] -->
293         T"DOPER" "IL" []))),
294      ("MSTR",
295       ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
296         (T"MREG" "IL" [] --> T"DOPER" "IL" [])))),
297      ("MSUB",
298       ((T"MREG" "IL" [] -->
299         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
300      ("MREG2num",((T"MREG" "IL" [] --> T"num" "num" []))),
301      ("MROR",
302       ((T"MREG" "IL" [] -->
303         (T"MREG" "IL" [] -->
304          (T"cart" "fcp" [bool, T"i5" "words" []] -->
305           T"DOPER" "IL" []))))),
306      ("MRSB",
307       ((T"MREG" "IL" [] -->
308         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
309      ("MPUSH",
310       ((T"num" "num" [] -->
311         (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" [])))),
312      ("MPOP",
313       ((T"num" "num" [] -->
314         (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" [])))),
315      ("MORR",
316       ((T"MREG" "IL" [] -->
317         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
318      ("MMUL",
319       ((T"MREG" "IL" [] -->
320         (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" []))))),
321      ("mk_CTL_STRUCTURE",
322       ((T"recspace" "ind_type"
323          [T"prod" "pair"
324            [T"list" "list" [T"DOPER" "IL" []],
325             T"prod" "pair"
326              [T"MREG" "IL" [],
327               T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
328         T"CTL_STRUCTURE" "IL" []))),
329      ("MMOV",
330       ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
331      ("MLSR",
332       ((T"MREG" "IL" [] -->
333         (T"MREG" "IL" [] -->
334          (T"cart" "fcp" [bool, T"i5" "words" []] -->
335           T"DOPER" "IL" []))))),
336      ("MLSL",
337       ((T"MREG" "IL" [] -->
338         (T"MREG" "IL" [] -->
339          (T"cart" "fcp" [bool, T"i5" "words" []] -->
340           T"DOPER" "IL" []))))),
341      ("translate_assignment",
342       ((T"DOPER" "IL" [] -->
343         T"prod" "pair"
344          [T"prod" "pair"
345            [T"OPERATOR" "preARM" [],
346             T"prod" "pair"
347              [T"option" "option" [T"COND" "preARM" []], bool]],
348           T"prod" "pair"
349            [T"option" "option" [T"EXP" "preARM" []],
350             T"prod" "pair"
351              [T"list" "list" [T"EXP" "preARM" []],
352               T"option" "option" [T"OFFSET" "preARM" []]]]]))),
353      ("pushL",
354       ((T"prod" "pair"
355          [T"fmap" "finite_map"
356            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
357           T"fmap" "finite_map"
358            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
359         (T"num" "num" [] -->
360          (T"list" "list" [T"num" "num" []] -->
361           T"prod" "pair"
362            [T"fmap" "finite_map"
363              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
364             T"fmap" "finite_map"
365              [T"num" "num" [],
366               T"cart" "fcp" [bool, T"i32" "words" []]]]))))),
367      ("MLDR",
368       ((T"MREG" "IL" [] -->
369         (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
370          T"DOPER" "IL" [])))),
371      ("from_reg_index",((T"num" "num" [] --> T"MREG" "IL" []))),
372      ("toREG",((T"MREG" "IL" [] --> T"EXP" "preARM" []))),
373      ("MEOR",
374       ((T"MREG" "IL" [] -->
375         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
376      ("MREG_size",((T"MREG" "IL" [] --> T"num" "num" []))),
377      ("TR",
378       ((T"prod" "pair"
379          [T"MREG" "IL" [],
380           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
381         (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])))),
382      ("MEXP_size",((T"MEXP" "IL" [] --> T"num" "num" []))),
383      ("toMEM",
384       ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
385         T"EXP" "preARM" []))),
386      ("SC",
387       ((T"CTL_STRUCTURE" "IL" [] -->
388         (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])))),
389      ("MR",((T"MREG" "IL" [] --> T"MEXP" "IL" []))),
390      ("MASR",
391       ((T"MREG" "IL" [] -->
392         (T"MREG" "IL" [] -->
393          (T"cart" "fcp" [bool, T"i5" "words" []] -->
394           T"DOPER" "IL" []))))), ("R9",(T"MREG" "IL" [])),
395      ("R8",(T"MREG" "IL" [])), ("R7",(T"MREG" "IL" [])),
396      ("R6",(T"MREG" "IL" [])), ("R5",(T"MREG" "IL" [])),
397      ("R4",(T"MREG" "IL" [])), ("R3",(T"MREG" "IL" [])),
398      ("R2",(T"MREG" "IL" [])), ("R1",(T"MREG" "IL" [])),
399      ("R0",(T"MREG" "IL" [])),
400      ("MC",
401       ((T"cart" "fcp" [bool, T"i4" "words" []] -->
402         (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" [])))),
403      ("toEXP",((T"MEXP" "IL" [] --> T"EXP" "preARM" []))),
404      ("MAND",
405       ((T"MREG" "IL" [] -->
406         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
407      ("CJ",
408       ((T"prod" "pair"
409          [T"MREG" "IL" [],
410           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
411         (T"CTL_STRUCTURE" "IL" [] -->
412          (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))))),
413      ("MADD",
414       ((T"MREG" "IL" [] -->
415         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
416      ("IL19",
417       ((T"CTL_STRUCTURE" "IL" [] -->
418         (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])))),
419      ("IL18",
420       ((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" []))),
421      ("IL17",
422       ((T"num" "num" [] -->
423         (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" [])))),
424      ("IL16",
425       ((T"num" "num" [] -->
426         (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" [])))),
427      ("IL21",
428       ((T"prod" "pair"
429          [T"MREG" "IL" [],
430           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
431         (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])))),
432      ("IL15",
433       ((T"MREG" "IL" [] -->
434         (T"MREG" "IL" [] -->
435          (T"cart" "fcp" [bool, T"i5" "words" []] -->
436           T"DOPER" "IL" []))))),
437      ("IL20",
438       ((T"prod" "pair"
439          [T"MREG" "IL" [],
440           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
441         (T"CTL_STRUCTURE" "IL" [] -->
442          (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))))),
443      ("IL14",
444       ((T"MREG" "IL" [] -->
445         (T"MREG" "IL" [] -->
446          (T"cart" "fcp" [bool, T"i5" "words" []] -->
447           T"DOPER" "IL" []))))),
448      ("IL13",
449       ((T"MREG" "IL" [] -->
450         (T"MREG" "IL" [] -->
451          (T"cart" "fcp" [bool, T"i5" "words" []] -->
452           T"DOPER" "IL" []))))),
453      ("IL12",
454       ((T"MREG" "IL" [] -->
455         (T"MREG" "IL" [] -->
456          (T"cart" "fcp" [bool, T"i5" "words" []] -->
457           T"DOPER" "IL" []))))),
458      ("IL11",
459       ((T"MREG" "IL" [] -->
460         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
461      ("IL10",
462       ((T"MREG" "IL" [] -->
463         (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))))),
464      ("CTL_STRUCTURE_case",
465       (((T"list" "list" [T"DOPER" "IL" []] --> alpha) -->
466         ((T"CTL_STRUCTURE" "IL" [] -->
467           (T"CTL_STRUCTURE" "IL" [] --> alpha)) -->
468          ((T"prod" "pair"
469             [T"MREG" "IL" [],
470              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
471            (T"CTL_STRUCTURE" "IL" [] -->
472             (T"CTL_STRUCTURE" "IL" [] --> alpha))) -->
473           ((T"prod" "pair"
474              [T"MREG" "IL" [],
475               T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
476             (T"CTL_STRUCTURE" "IL" [] --> alpha)) -->
477            (T"CTL_STRUCTURE" "IL" [] --> alpha)))))))];
478
479  local
480  val share_table = Vector.fromList
481  [C"?" "bool"
482    ((((T"MREG" "IL" [] --> T"num" "num" []) --> bool) --> bool)),
483   V"rep" ((T"MREG" "IL" [] --> T"num" "num" [])),
484   C"TYPE_DEFINITION" "bool"
485    (((T"num" "num" [] --> bool) -->
486      ((T"MREG" "IL" [] --> T"num" "num" []) --> bool))),
487   V"n" (T"num" "num" []),
488   C"<" "prim_rec" ((T"num" "num" [] --> (T"num" "num" [] --> bool))),
489   C"NUMERAL" "arithmetic" ((T"num" "num" [] --> T"num" "num" [])),
490   C"BIT1" "arithmetic" ((T"num" "num" [] --> T"num" "num" [])),
491   C"ZERO" "arithmetic" (T"num" "num" []),
492   C"/\\" "bool" ((bool --> (bool --> bool))),
493   C"!" "bool" (((T"MREG" "IL" [] --> bool) --> bool)),
494   V"a" (T"MREG" "IL" []),
495   C"=" "min" ((T"MREG" "IL" [] --> (T"MREG" "IL" [] --> bool))),
496   C"num2MREG" "IL" ((T"num" "num" [] --> T"MREG" "IL" [])),
497   C"MREG2num" "IL" ((T"MREG" "IL" [] --> T"num" "num" [])),
498   C"!" "bool" (((T"num" "num" [] --> bool) --> bool)),
499   V"r" (T"num" "num" []), C"=" "min" ((bool --> (bool --> bool))),
500   C"=" "min" ((T"num" "num" [] --> (T"num" "num" [] --> bool))),
501   C"R0" "IL" (T"MREG" "IL" []), C"0" "num" (T"num" "num" []),
502   C"R1" "IL" (T"MREG" "IL" []), C"R2" "IL" (T"MREG" "IL" []),
503   C"BIT2" "arithmetic" ((T"num" "num" [] --> T"num" "num" [])),
504   C"R3" "IL" (T"MREG" "IL" []), C"R4" "IL" (T"MREG" "IL" []),
505   C"R5" "IL" (T"MREG" "IL" []), C"R6" "IL" (T"MREG" "IL" []),
506   C"R7" "IL" (T"MREG" "IL" []), C"R8" "IL" (T"MREG" "IL" []),
507   C"R9" "IL" (T"MREG" "IL" []), C"R10" "IL" (T"MREG" "IL" []),
508   C"R11" "IL" (T"MREG" "IL" []), C"R12" "IL" (T"MREG" "IL" []),
509   C"R13" "IL" (T"MREG" "IL" []), C"R14" "IL" (T"MREG" "IL" []),
510   V"x" (T"MREG" "IL" []),
511   C"MREG_size" "IL" ((T"MREG" "IL" [] --> T"num" "num" [])),
512   C"!" "bool" (((alpha --> bool) --> bool)), V"v0" (alpha), V"v1" (alpha),
513   V"v2" (alpha), V"v3" (alpha), V"v4" (alpha), V"v5" (alpha),
514   V"v6" (alpha), V"v7" (alpha), V"v8" (alpha), V"v9" (alpha),
515   V"v10" (alpha), V"v11" (alpha), V"v12" (alpha), V"v13" (alpha),
516   V"v14" (alpha), C"=" "min" ((alpha --> (alpha --> bool))),
517   C"MREG_case" "IL"
518    ((alpha -->
519      (alpha -->
520       (alpha -->
521        (alpha -->
522         (alpha -->
523          (alpha -->
524           (alpha -->
525            (alpha -->
526             (alpha -->
527              (alpha -->
528               (alpha -->
529                (alpha -->
530                 (alpha -->
531                  (alpha -->
532                   (alpha --> (T"MREG" "IL" [] --> alpha))))))))))))))))),
533   V"m" (T"num" "num" []),
534   C"COND" "bool" ((bool --> (alpha --> (alpha --> alpha)))),
535   C"?" "bool"
536    ((((T"MEXP" "IL" [] -->
537        T"recspace" "ind_type"
538         [T"prod" "pair"
539           [T"MREG" "IL" [],
540            T"prod" "pair"
541             [T"cart" "fcp" [bool, T"i4" "words" []],
542              T"cart" "fcp" [bool, T"i8" "words" []]]]]) --> bool) -->
543      bool)),
544   V"rep"
545    ((T"MEXP" "IL" [] -->
546      T"recspace" "ind_type"
547       [T"prod" "pair"
548         [T"MREG" "IL" [],
549          T"prod" "pair"
550           [T"cart" "fcp" [bool, T"i4" "words" []],
551            T"cart" "fcp" [bool, T"i8" "words" []]]]])),
552   C"TYPE_DEFINITION" "bool"
553    (((T"recspace" "ind_type"
554        [T"prod" "pair"
555          [T"MREG" "IL" [],
556           T"prod" "pair"
557            [T"cart" "fcp" [bool, T"i4" "words" []],
558             T"cart" "fcp" [bool, T"i8" "words" []]]]] --> bool) -->
559      ((T"MEXP" "IL" [] -->
560        T"recspace" "ind_type"
561         [T"prod" "pair"
562           [T"MREG" "IL" [],
563            T"prod" "pair"
564             [T"cart" "fcp" [bool, T"i4" "words" []],
565              T"cart" "fcp" [bool, T"i8" "words" []]]]]) --> bool))),
566   V"a0'"
567    (T"recspace" "ind_type"
568      [T"prod" "pair"
569        [T"MREG" "IL" [],
570         T"prod" "pair"
571          [T"cart" "fcp" [bool, T"i4" "words" []],
572           T"cart" "fcp" [bool, T"i8" "words" []]]]]),
573   C"!" "bool"
574    ((((T"recspace" "ind_type"
575         [T"prod" "pair"
576           [T"MREG" "IL" [],
577            T"prod" "pair"
578             [T"cart" "fcp" [bool, T"i4" "words" []],
579              T"cart" "fcp" [bool, T"i8" "words" []]]]] --> bool) --> bool)
580      --> bool)),
581   V"'MEXP'"
582    ((T"recspace" "ind_type"
583       [T"prod" "pair"
584         [T"MREG" "IL" [],
585          T"prod" "pair"
586           [T"cart" "fcp" [bool, T"i4" "words" []],
587            T"cart" "fcp" [bool, T"i8" "words" []]]]] --> bool)),
588   C"==>" "min" ((bool --> (bool --> bool))),
589   C"!" "bool"
590    (((T"recspace" "ind_type"
591        [T"prod" "pair"
592          [T"MREG" "IL" [],
593           T"prod" "pair"
594            [T"cart" "fcp" [bool, T"i4" "words" []],
595             T"cart" "fcp" [bool, T"i8" "words" []]]]] --> bool) -->
596      bool)), C"\\/" "bool" ((bool --> (bool --> bool))),
597   C"?" "bool" (((T"MREG" "IL" [] --> bool) --> bool)),
598   C"=" "min"
599    ((T"recspace" "ind_type"
600       [T"prod" "pair"
601         [T"MREG" "IL" [],
602          T"prod" "pair"
603           [T"cart" "fcp" [bool, T"i4" "words" []],
604            T"cart" "fcp" [bool, T"i8" "words" []]]]] -->
605      (T"recspace" "ind_type"
606        [T"prod" "pair"
607          [T"MREG" "IL" [],
608           T"prod" "pair"
609            [T"cart" "fcp" [bool, T"i4" "words" []],
610             T"cart" "fcp" [bool, T"i8" "words" []]]]] --> bool))),
611   C"CONSTR" "ind_type"
612    ((T"num" "num" [] -->
613      (T"prod" "pair"
614        [T"MREG" "IL" [],
615         T"prod" "pair"
616          [T"cart" "fcp" [bool, T"i4" "words" []],
617           T"cart" "fcp" [bool, T"i8" "words" []]]] -->
618       ((T"num" "num" [] -->
619         T"recspace" "ind_type"
620          [T"prod" "pair"
621            [T"MREG" "IL" [],
622             T"prod" "pair"
623              [T"cart" "fcp" [bool, T"i4" "words" []],
624               T"cart" "fcp" [bool, T"i8" "words" []]]]]) -->
625        T"recspace" "ind_type"
626         [T"prod" "pair"
627           [T"MREG" "IL" [],
628            T"prod" "pair"
629             [T"cart" "fcp" [bool, T"i4" "words" []],
630              T"cart" "fcp" [bool, T"i8" "words" []]]]])))),
631   C"," "pair"
632    ((T"MREG" "IL" [] -->
633      (T"prod" "pair"
634        [T"cart" "fcp" [bool, T"i4" "words" []],
635         T"cart" "fcp" [bool, T"i8" "words" []]] -->
636       T"prod" "pair"
637        [T"MREG" "IL" [],
638         T"prod" "pair"
639          [T"cart" "fcp" [bool, T"i4" "words" []],
640           T"cart" "fcp" [bool, T"i8" "words" []]]]))),
641   C"," "pair"
642    ((T"cart" "fcp" [bool, T"i4" "words" []] -->
643      (T"cart" "fcp" [bool, T"i8" "words" []] -->
644       T"prod" "pair"
645        [T"cart" "fcp" [bool, T"i4" "words" []],
646         T"cart" "fcp" [bool, T"i8" "words" []]]))),
647   C"@" "min"
648    (((T"cart" "fcp" [bool, T"i4" "words" []] --> bool) -->
649      T"cart" "fcp" [bool, T"i4" "words" []])),
650   V"v" (T"cart" "fcp" [bool, T"i4" "words" []]), C"T" "bool" (bool),
651   C"@" "min"
652    (((T"cart" "fcp" [bool, T"i8" "words" []] --> bool) -->
653      T"cart" "fcp" [bool, T"i8" "words" []])),
654   V"v" (T"cart" "fcp" [bool, T"i8" "words" []]),
655   C"BOTTOM" "ind_type"
656    (T"recspace" "ind_type"
657      [T"prod" "pair"
658        [T"MREG" "IL" [],
659         T"prod" "pair"
660          [T"cart" "fcp" [bool, T"i4" "words" []],
661           T"cart" "fcp" [bool, T"i8" "words" []]]]]),
662   C"?" "bool"
663    (((T"cart" "fcp" [bool, T"i4" "words" []] --> bool) --> bool)),
664   V"a0" (T"cart" "fcp" [bool, T"i4" "words" []]),
665   C"?" "bool"
666    (((T"cart" "fcp" [bool, T"i8" "words" []] --> bool) --> bool)),
667   V"a1" (T"cart" "fcp" [bool, T"i8" "words" []]),
668   C"SUC" "num" ((T"num" "num" [] --> T"num" "num" [])),
669   C"@" "min" (((T"MREG" "IL" [] --> bool) --> T"MREG" "IL" [])),
670   V"v" (T"MREG" "IL" []),
671   C"!" "bool" (((T"MEXP" "IL" [] --> bool) --> bool)),
672   V"a" (T"MEXP" "IL" []),
673   C"=" "min" ((T"MEXP" "IL" [] --> (T"MEXP" "IL" [] --> bool))),
674   C"mk_MEXP" "IL"
675    ((T"recspace" "ind_type"
676       [T"prod" "pair"
677         [T"MREG" "IL" [],
678          T"prod" "pair"
679           [T"cart" "fcp" [bool, T"i4" "words" []],
680            T"cart" "fcp" [bool, T"i8" "words" []]]]] -->
681      T"MEXP" "IL" [])),
682   C"dest_MEXP" "IL"
683    ((T"MEXP" "IL" [] -->
684      T"recspace" "ind_type"
685       [T"prod" "pair"
686         [T"MREG" "IL" [],
687          T"prod" "pair"
688           [T"cart" "fcp" [bool, T"i4" "words" []],
689            T"cart" "fcp" [bool, T"i8" "words" []]]]])),
690   V"r"
691    (T"recspace" "ind_type"
692      [T"prod" "pair"
693        [T"MREG" "IL" [],
694         T"prod" "pair"
695          [T"cart" "fcp" [bool, T"i4" "words" []],
696           T"cart" "fcp" [bool, T"i8" "words" []]]]]),
697   C"=" "min"
698    (((T"MREG" "IL" [] --> T"MEXP" "IL" []) -->
699      ((T"MREG" "IL" [] --> T"MEXP" "IL" []) --> bool))),
700   C"IL0" "IL" ((T"MREG" "IL" [] --> T"MEXP" "IL" [])),
701   C"=" "min"
702    (((T"cart" "fcp" [bool, T"i4" "words" []] -->
703       (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" [])) -->
704      ((T"cart" "fcp" [bool, T"i4" "words" []] -->
705        (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" [])) -->
706       bool))),
707   C"IL1" "IL"
708    ((T"cart" "fcp" [bool, T"i4" "words" []] -->
709      (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" []))),
710   C"MR" "IL" ((T"MREG" "IL" [] --> T"MEXP" "IL" [])),
711   C"MC" "IL"
712    ((T"cart" "fcp" [bool, T"i4" "words" []] -->
713      (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" []))),
714   C"!" "bool" ((((T"MREG" "IL" [] --> alpha) --> bool) --> bool)),
715   V"f" ((T"MREG" "IL" [] --> alpha)),
716   C"!" "bool"
717    ((((T"cart" "fcp" [bool, T"i4" "words" []] -->
718        (T"cart" "fcp" [bool, T"i8" "words" []] --> alpha)) --> bool) -->
719      bool)),
720   V"f1"
721    ((T"cart" "fcp" [bool, T"i4" "words" []] -->
722      (T"cart" "fcp" [bool, T"i8" "words" []] --> alpha))),
723   C"MEXP_case" "IL"
724    (((T"MREG" "IL" [] --> alpha) -->
725      ((T"cart" "fcp" [bool, T"i4" "words" []] -->
726        (T"cart" "fcp" [bool, T"i8" "words" []] --> alpha)) -->
727       (T"MEXP" "IL" [] --> alpha)))),
728   C"!" "bool"
729    (((T"cart" "fcp" [bool, T"i4" "words" []] --> bool) --> bool)),
730   C"!" "bool"
731    (((T"cart" "fcp" [bool, T"i8" "words" []] --> bool) --> bool)),
732   C"MEXP_size" "IL" ((T"MEXP" "IL" [] --> T"num" "num" [])),
733   C"+" "arithmetic"
734    ((T"num" "num" [] --> (T"num" "num" [] --> T"num" "num" []))),
735   C"index_of_reg" "IL" ((T"MREG" "IL" [] --> T"num" "num" [])),
736   V"i" (T"num" "num" []),
737   C"from_reg_index" "IL" ((T"num" "num" [] --> T"MREG" "IL" [])),
738   C"COND" "bool"
739    ((bool -->
740      (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"MREG" "IL" [])))),
741   V"r" (T"MREG" "IL" []),
742   C"=" "min" ((T"EXP" "preARM" [] --> (T"EXP" "preARM" [] --> bool))),
743   C"toREG" "IL" ((T"MREG" "IL" [] --> T"EXP" "preARM" [])),
744   C"REG" "preARM" ((T"num" "num" [] --> T"EXP" "preARM" [])),
745   V"base" (T"num" "num" []),
746   C"!" "bool" (((T"OFFSET" "preARM" [] --> bool) --> bool)),
747   V"offset" (T"OFFSET" "preARM" []),
748   C"toMEM" "IL"
749    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
750      T"EXP" "preARM" [])),
751   C"," "pair"
752    ((T"num" "num" [] -->
753      (T"OFFSET" "preARM" [] -->
754       T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]))),
755   C"MEM" "preARM"
756    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
757      T"EXP" "preARM" [])),
758   C"toEXP" "IL" ((T"MEXP" "IL" [] --> T"EXP" "preARM" [])),
759   V"shift" (T"cart" "fcp" [bool, T"i4" "words" []]),
760   V"c" (T"cart" "fcp" [bool, T"i8" "words" []]),
761   C"WCONST" "preARM"
762    ((T"cart" "fcp" [bool, T"i32" "words" []] --> T"EXP" "preARM" [])),
763   C"word_ror" "words"
764    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
765      (T"num" "num" [] --> T"cart" "fcp" [bool, T"i32" "words" []]))),
766   C"w2w" "words"
767    ((T"cart" "fcp" [bool, T"i8" "words" []] -->
768      T"cart" "fcp" [bool, T"i32" "words" []])),
769   C"*" "arithmetic"
770    ((T"num" "num" [] --> (T"num" "num" [] --> T"num" "num" []))),
771   C"w2n" "words"
772    ((T"cart" "fcp" [bool, T"i4" "words" []] --> T"num" "num" [])),
773   C"?" "bool"
774    ((((T"DOPER" "IL" [] -->
775        T"recspace" "ind_type"
776         [T"prod" "pair"
777           [T"MREG" "IL" [],
778            T"prod" "pair"
779             [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
780              T"prod" "pair"
781               [T"MEXP" "IL" [],
782                T"prod" "pair"
783                 [T"MREG" "IL" [],
784                  T"prod" "pair"
785                   [T"MREG" "IL" [],
786                    T"prod" "pair"
787                     [T"cart" "fcp" [bool, T"i5" "words" []],
788                      T"prod" "pair"
789                       [T"num" "num" [],
790                        T"list" "list" [T"num" "num" []]]]]]]]]]) --> bool)
791      --> bool)),
792   V"rep"
793    ((T"DOPER" "IL" [] -->
794      T"recspace" "ind_type"
795       [T"prod" "pair"
796         [T"MREG" "IL" [],
797          T"prod" "pair"
798           [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
799            T"prod" "pair"
800             [T"MEXP" "IL" [],
801              T"prod" "pair"
802               [T"MREG" "IL" [],
803                T"prod" "pair"
804                 [T"MREG" "IL" [],
805                  T"prod" "pair"
806                   [T"cart" "fcp" [bool, T"i5" "words" []],
807                    T"prod" "pair"
808                     [T"num" "num" [],
809                      T"list" "list" [T"num" "num" []]]]]]]]]])),
810   C"TYPE_DEFINITION" "bool"
811    (((T"recspace" "ind_type"
812        [T"prod" "pair"
813          [T"MREG" "IL" [],
814           T"prod" "pair"
815            [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
816             T"prod" "pair"
817              [T"MEXP" "IL" [],
818               T"prod" "pair"
819                [T"MREG" "IL" [],
820                 T"prod" "pair"
821                  [T"MREG" "IL" [],
822                   T"prod" "pair"
823                    [T"cart" "fcp" [bool, T"i5" "words" []],
824                     T"prod" "pair"
825                      [T"num" "num" [],
826                       T"list" "list" [T"num" "num" []]]]]]]]]] --> bool)
827      -->
828      ((T"DOPER" "IL" [] -->
829        T"recspace" "ind_type"
830         [T"prod" "pair"
831           [T"MREG" "IL" [],
832            T"prod" "pair"
833             [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
834              T"prod" "pair"
835               [T"MEXP" "IL" [],
836                T"prod" "pair"
837                 [T"MREG" "IL" [],
838                  T"prod" "pair"
839                   [T"MREG" "IL" [],
840                    T"prod" "pair"
841                     [T"cart" "fcp" [bool, T"i5" "words" []],
842                      T"prod" "pair"
843                       [T"num" "num" [],
844                        T"list" "list" [T"num" "num" []]]]]]]]]]) -->
845       bool))),
846   V"a0'"
847    (T"recspace" "ind_type"
848      [T"prod" "pair"
849        [T"MREG" "IL" [],
850         T"prod" "pair"
851          [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
852           T"prod" "pair"
853            [T"MEXP" "IL" [],
854             T"prod" "pair"
855              [T"MREG" "IL" [],
856               T"prod" "pair"
857                [T"MREG" "IL" [],
858                 T"prod" "pair"
859                  [T"cart" "fcp" [bool, T"i5" "words" []],
860                   T"prod" "pair"
861                    [T"num" "num" [],
862                     T"list" "list" [T"num" "num" []]]]]]]]]]),
863   C"!" "bool"
864    ((((T"recspace" "ind_type"
865         [T"prod" "pair"
866           [T"MREG" "IL" [],
867            T"prod" "pair"
868             [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
869              T"prod" "pair"
870               [T"MEXP" "IL" [],
871                T"prod" "pair"
872                 [T"MREG" "IL" [],
873                  T"prod" "pair"
874                   [T"MREG" "IL" [],
875                    T"prod" "pair"
876                     [T"cart" "fcp" [bool, T"i5" "words" []],
877                      T"prod" "pair"
878                       [T"num" "num" [],
879                        T"list" "list" [T"num" "num" []]]]]]]]]] --> bool)
880       --> bool) --> bool)),
881   V"'DOPER'"
882    ((T"recspace" "ind_type"
883       [T"prod" "pair"
884         [T"MREG" "IL" [],
885          T"prod" "pair"
886           [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
887            T"prod" "pair"
888             [T"MEXP" "IL" [],
889              T"prod" "pair"
890               [T"MREG" "IL" [],
891                T"prod" "pair"
892                 [T"MREG" "IL" [],
893                  T"prod" "pair"
894                   [T"cart" "fcp" [bool, T"i5" "words" []],
895                    T"prod" "pair"
896                     [T"num" "num" [],
897                      T"list" "list" [T"num" "num" []]]]]]]]]] --> bool)),
898   C"!" "bool"
899    (((T"recspace" "ind_type"
900        [T"prod" "pair"
901          [T"MREG" "IL" [],
902           T"prod" "pair"
903            [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
904             T"prod" "pair"
905              [T"MEXP" "IL" [],
906               T"prod" "pair"
907                [T"MREG" "IL" [],
908                 T"prod" "pair"
909                  [T"MREG" "IL" [],
910                   T"prod" "pair"
911                    [T"cart" "fcp" [bool, T"i5" "words" []],
912                     T"prod" "pair"
913                      [T"num" "num" [],
914                       T"list" "list" [T"num" "num" []]]]]]]]]] --> bool)
915      --> bool)), V"a0" (T"MREG" "IL" []),
916   C"?" "bool"
917    (((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] --> bool)
918      --> bool)),
919   V"a1" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
920   C"=" "min"
921    ((T"recspace" "ind_type"
922       [T"prod" "pair"
923         [T"MREG" "IL" [],
924          T"prod" "pair"
925           [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
926            T"prod" "pair"
927             [T"MEXP" "IL" [],
928              T"prod" "pair"
929               [T"MREG" "IL" [],
930                T"prod" "pair"
931                 [T"MREG" "IL" [],
932                  T"prod" "pair"
933                   [T"cart" "fcp" [bool, T"i5" "words" []],
934                    T"prod" "pair"
935                     [T"num" "num" [],
936                      T"list" "list" [T"num" "num" []]]]]]]]]] -->
937      (T"recspace" "ind_type"
938        [T"prod" "pair"
939          [T"MREG" "IL" [],
940           T"prod" "pair"
941            [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
942             T"prod" "pair"
943              [T"MEXP" "IL" [],
944               T"prod" "pair"
945                [T"MREG" "IL" [],
946                 T"prod" "pair"
947                  [T"MREG" "IL" [],
948                   T"prod" "pair"
949                    [T"cart" "fcp" [bool, T"i5" "words" []],
950                     T"prod" "pair"
951                      [T"num" "num" [],
952                       T"list" "list" [T"num" "num" []]]]]]]]]] -->
953       bool))),
954   C"CONSTR" "ind_type"
955    ((T"num" "num" [] -->
956      (T"prod" "pair"
957        [T"MREG" "IL" [],
958         T"prod" "pair"
959          [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
960           T"prod" "pair"
961            [T"MEXP" "IL" [],
962             T"prod" "pair"
963              [T"MREG" "IL" [],
964               T"prod" "pair"
965                [T"MREG" "IL" [],
966                 T"prod" "pair"
967                  [T"cart" "fcp" [bool, T"i5" "words" []],
968                   T"prod" "pair"
969                    [T"num" "num" [],
970                     T"list" "list" [T"num" "num" []]]]]]]]] -->
971       ((T"num" "num" [] -->
972         T"recspace" "ind_type"
973          [T"prod" "pair"
974            [T"MREG" "IL" [],
975             T"prod" "pair"
976              [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
977               T"prod" "pair"
978                [T"MEXP" "IL" [],
979                 T"prod" "pair"
980                  [T"MREG" "IL" [],
981                   T"prod" "pair"
982                    [T"MREG" "IL" [],
983                     T"prod" "pair"
984                      [T"cart" "fcp" [bool, T"i5" "words" []],
985                       T"prod" "pair"
986                        [T"num" "num" [],
987                         T"list" "list" [T"num" "num" []]]]]]]]]]) -->
988        T"recspace" "ind_type"
989         [T"prod" "pair"
990           [T"MREG" "IL" [],
991            T"prod" "pair"
992             [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
993              T"prod" "pair"
994               [T"MEXP" "IL" [],
995                T"prod" "pair"
996                 [T"MREG" "IL" [],
997                  T"prod" "pair"
998                   [T"MREG" "IL" [],
999                    T"prod" "pair"
1000                     [T"cart" "fcp" [bool, T"i5" "words" []],
1001                      T"prod" "pair"
1002                       [T"num" "num" [],
1003                        T"list" "list" [T"num" "num" []]]]]]]]]])))),
1004   C"," "pair"
1005    ((T"MREG" "IL" [] -->
1006      (T"prod" "pair"
1007        [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1008         T"prod" "pair"
1009          [T"MEXP" "IL" [],
1010           T"prod" "pair"
1011            [T"MREG" "IL" [],
1012             T"prod" "pair"
1013              [T"MREG" "IL" [],
1014               T"prod" "pair"
1015                [T"cart" "fcp" [bool, T"i5" "words" []],
1016                 T"prod" "pair"
1017                  [T"num" "num" [], T"list" "list" [T"num" "num" []]]]]]]]
1018       -->
1019       T"prod" "pair"
1020        [T"MREG" "IL" [],
1021         T"prod" "pair"
1022          [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1023           T"prod" "pair"
1024            [T"MEXP" "IL" [],
1025             T"prod" "pair"
1026              [T"MREG" "IL" [],
1027               T"prod" "pair"
1028                [T"MREG" "IL" [],
1029                 T"prod" "pair"
1030                  [T"cart" "fcp" [bool, T"i5" "words" []],
1031                   T"prod" "pair"
1032                    [T"num" "num" [],
1033                     T"list" "list" [T"num" "num" []]]]]]]]]))),
1034   C"," "pair"
1035    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1036      (T"prod" "pair"
1037        [T"MEXP" "IL" [],
1038         T"prod" "pair"
1039          [T"MREG" "IL" [],
1040           T"prod" "pair"
1041            [T"MREG" "IL" [],
1042             T"prod" "pair"
1043              [T"cart" "fcp" [bool, T"i5" "words" []],
1044               T"prod" "pair"
1045                [T"num" "num" [], T"list" "list" [T"num" "num" []]]]]]] -->
1046       T"prod" "pair"
1047        [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1048         T"prod" "pair"
1049          [T"MEXP" "IL" [],
1050           T"prod" "pair"
1051            [T"MREG" "IL" [],
1052             T"prod" "pair"
1053              [T"MREG" "IL" [],
1054               T"prod" "pair"
1055                [T"cart" "fcp" [bool, T"i5" "words" []],
1056                 T"prod" "pair"
1057                  [T"num" "num" [],
1058                   T"list" "list" [T"num" "num" []]]]]]]]))),
1059   C"," "pair"
1060    ((T"MEXP" "IL" [] -->
1061      (T"prod" "pair"
1062        [T"MREG" "IL" [],
1063         T"prod" "pair"
1064          [T"MREG" "IL" [],
1065           T"prod" "pair"
1066            [T"cart" "fcp" [bool, T"i5" "words" []],
1067             T"prod" "pair"
1068              [T"num" "num" [], T"list" "list" [T"num" "num" []]]]]] -->
1069       T"prod" "pair"
1070        [T"MEXP" "IL" [],
1071         T"prod" "pair"
1072          [T"MREG" "IL" [],
1073           T"prod" "pair"
1074            [T"MREG" "IL" [],
1075             T"prod" "pair"
1076              [T"cart" "fcp" [bool, T"i5" "words" []],
1077               T"prod" "pair"
1078                [T"num" "num" [], T"list" "list" [T"num" "num" []]]]]]]))),
1079   C"@" "min" (((T"MEXP" "IL" [] --> bool) --> T"MEXP" "IL" [])),
1080   V"v" (T"MEXP" "IL" []),
1081   C"," "pair"
1082    ((T"MREG" "IL" [] -->
1083      (T"prod" "pair"
1084        [T"MREG" "IL" [],
1085         T"prod" "pair"
1086          [T"cart" "fcp" [bool, T"i5" "words" []],
1087           T"prod" "pair"
1088            [T"num" "num" [], T"list" "list" [T"num" "num" []]]]] -->
1089       T"prod" "pair"
1090        [T"MREG" "IL" [],
1091         T"prod" "pair"
1092          [T"MREG" "IL" [],
1093           T"prod" "pair"
1094            [T"cart" "fcp" [bool, T"i5" "words" []],
1095             T"prod" "pair"
1096              [T"num" "num" [], T"list" "list" [T"num" "num" []]]]]]))),
1097   C"," "pair"
1098    ((T"MREG" "IL" [] -->
1099      (T"prod" "pair"
1100        [T"cart" "fcp" [bool, T"i5" "words" []],
1101         T"prod" "pair"
1102          [T"num" "num" [], T"list" "list" [T"num" "num" []]]] -->
1103       T"prod" "pair"
1104        [T"MREG" "IL" [],
1105         T"prod" "pair"
1106          [T"cart" "fcp" [bool, T"i5" "words" []],
1107           T"prod" "pair"
1108            [T"num" "num" [], T"list" "list" [T"num" "num" []]]]]))),
1109   C"," "pair"
1110    ((T"cart" "fcp" [bool, T"i5" "words" []] -->
1111      (T"prod" "pair" [T"num" "num" [], T"list" "list" [T"num" "num" []]]
1112       -->
1113       T"prod" "pair"
1114        [T"cart" "fcp" [bool, T"i5" "words" []],
1115         T"prod" "pair"
1116          [T"num" "num" [], T"list" "list" [T"num" "num" []]]]))),
1117   C"@" "min"
1118    (((T"cart" "fcp" [bool, T"i5" "words" []] --> bool) -->
1119      T"cart" "fcp" [bool, T"i5" "words" []])),
1120   V"v" (T"cart" "fcp" [bool, T"i5" "words" []]),
1121   C"," "pair"
1122    ((T"num" "num" [] -->
1123      (T"list" "list" [T"num" "num" []] -->
1124       T"prod" "pair"
1125        [T"num" "num" [], T"list" "list" [T"num" "num" []]]))),
1126   C"@" "min" (((T"num" "num" [] --> bool) --> T"num" "num" [])),
1127   V"v" (T"num" "num" []),
1128   C"@" "min"
1129    (((T"list" "list" [T"num" "num" []] --> bool) -->
1130      T"list" "list" [T"num" "num" []])),
1131   V"v" (T"list" "list" [T"num" "num" []]),
1132   C"BOTTOM" "ind_type"
1133    (T"recspace" "ind_type"
1134      [T"prod" "pair"
1135        [T"MREG" "IL" [],
1136         T"prod" "pair"
1137          [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1138           T"prod" "pair"
1139            [T"MEXP" "IL" [],
1140             T"prod" "pair"
1141              [T"MREG" "IL" [],
1142               T"prod" "pair"
1143                [T"MREG" "IL" [],
1144                 T"prod" "pair"
1145                  [T"cart" "fcp" [bool, T"i5" "words" []],
1146                   T"prod" "pair"
1147                    [T"num" "num" [],
1148                     T"list" "list" [T"num" "num" []]]]]]]]]]),
1149   V"a0" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
1150   V"a1" (T"MREG" "IL" []),
1151   C"?" "bool" (((T"MEXP" "IL" [] --> bool) --> bool)),
1152   V"a1" (T"MEXP" "IL" []),
1153   C"@" "min"
1154    (((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] --> bool)
1155      --> T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []])),
1156   V"v" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
1157   V"a2" (T"MEXP" "IL" []), V"a2" (T"MREG" "IL" []),
1158   C"?" "bool"
1159    (((T"cart" "fcp" [bool, T"i5" "words" []] --> bool) --> bool)),
1160   V"a2" (T"cart" "fcp" [bool, T"i5" "words" []]),
1161   C"?" "bool" (((T"num" "num" [] --> bool) --> bool)),
1162   V"a0" (T"num" "num" []),
1163   C"?" "bool" (((T"list" "list" [T"num" "num" []] --> bool) --> bool)),
1164   V"a1" (T"list" "list" [T"num" "num" []]),
1165   C"!" "bool" (((T"DOPER" "IL" [] --> bool) --> bool)),
1166   V"a" (T"DOPER" "IL" []),
1167   C"=" "min" ((T"DOPER" "IL" [] --> (T"DOPER" "IL" [] --> bool))),
1168   C"mk_DOPER" "IL"
1169    ((T"recspace" "ind_type"
1170       [T"prod" "pair"
1171         [T"MREG" "IL" [],
1172          T"prod" "pair"
1173           [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1174            T"prod" "pair"
1175             [T"MEXP" "IL" [],
1176              T"prod" "pair"
1177               [T"MREG" "IL" [],
1178                T"prod" "pair"
1179                 [T"MREG" "IL" [],
1180                  T"prod" "pair"
1181                   [T"cart" "fcp" [bool, T"i5" "words" []],
1182                    T"prod" "pair"
1183                     [T"num" "num" [],
1184                      T"list" "list" [T"num" "num" []]]]]]]]]] -->
1185      T"DOPER" "IL" [])),
1186   C"dest_DOPER" "IL"
1187    ((T"DOPER" "IL" [] -->
1188      T"recspace" "ind_type"
1189       [T"prod" "pair"
1190         [T"MREG" "IL" [],
1191          T"prod" "pair"
1192           [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1193            T"prod" "pair"
1194             [T"MEXP" "IL" [],
1195              T"prod" "pair"
1196               [T"MREG" "IL" [],
1197                T"prod" "pair"
1198                 [T"MREG" "IL" [],
1199                  T"prod" "pair"
1200                   [T"cart" "fcp" [bool, T"i5" "words" []],
1201                    T"prod" "pair"
1202                     [T"num" "num" [],
1203                      T"list" "list" [T"num" "num" []]]]]]]]]])),
1204   V"r"
1205    (T"recspace" "ind_type"
1206      [T"prod" "pair"
1207        [T"MREG" "IL" [],
1208         T"prod" "pair"
1209          [T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []],
1210           T"prod" "pair"
1211            [T"MEXP" "IL" [],
1212             T"prod" "pair"
1213              [T"MREG" "IL" [],
1214               T"prod" "pair"
1215                [T"MREG" "IL" [],
1216                 T"prod" "pair"
1217                  [T"cart" "fcp" [bool, T"i5" "words" []],
1218                   T"prod" "pair"
1219                    [T"num" "num" [],
1220                     T"list" "list" [T"num" "num" []]]]]]]]]]),
1221   C"=" "min"
1222    (((T"MREG" "IL" [] -->
1223       (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1224        T"DOPER" "IL" [])) -->
1225      ((T"MREG" "IL" [] -->
1226        (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1227         T"DOPER" "IL" [])) --> bool))),
1228   C"IL2" "IL"
1229    ((T"MREG" "IL" [] -->
1230      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1231       T"DOPER" "IL" []))),
1232   C"=" "min"
1233    (((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1234       (T"MREG" "IL" [] --> T"DOPER" "IL" [])) -->
1235      ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1236        (T"MREG" "IL" [] --> T"DOPER" "IL" [])) --> bool))),
1237   C"IL3" "IL"
1238    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1239      (T"MREG" "IL" [] --> T"DOPER" "IL" []))),
1240   C"=" "min"
1241    (((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])) -->
1242      ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])) -->
1243       bool))),
1244   C"IL4" "IL"
1245    ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))),
1246   C"=" "min"
1247    (((T"MREG" "IL" [] -->
1248       (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))) -->
1249      ((T"MREG" "IL" [] -->
1250        (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))) -->
1251       bool))),
1252   C"IL5" "IL"
1253    ((T"MREG" "IL" [] -->
1254      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1255   C"IL6" "IL"
1256    ((T"MREG" "IL" [] -->
1257      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1258   C"IL7" "IL"
1259    ((T"MREG" "IL" [] -->
1260      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1261   C"=" "min"
1262    (((T"MREG" "IL" [] -->
1263       (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" []))) -->
1264      ((T"MREG" "IL" [] -->
1265        (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" []))) -->
1266       bool))),
1267   C"IL8" "IL"
1268    ((T"MREG" "IL" [] -->
1269      (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" [])))),
1270   C"IL9" "IL"
1271    ((T"MREG" "IL" [] -->
1272      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1273   C"IL10" "IL"
1274    ((T"MREG" "IL" [] -->
1275      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1276   C"IL11" "IL"
1277    ((T"MREG" "IL" [] -->
1278      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1279   C"=" "min"
1280    (((T"MREG" "IL" [] -->
1281       (T"MREG" "IL" [] -->
1282        (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" []))) -->
1283      ((T"MREG" "IL" [] -->
1284        (T"MREG" "IL" [] -->
1285         (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))
1286       --> bool))),
1287   C"IL12" "IL"
1288    ((T"MREG" "IL" [] -->
1289      (T"MREG" "IL" [] -->
1290       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1291   C"IL13" "IL"
1292    ((T"MREG" "IL" [] -->
1293      (T"MREG" "IL" [] -->
1294       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1295   C"IL14" "IL"
1296    ((T"MREG" "IL" [] -->
1297      (T"MREG" "IL" [] -->
1298       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1299   C"IL15" "IL"
1300    ((T"MREG" "IL" [] -->
1301      (T"MREG" "IL" [] -->
1302       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1303   C"=" "min"
1304    (((T"num" "num" [] -->
1305       (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" [])) -->
1306      ((T"num" "num" [] -->
1307        (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" [])) -->
1308       bool))),
1309   C"IL16" "IL"
1310    ((T"num" "num" [] -->
1311      (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" []))),
1312   C"IL17" "IL"
1313    ((T"num" "num" [] -->
1314      (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" []))),
1315   C"MLDR" "IL"
1316    ((T"MREG" "IL" [] -->
1317      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1318       T"DOPER" "IL" []))),
1319   C"MSTR" "IL"
1320    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1321      (T"MREG" "IL" [] --> T"DOPER" "IL" []))),
1322   C"MMOV" "IL"
1323    ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))),
1324   C"MADD" "IL"
1325    ((T"MREG" "IL" [] -->
1326      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1327   C"MSUB" "IL"
1328    ((T"MREG" "IL" [] -->
1329      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1330   C"MRSB" "IL"
1331    ((T"MREG" "IL" [] -->
1332      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1333   C"MMUL" "IL"
1334    ((T"MREG" "IL" [] -->
1335      (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" [])))),
1336   C"MAND" "IL"
1337    ((T"MREG" "IL" [] -->
1338      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1339   C"MORR" "IL"
1340    ((T"MREG" "IL" [] -->
1341      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1342   C"MEOR" "IL"
1343    ((T"MREG" "IL" [] -->
1344      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))),
1345   C"MLSL" "IL"
1346    ((T"MREG" "IL" [] -->
1347      (T"MREG" "IL" [] -->
1348       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1349   C"MLSR" "IL"
1350    ((T"MREG" "IL" [] -->
1351      (T"MREG" "IL" [] -->
1352       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1353   C"MASR" "IL"
1354    ((T"MREG" "IL" [] -->
1355      (T"MREG" "IL" [] -->
1356       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1357   C"MROR" "IL"
1358    ((T"MREG" "IL" [] -->
1359      (T"MREG" "IL" [] -->
1360       (T"cart" "fcp" [bool, T"i5" "words" []] --> T"DOPER" "IL" [])))),
1361   C"MPUSH" "IL"
1362    ((T"num" "num" [] -->
1363      (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" []))),
1364   C"MPOP" "IL"
1365    ((T"num" "num" [] -->
1366      (T"list" "list" [T"num" "num" []] --> T"DOPER" "IL" []))),
1367   C"!" "bool"
1368    ((((T"MREG" "IL" [] -->
1369        (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1370         alpha)) --> bool) --> bool)),
1371   V"f"
1372    ((T"MREG" "IL" [] -->
1373      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1374       alpha))),
1375   C"!" "bool"
1376    ((((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1377        (T"MREG" "IL" [] --> alpha)) --> bool) --> bool)),
1378   V"f1"
1379    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1380      (T"MREG" "IL" [] --> alpha))),
1381   C"!" "bool"
1382    ((((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)) --> bool) -->
1383      bool)), V"f2" ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))),
1384   C"!" "bool"
1385    ((((T"MREG" "IL" [] -->
1386        (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) --> bool) -->
1387      bool)),
1388   V"f3"
1389    ((T"MREG" "IL" [] -->
1390      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
1391   V"f4"
1392    ((T"MREG" "IL" [] -->
1393      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
1394   V"f5"
1395    ((T"MREG" "IL" [] -->
1396      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
1397   C"!" "bool"
1398    ((((T"MREG" "IL" [] -->
1399        (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> alpha))) --> bool) -->
1400      bool)),
1401   V"f6"
1402    ((T"MREG" "IL" [] -->
1403      (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> alpha)))),
1404   V"f7"
1405    ((T"MREG" "IL" [] -->
1406      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
1407   V"f8"
1408    ((T"MREG" "IL" [] -->
1409      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
1410   V"f9"
1411    ((T"MREG" "IL" [] -->
1412      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
1413   C"!" "bool"
1414    ((((T"MREG" "IL" [] -->
1415        (T"MREG" "IL" [] -->
1416         (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha))) --> bool) -->
1417      bool)),
1418   V"f10"
1419    ((T"MREG" "IL" [] -->
1420      (T"MREG" "IL" [] -->
1421       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
1422   V"f11"
1423    ((T"MREG" "IL" [] -->
1424      (T"MREG" "IL" [] -->
1425       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
1426   V"f12"
1427    ((T"MREG" "IL" [] -->
1428      (T"MREG" "IL" [] -->
1429       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
1430   V"f13"
1431    ((T"MREG" "IL" [] -->
1432      (T"MREG" "IL" [] -->
1433       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
1434   C"!" "bool"
1435    ((((T"num" "num" [] --> (T"list" "list" [T"num" "num" []] --> alpha))
1436       --> bool) --> bool)),
1437   V"f14"
1438    ((T"num" "num" [] --> (T"list" "list" [T"num" "num" []] --> alpha))),
1439   V"f15"
1440    ((T"num" "num" [] --> (T"list" "list" [T"num" "num" []] --> alpha))),
1441   C"!" "bool"
1442    (((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] --> bool)
1443      --> bool)),
1444   C"DOPER_case" "IL"
1445    (((T"MREG" "IL" [] -->
1446       (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] --> alpha))
1447      -->
1448      ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1449        (T"MREG" "IL" [] --> alpha)) -->
1450       ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)) -->
1451        ((T"MREG" "IL" [] -->
1452          (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
1453         ((T"MREG" "IL" [] -->
1454           (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
1455          ((T"MREG" "IL" [] -->
1456            (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
1457           ((T"MREG" "IL" [] -->
1458             (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> alpha))) -->
1459            ((T"MREG" "IL" [] -->
1460              (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
1461             ((T"MREG" "IL" [] -->
1462               (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
1463              ((T"MREG" "IL" [] -->
1464                (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))) -->
1465               ((T"MREG" "IL" [] -->
1466                 (T"MREG" "IL" [] -->
1467                  (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha))) -->
1468                ((T"MREG" "IL" [] -->
1469                  (T"MREG" "IL" [] -->
1470                   (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha))) -->
1471                 ((T"MREG" "IL" [] -->
1472                   (T"MREG" "IL" [] -->
1473                    (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))
1474                  -->
1475                  ((T"MREG" "IL" [] -->
1476                    (T"MREG" "IL" [] -->
1477                     (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))
1478                   -->
1479                   ((T"num" "num" [] -->
1480                     (T"list" "list" [T"num" "num" []] --> alpha)) -->
1481                    ((T"num" "num" [] -->
1482                      (T"list" "list" [T"num" "num" []] --> alpha)) -->
1483                     (T"DOPER" "IL" [] --> alpha)))))))))))))))))),
1484   C"!" "bool"
1485    (((T"cart" "fcp" [bool, T"i5" "words" []] --> bool) --> bool)),
1486   C"!" "bool" (((T"list" "list" [T"num" "num" []] --> bool) --> bool)),
1487   C"DOPER_size" "IL" ((T"DOPER" "IL" [] --> T"num" "num" [])),
1488   C"UNCURRY" "pair"
1489    (((T"num" "num" [] --> (T"OFFSET" "preARM" [] --> T"num" "num" [])) -->
1490      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
1491       T"num" "num" []))), V"x" (T"num" "num" []),
1492   V"y" (T"OFFSET" "preARM" []),
1493   C"OFFSET_size" "preARM" ((T"OFFSET" "preARM" [] --> T"num" "num" [])),
1494   C"list_size" "list"
1495    (((T"num" "num" [] --> T"num" "num" []) -->
1496      (T"list" "list" [T"num" "num" []] --> T"num" "num" []))),
1497   C"?" "bool"
1498    ((((T"CTL_STRUCTURE" "IL" [] -->
1499        T"recspace" "ind_type"
1500         [T"prod" "pair"
1501           [T"list" "list" [T"DOPER" "IL" []],
1502            T"prod" "pair"
1503             [T"MREG" "IL" [],
1504              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]) -->
1505       bool) --> bool)),
1506   V"rep"
1507    ((T"CTL_STRUCTURE" "IL" [] -->
1508      T"recspace" "ind_type"
1509       [T"prod" "pair"
1510         [T"list" "list" [T"DOPER" "IL" []],
1511          T"prod" "pair"
1512           [T"MREG" "IL" [],
1513            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]])),
1514   C"TYPE_DEFINITION" "bool"
1515    (((T"recspace" "ind_type"
1516        [T"prod" "pair"
1517          [T"list" "list" [T"DOPER" "IL" []],
1518           T"prod" "pair"
1519            [T"MREG" "IL" [],
1520             T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1521       bool) -->
1522      ((T"CTL_STRUCTURE" "IL" [] -->
1523        T"recspace" "ind_type"
1524         [T"prod" "pair"
1525           [T"list" "list" [T"DOPER" "IL" []],
1526            T"prod" "pair"
1527             [T"MREG" "IL" [],
1528              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]) -->
1529       bool))),
1530   V"a0'"
1531    (T"recspace" "ind_type"
1532      [T"prod" "pair"
1533        [T"list" "list" [T"DOPER" "IL" []],
1534         T"prod" "pair"
1535          [T"MREG" "IL" [],
1536           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]),
1537   C"!" "bool"
1538    ((((T"recspace" "ind_type"
1539         [T"prod" "pair"
1540           [T"list" "list" [T"DOPER" "IL" []],
1541            T"prod" "pair"
1542             [T"MREG" "IL" [],
1543              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1544        bool) --> bool) --> bool)),
1545   V"'CTL_STRUCTURE'"
1546    ((T"recspace" "ind_type"
1547       [T"prod" "pair"
1548         [T"list" "list" [T"DOPER" "IL" []],
1549          T"prod" "pair"
1550           [T"MREG" "IL" [],
1551            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1552      bool)),
1553   C"!" "bool"
1554    (((T"recspace" "ind_type"
1555        [T"prod" "pair"
1556          [T"list" "list" [T"DOPER" "IL" []],
1557           T"prod" "pair"
1558            [T"MREG" "IL" [],
1559             T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1560       bool) --> bool)),
1561   C"?" "bool" (((T"list" "list" [T"DOPER" "IL" []] --> bool) --> bool)),
1562   V"a" (T"list" "list" [T"DOPER" "IL" []]),
1563   C"=" "min"
1564    ((T"recspace" "ind_type"
1565       [T"prod" "pair"
1566         [T"list" "list" [T"DOPER" "IL" []],
1567          T"prod" "pair"
1568           [T"MREG" "IL" [],
1569            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1570      (T"recspace" "ind_type"
1571        [T"prod" "pair"
1572          [T"list" "list" [T"DOPER" "IL" []],
1573           T"prod" "pair"
1574            [T"MREG" "IL" [],
1575             T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1576       bool))),
1577   C"CONSTR" "ind_type"
1578    ((T"num" "num" [] -->
1579      (T"prod" "pair"
1580        [T"list" "list" [T"DOPER" "IL" []],
1581         T"prod" "pair"
1582          [T"MREG" "IL" [],
1583           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]] -->
1584       ((T"num" "num" [] -->
1585         T"recspace" "ind_type"
1586          [T"prod" "pair"
1587            [T"list" "list" [T"DOPER" "IL" []],
1588             T"prod" "pair"
1589              [T"MREG" "IL" [],
1590               T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]])
1591        -->
1592        T"recspace" "ind_type"
1593         [T"prod" "pair"
1594           [T"list" "list" [T"DOPER" "IL" []],
1595            T"prod" "pair"
1596             [T"MREG" "IL" [],
1597              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]])))),
1598   C"," "pair"
1599    ((T"list" "list" [T"DOPER" "IL" []] -->
1600      (T"prod" "pair"
1601        [T"MREG" "IL" [],
1602         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1603       T"prod" "pair"
1604        [T"list" "list" [T"DOPER" "IL" []],
1605         T"prod" "pair"
1606          [T"MREG" "IL" [],
1607           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]))),
1608   C"@" "min"
1609    (((T"prod" "pair"
1610        [T"MREG" "IL" [],
1611         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] --> bool)
1612      -->
1613      T"prod" "pair"
1614       [T"MREG" "IL" [],
1615        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]])),
1616   V"v"
1617    (T"prod" "pair"
1618      [T"MREG" "IL" [],
1619       T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]),
1620   C"BOTTOM" "ind_type"
1621    (T"recspace" "ind_type"
1622      [T"prod" "pair"
1623        [T"list" "list" [T"DOPER" "IL" []],
1624         T"prod" "pair"
1625          [T"MREG" "IL" [],
1626           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]),
1627   C"?" "bool"
1628    (((T"recspace" "ind_type"
1629        [T"prod" "pair"
1630          [T"list" "list" [T"DOPER" "IL" []],
1631           T"prod" "pair"
1632            [T"MREG" "IL" [],
1633             T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1634       bool) --> bool)),
1635   V"a0"
1636    (T"recspace" "ind_type"
1637      [T"prod" "pair"
1638        [T"list" "list" [T"DOPER" "IL" []],
1639         T"prod" "pair"
1640          [T"MREG" "IL" [],
1641           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]),
1642   V"a1"
1643    (T"recspace" "ind_type"
1644      [T"prod" "pair"
1645        [T"list" "list" [T"DOPER" "IL" []],
1646         T"prod" "pair"
1647          [T"MREG" "IL" [],
1648           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]),
1649   C"@" "min"
1650    (((T"list" "list" [T"DOPER" "IL" []] --> bool) -->
1651      T"list" "list" [T"DOPER" "IL" []])),
1652   V"v" (T"list" "list" [T"DOPER" "IL" []]),
1653   C"FCONS" "ind_type"
1654    ((T"recspace" "ind_type"
1655       [T"prod" "pair"
1656         [T"list" "list" [T"DOPER" "IL" []],
1657          T"prod" "pair"
1658           [T"MREG" "IL" [],
1659            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1660      ((T"num" "num" [] -->
1661        T"recspace" "ind_type"
1662         [T"prod" "pair"
1663           [T"list" "list" [T"DOPER" "IL" []],
1664            T"prod" "pair"
1665             [T"MREG" "IL" [],
1666              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]) -->
1667       (T"num" "num" [] -->
1668        T"recspace" "ind_type"
1669         [T"prod" "pair"
1670           [T"list" "list" [T"DOPER" "IL" []],
1671            T"prod" "pair"
1672             [T"MREG" "IL" [],
1673              T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]])))),
1674   C"?" "bool"
1675    (((T"prod" "pair"
1676        [T"MREG" "IL" [],
1677         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] --> bool)
1678      --> bool)),
1679   V"a0"
1680    (T"prod" "pair"
1681      [T"MREG" "IL" [],
1682       T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]),
1683   V"a2"
1684    (T"recspace" "ind_type"
1685      [T"prod" "pair"
1686        [T"list" "list" [T"DOPER" "IL" []],
1687         T"prod" "pair"
1688          [T"MREG" "IL" [],
1689           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]),
1690   C"!" "bool" (((T"CTL_STRUCTURE" "IL" [] --> bool) --> bool)),
1691   V"a" (T"CTL_STRUCTURE" "IL" []),
1692   C"=" "min"
1693    ((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> bool))),
1694   C"mk_CTL_STRUCTURE" "IL"
1695    ((T"recspace" "ind_type"
1696       [T"prod" "pair"
1697         [T"list" "list" [T"DOPER" "IL" []],
1698          T"prod" "pair"
1699           [T"MREG" "IL" [],
1700            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]] -->
1701      T"CTL_STRUCTURE" "IL" [])),
1702   C"dest_CTL_STRUCTURE" "IL"
1703    ((T"CTL_STRUCTURE" "IL" [] -->
1704      T"recspace" "ind_type"
1705       [T"prod" "pair"
1706         [T"list" "list" [T"DOPER" "IL" []],
1707          T"prod" "pair"
1708           [T"MREG" "IL" [],
1709            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]])),
1710   V"r"
1711    (T"recspace" "ind_type"
1712      [T"prod" "pair"
1713        [T"list" "list" [T"DOPER" "IL" []],
1714         T"prod" "pair"
1715          [T"MREG" "IL" [],
1716           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]]]),
1717   C"=" "min"
1718    (((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" []) -->
1719      ((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" []) -->
1720       bool))),
1721   C"IL18" "IL"
1722    ((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" [])),
1723   C"=" "min"
1724    (((T"CTL_STRUCTURE" "IL" [] -->
1725       (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])) -->
1726      ((T"CTL_STRUCTURE" "IL" [] -->
1727        (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])) -->
1728       bool))),
1729   C"IL19" "IL"
1730    ((T"CTL_STRUCTURE" "IL" [] -->
1731      (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))),
1732   V"a0" (T"CTL_STRUCTURE" "IL" []), V"a1" (T"CTL_STRUCTURE" "IL" []),
1733   C"=" "min"
1734    (((T"prod" "pair"
1735        [T"MREG" "IL" [],
1736         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1737       (T"CTL_STRUCTURE" "IL" [] -->
1738        (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))) -->
1739      ((T"prod" "pair"
1740         [T"MREG" "IL" [],
1741          T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1742        (T"CTL_STRUCTURE" "IL" [] -->
1743         (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))) -->
1744       bool))),
1745   C"IL20" "IL"
1746    ((T"prod" "pair"
1747       [T"MREG" "IL" [],
1748        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1749      (T"CTL_STRUCTURE" "IL" [] -->
1750       (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])))),
1751   V"a2" (T"CTL_STRUCTURE" "IL" []),
1752   C"=" "min"
1753    (((T"prod" "pair"
1754        [T"MREG" "IL" [],
1755         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1756       (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])) -->
1757      ((T"prod" "pair"
1758         [T"MREG" "IL" [],
1759          T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1760        (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])) -->
1761       bool))),
1762   C"IL21" "IL"
1763    ((T"prod" "pair"
1764       [T"MREG" "IL" [],
1765        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1766      (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))),
1767   C"BLK" "IL"
1768    ((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" [])),
1769   C"SC" "IL"
1770    ((T"CTL_STRUCTURE" "IL" [] -->
1771      (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))),
1772   C"CJ" "IL"
1773    ((T"prod" "pair"
1774       [T"MREG" "IL" [],
1775        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1776      (T"CTL_STRUCTURE" "IL" [] -->
1777       (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])))),
1778   C"TR" "IL"
1779    ((T"prod" "pair"
1780       [T"MREG" "IL" [],
1781        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1782      (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))),
1783   C"!" "bool"
1784    ((((T"list" "list" [T"DOPER" "IL" []] --> alpha) --> bool) --> bool)),
1785   V"f" ((T"list" "list" [T"DOPER" "IL" []] --> alpha)),
1786   C"!" "bool"
1787    ((((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> alpha))
1788       --> bool) --> bool)),
1789   V"f1"
1790    ((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> alpha))),
1791   C"!" "bool"
1792    ((((T"prod" "pair"
1793         [T"MREG" "IL" [],
1794          T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1795        (T"CTL_STRUCTURE" "IL" [] -->
1796         (T"CTL_STRUCTURE" "IL" [] --> alpha))) --> bool) --> bool)),
1797   V"f2"
1798    ((T"prod" "pair"
1799       [T"MREG" "IL" [],
1800        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1801      (T"CTL_STRUCTURE" "IL" [] -->
1802       (T"CTL_STRUCTURE" "IL" [] --> alpha)))),
1803   C"!" "bool"
1804    ((((T"prod" "pair"
1805         [T"MREG" "IL" [],
1806          T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1807        (T"CTL_STRUCTURE" "IL" [] --> alpha)) --> bool) --> bool)),
1808   V"f3"
1809    ((T"prod" "pair"
1810       [T"MREG" "IL" [],
1811        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1812      (T"CTL_STRUCTURE" "IL" [] --> alpha))),
1813   C"!" "bool" (((T"list" "list" [T"DOPER" "IL" []] --> bool) --> bool)),
1814   C"CTL_STRUCTURE_case" "IL"
1815    (((T"list" "list" [T"DOPER" "IL" []] --> alpha) -->
1816      ((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> alpha))
1817       -->
1818       ((T"prod" "pair"
1819          [T"MREG" "IL" [],
1820           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1821         (T"CTL_STRUCTURE" "IL" [] -->
1822          (T"CTL_STRUCTURE" "IL" [] --> alpha))) -->
1823        ((T"prod" "pair"
1824           [T"MREG" "IL" [],
1825            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1826          (T"CTL_STRUCTURE" "IL" [] --> alpha)) -->
1827         (T"CTL_STRUCTURE" "IL" [] --> alpha)))))),
1828   C"!" "bool"
1829    (((T"prod" "pair"
1830        [T"MREG" "IL" [],
1831         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] --> bool)
1832      --> bool)),
1833   C"CTL_STRUCTURE_size" "IL"
1834    ((T"CTL_STRUCTURE" "IL" [] --> T"num" "num" [])),
1835   C"list_size" "list"
1836    (((T"DOPER" "IL" [] --> T"num" "num" []) -->
1837      (T"list" "list" [T"DOPER" "IL" []] --> T"num" "num" []))),
1838   C"UNCURRY" "pair"
1839    (((T"MREG" "IL" [] -->
1840       (T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []] -->
1841        T"num" "num" [])) -->
1842      (T"prod" "pair"
1843        [T"MREG" "IL" [],
1844         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
1845       T"num" "num" []))),
1846   V"y" (T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]),
1847   C"UNCURRY" "pair"
1848    (((T"COND" "preARM" [] --> (T"MEXP" "IL" [] --> T"num" "num" [])) -->
1849      (T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []] -->
1850       T"num" "num" []))), V"x" (T"COND" "preARM" []),
1851   V"y" (T"MEXP" "IL" []),
1852   C"COND_size" "preARM" ((T"COND" "preARM" [] --> T"num" "num" [])),
1853   C"!" "bool"
1854    (((T"prod" "pair"
1855        [T"fmap" "finite_map"
1856          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1857         T"fmap" "finite_map"
1858          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1859       bool) --> bool)),
1860   V"st"
1861    (T"prod" "pair"
1862      [T"fmap" "finite_map"
1863        [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1864       T"fmap" "finite_map"
1865        [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]),
1866   V"baseR" (T"num" "num" []), V"regL" (T"list" "list" [T"num" "num" []]),
1867   C"=" "min"
1868    ((T"prod" "pair"
1869       [T"fmap" "finite_map"
1870         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1871        T"fmap" "finite_map"
1872         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1873      (T"prod" "pair"
1874        [T"fmap" "finite_map"
1875          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1876         T"fmap" "finite_map"
1877          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1878       bool))),
1879   C"pushL" "IL"
1880    ((T"prod" "pair"
1881       [T"fmap" "finite_map"
1882         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1883        T"fmap" "finite_map"
1884         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1885      (T"num" "num" [] -->
1886       (T"list" "list" [T"num" "num" []] -->
1887        T"prod" "pair"
1888         [T"fmap" "finite_map"
1889           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1890          T"fmap" "finite_map"
1891           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])))),
1892   C"write" "preARM"
1893    ((T"prod" "pair"
1894       [T"fmap" "finite_map"
1895         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1896        T"fmap" "finite_map"
1897         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1898      (T"EXP" "preARM" [] -->
1899       (T"cart" "fcp" [bool, T"i32" "words" []] -->
1900        T"prod" "pair"
1901         [T"fmap" "finite_map"
1902           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1903          T"fmap" "finite_map"
1904           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])))),
1905   C"FST" "pair"
1906    ((T"prod" "pair"
1907       [T"prod" "pair"
1908         [T"fmap" "finite_map"
1909           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1910          T"fmap" "finite_map"
1911           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1912        T"num" "num" []] -->
1913      T"prod" "pair"
1914       [T"fmap" "finite_map"
1915         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1916        T"fmap" "finite_map"
1917         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])),
1918   C"FOLDL" "list"
1919    (((T"prod" "pair"
1920        [T"prod" "pair"
1921          [T"fmap" "finite_map"
1922            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1923           T"fmap" "finite_map"
1924            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1925         T"num" "num" []] -->
1926       (T"EXP" "preARM" [] -->
1927        T"prod" "pair"
1928         [T"prod" "pair"
1929           [T"fmap" "finite_map"
1930             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1931            T"fmap" "finite_map"
1932             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1933          T"num" "num" []])) -->
1934      (T"prod" "pair"
1935        [T"prod" "pair"
1936          [T"fmap" "finite_map"
1937            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1938           T"fmap" "finite_map"
1939            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1940         T"num" "num" []] -->
1941       (T"list" "list" [T"EXP" "preARM" []] -->
1942        T"prod" "pair"
1943         [T"prod" "pair"
1944           [T"fmap" "finite_map"
1945             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1946            T"fmap" "finite_map"
1947             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1948          T"num" "num" []])))),
1949   C"UNCURRY" "pair"
1950    (((T"prod" "pair"
1951        [T"fmap" "finite_map"
1952          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1953         T"fmap" "finite_map"
1954          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1955       (T"num" "num" [] -->
1956        (T"EXP" "preARM" [] -->
1957         T"prod" "pair"
1958          [T"prod" "pair"
1959            [T"fmap" "finite_map"
1960              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1961             T"fmap" "finite_map"
1962              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1963           T"num" "num" []]))) -->
1964      (T"prod" "pair"
1965        [T"prod" "pair"
1966          [T"fmap" "finite_map"
1967            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1968           T"fmap" "finite_map"
1969            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1970         T"num" "num" []] -->
1971       (T"EXP" "preARM" [] -->
1972        T"prod" "pair"
1973         [T"prod" "pair"
1974           [T"fmap" "finite_map"
1975             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1976            T"fmap" "finite_map"
1977             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1978          T"num" "num" []])))),
1979   V"st1"
1980    (T"prod" "pair"
1981      [T"fmap" "finite_map"
1982        [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1983       T"fmap" "finite_map"
1984        [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]),
1985   V"reg" (T"EXP" "preARM" []),
1986   C"," "pair"
1987    ((T"prod" "pair"
1988       [T"fmap" "finite_map"
1989         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1990        T"fmap" "finite_map"
1991         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
1992      (T"num" "num" [] -->
1993       T"prod" "pair"
1994        [T"prod" "pair"
1995          [T"fmap" "finite_map"
1996            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
1997           T"fmap" "finite_map"
1998            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]],
1999         T"num" "num" []]))),
2000   C"NEG" "preARM" ((T"num" "num" [] --> T"OFFSET" "preARM" [])),
2001   C"read" "preARM"
2002    ((T"prod" "pair"
2003       [T"fmap" "finite_map"
2004         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2005        T"fmap" "finite_map"
2006         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2007      (T"EXP" "preARM" [] --> T"cart" "fcp" [bool, T"i32" "words" []]))),
2008   C"REVERSE" "list"
2009    ((T"list" "list" [T"EXP" "preARM" []] -->
2010      T"list" "list" [T"EXP" "preARM" []])),
2011   C"MAP" "list"
2012    (((T"num" "num" [] --> T"EXP" "preARM" []) -->
2013      (T"list" "list" [T"num" "num" []] -->
2014       T"list" "list" [T"EXP" "preARM" []]))),
2015   C"word_sub" "words"
2016    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2017      (T"cart" "fcp" [bool, T"i32" "words" []] -->
2018       T"cart" "fcp" [bool, T"i32" "words" []]))),
2019   C"n2w" "words"
2020    ((T"num" "num" [] --> T"cart" "fcp" [bool, T"i32" "words" []])),
2021   C"LENGTH" "list"
2022    ((T"list" "list" [T"num" "num" []] --> T"num" "num" [])),
2023   C"popL" "IL"
2024    ((T"prod" "pair"
2025       [T"fmap" "finite_map"
2026         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2027        T"fmap" "finite_map"
2028         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2029      (T"num" "num" [] -->
2030       (T"list" "list" [T"num" "num" []] -->
2031        T"prod" "pair"
2032         [T"fmap" "finite_map"
2033           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2034          T"fmap" "finite_map"
2035           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])))),
2036   C"POS" "preARM" ((T"num" "num" [] --> T"OFFSET" "preARM" [])),
2037   C"word_add" "words"
2038    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2039      (T"cart" "fcp" [bool, T"i32" "words" []] -->
2040       T"cart" "fcp" [bool, T"i32" "words" []]))),
2041   V"dst" (T"MREG" "IL" []),
2042   V"src" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
2043   C"mdecode" "IL"
2044    ((T"prod" "pair"
2045       [T"fmap" "finite_map"
2046         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2047        T"fmap" "finite_map"
2048         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2049      (T"DOPER" "IL" [] -->
2050       T"prod" "pair"
2051        [T"fmap" "finite_map"
2052          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2053         T"fmap" "finite_map"
2054          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]))),
2055   V"dst" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
2056   V"src" (T"MREG" "IL" []), V"src" (T"MEXP" "IL" []),
2057   V"src1" (T"MREG" "IL" []), V"src2" (T"MEXP" "IL" []),
2058   V"src2_reg" (T"MREG" "IL" []),
2059   C"word_mul" "words"
2060    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2061      (T"cart" "fcp" [bool, T"i32" "words" []] -->
2062       T"cart" "fcp" [bool, T"i32" "words" []]))),
2063   C"word_and" "words"
2064    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2065      (T"cart" "fcp" [bool, T"i32" "words" []] -->
2066       T"cart" "fcp" [bool, T"i32" "words" []]))),
2067   C"word_or" "words"
2068    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2069      (T"cart" "fcp" [bool, T"i32" "words" []] -->
2070       T"cart" "fcp" [bool, T"i32" "words" []]))),
2071   C"word_xor" "words"
2072    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2073      (T"cart" "fcp" [bool, T"i32" "words" []] -->
2074       T"cart" "fcp" [bool, T"i32" "words" []]))),
2075   V"src2_num" (T"cart" "fcp" [bool, T"i5" "words" []]),
2076   C"word_lsl" "words"
2077    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2078      (T"num" "num" [] --> T"cart" "fcp" [bool, T"i32" "words" []]))),
2079   C"w2n" "words"
2080    ((T"cart" "fcp" [bool, T"i5" "words" []] --> T"num" "num" [])),
2081   C"word_lsr" "words"
2082    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2083      (T"num" "num" [] --> T"cart" "fcp" [bool, T"i32" "words" []]))),
2084   C"word_asr" "words"
2085    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2086      (T"num" "num" [] --> T"cart" "fcp" [bool, T"i32" "words" []]))),
2087   V"dst'" (T"num" "num" []), V"srcL" (T"list" "list" [T"num" "num" []]),
2088   C"=" "min"
2089    ((T"prod" "pair"
2090       [T"prod" "pair"
2091         [T"OPERATOR" "preARM" [],
2092          T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool]],
2093        T"prod" "pair"
2094         [T"option" "option" [T"EXP" "preARM" []],
2095          T"prod" "pair"
2096           [T"list" "list" [T"EXP" "preARM" []],
2097            T"option" "option" [T"OFFSET" "preARM" []]]]] -->
2098      (T"prod" "pair"
2099        [T"prod" "pair"
2100          [T"OPERATOR" "preARM" [],
2101           T"prod" "pair"
2102            [T"option" "option" [T"COND" "preARM" []], bool]],
2103         T"prod" "pair"
2104          [T"option" "option" [T"EXP" "preARM" []],
2105           T"prod" "pair"
2106            [T"list" "list" [T"EXP" "preARM" []],
2107             T"option" "option" [T"OFFSET" "preARM" []]]]] --> bool))),
2108   C"translate_assignment" "IL"
2109    ((T"DOPER" "IL" [] -->
2110      T"prod" "pair"
2111       [T"prod" "pair"
2112         [T"OPERATOR" "preARM" [],
2113          T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool]],
2114        T"prod" "pair"
2115         [T"option" "option" [T"EXP" "preARM" []],
2116          T"prod" "pair"
2117           [T"list" "list" [T"EXP" "preARM" []],
2118            T"option" "option" [T"OFFSET" "preARM" []]]]])),
2119   C"," "pair"
2120    ((T"prod" "pair"
2121       [T"OPERATOR" "preARM" [],
2122        T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool]]
2123      -->
2124      (T"prod" "pair"
2125        [T"option" "option" [T"EXP" "preARM" []],
2126         T"prod" "pair"
2127          [T"list" "list" [T"EXP" "preARM" []],
2128           T"option" "option" [T"OFFSET" "preARM" []]]] -->
2129       T"prod" "pair"
2130        [T"prod" "pair"
2131          [T"OPERATOR" "preARM" [],
2132           T"prod" "pair"
2133            [T"option" "option" [T"COND" "preARM" []], bool]],
2134         T"prod" "pair"
2135          [T"option" "option" [T"EXP" "preARM" []],
2136           T"prod" "pair"
2137            [T"list" "list" [T"EXP" "preARM" []],
2138             T"option" "option" [T"OFFSET" "preARM" []]]]]))),
2139   C"," "pair"
2140    ((T"OPERATOR" "preARM" [] -->
2141      (T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool] -->
2142       T"prod" "pair"
2143        [T"OPERATOR" "preARM" [],
2144         T"prod" "pair"
2145          [T"option" "option" [T"COND" "preARM" []], bool]]))),
2146   C"MOV" "preARM" (T"OPERATOR" "preARM" []),
2147   C"," "pair"
2148    ((T"option" "option" [T"COND" "preARM" []] -->
2149      (bool -->
2150       T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool]))),
2151   C"NONE" "option" (T"option" "option" [T"COND" "preARM" []]),
2152   C"F" "bool" (bool),
2153   C"," "pair"
2154    ((T"option" "option" [T"EXP" "preARM" []] -->
2155      (T"prod" "pair"
2156        [T"list" "list" [T"EXP" "preARM" []],
2157         T"option" "option" [T"OFFSET" "preARM" []]] -->
2158       T"prod" "pair"
2159        [T"option" "option" [T"EXP" "preARM" []],
2160         T"prod" "pair"
2161          [T"list" "list" [T"EXP" "preARM" []],
2162           T"option" "option" [T"OFFSET" "preARM" []]]]))),
2163   C"SOME" "option"
2164    ((T"EXP" "preARM" [] --> T"option" "option" [T"EXP" "preARM" []])),
2165   C"," "pair"
2166    ((T"list" "list" [T"EXP" "preARM" []] -->
2167      (T"option" "option" [T"OFFSET" "preARM" []] -->
2168       T"prod" "pair"
2169        [T"list" "list" [T"EXP" "preARM" []],
2170         T"option" "option" [T"OFFSET" "preARM" []]]))),
2171   C"CONS" "list"
2172    ((T"EXP" "preARM" [] -->
2173      (T"list" "list" [T"EXP" "preARM" []] -->
2174       T"list" "list" [T"EXP" "preARM" []]))),
2175   C"NIL" "list" (T"list" "list" [T"EXP" "preARM" []]),
2176   C"NONE" "option" (T"option" "option" [T"OFFSET" "preARM" []]),
2177   C"ADD" "preARM" (T"OPERATOR" "preARM" []),
2178   C"SUB" "preARM" (T"OPERATOR" "preARM" []),
2179   C"RSB" "preARM" (T"OPERATOR" "preARM" []),
2180   C"MUL" "preARM" (T"OPERATOR" "preARM" []),
2181   C"AND" "preARM" (T"OPERATOR" "preARM" []),
2182   C"ORR" "preARM" (T"OPERATOR" "preARM" []),
2183   C"EOR" "preARM" (T"OPERATOR" "preARM" []),
2184   C"LSL" "preARM" (T"OPERATOR" "preARM" []),
2185   C"w2w" "words"
2186    ((T"cart" "fcp" [bool, T"i5" "words" []] -->
2187      T"cart" "fcp" [bool, T"i32" "words" []])),
2188   C"LSR" "preARM" (T"OPERATOR" "preARM" []),
2189   C"ASR" "preARM" (T"OPERATOR" "preARM" []),
2190   C"ROR" "preARM" (T"OPERATOR" "preARM" []),
2191   C"LDR" "preARM" (T"OPERATOR" "preARM" []),
2192   C"STR" "preARM" (T"OPERATOR" "preARM" []), V"dst" (T"num" "num" []),
2193   C"STMFD" "preARM" (T"OPERATOR" "preARM" []),
2194   C"WREG" "preARM" ((T"num" "num" [] --> T"EXP" "preARM" [])),
2195   C"LDMFD" "preARM" (T"OPERATOR" "preARM" []), V"c" (alpha),
2196   V"e" (T"MEXP" "IL" []),
2197   C"=" "min"
2198    ((T"prod" "pair"
2199       [T"EXP" "preARM" [], T"prod" "pair" [alpha, T"EXP" "preARM" []]] -->
2200      (T"prod" "pair"
2201        [T"EXP" "preARM" [], T"prod" "pair" [alpha, T"EXP" "preARM" []]]
2202       --> bool))),
2203   C"translate_condition" "IL"
2204    ((T"prod" "pair"
2205       [T"MREG" "IL" [], T"prod" "pair" [alpha, T"MEXP" "IL" []]] -->
2206      T"prod" "pair"
2207       [T"EXP" "preARM" [], T"prod" "pair" [alpha, T"EXP" "preARM" []]])),
2208   C"," "pair"
2209    ((T"MREG" "IL" [] -->
2210      (T"prod" "pair" [alpha, T"MEXP" "IL" []] -->
2211       T"prod" "pair"
2212        [T"MREG" "IL" [], T"prod" "pair" [alpha, T"MEXP" "IL" []]]))),
2213   C"," "pair"
2214    ((alpha -->
2215      (T"MEXP" "IL" [] --> T"prod" "pair" [alpha, T"MEXP" "IL" []]))),
2216   C"," "pair"
2217    ((T"EXP" "preARM" [] -->
2218      (T"prod" "pair" [alpha, T"EXP" "preARM" []] -->
2219       T"prod" "pair"
2220        [T"EXP" "preARM" [],
2221         T"prod" "pair" [alpha, T"EXP" "preARM" []]]))),
2222   C"," "pair"
2223    ((alpha -->
2224      (T"EXP" "preARM" [] -->
2225       T"prod" "pair" [alpha, T"EXP" "preARM" []]))),
2226   V"cond"
2227    (T"prod" "pair"
2228      [T"MREG" "IL" [],
2229       T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]),
2230   C"=" "min"
2231    (((T"prod" "pair"
2232        [T"fmap" "finite_map"
2233          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2234         T"fmap" "finite_map"
2235          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2236       bool) -->
2237      ((T"prod" "pair"
2238         [T"fmap" "finite_map"
2239           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2240          T"fmap" "finite_map"
2241           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2242        bool) --> bool))),
2243   C"eval_il_cond" "IL"
2244    ((T"prod" "pair"
2245       [T"MREG" "IL" [],
2246        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
2247      (T"prod" "pair"
2248        [T"fmap" "finite_map"
2249          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2250         T"fmap" "finite_map"
2251          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2252       bool))),
2253   C"eval_cond" "ARMComposition"
2254    ((T"prod" "pair"
2255       [T"EXP" "preARM" [],
2256        T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]] -->
2257      (T"prod" "pair"
2258        [T"fmap" "finite_map"
2259          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2260         T"fmap" "finite_map"
2261          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2262       bool))),
2263   C"translate_condition" "IL"
2264    ((T"prod" "pair"
2265       [T"MREG" "IL" [],
2266        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
2267      T"prod" "pair"
2268       [T"EXP" "preARM" [],
2269        T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]])),
2270   C"=" "min"
2271    (((T"CTL_STRUCTURE" "IL" [] -->
2272       T"list" "list"
2273        [T"prod" "pair"
2274          [T"prod" "pair"
2275            [T"OPERATOR" "preARM" [],
2276             T"prod" "pair"
2277              [T"option" "option" [T"COND" "preARM" []], bool]],
2278           T"prod" "pair"
2279            [T"option" "option" [T"EXP" "preARM" []],
2280             T"prod" "pair"
2281              [T"list" "list" [T"EXP" "preARM" []],
2282               T"option" "option" [T"OFFSET" "preARM" []]]]]]) -->
2283      ((T"CTL_STRUCTURE" "IL" [] -->
2284        T"list" "list"
2285         [T"prod" "pair"
2286           [T"prod" "pair"
2287             [T"OPERATOR" "preARM" [],
2288              T"prod" "pair"
2289               [T"option" "option" [T"COND" "preARM" []], bool]],
2290            T"prod" "pair"
2291             [T"option" "option" [T"EXP" "preARM" []],
2292              T"prod" "pair"
2293               [T"list" "list" [T"EXP" "preARM" []],
2294                T"option" "option" [T"OFFSET" "preARM" []]]]]]) -->
2295       bool))),
2296   C"translate" "IL"
2297    ((T"CTL_STRUCTURE" "IL" [] -->
2298      T"list" "list"
2299       [T"prod" "pair"
2300         [T"prod" "pair"
2301           [T"OPERATOR" "preARM" [],
2302            T"prod" "pair"
2303             [T"option" "option" [T"COND" "preARM" []], bool]],
2304          T"prod" "pair"
2305           [T"option" "option" [T"EXP" "preARM" []],
2306            T"prod" "pair"
2307             [T"list" "list" [T"EXP" "preARM" []],
2308              T"option" "option" [T"OFFSET" "preARM" []]]]]])),
2309   C"WFREC" "relation"
2310    (((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> bool))
2311      -->
2312      (((T"CTL_STRUCTURE" "IL" [] -->
2313         T"list" "list"
2314          [T"prod" "pair"
2315            [T"prod" "pair"
2316              [T"OPERATOR" "preARM" [],
2317               T"prod" "pair"
2318                [T"option" "option" [T"COND" "preARM" []], bool]],
2319             T"prod" "pair"
2320              [T"option" "option" [T"EXP" "preARM" []],
2321               T"prod" "pair"
2322                [T"list" "list" [T"EXP" "preARM" []],
2323                 T"option" "option" [T"OFFSET" "preARM" []]]]]]) -->
2324        (T"CTL_STRUCTURE" "IL" [] -->
2325         T"list" "list"
2326          [T"prod" "pair"
2327            [T"prod" "pair"
2328              [T"OPERATOR" "preARM" [],
2329               T"prod" "pair"
2330                [T"option" "option" [T"COND" "preARM" []], bool]],
2331             T"prod" "pair"
2332              [T"option" "option" [T"EXP" "preARM" []],
2333               T"prod" "pair"
2334                [T"list" "list" [T"EXP" "preARM" []],
2335                 T"option" "option" [T"OFFSET" "preARM" []]]]]])) -->
2336       (T"CTL_STRUCTURE" "IL" [] -->
2337        T"list" "list"
2338         [T"prod" "pair"
2339           [T"prod" "pair"
2340             [T"OPERATOR" "preARM" [],
2341              T"prod" "pair"
2342               [T"option" "option" [T"COND" "preARM" []], bool]],
2343            T"prod" "pair"
2344             [T"option" "option" [T"EXP" "preARM" []],
2345              T"prod" "pair"
2346               [T"list" "list" [T"EXP" "preARM" []],
2347                T"option" "option" [T"OFFSET" "preARM" []]]]]])))),
2348   C"@" "min"
2349    ((((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> bool))
2350       --> bool) -->
2351      (T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> bool)))),
2352   V"R"
2353    ((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> bool))),
2354   C"WF" "relation"
2355    (((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> bool))
2356      --> bool)), V"stm" (T"DOPER" "IL" []),
2357   V"stmL" (T"list" "list" [T"DOPER" "IL" []]),
2358   C"CONS" "list"
2359    ((T"DOPER" "IL" [] -->
2360      (T"list" "list" [T"DOPER" "IL" []] -->
2361       T"list" "list" [T"DOPER" "IL" []]))),
2362   V"S1" (T"CTL_STRUCTURE" "IL" []), V"S2" (T"CTL_STRUCTURE" "IL" []),
2363   V"Sfalse" (T"CTL_STRUCTURE" "IL" []),
2364   V"Strue" (T"CTL_STRUCTURE" "IL" []),
2365   V"Sbody" (T"CTL_STRUCTURE" "IL" []),
2366   V"translate"
2367    ((T"CTL_STRUCTURE" "IL" [] -->
2368      T"list" "list"
2369       [T"prod" "pair"
2370         [T"prod" "pair"
2371           [T"OPERATOR" "preARM" [],
2372            T"prod" "pair"
2373             [T"option" "option" [T"COND" "preARM" []], bool]],
2374          T"prod" "pair"
2375           [T"option" "option" [T"EXP" "preARM" []],
2376            T"prod" "pair"
2377             [T"list" "list" [T"EXP" "preARM" []],
2378              T"option" "option" [T"OFFSET" "preARM" []]]]]])),
2379   C"CTL_STRUCTURE_case" "IL"
2380    (((T"list" "list" [T"DOPER" "IL" []] -->
2381       T"list" "list"
2382        [T"prod" "pair"
2383          [T"prod" "pair"
2384            [T"OPERATOR" "preARM" [],
2385             T"prod" "pair"
2386              [T"option" "option" [T"COND" "preARM" []], bool]],
2387           T"prod" "pair"
2388            [T"option" "option" [T"EXP" "preARM" []],
2389             T"prod" "pair"
2390              [T"list" "list" [T"EXP" "preARM" []],
2391               T"option" "option" [T"OFFSET" "preARM" []]]]]]) -->
2392      ((T"CTL_STRUCTURE" "IL" [] -->
2393        (T"CTL_STRUCTURE" "IL" [] -->
2394         T"list" "list"
2395          [T"prod" "pair"
2396            [T"prod" "pair"
2397              [T"OPERATOR" "preARM" [],
2398               T"prod" "pair"
2399                [T"option" "option" [T"COND" "preARM" []], bool]],
2400             T"prod" "pair"
2401              [T"option" "option" [T"EXP" "preARM" []],
2402               T"prod" "pair"
2403                [T"list" "list" [T"EXP" "preARM" []],
2404                 T"option" "option" [T"OFFSET" "preARM" []]]]]])) -->
2405       ((T"prod" "pair"
2406          [T"MREG" "IL" [],
2407           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
2408         (T"CTL_STRUCTURE" "IL" [] -->
2409          (T"CTL_STRUCTURE" "IL" [] -->
2410           T"list" "list"
2411            [T"prod" "pair"
2412              [T"prod" "pair"
2413                [T"OPERATOR" "preARM" [],
2414                 T"prod" "pair"
2415                  [T"option" "option" [T"COND" "preARM" []], bool]],
2416               T"prod" "pair"
2417                [T"option" "option" [T"EXP" "preARM" []],
2418                 T"prod" "pair"
2419                  [T"list" "list" [T"EXP" "preARM" []],
2420                   T"option" "option" [T"OFFSET" "preARM" []]]]]]))) -->
2421        ((T"prod" "pair"
2422           [T"MREG" "IL" [],
2423            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
2424          (T"CTL_STRUCTURE" "IL" [] -->
2425           T"list" "list"
2426            [T"prod" "pair"
2427              [T"prod" "pair"
2428                [T"OPERATOR" "preARM" [],
2429                 T"prod" "pair"
2430                  [T"option" "option" [T"COND" "preARM" []], bool]],
2431               T"prod" "pair"
2432                [T"option" "option" [T"EXP" "preARM" []],
2433                 T"prod" "pair"
2434                  [T"list" "list" [T"EXP" "preARM" []],
2435                   T"option" "option" [T"OFFSET" "preARM" []]]]]])) -->
2436         (T"CTL_STRUCTURE" "IL" [] -->
2437          T"list" "list"
2438           [T"prod" "pair"
2439             [T"prod" "pair"
2440               [T"OPERATOR" "preARM" [],
2441                T"prod" "pair"
2442                 [T"option" "option" [T"COND" "preARM" []], bool]],
2443              T"prod" "pair"
2444               [T"option" "option" [T"EXP" "preARM" []],
2445                T"prod" "pair"
2446                 [T"list" "list" [T"EXP" "preARM" []],
2447                  T"option" "option" [T"OFFSET" "preARM" []]]]]])))))),
2448   C"list_case" "list"
2449    ((T"list" "list"
2450       [T"prod" "pair"
2451         [T"prod" "pair"
2452           [T"OPERATOR" "preARM" [],
2453            T"prod" "pair"
2454             [T"option" "option" [T"COND" "preARM" []], bool]],
2455          T"prod" "pair"
2456           [T"option" "option" [T"EXP" "preARM" []],
2457            T"prod" "pair"
2458             [T"list" "list" [T"EXP" "preARM" []],
2459              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2460      ((T"DOPER" "IL" [] -->
2461        (T"list" "list" [T"DOPER" "IL" []] -->
2462         T"list" "list"
2463          [T"prod" "pair"
2464            [T"prod" "pair"
2465              [T"OPERATOR" "preARM" [],
2466               T"prod" "pair"
2467                [T"option" "option" [T"COND" "preARM" []], bool]],
2468             T"prod" "pair"
2469              [T"option" "option" [T"EXP" "preARM" []],
2470               T"prod" "pair"
2471                [T"list" "list" [T"EXP" "preARM" []],
2472                 T"option" "option" [T"OFFSET" "preARM" []]]]]])) -->
2473       (T"list" "list" [T"DOPER" "IL" []] -->
2474        T"list" "list"
2475         [T"prod" "pair"
2476           [T"prod" "pair"
2477             [T"OPERATOR" "preARM" [],
2478              T"prod" "pair"
2479               [T"option" "option" [T"COND" "preARM" []], bool]],
2480            T"prod" "pair"
2481             [T"option" "option" [T"EXP" "preARM" []],
2482              T"prod" "pair"
2483               [T"list" "list" [T"EXP" "preARM" []],
2484                T"option" "option" [T"OFFSET" "preARM" []]]]]])))),
2485   C"I" "combin"
2486    ((T"list" "list"
2487       [T"prod" "pair"
2488         [T"prod" "pair"
2489           [T"OPERATOR" "preARM" [],
2490            T"prod" "pair"
2491             [T"option" "option" [T"COND" "preARM" []], bool]],
2492          T"prod" "pair"
2493           [T"option" "option" [T"EXP" "preARM" []],
2494            T"prod" "pair"
2495             [T"list" "list" [T"EXP" "preARM" []],
2496              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2497      T"list" "list"
2498       [T"prod" "pair"
2499         [T"prod" "pair"
2500           [T"OPERATOR" "preARM" [],
2501            T"prod" "pair"
2502             [T"option" "option" [T"COND" "preARM" []], bool]],
2503          T"prod" "pair"
2504           [T"option" "option" [T"EXP" "preARM" []],
2505            T"prod" "pair"
2506             [T"list" "list" [T"EXP" "preARM" []],
2507              T"option" "option" [T"OFFSET" "preARM" []]]]]])),
2508   C"NIL" "list"
2509    (T"list" "list"
2510      [T"prod" "pair"
2511        [T"prod" "pair"
2512          [T"OPERATOR" "preARM" [],
2513           T"prod" "pair"
2514            [T"option" "option" [T"COND" "preARM" []], bool]],
2515         T"prod" "pair"
2516          [T"option" "option" [T"EXP" "preARM" []],
2517           T"prod" "pair"
2518            [T"list" "list" [T"EXP" "preARM" []],
2519             T"option" "option" [T"OFFSET" "preARM" []]]]]]),
2520   C"CONS" "list"
2521    ((T"prod" "pair"
2522       [T"prod" "pair"
2523         [T"OPERATOR" "preARM" [],
2524          T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool]],
2525        T"prod" "pair"
2526         [T"option" "option" [T"EXP" "preARM" []],
2527          T"prod" "pair"
2528           [T"list" "list" [T"EXP" "preARM" []],
2529            T"option" "option" [T"OFFSET" "preARM" []]]]] -->
2530      (T"list" "list"
2531        [T"prod" "pair"
2532          [T"prod" "pair"
2533            [T"OPERATOR" "preARM" [],
2534             T"prod" "pair"
2535              [T"option" "option" [T"COND" "preARM" []], bool]],
2536           T"prod" "pair"
2537            [T"option" "option" [T"EXP" "preARM" []],
2538             T"prod" "pair"
2539              [T"list" "list" [T"EXP" "preARM" []],
2540               T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2541       T"list" "list"
2542        [T"prod" "pair"
2543          [T"prod" "pair"
2544            [T"OPERATOR" "preARM" [],
2545             T"prod" "pair"
2546              [T"option" "option" [T"COND" "preARM" []], bool]],
2547           T"prod" "pair"
2548            [T"option" "option" [T"EXP" "preARM" []],
2549             T"prod" "pair"
2550              [T"list" "list" [T"EXP" "preARM" []],
2551               T"option" "option" [T"OFFSET" "preARM" []]]]]]))),
2552   C"mk_SC" "ARMComposition"
2553    ((T"list" "list"
2554       [T"prod" "pair"
2555         [T"prod" "pair"
2556           [T"OPERATOR" "preARM" [],
2557            T"prod" "pair"
2558             [T"option" "option" [T"COND" "preARM" []], bool]],
2559          T"prod" "pair"
2560           [T"option" "option" [T"EXP" "preARM" []],
2561            T"prod" "pair"
2562             [T"list" "list" [T"EXP" "preARM" []],
2563              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2564      (T"list" "list"
2565        [T"prod" "pair"
2566          [T"prod" "pair"
2567            [T"OPERATOR" "preARM" [],
2568             T"prod" "pair"
2569              [T"option" "option" [T"COND" "preARM" []], bool]],
2570           T"prod" "pair"
2571            [T"option" "option" [T"EXP" "preARM" []],
2572             T"prod" "pair"
2573              [T"list" "list" [T"EXP" "preARM" []],
2574               T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2575       T"list" "list"
2576        [T"prod" "pair"
2577          [T"prod" "pair"
2578            [T"OPERATOR" "preARM" [],
2579             T"prod" "pair"
2580              [T"option" "option" [T"COND" "preARM" []], bool]],
2581           T"prod" "pair"
2582            [T"option" "option" [T"EXP" "preARM" []],
2583             T"prod" "pair"
2584              [T"list" "list" [T"EXP" "preARM" []],
2585               T"option" "option" [T"OFFSET" "preARM" []]]]]]))),
2586   C"mk_CJ" "ARMComposition"
2587    ((T"prod" "pair"
2588       [T"EXP" "preARM" [],
2589        T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]] -->
2590      (T"list" "list"
2591        [T"prod" "pair"
2592          [T"prod" "pair"
2593            [T"OPERATOR" "preARM" [],
2594             T"prod" "pair"
2595              [T"option" "option" [T"COND" "preARM" []], bool]],
2596           T"prod" "pair"
2597            [T"option" "option" [T"EXP" "preARM" []],
2598             T"prod" "pair"
2599              [T"list" "list" [T"EXP" "preARM" []],
2600               T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2601       (T"list" "list"
2602         [T"prod" "pair"
2603           [T"prod" "pair"
2604             [T"OPERATOR" "preARM" [],
2605              T"prod" "pair"
2606               [T"option" "option" [T"COND" "preARM" []], bool]],
2607            T"prod" "pair"
2608             [T"option" "option" [T"EXP" "preARM" []],
2609              T"prod" "pair"
2610               [T"list" "list" [T"EXP" "preARM" []],
2611                T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2612        T"list" "list"
2613         [T"prod" "pair"
2614           [T"prod" "pair"
2615             [T"OPERATOR" "preARM" [],
2616              T"prod" "pair"
2617               [T"option" "option" [T"COND" "preARM" []], bool]],
2618            T"prod" "pair"
2619             [T"option" "option" [T"EXP" "preARM" []],
2620              T"prod" "pair"
2621               [T"list" "list" [T"EXP" "preARM" []],
2622                T"option" "option" [T"OFFSET" "preARM" []]]]]])))),
2623   V"cond'"
2624    (T"prod" "pair"
2625      [T"MREG" "IL" [],
2626       T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]),
2627   C"mk_TR" "ARMComposition"
2628    ((T"prod" "pair"
2629       [T"EXP" "preARM" [],
2630        T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]] -->
2631      (T"list" "list"
2632        [T"prod" "pair"
2633          [T"prod" "pair"
2634            [T"OPERATOR" "preARM" [],
2635             T"prod" "pair"
2636              [T"option" "option" [T"COND" "preARM" []], bool]],
2637           T"prod" "pair"
2638            [T"option" "option" [T"EXP" "preARM" []],
2639             T"prod" "pair"
2640              [T"list" "list" [T"EXP" "preARM" []],
2641               T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2642       T"list" "list"
2643        [T"prod" "pair"
2644          [T"prod" "pair"
2645            [T"OPERATOR" "preARM" [],
2646             T"prod" "pair"
2647              [T"option" "option" [T"COND" "preARM" []], bool]],
2648           T"prod" "pair"
2649            [T"option" "option" [T"EXP" "preARM" []],
2650             T"prod" "pair"
2651              [T"list" "list" [T"EXP" "preARM" []],
2652               T"option" "option" [T"OFFSET" "preARM" []]]]]]))),
2653   C"!" "bool"
2654    (((T"list" "list"
2655        [T"prod" "pair"
2656          [T"prod" "pair"
2657            [T"OPERATOR" "preARM" [],
2658             T"prod" "pair"
2659              [T"option" "option" [T"COND" "preARM" []], bool]],
2660           T"prod" "pair"
2661            [T"option" "option" [T"EXP" "preARM" []],
2662             T"prod" "pair"
2663              [T"list" "list" [T"EXP" "preARM" []],
2664               T"option" "option" [T"OFFSET" "preARM" []]]]]] --> bool) -->
2665      bool)),
2666   V"arm"
2667    (T"list" "list"
2668      [T"prod" "pair"
2669        [T"prod" "pair"
2670          [T"OPERATOR" "preARM" [],
2671           T"prod" "pair"
2672            [T"option" "option" [T"COND" "preARM" []], bool]],
2673         T"prod" "pair"
2674          [T"option" "option" [T"EXP" "preARM" []],
2675           T"prod" "pair"
2676            [T"list" "list" [T"EXP" "preARM" []],
2677             T"option" "option" [T"OFFSET" "preARM" []]]]]]),
2678   V"pc" (T"num" "num" []),
2679   C"!" "bool"
2680    (((T"cart" "fcp" [bool, T"i32" "words" []] --> bool) --> bool)),
2681   V"cpsr" (T"cart" "fcp" [bool, T"i32" "words" []]),
2682   C"!" "bool" ((((T"num" "num" [] --> bool) --> bool) --> bool)),
2683   V"pcS" ((T"num" "num" [] --> bool)),
2684   C"=" "min"
2685    ((T"prod" "pair"
2686       [T"prod" "pair"
2687         [T"num" "num" [],
2688          T"prod" "pair"
2689           [T"cart" "fcp" [bool, T"i32" "words" []],
2690            T"prod" "pair"
2691             [T"fmap" "finite_map"
2692               [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2693              T"fmap" "finite_map"
2694               [T"num" "num" [],
2695                T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2696        (T"num" "num" [] --> bool)] -->
2697      (T"prod" "pair"
2698        [T"prod" "pair"
2699          [T"num" "num" [],
2700           T"prod" "pair"
2701            [T"cart" "fcp" [bool, T"i32" "words" []],
2702             T"prod" "pair"
2703              [T"fmap" "finite_map"
2704                [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2705               T"fmap" "finite_map"
2706                [T"num" "num" [],
2707                 T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2708         (T"num" "num" [] --> bool)] --> bool))),
2709   C"run_arm" "IL"
2710    ((T"list" "list"
2711       [T"prod" "pair"
2712         [T"prod" "pair"
2713           [T"OPERATOR" "preARM" [],
2714            T"prod" "pair"
2715             [T"option" "option" [T"COND" "preARM" []], bool]],
2716          T"prod" "pair"
2717           [T"option" "option" [T"EXP" "preARM" []],
2718            T"prod" "pair"
2719             [T"list" "list" [T"EXP" "preARM" []],
2720              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2721      (T"prod" "pair"
2722        [T"prod" "pair"
2723          [T"num" "num" [],
2724           T"prod" "pair"
2725            [T"cart" "fcp" [bool, T"i32" "words" []],
2726             T"prod" "pair"
2727              [T"fmap" "finite_map"
2728                [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2729               T"fmap" "finite_map"
2730                [T"num" "num" [],
2731                 T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2732         (T"num" "num" [] --> bool)] -->
2733       T"prod" "pair"
2734        [T"prod" "pair"
2735          [T"num" "num" [],
2736           T"prod" "pair"
2737            [T"cart" "fcp" [bool, T"i32" "words" []],
2738             T"prod" "pair"
2739              [T"fmap" "finite_map"
2740                [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2741               T"fmap" "finite_map"
2742                [T"num" "num" [],
2743                 T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2744         (T"num" "num" [] --> bool)]))),
2745   C"," "pair"
2746    ((T"prod" "pair"
2747       [T"num" "num" [],
2748        T"prod" "pair"
2749         [T"cart" "fcp" [bool, T"i32" "words" []],
2750          T"prod" "pair"
2751           [T"fmap" "finite_map"
2752             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2753            T"fmap" "finite_map"
2754             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
2755      -->
2756      ((T"num" "num" [] --> bool) -->
2757       T"prod" "pair"
2758        [T"prod" "pair"
2759          [T"num" "num" [],
2760           T"prod" "pair"
2761            [T"cart" "fcp" [bool, T"i32" "words" []],
2762             T"prod" "pair"
2763              [T"fmap" "finite_map"
2764                [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2765               T"fmap" "finite_map"
2766                [T"num" "num" [],
2767                 T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2768         (T"num" "num" [] --> bool)]))),
2769   C"," "pair"
2770    ((T"num" "num" [] -->
2771      (T"prod" "pair"
2772        [T"cart" "fcp" [bool, T"i32" "words" []],
2773         T"prod" "pair"
2774          [T"fmap" "finite_map"
2775            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2776           T"fmap" "finite_map"
2777            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]
2778       -->
2779       T"prod" "pair"
2780        [T"num" "num" [],
2781         T"prod" "pair"
2782          [T"cart" "fcp" [bool, T"i32" "words" []],
2783           T"prod" "pair"
2784            [T"fmap" "finite_map"
2785              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2786             T"fmap" "finite_map"
2787              [T"num" "num" [],
2788               T"cart" "fcp" [bool, T"i32" "words" []]]]]]))),
2789   C"," "pair"
2790    ((T"cart" "fcp" [bool, T"i32" "words" []] -->
2791      (T"prod" "pair"
2792        [T"fmap" "finite_map"
2793          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2794         T"fmap" "finite_map"
2795          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2796       T"prod" "pair"
2797        [T"cart" "fcp" [bool, T"i32" "words" []],
2798         T"prod" "pair"
2799          [T"fmap" "finite_map"
2800            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2801           T"fmap" "finite_map"
2802            [T"num" "num" [],
2803             T"cart" "fcp" [bool, T"i32" "words" []]]]]))),
2804   C"runTo" "preARM"
2805    (((T"num" "num" [] -->
2806       T"prod" "pair"
2807        [T"prod" "pair"
2808          [T"OPERATOR" "preARM" [],
2809           T"prod" "pair"
2810            [T"option" "option" [T"COND" "preARM" []], bool]],
2811         T"prod" "pair"
2812          [T"option" "option" [T"EXP" "preARM" []],
2813           T"prod" "pair"
2814            [T"list" "list" [T"EXP" "preARM" []],
2815             T"option" "option" [T"OFFSET" "preARM" []]]]]) -->
2816      (T"num" "num" [] -->
2817       (T"prod" "pair"
2818         [T"prod" "pair"
2819           [T"num" "num" [],
2820            T"prod" "pair"
2821             [T"cart" "fcp" [bool, T"i32" "words" []],
2822              T"prod" "pair"
2823               [T"fmap" "finite_map"
2824                 [T"num" "num" [],
2825                  T"cart" "fcp" [bool, T"i32" "words" []]],
2826                T"fmap" "finite_map"
2827                 [T"num" "num" [],
2828                  T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2829          (T"num" "num" [] --> bool)] -->
2830        T"prod" "pair"
2831         [T"prod" "pair"
2832           [T"num" "num" [],
2833            T"prod" "pair"
2834             [T"cart" "fcp" [bool, T"i32" "words" []],
2835              T"prod" "pair"
2836               [T"fmap" "finite_map"
2837                 [T"num" "num" [],
2838                  T"cart" "fcp" [bool, T"i32" "words" []]],
2839                T"fmap" "finite_map"
2840                 [T"num" "num" [],
2841                  T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2842          (T"num" "num" [] --> bool)])))),
2843   C"upload" "preARM"
2844    ((T"list" "list"
2845       [T"prod" "pair"
2846         [T"prod" "pair"
2847           [T"OPERATOR" "preARM" [],
2848            T"prod" "pair"
2849             [T"option" "option" [T"COND" "preARM" []], bool]],
2850          T"prod" "pair"
2851           [T"option" "option" [T"EXP" "preARM" []],
2852            T"prod" "pair"
2853             [T"list" "list" [T"EXP" "preARM" []],
2854              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2855      ((T"num" "num" [] -->
2856        T"prod" "pair"
2857         [T"prod" "pair"
2858           [T"OPERATOR" "preARM" [],
2859            T"prod" "pair"
2860             [T"option" "option" [T"COND" "preARM" []], bool]],
2861          T"prod" "pair"
2862           [T"option" "option" [T"EXP" "preARM" []],
2863            T"prod" "pair"
2864             [T"list" "list" [T"EXP" "preARM" []],
2865              T"option" "option" [T"OFFSET" "preARM" []]]]]) -->
2866       (T"num" "num" [] -->
2867        (T"num" "num" [] -->
2868         T"prod" "pair"
2869          [T"prod" "pair"
2870            [T"OPERATOR" "preARM" [],
2871             T"prod" "pair"
2872              [T"option" "option" [T"COND" "preARM" []], bool]],
2873           T"prod" "pair"
2874            [T"option" "option" [T"EXP" "preARM" []],
2875             T"prod" "pair"
2876              [T"list" "list" [T"EXP" "preARM" []],
2877               T"option" "option" [T"OFFSET" "preARM" []]]]]))))),
2878   C"ARB" "bool"
2879    (T"prod" "pair"
2880      [T"prod" "pair"
2881        [T"OPERATOR" "preARM" [],
2882         T"prod" "pair" [T"option" "option" [T"COND" "preARM" []], bool]],
2883       T"prod" "pair"
2884        [T"option" "option" [T"EXP" "preARM" []],
2885         T"prod" "pair"
2886          [T"list" "list" [T"EXP" "preARM" []],
2887           T"option" "option" [T"OFFSET" "preARM" []]]]]),
2888   C"LENGTH" "list"
2889    ((T"list" "list"
2890       [T"prod" "pair"
2891         [T"prod" "pair"
2892           [T"OPERATOR" "preARM" [],
2893            T"prod" "pair"
2894             [T"option" "option" [T"COND" "preARM" []], bool]],
2895          T"prod" "pair"
2896           [T"option" "option" [T"EXP" "preARM" []],
2897            T"prod" "pair"
2898             [T"list" "list" [T"EXP" "preARM" []],
2899              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2900      T"num" "num" [])), V"ir" (T"CTL_STRUCTURE" "IL" []),
2901   C"run_ir" "IL"
2902    ((T"CTL_STRUCTURE" "IL" [] -->
2903      (T"prod" "pair"
2904        [T"fmap" "finite_map"
2905          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2906         T"fmap" "finite_map"
2907          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
2908       T"prod" "pair"
2909        [T"fmap" "finite_map"
2910          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2911         T"fmap" "finite_map"
2912          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]))),
2913   C"get_st" "ARMComposition"
2914    ((T"prod" "pair"
2915       [T"prod" "pair"
2916         [T"num" "num" [],
2917          T"prod" "pair"
2918           [T"cart" "fcp" [bool, T"i32" "words" []],
2919            T"prod" "pair"
2920             [T"fmap" "finite_map"
2921               [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2922              T"fmap" "finite_map"
2923               [T"num" "num" [],
2924                T"cart" "fcp" [bool, T"i32" "words" []]]]]],
2925        (T"num" "num" [] --> bool)] -->
2926      T"prod" "pair"
2927       [T"fmap" "finite_map"
2928         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
2929        T"fmap" "finite_map"
2930         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])),
2931   C"EMPTY" "pred_set" ((T"num" "num" [] --> bool)),
2932   C"WELL_FORMED" "IL" ((T"CTL_STRUCTURE" "IL" [] --> bool)),
2933   C"well_formed" "ARMComposition"
2934    ((T"list" "list"
2935       [T"prod" "pair"
2936         [T"prod" "pair"
2937           [T"OPERATOR" "preARM" [],
2938            T"prod" "pair"
2939             [T"option" "option" [T"COND" "preARM" []], bool]],
2940          T"prod" "pair"
2941           [T"option" "option" [T"EXP" "preARM" []],
2942            T"prod" "pair"
2943             [T"list" "list" [T"EXP" "preARM" []],
2944              T"option" "option" [T"OFFSET" "preARM" []]]]]] --> bool)),
2945   C"WF_TR" "ARMComposition"
2946    ((T"prod" "pair"
2947       [T"prod" "pair"
2948         [T"EXP" "preARM" [],
2949          T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]],
2950        T"list" "list"
2951         [T"prod" "pair"
2952           [T"prod" "pair"
2953             [T"OPERATOR" "preARM" [],
2954              T"prod" "pair"
2955               [T"option" "option" [T"COND" "preARM" []], bool]],
2956            T"prod" "pair"
2957             [T"option" "option" [T"EXP" "preARM" []],
2958              T"prod" "pair"
2959               [T"list" "list" [T"EXP" "preARM" []],
2960                T"option" "option" [T"OFFSET" "preARM" []]]]]]] --> bool)),
2961   C"," "pair"
2962    ((T"prod" "pair"
2963       [T"EXP" "preARM" [],
2964        T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]] -->
2965      (T"list" "list"
2966        [T"prod" "pair"
2967          [T"prod" "pair"
2968            [T"OPERATOR" "preARM" [],
2969             T"prod" "pair"
2970              [T"option" "option" [T"COND" "preARM" []], bool]],
2971           T"prod" "pair"
2972            [T"option" "option" [T"EXP" "preARM" []],
2973             T"prod" "pair"
2974              [T"list" "list" [T"EXP" "preARM" []],
2975               T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
2976       T"prod" "pair"
2977        [T"prod" "pair"
2978          [T"EXP" "preARM" [],
2979           T"prod" "pair" [T"COND" "preARM" [], T"EXP" "preARM" []]],
2980         T"list" "list"
2981          [T"prod" "pair"
2982            [T"prod" "pair"
2983              [T"OPERATOR" "preARM" [],
2984               T"prod" "pair"
2985                [T"option" "option" [T"COND" "preARM" []], bool]],
2986             T"prod" "pair"
2987              [T"option" "option" [T"EXP" "preARM" []],
2988               T"prod" "pair"
2989                [T"list" "list" [T"EXP" "preARM" []],
2990                 T"option" "option" [T"OFFSET" "preARM" []]]]]]]))),
2991   C"WELL_FORMED_SUB" "IL" ((T"CTL_STRUCTURE" "IL" [] --> bool)),
2992   V"r'" (T"num" "num" []), V"a'" (T"MREG" "IL" []),
2993   C"DATATYPE" "bool" ((bool --> bool)),
2994   V"MREG"
2995    ((T"MREG" "IL" [] -->
2996      (T"MREG" "IL" [] -->
2997       (T"MREG" "IL" [] -->
2998        (T"MREG" "IL" [] -->
2999         (T"MREG" "IL" [] -->
3000          (T"MREG" "IL" [] -->
3001           (T"MREG" "IL" [] -->
3002            (T"MREG" "IL" [] -->
3003             (T"MREG" "IL" [] -->
3004              (T"MREG" "IL" [] -->
3005               (T"MREG" "IL" [] -->
3006                (T"MREG" "IL" [] -->
3007                 (T"MREG" "IL" [] -->
3008                  (T"MREG" "IL" [] -->
3009                   (T"MREG" "IL" [] --> bool)))))))))))))))),
3010   C"~" "bool" ((bool --> bool)), V"M" (T"MREG" "IL" []),
3011   V"M'" (T"MREG" "IL" []), V"v0'" (alpha), V"v1'" (alpha), V"v2'" (alpha),
3012   V"v3'" (alpha), V"v4'" (alpha), V"v5'" (alpha), V"v6'" (alpha),
3013   V"v7'" (alpha), V"v8'" (alpha), V"v9'" (alpha), V"v10'" (alpha),
3014   V"v11'" (alpha), V"v12'" (alpha), V"v13'" (alpha), V"v14'" (alpha),
3015   V"x0" (alpha), V"x1" (alpha), V"x2" (alpha), V"x3" (alpha),
3016   V"x4" (alpha), V"x5" (alpha), V"x6" (alpha), V"x7" (alpha),
3017   V"x8" (alpha), V"x9" (alpha), V"x10" (alpha), V"x11" (alpha),
3018   V"x12" (alpha), V"x13" (alpha), V"x14" (alpha),
3019   C"?" "bool" ((((T"MREG" "IL" [] --> alpha) --> bool) --> bool)),
3020   C"!" "bool" ((((T"MREG" "IL" [] --> bool) --> bool) --> bool)),
3021   V"P" ((T"MREG" "IL" [] --> bool)),
3022   V"MEXP"
3023    (((T"MREG" "IL" [] --> T"MEXP" "IL" []) -->
3024      ((T"cart" "fcp" [bool, T"i4" "words" []] -->
3025        (T"cart" "fcp" [bool, T"i8" "words" []] --> T"MEXP" "IL" [])) -->
3026       bool))), V"a0'" (T"cart" "fcp" [bool, T"i4" "words" []]),
3027   V"a1'" (T"cart" "fcp" [bool, T"i8" "words" []]),
3028   C"=" "min"
3029    ((T"cart" "fcp" [bool, T"i4" "words" []] -->
3030      (T"cart" "fcp" [bool, T"i4" "words" []] --> bool))),
3031   C"=" "min"
3032    ((T"cart" "fcp" [bool, T"i8" "words" []] -->
3033      (T"cart" "fcp" [bool, T"i8" "words" []] --> bool))),
3034   V"M" (T"MEXP" "IL" []), V"M'" (T"MEXP" "IL" []),
3035   V"f'" ((T"MREG" "IL" [] --> alpha)),
3036   V"f1'"
3037    ((T"cart" "fcp" [bool, T"i4" "words" []] -->
3038      (T"cart" "fcp" [bool, T"i8" "words" []] --> alpha))),
3039   V"c" (T"cart" "fcp" [bool, T"i4" "words" []]),
3040   V"c0" (T"cart" "fcp" [bool, T"i8" "words" []]),
3041   V"f0" ((T"MREG" "IL" [] --> alpha)),
3042   C"?" "bool" ((((T"MEXP" "IL" [] --> alpha) --> bool) --> bool)),
3043   V"fn" ((T"MEXP" "IL" [] --> alpha)),
3044   C"!" "bool" ((((T"MEXP" "IL" [] --> bool) --> bool) --> bool)),
3045   V"P" ((T"MEXP" "IL" [] --> bool)),
3046   V"DOPER"
3047    (((T"MREG" "IL" [] -->
3048       (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
3049        T"DOPER" "IL" [])) -->
3050      ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
3051        (T"MREG" "IL" [] --> T"DOPER" "IL" [])) -->
3052       ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])) -->
3053        ((T"MREG" "IL" [] -->
3054          (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" []))) -->
3055         ((T"MREG" "IL" [] -->
3056           (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))
3057          -->
3058          ((T"MREG" "IL" [] -->
3059            (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))
3060           -->
3061           ((T"MREG" "IL" [] -->
3062             (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> T"DOPER" "IL" [])))
3063            -->
3064            ((T"MREG" "IL" [] -->
3065              (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> T"DOPER" "IL" [])))
3066             -->
3067             ((T"MREG" "IL" [] -->
3068               (T"MREG" "IL" [] -->
3069                (T"MEXP" "IL" [] --> T"DOPER" "IL" []))) -->
3070              ((T"MREG" "IL" [] -->
3071                (T"MREG" "IL" [] -->
3072                 (T"MEXP" "IL" [] --> T"DOPER" "IL" []))) -->
3073               ((T"MREG" "IL" [] -->
3074                 (T"MREG" "IL" [] -->
3075                  (T"cart" "fcp" [bool, T"i5" "words" []] -->
3076                   T"DOPER" "IL" []))) -->
3077                ((T"MREG" "IL" [] -->
3078                  (T"MREG" "IL" [] -->
3079                   (T"cart" "fcp" [bool, T"i5" "words" []] -->
3080                    T"DOPER" "IL" []))) -->
3081                 ((T"MREG" "IL" [] -->
3082                   (T"MREG" "IL" [] -->
3083                    (T"cart" "fcp" [bool, T"i5" "words" []] -->
3084                     T"DOPER" "IL" []))) -->
3085                  ((T"MREG" "IL" [] -->
3086                    (T"MREG" "IL" [] -->
3087                     (T"cart" "fcp" [bool, T"i5" "words" []] -->
3088                      T"DOPER" "IL" []))) -->
3089                   ((T"num" "num" [] -->
3090                     (T"list" "list" [T"num" "num" []] -->
3091                      T"DOPER" "IL" [])) -->
3092                    ((T"num" "num" [] -->
3093                      (T"list" "list" [T"num" "num" []] -->
3094                       T"DOPER" "IL" [])) --> bool))))))))))))))))),
3095   V"a0'" (T"MREG" "IL" []),
3096   V"a1'" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
3097   C"=" "min"
3098    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
3099      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] --> bool))),
3100   V"a0'" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
3101   V"a1'" (T"MREG" "IL" []), V"a1'" (T"MEXP" "IL" []),
3102   V"a2'" (T"MEXP" "IL" []), V"a2'" (T"MREG" "IL" []),
3103   V"a2'" (T"cart" "fcp" [bool, T"i5" "words" []]),
3104   C"=" "min"
3105    ((T"cart" "fcp" [bool, T"i5" "words" []] -->
3106      (T"cart" "fcp" [bool, T"i5" "words" []] --> bool))),
3107   V"a0'" (T"num" "num" []), V"a1'" (T"list" "list" [T"num" "num" []]),
3108   C"=" "min"
3109    ((T"list" "list" [T"num" "num" []] -->
3110      (T"list" "list" [T"num" "num" []] --> bool))),
3111   V"M" (T"DOPER" "IL" []), V"M'" (T"DOPER" "IL" []),
3112   V"f'"
3113    ((T"MREG" "IL" [] -->
3114      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
3115       alpha))),
3116   V"f1'"
3117    ((T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
3118      (T"MREG" "IL" [] --> alpha))),
3119   V"f2'" ((T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha))),
3120   V"f3'"
3121    ((T"MREG" "IL" [] -->
3122      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
3123   V"f4'"
3124    ((T"MREG" "IL" [] -->
3125      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
3126   V"f5'"
3127    ((T"MREG" "IL" [] -->
3128      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
3129   V"f6'"
3130    ((T"MREG" "IL" [] -->
3131      (T"MREG" "IL" [] --> (T"MREG" "IL" [] --> alpha)))),
3132   V"f7'"
3133    ((T"MREG" "IL" [] -->
3134      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
3135   V"f8'"
3136    ((T"MREG" "IL" [] -->
3137      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
3138   V"f9'"
3139    ((T"MREG" "IL" [] -->
3140      (T"MREG" "IL" [] --> (T"MEXP" "IL" [] --> alpha)))),
3141   V"f10'"
3142    ((T"MREG" "IL" [] -->
3143      (T"MREG" "IL" [] -->
3144       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
3145   V"f11'"
3146    ((T"MREG" "IL" [] -->
3147      (T"MREG" "IL" [] -->
3148       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
3149   V"f12'"
3150    ((T"MREG" "IL" [] -->
3151      (T"MREG" "IL" [] -->
3152       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
3153   V"f13'"
3154    ((T"MREG" "IL" [] -->
3155      (T"MREG" "IL" [] -->
3156       (T"cart" "fcp" [bool, T"i5" "words" []] --> alpha)))),
3157   V"f14'"
3158    ((T"num" "num" [] --> (T"list" "list" [T"num" "num" []] --> alpha))),
3159   V"f15'"
3160    ((T"num" "num" [] --> (T"list" "list" [T"num" "num" []] --> alpha))),
3161   V"D" (T"DOPER" "IL" []),
3162   V"p" (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []]),
3163   V"M0" (T"MEXP" "IL" []), V"M0" (T"MREG" "IL" []),
3164   V"M1" (T"MEXP" "IL" []), V"M1" (T"MREG" "IL" []),
3165   V"c" (T"cart" "fcp" [bool, T"i5" "words" []]),
3166   V"l" (T"list" "list" [T"num" "num" []]),
3167   V"f0"
3168    ((T"MREG" "IL" [] -->
3169      (T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []] -->
3170       alpha))),
3171   C"?" "bool" ((((T"DOPER" "IL" [] --> alpha) --> bool) --> bool)),
3172   V"fn" ((T"DOPER" "IL" [] --> alpha)),
3173   C"!" "bool" ((((T"DOPER" "IL" [] --> bool) --> bool) --> bool)),
3174   V"P" ((T"DOPER" "IL" [] --> bool)),
3175   V"CTL_STRUCTURE"
3176    (((T"list" "list" [T"DOPER" "IL" []] --> T"CTL_STRUCTURE" "IL" []) -->
3177      ((T"CTL_STRUCTURE" "IL" [] -->
3178        (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])) -->
3179       ((T"prod" "pair"
3180          [T"MREG" "IL" [],
3181           T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3182         (T"CTL_STRUCTURE" "IL" [] -->
3183          (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" []))) -->
3184        ((T"prod" "pair"
3185           [T"MREG" "IL" [],
3186            T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3187          (T"CTL_STRUCTURE" "IL" [] --> T"CTL_STRUCTURE" "IL" [])) -->
3188         bool))))), V"a'" (T"list" "list" [T"DOPER" "IL" []]),
3189   C"=" "min"
3190    ((T"list" "list" [T"DOPER" "IL" []] -->
3191      (T"list" "list" [T"DOPER" "IL" []] --> bool))),
3192   V"a0'" (T"CTL_STRUCTURE" "IL" []), V"a1'" (T"CTL_STRUCTURE" "IL" []),
3193   V"a0'"
3194    (T"prod" "pair"
3195      [T"MREG" "IL" [],
3196       T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]),
3197   V"a2'" (T"CTL_STRUCTURE" "IL" []),
3198   C"=" "min"
3199    ((T"prod" "pair"
3200       [T"MREG" "IL" [],
3201        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3202      (T"prod" "pair"
3203        [T"MREG" "IL" [],
3204         T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3205       bool))), V"M" (T"CTL_STRUCTURE" "IL" []),
3206   V"M'" (T"CTL_STRUCTURE" "IL" []),
3207   V"f'" ((T"list" "list" [T"DOPER" "IL" []] --> alpha)),
3208   V"f1'"
3209    ((T"CTL_STRUCTURE" "IL" [] --> (T"CTL_STRUCTURE" "IL" [] --> alpha))),
3210   V"f2'"
3211    ((T"prod" "pair"
3212       [T"MREG" "IL" [],
3213        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3214      (T"CTL_STRUCTURE" "IL" [] -->
3215       (T"CTL_STRUCTURE" "IL" [] --> alpha)))),
3216   V"f3'"
3217    ((T"prod" "pair"
3218       [T"MREG" "IL" [],
3219        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3220      (T"CTL_STRUCTURE" "IL" [] --> alpha))),
3221   V"C" (T"CTL_STRUCTURE" "IL" []),
3222   V"l" (T"list" "list" [T"DOPER" "IL" []]),
3223   C"?" "bool" (((T"CTL_STRUCTURE" "IL" [] --> bool) --> bool)),
3224   V"C0" (T"CTL_STRUCTURE" "IL" []),
3225   V"p"
3226    (T"prod" "pair"
3227      [T"MREG" "IL" [],
3228       T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]]),
3229   V"f0" ((T"list" "list" [T"DOPER" "IL" []] --> alpha)),
3230   C"!" "bool"
3231    ((((T"CTL_STRUCTURE" "IL" [] -->
3232        (T"CTL_STRUCTURE" "IL" [] --> (alpha --> (alpha --> alpha)))) -->
3233       bool) --> bool)),
3234   V"f1"
3235    ((T"CTL_STRUCTURE" "IL" [] -->
3236      (T"CTL_STRUCTURE" "IL" [] --> (alpha --> (alpha --> alpha))))),
3237   C"!" "bool"
3238    ((((T"prod" "pair"
3239         [T"MREG" "IL" [],
3240          T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3241        (T"CTL_STRUCTURE" "IL" [] -->
3242         (T"CTL_STRUCTURE" "IL" [] --> (alpha --> (alpha --> alpha))))) -->
3243       bool) --> bool)),
3244   V"f2"
3245    ((T"prod" "pair"
3246       [T"MREG" "IL" [],
3247        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3248      (T"CTL_STRUCTURE" "IL" [] -->
3249       (T"CTL_STRUCTURE" "IL" [] --> (alpha --> (alpha --> alpha)))))),
3250   C"!" "bool"
3251    ((((T"prod" "pair"
3252         [T"MREG" "IL" [],
3253          T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3254        (T"CTL_STRUCTURE" "IL" [] --> (alpha --> alpha))) --> bool) -->
3255      bool)),
3256   V"f3"
3257    ((T"prod" "pair"
3258       [T"MREG" "IL" [],
3259        T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]] -->
3260      (T"CTL_STRUCTURE" "IL" [] --> (alpha --> alpha)))),
3261   C"?" "bool"
3262    ((((T"CTL_STRUCTURE" "IL" [] --> alpha) --> bool) --> bool)),
3263   V"fn" ((T"CTL_STRUCTURE" "IL" [] --> alpha)),
3264   C"!" "bool" ((((T"CTL_STRUCTURE" "IL" [] --> bool) --> bool) --> bool)),
3265   V"P" ((T"CTL_STRUCTURE" "IL" [] --> bool)),
3266   C"=" "min"
3267    ((T"prod" "pair"
3268       [T"num" "num" [],
3269        T"prod" "pair"
3270         [T"cart" "fcp" [bool, T"i32" "words" []],
3271          T"prod" "pair"
3272           [T"fmap" "finite_map"
3273             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3274            T"fmap" "finite_map"
3275             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
3276      -->
3277      (T"prod" "pair"
3278        [T"num" "num" [],
3279         T"prod" "pair"
3280          [T"cart" "fcp" [bool, T"i32" "words" []],
3281           T"prod" "pair"
3282            [T"fmap" "finite_map"
3283              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3284             T"fmap" "finite_map"
3285              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
3286       --> bool))),
3287   C"decode_cond" "preARM"
3288    ((T"prod" "pair"
3289       [T"num" "num" [],
3290        T"prod" "pair"
3291         [T"cart" "fcp" [bool, T"i32" "words" []],
3292          T"prod" "pair"
3293           [T"fmap" "finite_map"
3294             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3295            T"fmap" "finite_map"
3296             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
3297      -->
3298      (T"prod" "pair"
3299        [T"prod" "pair"
3300          [T"OPERATOR" "preARM" [],
3301           T"prod" "pair"
3302            [T"option" "option" [T"COND" "preARM" []], bool]],
3303         T"prod" "pair"
3304          [T"option" "option" [T"EXP" "preARM" []],
3305           T"prod" "pair"
3306            [T"list" "list" [T"EXP" "preARM" []],
3307             T"option" "option" [T"OFFSET" "preARM" []]]]] -->
3308       T"prod" "pair"
3309        [T"num" "num" [],
3310         T"prod" "pair"
3311          [T"cart" "fcp" [bool, T"i32" "words" []],
3312           T"prod" "pair"
3313            [T"fmap" "finite_map"
3314              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3315             T"fmap" "finite_map"
3316              [T"num" "num" [],
3317               T"cart" "fcp" [bool, T"i32" "words" []]]]]]))),
3318   C"!" "bool"
3319    (((T"prod" "pair"
3320        [T"num" "num" [],
3321         T"prod" "pair"
3322          [T"cart" "fcp" [bool, T"i32" "words" []],
3323           T"prod" "pair"
3324            [T"fmap" "finite_map"
3325              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3326             T"fmap" "finite_map"
3327              [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
3328       --> bool) --> bool)),
3329   V"s"
3330    (T"prod" "pair"
3331      [T"num" "num" [],
3332       T"prod" "pair"
3333        [T"cart" "fcp" [bool, T"i32" "words" []],
3334         T"prod" "pair"
3335          [T"fmap" "finite_map"
3336            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3337           T"fmap" "finite_map"
3338            [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]),
3339   C"FST" "pair"
3340    ((T"prod" "pair"
3341       [T"num" "num" [],
3342        T"prod" "pair"
3343         [T"cart" "fcp" [bool, T"i32" "words" []],
3344          T"prod" "pair"
3345           [T"fmap" "finite_map"
3346             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3347            T"fmap" "finite_map"
3348             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
3349      --> T"num" "num" [])),
3350   C"FST" "pair"
3351    ((T"prod" "pair"
3352       [T"cart" "fcp" [bool, T"i32" "words" []],
3353        T"prod" "pair"
3354         [T"fmap" "finite_map"
3355           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3356          T"fmap" "finite_map"
3357           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]] -->
3358      T"cart" "fcp" [bool, T"i32" "words" []])),
3359   C"SND" "pair"
3360    ((T"prod" "pair"
3361       [T"num" "num" [],
3362        T"prod" "pair"
3363         [T"cart" "fcp" [bool, T"i32" "words" []],
3364          T"prod" "pair"
3365           [T"fmap" "finite_map"
3366             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3367            T"fmap" "finite_map"
3368             [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]]]
3369      -->
3370      T"prod" "pair"
3371       [T"cart" "fcp" [bool, T"i32" "words" []],
3372        T"prod" "pair"
3373         [T"fmap" "finite_map"
3374           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3375          T"fmap" "finite_map"
3376           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]])),
3377   C"SND" "pair"
3378    ((T"prod" "pair"
3379       [T"cart" "fcp" [bool, T"i32" "words" []],
3380        T"prod" "pair"
3381         [T"fmap" "finite_map"
3382           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3383          T"fmap" "finite_map"
3384           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]] -->
3385      T"prod" "pair"
3386       [T"fmap" "finite_map"
3387         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3388        T"fmap" "finite_map"
3389         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])),
3390   C"NIL" "list" (T"list" "list" [T"DOPER" "IL" []]),
3391   V"v" (T"CTL_STRUCTURE" "IL" []),
3392   C"=" "min"
3393    ((T"list" "list"
3394       [T"prod" "pair"
3395         [T"prod" "pair"
3396           [T"OPERATOR" "preARM" [],
3397            T"prod" "pair"
3398             [T"option" "option" [T"COND" "preARM" []], bool]],
3399          T"prod" "pair"
3400           [T"option" "option" [T"EXP" "preARM" []],
3401            T"prod" "pair"
3402             [T"list" "list" [T"EXP" "preARM" []],
3403              T"option" "option" [T"OFFSET" "preARM" []]]]]] -->
3404      (T"list" "list"
3405        [T"prod" "pair"
3406          [T"prod" "pair"
3407            [T"OPERATOR" "preARM" [],
3408             T"prod" "pair"
3409              [T"option" "option" [T"COND" "preARM" []], bool]],
3410           T"prod" "pair"
3411            [T"option" "option" [T"EXP" "preARM" []],
3412             T"prod" "pair"
3413              [T"list" "list" [T"EXP" "preARM" []],
3414               T"option" "option" [T"OFFSET" "preARM" []]]]]] --> bool))),
3415   V"ir1" (T"CTL_STRUCTURE" "IL" []), V"ir2" (T"CTL_STRUCTURE" "IL" []),
3416   C"!" "bool"
3417    ((((T"prod" "pair"
3418         [T"fmap" "finite_map"
3419           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3420          T"fmap" "finite_map"
3421           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3422        bool) --> bool) --> bool)),
3423   V"P"
3424    ((T"prod" "pair"
3425       [T"fmap" "finite_map"
3426         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3427        T"fmap" "finite_map"
3428         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3429      bool)),
3430   V"Q"
3431    ((T"prod" "pair"
3432       [T"fmap" "finite_map"
3433         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3434        T"fmap" "finite_map"
3435         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3436      bool)),
3437   V"R"
3438    ((T"prod" "pair"
3439       [T"fmap" "finite_map"
3440         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3441        T"fmap" "finite_map"
3442         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3443      bool)),
3444   V"T"
3445    ((T"prod" "pair"
3446       [T"fmap" "finite_map"
3447         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3448        T"fmap" "finite_map"
3449         [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3450      bool)), V"ir_t" (T"CTL_STRUCTURE" "IL" []),
3451   V"ir_f" (T"CTL_STRUCTURE" "IL" []),
3452   C"COND" "bool" ((bool --> (bool --> (bool --> bool)))),
3453   C"!" "bool"
3454    (((T"prod" "pair" [T"num" "num" [], alpha] --> bool) --> bool)),
3455   V"s" (T"prod" "pair" [T"num" "num" [], alpha]),
3456   C"!" "bool" (((beta --> bool) --> bool)), V"stm" (beta),
3457   C"!" "bool" ((((T"num" "num" [] --> beta) --> bool) --> bool)),
3458   V"iB" ((T"num" "num" [] --> beta)),
3459   C"=" "min" ((beta --> (beta --> bool))),
3460   C"upload" "preARM"
3461    ((T"list" "list" [beta] -->
3462      ((T"num" "num" [] --> beta) -->
3463       (T"num" "num" [] --> (T"num" "num" [] --> beta))))),
3464   C"CONS" "list"
3465    ((beta --> (T"list" "list" [beta] --> T"list" "list" [beta]))),
3466   C"NIL" "list" (T"list" "list" [beta]),
3467   C"FST" "pair"
3468    ((T"prod" "pair" [T"num" "num" [], alpha] --> T"num" "num" [])),
3469   C"COND" "bool"
3470    ((bool -->
3471      (T"prod" "pair"
3472        [T"fmap" "finite_map"
3473          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3474         T"fmap" "finite_map"
3475          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3476       (T"prod" "pair"
3477         [T"fmap" "finite_map"
3478           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3479          T"fmap" "finite_map"
3480           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3481        T"prod" "pair"
3482         [T"fmap" "finite_map"
3483           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3484          T"fmap" "finite_map"
3485           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])))),
3486   C"WHILE" "while"
3487    (((T"prod" "pair"
3488        [T"fmap" "finite_map"
3489          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3490         T"fmap" "finite_map"
3491          [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3492       bool) -->
3493      ((T"prod" "pair"
3494         [T"fmap" "finite_map"
3495           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3496          T"fmap" "finite_map"
3497           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3498        T"prod" "pair"
3499         [T"fmap" "finite_map"
3500           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3501          T"fmap" "finite_map"
3502           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]]) -->
3503       (T"prod" "pair"
3504         [T"fmap" "finite_map"
3505           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3506          T"fmap" "finite_map"
3507           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]] -->
3508        T"prod" "pair"
3509         [T"fmap" "finite_map"
3510           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3511          T"fmap" "finite_map"
3512           [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])))),
3513   V"st'"
3514    (T"prod" "pair"
3515      [T"fmap" "finite_map"
3516        [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]],
3517       T"fmap" "finite_map"
3518        [T"num" "num" [], T"cart" "fcp" [bool, T"i32" "words" []]]])]
3519  val DT = Thm.disk_thm share_table
3520  in
3521  val MREG_TY_DEF =
3522    DT(["DISK_THM"], [],
3523       `(%0 (\%1. ((%2 (\%3. ((%4 $0) (%5 (%6 (%6 (%6 (%6 %7))))))))
3524       $0)))`)
3525  val MREG_BIJ =
3526    DT(["DISK_THM"], [],
3527       `((%8 (%9 (\%10. ((%11 (%12 (%13 $0))) $0)))) (%14 (\%15. ((%16
3528       ((\%3. ((%4 $0) (%5 (%6 (%6 (%6 (%6 %7))))))) $0)) ((%17 (%13 (%12
3529       $0))) $0)))))`)
3530  val R0 = DT([], [], `((%11 %18) (%12 %19))`)
3531  val R1 = DT([], [], `((%11 %20) (%12 (%5 (%6 %7))))`)
3532  val R2 = DT([], [], `((%11 %21) (%12 (%5 (%22 %7))))`)
3533  val R3 = DT([], [], `((%11 %23) (%12 (%5 (%6 (%6 %7)))))`)
3534  val R4 = DT([], [], `((%11 %24) (%12 (%5 (%22 (%6 %7)))))`)
3535  val R5 = DT([], [], `((%11 %25) (%12 (%5 (%6 (%22 %7)))))`)
3536  val R6 = DT([], [], `((%11 %26) (%12 (%5 (%22 (%22 %7)))))`)
3537  val R7 = DT([], [], `((%11 %27) (%12 (%5 (%6 (%6 (%6 %7))))))`)
3538  val R8 = DT([], [], `((%11 %28) (%12 (%5 (%22 (%6 (%6 %7))))))`)
3539  val R9 = DT([], [], `((%11 %29) (%12 (%5 (%6 (%22 (%6 %7))))))`)
3540  val R10 = DT([], [], `((%11 %30) (%12 (%5 (%22 (%22 (%6 %7))))))`)
3541  val R11 = DT([], [], `((%11 %31) (%12 (%5 (%6 (%6 (%22 %7))))))`)
3542  val R12 = DT([], [], `((%11 %32) (%12 (%5 (%22 (%6 (%22 %7))))))`)
3543  val R13 = DT([], [], `((%11 %33) (%12 (%5 (%6 (%22 (%22 %7))))))`)
3544  val R14 = DT([], [], `((%11 %34) (%12 (%5 (%22 (%22 (%22 %7))))))`)
3545  val MREG_size_def = DT([], [], `(%9 (\%35. ((%17 (%36 $0)) %19)))`)
3546  val MREG_case =
3547    DT([], [],
3548       `(%37 (\%38. (%37 (\%39. (%37 (\%40. (%37 (\%41. (%37 (\%42. (%37
3549       (\%43. (%37 (\%44. (%37 (\%45. (%37 (\%46. (%37 (\%47. (%37 (\%48.
3550       (%37 (\%49. (%37 (\%50. (%37 (\%51. (%37 (\%52. (%9 (\%35. ((%53
3551       ((((((((((((((((%54 $15) $14) $13) $12) $11) $10) $9) $8) $7) $6)
3552       $5) $4) $3) $2) $1) $0)) ((\%55. (((%56 ((%4 $0) (%5 (%6 (%6 (%6
3553       %7)))))) (((%56 ((%4 $0) (%5 (%6 (%6 %7))))) (((%56 ((%4 $0) (%5 (%6
3554       %7)))) $16) (((%56 ((%17 $0) (%5 (%6 %7)))) $15) $14))) (((%56 ((%4
3555       $0) (%5 (%22 (%6 %7))))) $13) (((%56 ((%4 $0) (%5 (%6 (%22 %7)))))
3556       $12) (((%56 ((%17 $0) (%5 (%6 (%22 %7))))) $11) $10))))) (((%56 ((%4
3557       $0) (%5 (%22 (%22 (%6 %7)))))) (((%56 ((%4 $0) (%5 (%22 (%6 (%6
3558       %7)))))) $9) (((%56 ((%17 $0) (%5 (%22 (%6 (%6 %7)))))) $8) $7)))
3559       (((%56 ((%4 $0) (%5 (%22 (%6 (%22 %7)))))) (((%56 ((%17 $0) (%5 (%22
3560       (%22 (%6 %7)))))) $6) $5)) (((%56 ((%4 $0) (%5 (%6 (%22 (%22
3561       %7)))))) $4) (((%56 ((%17 $0) (%5 (%6 (%22 (%22 %7)))))) $3)
3562       $2)))))) (%13 $0)))))))))))))))))))))))))))))))))))`)
3563  val MEXP_TY_DEF =
3564    DT(["DISK_THM"], [],
3565       `(%57 (\%58. ((%59 (\%60. (%61 (\%62. ((%63 (%64 (\%60. ((%63 ((%65
3566       (%66 (\%10. ((%67 $1) ((\%10. (((%68 %19) ((%69 $0) ((%70 (%71
3567       (\%72. %73))) (%74 (\%75. %73))))) (\%3. %76))) $0))))) (%77 (\%78.
3568       (%79 (\%80. ((%67 $2) (((\%78. (\%80. (((%68 (%81 %19)) ((%69 (%82
3569       (\%83. %73))) ((%70 $1) $0))) (\%3. %76)))) $1) $0)))))))) ($1
3570       $0))))) ($0 $1)))))) $0)))`)
3571  val MEXP_repfns =
3572    DT(["DISK_THM"], [],
3573       `((%8 (%84 (\%85. ((%86 (%87 (%88 $0))) $0)))) (%64 (\%89. ((%16
3574       ((\%60. (%61 (\%62. ((%63 (%64 (\%60. ((%63 ((%65 (%66 (\%10. ((%67
3575       $1) ((\%10. (((%68 %19) ((%69 $0) ((%70 (%71 (\%72. %73))) (%74
3576       (\%75. %73))))) (\%3. %76))) $0))))) (%77 (\%78. (%79 (\%80. ((%67
3577       $2) (((\%78. (\%80. (((%68 (%81 %19)) ((%69 (%82 (\%83. %73))) ((%70
3578       $1) $0))) (\%3. %76)))) $1) $0)))))))) ($1 $0))))) ($0 $1))))) $0))
3579       ((%67 (%88 (%87 $0))) $0)))))`)
3580  val IL0_def =
3581    DT([], [],
3582       `((%90 %91) (\%10. (%87 ((\%10. (((%68 %19) ((%69 $0) ((%70 (%71
3583       (\%72. %73))) (%74 (\%75. %73))))) (\%3. %76))) $0))))`)
3584  val IL1_def =
3585    DT([], [],
3586       `((%92 %93) (\%78. (\%80. (%87 (((\%78. (\%80. (((%68 (%81 %19))
3587       ((%69 (%82 (\%83. %73))) ((%70 $1) $0))) (\%3. %76)))) $1) $0)))))`)
3588  val MR = DT([], [], `((%90 %94) %91)`)
3589  val MC = DT([], [], `((%92 %95) %93)`)
3590  val MEXP_case_def =
3591    DT(["DISK_THM"], [],
3592       `((%8 (%96 (\%97. (%98 (\%99. (%9 (\%10. ((%53 (((%100 $2) $1) (%94
3593       $0))) ($2 $0))))))))) (%96 (\%97. (%98 (\%99. (%101 (\%78. (%102
3594       (\%80. ((%53 (((%100 $3) $2) ((%95 $1) $0))) (($2 $1)
3595       $0)))))))))))`)
3596  val MEXP_size_def =
3597    DT(["DISK_THM"], [],
3598       `((%8 (%9 (\%10. ((%17 (%103 (%94 $0))) ((%104 (%5 (%6 %7))) (%36
3599       $0)))))) (%101 (\%78. (%102 (\%80. ((%17 (%103 ((%95 $1) $0))) (%5
3600       (%6 %7))))))))`)
3601  val index_of_reg_def =
3602    DT(["DISK_THM"], [],
3603       `((%8 ((%17 (%105 %18)) %19)) ((%8 ((%17 (%105 %20)) (%5 (%6 %7))))
3604       ((%8 ((%17 (%105 %21)) (%5 (%22 %7)))) ((%8 ((%17 (%105 %23)) (%5
3605       (%6 (%6 %7))))) ((%8 ((%17 (%105 %24)) (%5 (%22 (%6 %7))))) ((%8
3606       ((%17 (%105 %25)) (%5 (%6 (%22 %7))))) ((%8 ((%17 (%105 %26)) (%5
3607       (%22 (%22 %7))))) ((%8 ((%17 (%105 %27)) (%5 (%6 (%6 (%6 %7))))))
3608       ((%8 ((%17 (%105 %28)) (%5 (%22 (%6 (%6 %7)))))) ((%8 ((%17 (%105
3609       %29)) (%5 (%6 (%22 (%6 %7)))))) ((%8 ((%17 (%105 %30)) (%5 (%22 (%22
3610       (%6 %7)))))) ((%8 ((%17 (%105 %31)) (%5 (%6 (%6 (%22 %7)))))) ((%8
3611       ((%17 (%105 %32)) (%5 (%22 (%6 (%22 %7)))))) ((%8 ((%17 (%105 %33))
3612       (%5 (%6 (%22 (%22 %7)))))) ((%17 (%105 %34)) (%5 (%22 (%22 (%22
3613       %7)))))))))))))))))))`)
3614  val from_reg_index_def =
3615    DT([], [],
3616       `(%14 (\%106. ((%11 (%107 $0)) (((%108 ((%17 $0) %19)) %18) (((%108
3617       ((%17 $0) (%5 (%6 %7)))) %20) (((%108 ((%17 $0) (%5 (%22 %7)))) %21)
3618       (((%108 ((%17 $0) (%5 (%6 (%6 %7))))) %23) (((%108 ((%17 $0) (%5
3619       (%22 (%6 %7))))) %24) (((%108 ((%17 $0) (%5 (%6 (%22 %7))))) %25)
3620       (((%108 ((%17 $0) (%5 (%22 (%22 %7))))) %26) (((%108 ((%17 $0) (%5
3621       (%6 (%6 (%6 %7)))))) %27) (((%108 ((%17 $0) (%5 (%22 (%6 (%6
3622       %7)))))) %28) (((%108 ((%17 $0) (%5 (%6 (%22 (%6 %7)))))) %29)
3623       (((%108 ((%17 $0) (%5 (%22 (%22 (%6 %7)))))) %30) (((%108 ((%17 $0)
3624       (%5 (%6 (%6 (%22 %7)))))) %31) (((%108 ((%17 $0) (%5 (%22 (%6 (%22
3625       %7)))))) %32) (((%108 ((%17 $0) (%5 (%6 (%22 (%22 %7)))))) %33)
3626       %34)))))))))))))))))`)
3627  val toREG_def =
3628    DT([], [], `(%9 (\%109. ((%110 (%111 $0)) (%112 (%105 $0)))))`)
3629  val toMEM_def =
3630    DT(["DISK_THM"], [],
3631       `(%14 (\%113. (%114 (\%115. ((%110 (%116 ((%117 $1) $0))) (%118
3632       ((%117 $1) $0)))))))`)
3633  val toEXP_def =
3634    DT(["DISK_THM"], [],
3635       `((%8 (%9 (\%109. ((%110 (%119 (%94 $0))) (%111 $0))))) (%101
3636       (\%120. (%102 (\%121. ((%110 (%119 ((%95 $1) $0))) (%122 ((%123
3637       (%124 $0)) ((%125 (%5 (%22 %7))) (%126 $1))))))))))`)
3638  val DOPER_TY_DEF =
3639    DT(["DISK_THM"], [],
3640       `(%127 (\%128. ((%129 (\%130. (%131 (\%132. ((%63 (%133 (\%130.
3641       ((%63 ((%65 (%66 (\%134. (%135 (\%136. ((%137 $2) (((\%134. (\%136.
3642       (((%138 %19) ((%139 $1) ((%140 $0) ((%141 (%142 (\%143. %73)))
3643       ((%144 (%82 (\%83. %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147
3644       (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152 (\%153.
3645       %73)))))))))) (\%3. %154)))) $1) $0))))))) ((%65 (%135 (\%155. (%66
3646       (\%156. ((%137 $2) (((\%155. (\%156. (((%138 (%81 %19)) ((%139 $0)
3647       ((%140 $1) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83. %73)))
3648       ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150
3649       (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3. %154)))) $1)
3650       $0))))))) ((%65 (%66 (\%134. (%157 (\%158. ((%137 $2) (((\%134.
3651       (\%158. (((%138 (%81 (%81 %19))) ((%139 $1) ((%140 (%159 (\%160.
3652       %73))) ((%141 $0) ((%144 (%82 (\%83. %73))) ((%145 (%82 (\%83.
3653       %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3654       (\%153. %73)))))))))) (\%3. %154)))) $1) $0))))))) ((%65 (%66
3655       (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3) ((((\%134. (\%156.
3656       (\%161. (((%138 (%81 (%81 (%81 %19)))) ((%139 $2) ((%140 (%159
3657       (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3658       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3659       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66
3660       (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3) ((((\%134. (\%156.
3661       (\%161. (((%138 (%81 (%81 (%81 (%81 %19))))) ((%139 $2) ((%140 (%159
3662       (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3663       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3664       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66
3665       (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3) ((((\%134. (\%156.
3666       (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 %19)))))) ((%139 $2) ((%140
3667       (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3668       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3669       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66
3670       (\%134. (%66 (\%156. (%66 (\%162. ((%137 $3) ((((\%134. (\%156.
3671       (\%162. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))) ((%139 $2)
3672       ((%140 (%159 (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 $1)
3673       ((%145 $0) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73)))
3674       (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0)))))))))
3675       ((%65 (%66 (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3) ((((\%134.
3676       (\%156. (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3677       %19)))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144
3678       $1) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149
3679       (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2)
3680       $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157 (\%161. ((%137
3681       $3) ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 (%81
3682       (%81 (%81 %19))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141
3683       $0) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73)))
3684       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3685       %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157
3686       (\%161. ((%137 $3) ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81
3687       (%81 (%81 (%81 (%81 (%81 (%81 %19)))))))))) ((%139 $2) ((%140 (%159
3688       (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3689       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3690       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66
3691       (\%134. (%66 (\%156. (%163 (\%164. ((%137 $3) ((((\%134. (\%156.
3692       (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3693       %19))))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 (%142
3694       (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 $0)
3695       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3696       %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%163
3697       (\%164. ((%137 $3) ((((\%134. (\%156. (\%164. (((%138 (%81 (%81 (%81
3698       (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19)))))))))))) ((%139 $2)
3699       ((%140 (%159 (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 $1)
3700       ((%145 (%82 (\%83. %73))) ((%146 $0) ((%149 (%150 (\%151. %73)))
3701       (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0)))))))))
3702       ((%65 (%66 (\%134. (%66 (\%156. (%163 (\%164. ((%137 $3) ((((\%134.
3703       (\%156. (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3704       (%81 (%81 (%81 %19))))))))))))) ((%139 $2) ((%140 (%159 (\%160.
3705       %73))) ((%141 (%142 (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83.
3706       %73))) ((%146 $0) ((%149 (%150 (\%151. %73))) (%152 (\%153.
3707       %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134.
3708       (%66 (\%156. (%163 (\%164. ((%137 $3) ((((\%134. (\%156. (\%164.
3709       (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3710       (%81 %19)))))))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141
3711       (%142 (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 $0)
3712       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3713       %154))))) $2) $1) $0))))))))) ((%65 (%165 (\%166. (%167 (\%168.
3714       ((%137 $2) (((\%166. (\%168. (((%138 (%81 (%81 (%81 (%81 (%81 (%81
3715       (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))))))))))) ((%139
3716       (%82 (\%83. %73))) ((%140 (%159 (\%160. %73))) ((%141 (%142 (\%143.
3717       %73))) ((%144 (%82 (\%83. %73))) ((%145 (%82 (\%83. %73))) ((%146
3718       (%147 (\%148. %73))) ((%149 $1) $0)))))))) (\%3. %154)))) $1)
3719       $0))))))) (%165 (\%166. (%167 (\%168. ((%137 $2) (((\%166. (\%168.
3720       (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3721       (%81 (%81 (%81 %19)))))))))))))))) ((%139 (%82 (\%83. %73))) ((%140
3722       (%159 (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83.
3723       %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149
3724       $1) $0)))))))) (\%3. %154)))) $1) $0)))))))))))))))))))))) ($1
3725       $0))))) ($0 $1)))))) $0)))`)
3726  val DOPER_repfns =
3727    DT(["DISK_THM"], [],
3728       `((%8 (%169 (\%170. ((%171 (%172 (%173 $0))) $0)))) (%133 (\%174.
3729       ((%16 ((\%130. (%131 (\%132. ((%63 (%133 (\%130. ((%63 ((%65 (%66
3730       (\%134. (%135 (\%136. ((%137 $2) (((\%134. (\%136. (((%138 %19)
3731       ((%139 $1) ((%140 $0) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83.
3732       %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149
3733       (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3. %154)))) $1)
3734       $0))))))) ((%65 (%135 (\%155. (%66 (\%156. ((%137 $2) (((\%155.
3735       (\%156. (((%138 (%81 %19)) ((%139 $0) ((%140 $1) ((%141 (%142
3736       (\%143. %73))) ((%144 (%82 (\%83. %73))) ((%145 (%82 (\%83. %73)))
3737       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3738       (\%153. %73)))))))))) (\%3. %154)))) $1) $0))))))) ((%65 (%66
3739       (\%134. (%157 (\%158. ((%137 $2) (((\%134. (\%158. (((%138 (%81 (%81
3740       %19))) ((%139 $1) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144 (%82
3741       (\%83. %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73)))
3742       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3743       %154)))) $1) $0))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157 (\%161.
3744       ((%137 $3) ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81 %19))))
3745       ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145
3746       (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151.
3747       %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1)
3748       $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3)
3749       ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81 (%81 %19)))))
3750       ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145
3751       (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151.
3752       %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1)
3753       $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3)
3754       ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81 (%81 (%81
3755       %19)))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144
3756       $1) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149
3757       (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2)
3758       $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%66 (\%162. ((%137
3759       $3) ((((\%134. (\%156. (\%162. (((%138 (%81 (%81 (%81 (%81 (%81 (%81
3760       %19))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 (%142
3761       (\%143. %73))) ((%144 $1) ((%145 $0) ((%146 (%147 (\%148. %73)))
3762       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3763       %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157
3764       (\%161. ((%137 $3) ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81
3765       (%81 (%81 (%81 (%81 %19)))))))) ((%139 $2) ((%140 (%159 (\%160.
3766       %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 (%147
3767       (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152 (\%153.
3768       %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134.
3769       (%66 (\%156. (%157 (\%161. ((%137 $3) ((((\%134. (\%156. (\%161.
3770       (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))))) ((%139
3771       $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82
3772       (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151.
3773       %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1)
3774       $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%157 (\%161. ((%137 $3)
3775       ((((\%134. (\%156. (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 (%81
3776       (%81 (%81 (%81 %19)))))))))) ((%139 $2) ((%140 (%159 (\%160. %73)))
3777       ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148.
3778       %73))) ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3779       %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%163
3780       (\%164. ((%137 $3) ((((\%134. (\%156. (\%164. (((%138 (%81 (%81 (%81
3781       (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))))))) ((%139 $2) ((%140
3782       (%159 (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 $1) ((%145
3783       (%82 (\%83. %73))) ((%146 $0) ((%149 (%150 (\%151. %73))) (%152
3784       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%66
3785       (\%134. (%66 (\%156. (%163 (\%164. ((%137 $3) ((((\%134. (\%156.
3786       (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3787       (%81 %19)))))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141
3788       (%142 (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 $0)
3789       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3790       %154))))) $2) $1) $0))))))))) ((%65 (%66 (\%134. (%66 (\%156. (%163
3791       (\%164. ((%137 $3) ((((\%134. (\%156. (\%164. (((%138 (%81 (%81 (%81
3792       (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))))))))) ((%139
3793       $2) ((%140 (%159 (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144
3794       $1) ((%145 (%82 (\%83. %73))) ((%146 $0) ((%149 (%150 (\%151. %73)))
3795       (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0)))))))))
3796       ((%65 (%66 (\%134. (%66 (\%156. (%163 (\%164. ((%137 $3) ((((\%134.
3797       (\%156. (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3798       (%81 (%81 (%81 (%81 %19)))))))))))))) ((%139 $2) ((%140 (%159
3799       (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 $1) ((%145 (%82
3800       (\%83. %73))) ((%146 $0) ((%149 (%150 (\%151. %73))) (%152 (\%153.
3801       %73)))))))))) (\%3. %154))))) $2) $1) $0))))))))) ((%65 (%165
3802       (\%166. (%167 (\%168. ((%137 $2) (((\%166. (\%168. (((%138 (%81 (%81
3803       (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3804       %19))))))))))))))) ((%139 (%82 (\%83. %73))) ((%140 (%159 (\%160.
3805       %73))) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83. %73))) ((%145
3806       (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 $1) $0))))))))
3807       (\%3. %154)))) $1) $0))))))) (%165 (\%166. (%167 (\%168. ((%137 $2)
3808       (((\%166. (\%168. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3809       (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19)))))))))))))))) ((%139 (%82
3810       (\%83. %73))) ((%140 (%159 (\%160. %73))) ((%141 (%142 (\%143.
3811       %73))) ((%144 (%82 (\%83. %73))) ((%145 (%82 (\%83. %73))) ((%146
3812       (%147 (\%148. %73))) ((%149 $1) $0)))))))) (\%3. %154)))) $1)
3813       $0)))))))))))))))))))))) ($1 $0))))) ($0 $1))))) $0)) ((%137 (%173
3814       (%172 $0))) $0)))))`)
3815  val IL2_def =
3816    DT([], [],
3817       `((%175 %176) (\%134. (\%136. (%172 (((\%134. (\%136. (((%138 %19)
3818       ((%139 $1) ((%140 $0) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83.
3819       %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149
3820       (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3. %154)))) $1)
3821       $0)))))`)
3822  val IL3_def =
3823    DT([], [],
3824       `((%177 %178) (\%155. (\%156. (%172 (((\%155. (\%156. (((%138 (%81
3825       %19)) ((%139 $0) ((%140 $1) ((%141 (%142 (\%143. %73))) ((%144 (%82
3826       (\%83. %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73)))
3827       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3828       %154)))) $1) $0)))))`)
3829  val IL4_def =
3830    DT([], [],
3831       `((%179 %180) (\%134. (\%158. (%172 (((\%134. (\%158. (((%138 (%81
3832       (%81 %19))) ((%139 $1) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144
3833       (%82 (\%83. %73))) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148.
3834       %73))) ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3835       %154)))) $1) $0)))))`)
3836  val IL5_def =
3837    DT([], [],
3838       `((%181 %182) (\%134. (\%156. (\%161. (%172 ((((\%134. (\%156.
3839       (\%161. (((%138 (%81 (%81 (%81 %19)))) ((%139 $2) ((%140 (%159
3840       (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3841       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3842       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))`)
3843  val IL6_def =
3844    DT([], [],
3845       `((%181 %183) (\%134. (\%156. (\%161. (%172 ((((\%134. (\%156.
3846       (\%161. (((%138 (%81 (%81 (%81 (%81 %19))))) ((%139 $2) ((%140 (%159
3847       (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3848       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3849       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))`)
3850  val IL7_def =
3851    DT([], [],
3852       `((%181 %184) (\%134. (\%156. (\%161. (%172 ((((\%134. (\%156.
3853       (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 %19)))))) ((%139 $2) ((%140
3854       (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145 (%82 (\%83. %73)))
3855       ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73))) (%152
3856       (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))`)
3857  val IL8_def =
3858    DT([], [],
3859       `((%185 %186) (\%134. (\%156. (\%162. (%172 ((((\%134. (\%156.
3860       (\%162. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))) ((%139 $2)
3861       ((%140 (%159 (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 $1)
3862       ((%145 $0) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151. %73)))
3863       (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1) $0))))))`)
3864  val IL9_def =
3865    DT([], [],
3866       `((%181 %187) (\%134. (\%156. (\%161. (%172 ((((\%134. (\%156.
3867       (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19))))))))
3868       ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145
3869       (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151.
3870       %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1)
3871       $0))))))`)
3872  val IL10_def =
3873    DT([], [],
3874       `((%181 %188) (\%134. (\%156. (\%161. (%172 ((((\%134. (\%156.
3875       (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 %19)))))))))
3876       ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0) ((%144 $1) ((%145
3877       (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 (%150 (\%151.
3878       %73))) (%152 (\%153. %73)))))))))) (\%3. %154))))) $2) $1)
3879       $0))))))`)
3880  val IL11_def =
3881    DT([], [],
3882       `((%181 %189) (\%134. (\%156. (\%161. (%172 ((((\%134. (\%156.
3883       (\%161. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3884       %19)))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 $0)
3885       ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73)))
3886       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3887       %154))))) $2) $1) $0))))))`)
3888  val IL12_def =
3889    DT([], [],
3890       `((%190 %191) (\%134. (\%156. (\%164. (%172 ((((\%134. (\%156.
3891       (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3892       %19))))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141 (%142
3893       (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 $0)
3894       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3895       %154))))) $2) $1) $0))))))`)
3896  val IL13_def =
3897    DT([], [],
3898       `((%190 %192) (\%134. (\%156. (\%164. (%172 ((((\%134. (\%156.
3899       (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3900       (%81 %19)))))))))))) ((%139 $2) ((%140 (%159 (\%160. %73))) ((%141
3901       (%142 (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83. %73))) ((%146 $0)
3902       ((%149 (%150 (\%151. %73))) (%152 (\%153. %73)))))))))) (\%3.
3903       %154))))) $2) $1) $0))))))`)
3904  val IL14_def =
3905    DT([], [],
3906       `((%190 %193) (\%134. (\%156. (\%164. (%172 ((((\%134. (\%156.
3907       (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3908       (%81 (%81 %19))))))))))))) ((%139 $2) ((%140 (%159 (\%160. %73)))
3909       ((%141 (%142 (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83. %73)))
3910       ((%146 $0) ((%149 (%150 (\%151. %73))) (%152 (\%153. %73))))))))))
3911       (\%3. %154))))) $2) $1) $0))))))`)
3912  val IL15_def =
3913    DT([], [],
3914       `((%190 %194) (\%134. (\%156. (\%164. (%172 ((((\%134. (\%156.
3915       (\%164. (((%138 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3916       (%81 (%81 (%81 %19)))))))))))))) ((%139 $2) ((%140 (%159 (\%160.
3917       %73))) ((%141 (%142 (\%143. %73))) ((%144 $1) ((%145 (%82 (\%83.
3918       %73))) ((%146 $0) ((%149 (%150 (\%151. %73))) (%152 (\%153.
3919       %73)))))))))) (\%3. %154))))) $2) $1) $0))))))`)
3920  val IL16_def =
3921    DT([], [],
3922       `((%195 %196) (\%166. (\%168. (%172 (((\%166. (\%168. (((%138 (%81
3923       (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3924       %19))))))))))))))) ((%139 (%82 (\%83. %73))) ((%140 (%159 (\%160.
3925       %73))) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83. %73))) ((%145
3926       (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 $1) $0))))))))
3927       (\%3. %154)))) $1) $0)))))`)
3928  val IL17_def =
3929    DT([], [],
3930       `((%195 %197) (\%166. (\%168. (%172 (((\%166. (\%168. (((%138 (%81
3931       (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81 (%81
3932       (%81 %19)))))))))))))))) ((%139 (%82 (\%83. %73))) ((%140 (%159
3933       (\%160. %73))) ((%141 (%142 (\%143. %73))) ((%144 (%82 (\%83. %73)))
3934       ((%145 (%82 (\%83. %73))) ((%146 (%147 (\%148. %73))) ((%149 $1)
3935       $0)))))))) (\%3. %154)))) $1) $0)))))`)
3936  val MLDR = DT([], [], `((%175 %198) %176)`)
3937  val MSTR = DT([], [], `((%177 %199) %178)`)
3938  val MMOV = DT([], [], `((%179 %200) %180)`)
3939  val MADD = DT([], [], `((%181 %201) %182)`)
3940  val MSUB = DT([], [], `((%181 %202) %183)`)
3941  val MRSB = DT([], [], `((%181 %203) %184)`)
3942  val MMUL = DT([], [], `((%185 %204) %186)`)
3943  val MAND = DT([], [], `((%181 %205) %187)`)
3944  val MORR = DT([], [], `((%181 %206) %188)`)
3945  val MEOR = DT([], [], `((%181 %207) %189)`)
3946  val MLSL = DT([], [], `((%190 %208) %191)`)
3947  val MLSR = DT([], [], `((%190 %209) %192)`)
3948  val MASR = DT([], [], `((%190 %210) %193)`)
3949  val MROR = DT([], [], `((%190 %211) %194)`)
3950  val MPUSH = DT([], [], `((%195 %212) %196)`)
3951  val MPOP = DT([], [], `((%195 %213) %197)`)
3952  val DOPER_case_def =
3953    DT(["DISK_THM"], [],
3954       `((%8 (%214 (\%215. (%216 (\%217. (%218 (\%219. (%220 (\%221. (%220
3955       (\%222. (%220 (\%223. (%224 (\%225. (%220 (\%226. (%220 (\%227.
3956       (%220 (\%228. (%229 (\%230. (%229 (\%231. (%229 (\%232. (%229
3957       (\%233. (%234 (\%235. (%234 (\%236. (%9 (\%134. (%237 (\%136. ((%53
3958       (((((((((((((((((%238 $17) $16) $15) $14) $13) $12) $11) $10) $9)
3959       $8) $7) $6) $5) $4) $3) $2) ((%198 $1) $0))) (($17 $1)
3960       $0))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
3961       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
3962       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
3963       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
3964       (%234 (\%236. (%237 (\%155. (%9 (\%156. ((%53 (((((((((((((((((%238
3965       $17) $16) $15) $14) $13) $12) $11) $10) $9) $8) $7) $6) $5) $4) $3)
3966       $2) ((%199 $1) $0))) (($16 $1)
3967       $0))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
3968       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
3969       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
3970       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
3971       (%234 (\%236. (%9 (\%134. (%84 (\%158. ((%53 (((((((((((((((((%238
3972       $17) $16) $15) $14) $13) $12) $11) $10) $9) $8) $7) $6) $5) $4) $3)
3973       $2) ((%200 $1) $0))) (($15 $1)
3974       $0))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
3975       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
3976       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
3977       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
3978       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
3979       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
3980       $9) $8) $7) $6) $5) $4) $3) (((%201 $2) $1) $0))) ((($15 $2) $1)
3981       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
3982       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
3983       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
3984       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
3985       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
3986       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
3987       $9) $8) $7) $6) $5) $4) $3) (((%202 $2) $1) $0))) ((($14 $2) $1)
3988       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
3989       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
3990       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
3991       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
3992       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
3993       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
3994       $9) $8) $7) $6) $5) $4) $3) (((%203 $2) $1) $0))) ((($13 $2) $1)
3995       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
3996       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
3997       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
3998       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
3999       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%9 (\%162. ((%53
4000       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4001       $9) $8) $7) $6) $5) $4) $3) (((%204 $2) $1) $0))) ((($12 $2) $1)
4002       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4003       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4004       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4005       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4006       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
4007       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4008       $9) $8) $7) $6) $5) $4) $3) (((%205 $2) $1) $0))) ((($11 $2) $1)
4009       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4010       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4011       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4012       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4013       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
4014       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4015       $9) $8) $7) $6) $5) $4) $3) (((%206 $2) $1) $0))) ((($10 $2) $1)
4016       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4017       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4018       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4019       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4020       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
4021       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4022       $9) $8) $7) $6) $5) $4) $3) (((%207 $2) $1) $0))) ((($9 $2) $1)
4023       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4024       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4025       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4026       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4027       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%53
4028       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4029       $9) $8) $7) $6) $5) $4) $3) (((%208 $2) $1) $0))) ((($8 $2) $1)
4030       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4031       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4032       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4033       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4034       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%53
4035       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4036       $9) $8) $7) $6) $5) $4) $3) (((%209 $2) $1) $0))) ((($7 $2) $1)
4037       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4038       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4039       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4040       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4041       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%53
4042       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4043       $9) $8) $7) $6) $5) $4) $3) (((%210 $2) $1) $0))) ((($6 $2) $1)
4044       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4045       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4046       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4047       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4048       (%234 (\%236. (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%53
4049       (((((((((((((((((%238 $18) $17) $16) $15) $14) $13) $12) $11) $10)
4050       $9) $8) $7) $6) $5) $4) $3) (((%211 $2) $1) $0))) ((($5 $2) $1)
4051       $0))))))))))))))))))))))))))))))))))))))))) ((%8 (%214 (\%215. (%216
4052       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4053       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4054       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4055       (%234 (\%236. (%14 (\%166. (%240 (\%168. ((%53 (((((((((((((((((%238
4056       $17) $16) $15) $14) $13) $12) $11) $10) $9) $8) $7) $6) $5) $4) $3)
4057       $2) ((%212 $1) $0))) (($3 $1)
4058       $0))))))))))))))))))))))))))))))))))))))) (%214 (\%215. (%216
4059       (\%217. (%218 (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223.
4060       (%224 (\%225. (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229
4061       (\%230. (%229 (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235.
4062       (%234 (\%236. (%14 (\%166. (%240 (\%168. ((%53 (((((((((((((((((%238
4063       $17) $16) $15) $14) $13) $12) $11) $10) $9) $8) $7) $6) $5) $4) $3)
4064       $2) ((%213 $1) $0))) (($2 $1)
4065       $0)))))))))))))))))))))))))))))))))))))))))))))))))))))`)
4066  val DOPER_size_def =
4067    DT(["DISK_THM"], [],
4068       `((%8 (%9 (\%134. (%237 (\%136. ((%17 (%241 ((%198 $1) $0))) ((%104
4069       (%5 (%6 %7))) ((%104 (%36 $1)) ((%242 (\%243. (\%244. ((%104
4070       ((\%243. $0) $1)) (%245 $0))))) $0))))))))) ((%8 (%237 (\%155. (%9
4071       (\%156. ((%17 (%241 ((%199 $1) $0))) ((%104 (%5 (%6 %7))) ((%104
4072       ((%242 (\%243. (\%244. ((%104 ((\%243. $0) $1)) (%245 $0))))) $1))
4073       (%36 $0))))))))) ((%8 (%9 (\%134. (%84 (\%158. ((%17 (%241 ((%200
4074       $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $1)) (%103 $0)))))))))
4075       ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%17 (%241 (((%201 $2)
4076       $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2)) ((%104 (%36 $1))
4077       (%103 $0)))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%17
4078       (%241 (((%202 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2))
4079       ((%104 (%36 $1)) (%103 $0)))))))))))) ((%8 (%9 (\%134. (%9 (\%156.
4080       (%84 (\%161. ((%17 (%241 (((%203 $2) $1) $0))) ((%104 (%5 (%6 %7)))
4081       ((%104 (%36 $2)) ((%104 (%36 $1)) (%103 $0)))))))))))) ((%8 (%9
4082       (\%134. (%9 (\%156. (%9 (\%162. ((%17 (%241 (((%204 $2) $1) $0)))
4083       ((%104 (%5 (%6 %7))) ((%104 (%36 $2)) ((%104 (%36 $1)) (%36
4084       $0)))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%17 (%241
4085       (((%205 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2)) ((%104
4086       (%36 $1)) (%103 $0)))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4087       (\%161. ((%17 (%241 (((%206 $2) $1) $0))) ((%104 (%5 (%6 %7)))
4088       ((%104 (%36 $2)) ((%104 (%36 $1)) (%103 $0)))))))))))) ((%8 (%9
4089       (\%134. (%9 (\%156. (%84 (\%161. ((%17 (%241 (((%207 $2) $1) $0)))
4090       ((%104 (%5 (%6 %7))) ((%104 (%36 $2)) ((%104 (%36 $1)) (%103
4091       $0)))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%17
4092       (%241 (((%208 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2))
4093       (%36 $1))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%17
4094       (%241 (((%209 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2))
4095       (%36 $1))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%17
4096       (%241 (((%210 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2))
4097       (%36 $1))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164. ((%17
4098       (%241 (((%211 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%36 $2))
4099       (%36 $1))))))))))) ((%8 (%14 (\%166. (%240 (\%168. ((%17 (%241
4100       ((%212 $1) $0))) ((%104 (%5 (%6 %7))) ((%104 $1) ((%246 (\%243. $0))
4101       $0))))))))) (%14 (\%166. (%240 (\%168. ((%17 (%241 ((%213 $1) $0)))
4102       ((%104 (%5 (%6 %7))) ((%104 $1) ((%246 (\%243. $0))
4103       $0)))))))))))))))))))))))`)
4104  val CTL_STRUCTURE_TY_DEF =
4105    DT(["DISK_THM"], [],
4106       `(%247 (\%248. ((%249 (\%250. (%251 (\%252. ((%63 (%253 (\%250.
4107       ((%63 ((%65 (%254 (\%255. ((%256 $1) ((\%255. (((%257 %19) ((%258
4108       $0) (%259 (\%260. %73)))) (\%3. %261))) $0))))) ((%65 (%262 (\%263.
4109       (%262 (\%264. ((%8 ((%256 $2) (((\%263. (\%264. (((%257 (%81 %19))
4110       ((%258 (%265 (\%266. %73))) (%259 (\%260. %73)))) ((%267 $1) ((%267
4111       $0) (\%3. %261)))))) $1) $0))) ((%8 ($3 $1)) ($3 $0)))))))) ((%65
4112       (%268 (\%269. (%262 (\%264. (%262 (\%270. ((%8 ((%256 $3) ((((\%269.
4113       (\%264. (\%270. (((%257 (%81 (%81 %19))) ((%258 (%265 (\%266. %73)))
4114       $2)) ((%267 $1) ((%267 $0) (\%3. %261))))))) $2) $1) $0))) ((%8 ($4
4115       $1)) ($4 $0)))))))))) (%268 (\%269. (%262 (\%264. ((%8 ((%256 $2)
4116       (((\%269. (\%264. (((%257 (%81 (%81 (%81 %19)))) ((%258 (%265
4117       (\%266. %73))) $1)) ((%267 $0) (\%3. %261))))) $1) $0))) ($3
4118       $0)))))))))) ($1 $0))))) ($0 $1)))))) $0)))`)
4119  val CTL_STRUCTURE_repfns =
4120    DT(["DISK_THM"], [],
4121       `((%8 (%271 (\%272. ((%273 (%274 (%275 $0))) $0)))) (%253 (\%276.
4122       ((%16 ((\%250. (%251 (\%252. ((%63 (%253 (\%250. ((%63 ((%65 (%254
4123       (\%255. ((%256 $1) ((\%255. (((%257 %19) ((%258 $0) (%259 (\%260.
4124       %73)))) (\%3. %261))) $0))))) ((%65 (%262 (\%263. (%262 (\%264. ((%8
4125       ((%256 $2) (((\%263. (\%264. (((%257 (%81 %19)) ((%258 (%265 (\%266.
4126       %73))) (%259 (\%260. %73)))) ((%267 $1) ((%267 $0) (\%3. %261))))))
4127       $1) $0))) ((%8 ($3 $1)) ($3 $0)))))))) ((%65 (%268 (\%269. (%262
4128       (\%264. (%262 (\%270. ((%8 ((%256 $3) ((((\%269. (\%264. (\%270.
4129       (((%257 (%81 (%81 %19))) ((%258 (%265 (\%266. %73))) $2)) ((%267 $1)
4130       ((%267 $0) (\%3. %261))))))) $2) $1) $0))) ((%8 ($4 $1)) ($4
4131       $0)))))))))) (%268 (\%269. (%262 (\%264. ((%8 ((%256 $2) (((\%269.
4132       (\%264. (((%257 (%81 (%81 (%81 %19)))) ((%258 (%265 (\%266. %73)))
4133       $1)) ((%267 $0) (\%3. %261))))) $1) $0))) ($3 $0)))))))))) ($1
4134       $0))))) ($0 $1))))) $0)) ((%256 (%275 (%274 $0))) $0)))))`)
4135  val IL18_def =
4136    DT([], [],
4137       `((%277 %278) (\%255. (%274 ((\%255. (((%257 %19) ((%258 $0) (%259
4138       (\%260. %73)))) (\%3. %261))) $0))))`)
4139  val IL19_def =
4140    DT([], [],
4141       `((%279 %280) (\%281. (\%282. (%274 (((\%263. (\%264. (((%257 (%81
4142       %19)) ((%258 (%265 (\%266. %73))) (%259 (\%260. %73)))) ((%267 $1)
4143       ((%267 $0) (\%3. %261)))))) (%275 $1)) (%275 $0))))))`)
4144  val IL20_def =
4145    DT([], [],
4146       `((%283 %284) (\%269. (\%282. (\%285. (%274 ((((\%269. (\%264.
4147       (\%270. (((%257 (%81 (%81 %19))) ((%258 (%265 (\%266. %73))) $2))
4148       ((%267 $1) ((%267 $0) (\%3. %261))))))) $2) (%275 $1)) (%275
4149       $0)))))))`)
4150  val IL21_def =
4151    DT([], [],
4152       `((%286 %287) (\%269. (\%282. (%274 (((\%269. (\%264. (((%257 (%81
4153       (%81 (%81 %19)))) ((%258 (%265 (\%266. %73))) $1)) ((%267 $0) (\%3.
4154       %261))))) $1) (%275 $0))))))`)
4155  val BLK = DT([], [], `((%277 %288) %278)`)
4156  val SC = DT([], [], `((%279 %289) %280)`)
4157  val CJ = DT([], [], `((%283 %290) %284)`)
4158  val TR = DT([], [], `((%286 %291) %287)`)
4159  val CTL_STRUCTURE_case_def =
4160    DT(["DISK_THM"], [],
4161       `((%8 (%292 (\%293. (%294 (\%295. (%296 (\%297. (%298 (\%299. (%300
4162       (\%255. ((%53 (((((%301 $4) $3) $2) $1) (%288 $0))) ($4
4163       $0))))))))))))) ((%8 (%292 (\%293. (%294 (\%295. (%296 (\%297. (%298
4164       (\%299. (%271 (\%281. (%271 (\%282. ((%53 (((((%301 $5) $4) $3) $2)
4165       ((%289 $1) $0))) (($4 $1) $0))))))))))))))) ((%8 (%292 (\%293. (%294
4166       (\%295. (%296 (\%297. (%298 (\%299. (%302 (\%269. (%271 (\%282.
4167       (%271 (\%285. ((%53 (((((%301 $6) $5) $4) $3) (((%290 $2) $1) $0)))
4168       ((($4 $2) $1) $0))))))))))))))))) (%292 (\%293. (%294 (\%295. (%296
4169       (\%297. (%298 (\%299. (%302 (\%269. (%271 (\%282. ((%53 (((((%301
4170       $5) $4) $3) $2) ((%291 $1) $0))) (($2 $1) $0)))))))))))))))))`)
4171  val CTL_STRUCTURE_size_def =
4172    DT(["DISK_THM"], [],
4173       `((%8 (%300 (\%255. ((%17 (%303 (%288 $0))) ((%104 (%5 (%6 %7)))
4174       ((%304 %241) $0)))))) ((%8 (%271 (\%281. (%271 (\%282. ((%17 (%303
4175       ((%289 $1) $0))) ((%104 (%5 (%6 %7))) ((%104 (%303 $1)) (%303
4176       $0))))))))) ((%8 (%302 (\%269. (%271 (\%282. (%271 (\%285. ((%17
4177       (%303 (((%290 $2) $1) $0))) ((%104 (%5 (%6 %7))) ((%104 ((%305
4178       (\%35. (\%306. ((%104 (%36 $1)) ((%307 (\%308. (\%309. ((%104 (%310
4179       $1)) (%103 $0))))) $0))))) $2)) ((%104 (%303 $1)) (%303
4180       $0)))))))))))) (%302 (\%269. (%271 (\%282. ((%17 (%303 ((%291 $1)
4181       $0))) ((%104 (%5 (%6 %7))) ((%104 ((%305 (\%35. (\%306. ((%104 (%36
4182       $1)) ((%307 (\%308. (\%309. ((%104 (%310 $1)) (%103 $0))))) $0)))))
4183       $1)) (%303 $0)))))))))))`)
4184  val pushL_def =
4185    DT([], [],
4186       `(%311 (\%312. (%14 (\%313. (%240 (\%314. ((%315 (((%316 $2) $1)
4187       $0)) (((%317 (%318 (((%319 (%320 (\%321. (\%106. (\%322. ((%323
4188       (((%317 $2) (%118 ((%117 $4) (%324 $1)))) ((%325 $5) $0))) ((%104
4189       $1) (%5 (%6 %7))))))))) ((%323 $2) %19)) (%326 ((%327 %112) $0)))))
4190       (%112 $1)) ((%328 ((%325 $2) (%112 $1))) (%329 (%330 $0)))))))))))`)
4191  val popL_def =
4192    DT([], [],
4193       `(%311 (\%312. (%14 (\%313. (%240 (\%314. ((%315 (((%331 $2) $1)
4194       $0)) (((%317 (%318 (((%319 (%320 (\%321. (\%106. (\%322. ((%323
4195       (((%317 $2) $0) ((%325 $5) (%118 ((%117 $4) (%332 ((%104 $1) (%5 (%6
4196       %7))))))))) ((%104 $1) (%5 (%6 %7))))))))) ((%323 $2) %19)) ((%327
4197       %112) $0)))) (%112 $1)) ((%333 ((%325 $2) (%112 $1))) (%329 (%330
4198       $0)))))))))))`)
4199  val mdecode_def =
4200    DT(["DISK_THM"], [],
4201       `((%8 (%311 (\%312. (%9 (\%334. (%237 (\%335. ((%315 ((%336 $2)
4202       ((%198 $1) $0))) (((%317 $2) (%111 $1)) ((%325 $2) (%116
4203       $0))))))))))) ((%8 (%311 (\%312. (%237 (\%337. (%9 (\%338. ((%315
4204       ((%336 $2) ((%199 $1) $0))) (((%317 $2) (%116 $1)) ((%325 $2) (%111
4205       $0))))))))))) ((%8 (%311 (\%312. (%9 (\%334. (%84 (\%339. ((%315
4206       ((%336 $2) ((%200 $1) $0))) (((%317 $2) (%111 $1)) ((%325 $2) (%119
4207       $0))))))))))) ((%8 (%311 (\%312. (%9 (\%334. (%9 (\%340. (%84
4208       (\%341. ((%315 ((%336 $3) (((%201 $2) $1) $0))) (((%317 $3) (%111
4209       $2)) ((%333 ((%325 $3) (%111 $1))) ((%325 $3) (%119 $0))))))))))))))
4210       ((%8 (%311 (\%312. (%9 (\%334. (%9 (\%340. (%84 (\%341. ((%315
4211       ((%336 $3) (((%202 $2) $1) $0))) (((%317 $3) (%111 $2)) ((%328
4212       ((%325 $3) (%111 $1))) ((%325 $3) (%119 $0)))))))))))))) ((%8 (%311
4213       (\%312. (%9 (\%334. (%9 (\%340. (%84 (\%341. ((%315 ((%336 $3)
4214       (((%203 $2) $1) $0))) (((%317 $3) (%111 $2)) ((%328 ((%325 $3) (%119
4215       $0))) ((%325 $3) (%111 $1)))))))))))))) ((%8 (%311 (\%312. (%9
4216       (\%334. (%9 (\%340. (%9 (\%342. ((%315 ((%336 $3) (((%204 $2) $1)
4217       $0))) (((%317 $3) (%111 $2)) ((%343 ((%325 $3) (%111 $1))) ((%325
4218       $3) (%111 $0)))))))))))))) ((%8 (%311 (\%312. (%9 (\%334. (%9
4219       (\%340. (%84 (\%341. ((%315 ((%336 $3) (((%205 $2) $1) $0))) (((%317
4220       $3) (%111 $2)) ((%344 ((%325 $3) (%111 $1))) ((%325 $3) (%119
4221       $0)))))))))))))) ((%8 (%311 (\%312. (%9 (\%334. (%9 (\%340. (%84
4222       (\%341. ((%315 ((%336 $3) (((%206 $2) $1) $0))) (((%317 $3) (%111
4223       $2)) ((%345 ((%325 $3) (%111 $1))) ((%325 $3) (%119 $0))))))))))))))
4224       ((%8 (%311 (\%312. (%9 (\%334. (%9 (\%340. (%84 (\%341. ((%315
4225       ((%336 $3) (((%207 $2) $1) $0))) (((%317 $3) (%111 $2)) ((%346
4226       ((%325 $3) (%111 $1))) ((%325 $3) (%119 $0)))))))))))))) ((%8 (%311
4227       (\%312. (%9 (\%334. (%9 (\%342. (%239 (\%347. ((%315 ((%336 $3)
4228       (((%208 $2) $1) $0))) (((%317 $3) (%111 $2)) ((%348 ((%325 $3) (%111
4229       $1))) (%349 $0))))))))))))) ((%8 (%311 (\%312. (%9 (\%334. (%9
4230       (\%342. (%239 (\%347. ((%315 ((%336 $3) (((%209 $2) $1) $0)))
4231       (((%317 $3) (%111 $2)) ((%350 ((%325 $3) (%111 $1))) (%349
4232       $0))))))))))))) ((%8 (%311 (\%312. (%9 (\%334. (%9 (\%342. (%239
4233       (\%347. ((%315 ((%336 $3) (((%210 $2) $1) $0))) (((%317 $3) (%111
4234       $2)) ((%351 ((%325 $3) (%111 $1))) (%349 $0))))))))))))) ((%8 (%311
4235       (\%312. (%9 (\%334. (%9 (\%342. (%239 (\%347. ((%315 ((%336 $3)
4236       (((%211 $2) $1) $0))) (((%317 $3) (%111 $2)) ((%123 ((%325 $3) (%111
4237       $1))) (%349 $0))))))))))))) ((%8 (%311 (\%312. (%14 (\%352. (%240
4238       (\%353. ((%315 ((%336 $2) ((%212 $1) $0))) (((%316 $2) $1)
4239       $0))))))))) (%311 (\%312. (%14 (\%352. (%240 (\%353. ((%315 ((%336
4240       $2) ((%213 $1) $0))) (((%331 $2) $1) $0)))))))))))))))))))))))`)
4241  val translate_assignment_def =
4242    DT(["DISK_THM"], [],
4243       `((%8 (%9 (\%334. (%84 (\%339. ((%354 (%355 ((%200 $1) $0))) ((%356
4244       ((%357 %358) ((%359 %360) %361))) ((%362 (%363 (%111 $1))) ((%364
4245       ((%365 (%119 $0)) %366)) %367))))))))) ((%8 (%9 (\%334. (%9 (\%340.
4246       (%84 (\%341. ((%354 (%355 (((%201 $2) $1) $0))) ((%356 ((%357 %368)
4247       ((%359 %360) %361))) ((%362 (%363 (%111 $2))) ((%364 ((%365 (%111
4248       $1)) ((%365 (%119 $0)) %366))) %367))))))))))) ((%8 (%9 (\%334. (%9
4249       (\%340. (%84 (\%341. ((%354 (%355 (((%202 $2) $1) $0))) ((%356
4250       ((%357 %369) ((%359 %360) %361))) ((%362 (%363 (%111 $2))) ((%364
4251       ((%365 (%111 $1)) ((%365 (%119 $0)) %366))) %367))))))))))) ((%8 (%9
4252       (\%334. (%9 (\%340. (%84 (\%341. ((%354 (%355 (((%203 $2) $1) $0)))
4253       ((%356 ((%357 %370) ((%359 %360) %361))) ((%362 (%363 (%111 $2)))
4254       ((%364 ((%365 (%111 $1)) ((%365 (%119 $0)) %366))) %367)))))))))))
4255       ((%8 (%9 (\%334. (%9 (\%340. (%9 (\%342. ((%354 (%355 (((%204 $2)
4256       $1) $0))) ((%356 ((%357 %371) ((%359 %360) %361))) ((%362 (%363
4257       (%111 $2))) ((%364 ((%365 (%111 $1)) ((%365 (%111 $0)) %366)))
4258       %367))))))))))) ((%8 (%9 (\%334. (%9 (\%340. (%84 (\%341. ((%354
4259       (%355 (((%205 $2) $1) $0))) ((%356 ((%357 %372) ((%359 %360) %361)))
4260       ((%362 (%363 (%111 $2))) ((%364 ((%365 (%111 $1)) ((%365 (%119 $0))
4261       %366))) %367))))))))))) ((%8 (%9 (\%334. (%9 (\%340. (%84 (\%341.
4262       ((%354 (%355 (((%206 $2) $1) $0))) ((%356 ((%357 %373) ((%359 %360)
4263       %361))) ((%362 (%363 (%111 $2))) ((%364 ((%365 (%111 $1)) ((%365
4264       (%119 $0)) %366))) %367))))))))))) ((%8 (%9 (\%334. (%9 (\%340. (%84
4265       (\%341. ((%354 (%355 (((%207 $2) $1) $0))) ((%356 ((%357 %374)
4266       ((%359 %360) %361))) ((%362 (%363 (%111 $2))) ((%364 ((%365 (%111
4267       $1)) ((%365 (%119 $0)) %366))) %367))))))))))) ((%8 (%9 (\%334. (%9
4268       (\%342. (%239 (\%347. ((%354 (%355 (((%208 $2) $1) $0))) ((%356
4269       ((%357 %375) ((%359 %360) %361))) ((%362 (%363 (%111 $2))) ((%364
4270       ((%365 (%111 $1)) ((%365 (%122 (%376 $0))) %366))) %367)))))))))))
4271       ((%8 (%9 (\%334. (%9 (\%342. (%239 (\%347. ((%354 (%355 (((%209 $2)
4272       $1) $0))) ((%356 ((%357 %377) ((%359 %360) %361))) ((%362 (%363
4273       (%111 $2))) ((%364 ((%365 (%111 $1)) ((%365 (%122 (%376 $0)))
4274       %366))) %367))))))))))) ((%8 (%9 (\%334. (%9 (\%342. (%239 (\%347.
4275       ((%354 (%355 (((%210 $2) $1) $0))) ((%356 ((%357 %378) ((%359 %360)
4276       %361))) ((%362 (%363 (%111 $2))) ((%364 ((%365 (%111 $1)) ((%365
4277       (%122 (%376 $0))) %366))) %367))))))))))) ((%8 (%9 (\%334. (%9
4278       (\%342. (%239 (\%347. ((%354 (%355 (((%211 $2) $1) $0))) ((%356
4279       ((%357 %379) ((%359 %360) %361))) ((%362 (%363 (%111 $2))) ((%364
4280       ((%365 (%111 $1)) ((%365 (%122 (%376 $0))) %366))) %367)))))))))))
4281       ((%8 (%9 (\%334. (%237 (\%335. ((%354 (%355 ((%198 $1) $0))) ((%356
4282       ((%357 %380) ((%359 %360) %361))) ((%362 (%363 (%111 $1))) ((%364
4283       ((%365 (%116 $0)) %366)) %367))))))))) ((%8 (%237 (\%337. (%9
4284       (\%338. ((%354 (%355 ((%199 $1) $0))) ((%356 ((%357 %381) ((%359
4285       %360) %361))) ((%362 (%363 (%111 $0))) ((%364 ((%365 (%116 $1))
4286       %366)) %367))))))))) ((%8 (%14 (\%382. (%240 (\%353. ((%354 (%355
4287       ((%212 $1) $0))) ((%356 ((%357 %383) ((%359 %360) %361))) ((%362
4288       (%363 (%384 $1))) ((%364 ((%327 %112) $0)) %367))))))))) (%14
4289       (\%382. (%240 (\%353. ((%354 (%355 ((%213 $1) $0))) ((%356 ((%357
4290       %385) ((%359 %360) %361))) ((%362 (%363 (%384 $1))) ((%364 ((%327
4291       %112) $0)) %367)))))))))))))))))))))))`)
4292  val translate_condition_def =
4293    DT(["DISK_THM"], [],
4294       `(%9 (\%109. (%37 (\%386. (%84 (\%387. ((%388 (%389 ((%390 $2)
4295       ((%391 $1) $0)))) ((%392 (%111 $2)) ((%393 $1) (%119 $0))))))))))`)
4296  val eval_il_cond_def =
4297    DT([], [], `(%302 (\%394. ((%395 (%396 $0)) (%397 (%398 $0)))))`)
4298  val translate_primitive_def =
4299    DT([], [],
4300       `((%399 %400) ((%401 (%402 (\%403. ((%8 (%404 $0)) ((%8 (%169
4301       (\%405. (%300 (\%406. (($2 (%288 $0)) (%288 ((%407 $1) $0))))))))
4302       ((%8 (%271 (\%408. (%271 (\%409. (($2 $0) ((%289 $1) $0))))))) ((%8
4303       (%271 (\%409. (%271 (\%408. (($2 $0) ((%289 $0) $1))))))) ((%8 (%271
4304       (\%410. (%302 (\%394. (%271 (\%411. (($3 $0) (((%290 $1) $0)
4305       $2))))))))) ((%8 (%271 (\%411. (%302 (\%394. (%271 (\%410. (($3 $0)
4306       (((%290 $1) $2) $0))))))))) (%302 (\%394. (%271 (\%412. (($2 $0)
4307       ((%291 $1) $0))))))))))))))) (\%413. (\%272. (((((%414 (\%266.
4308       (((%415 (%416 %417)) (\%405. (\%406. (%416 ((%418 (%355 $1)) ($4
4309       (%288 $0))))))) $0))) (\%408. (\%409. (%416 ((%419 ($3 $1)) ($3
4310       $0)))))) (\%394. (\%411. (\%410. (%416 (((%420 (%398 $2)) ($4 $1))
4311       ($4 $0))))))) (\%421. (\%412. (%416 ((%422 (%398 $1)) ($3 $0))))))
4312       $0)))))`)
4313  val run_arm_def =
4314    DT(["DISK_THM"], [],
4315       `(%423 (\%424. (%14 (\%425. (%426 (\%427. (%311 (\%312. (%428
4316       (\%429. ((%430 ((%431 $4) ((%432 ((%433 $3) ((%434 $2) $1))) $0)))
4317       (((%435 (((%436 $4) (\%106. %437)) $3)) ((%104 $3) (%438 $4)))
4318       ((%432 ((%433 $3) ((%434 $2) $1))) $0)))))))))))))`)
4319  val run_ir_def =
4320    DT([], [],
4321       `(%271 (\%439. (%311 (\%312. ((%315 ((%440 $1) $0)) (%441 ((%431
4322       (%400 $1)) ((%432 ((%433 %19) ((%434 (%329 %19)) $0)))
4323       %442))))))))`)
4324  val WELL_FORMED_def =
4325    DT(["DISK_THM"], [],
4326       `((%8 (%300 (\%406. ((%16 (%443 (%288 $0))) (%444 (%400 (%288
4327       $0))))))) ((%8 (%271 (\%408. (%271 (\%409. ((%16 (%443 ((%289 $1)
4328       $0))) ((%8 (%444 (%400 ((%289 $1) $0)))) ((%8 (%443 $1)) (%443
4329       $0))))))))) ((%8 (%302 (\%394. (%271 (\%408. (%271 (\%409. ((%16
4330       (%443 (((%290 $2) $1) $0))) ((%8 (%444 (%400 (((%290 $2) $1) $0))))
4331       ((%8 (%443 $1)) (%443 $0))))))))))) (%302 (\%394. (%271 (\%408.
4332       ((%16 (%443 ((%291 $1) $0))) ((%8 (%444 (%400 ((%291 $1) $0)))) ((%8
4333       (%443 $0)) (%445 ((%446 (%398 $1)) (%400 $0)))))))))))))`)
4334  val WELL_FORMED_SUB_def =
4335    DT(["DISK_THM"], [],
4336       `((%8 (%300 (\%406. ((%16 (%447 (%288 $0))) %73)))) ((%8 (%271
4337       (\%408. (%271 (\%409. ((%16 (%447 ((%289 $1) $0))) ((%8 (%443 $1))
4338       (%443 $0)))))))) ((%8 (%302 (\%394. (%271 (\%408. (%271 (\%409.
4339       ((%16 (%447 (((%290 $2) $1) $0))) ((%8 (%443 $1)) (%443 $0))))))))))
4340       (%302 (\%394. (%271 (\%408. ((%16 (%447 ((%291 $1) $0))) ((%8 (%443
4341       $0)) (%445 ((%446 (%398 $1)) (%400 $0))))))))))))`)
4342  val num2MREG_MREG2num =
4343    DT(["DISK_THM"], [], `(%9 (\%10. ((%11 (%12 (%13 $0))) $0)))`)
4344  val MREG2num_num2MREG =
4345    DT(["DISK_THM"], [],
4346       `(%14 (\%15. ((%16 ((%4 $0) (%5 (%6 (%6 (%6 (%6 %7))))))) ((%17 (%13
4347       (%12 $0))) $0))))`)
4348  val num2MREG_11 =
4349    DT(["DISK_THM"], [],
4350       `(%14 (\%15. (%14 (\%448. ((%63 ((%4 $1) (%5 (%6 (%6 (%6 (%6
4351       %7))))))) ((%63 ((%4 $0) (%5 (%6 (%6 (%6 (%6 %7))))))) ((%16 ((%11
4352       (%12 $1)) (%12 $0))) ((%17 $1) $0))))))))`)
4353  val MREG2num_11 =
4354    DT(["DISK_THM"], [],
4355       `(%9 (\%10. (%9 (\%449. ((%16 ((%17 (%13 $1)) (%13 $0))) ((%11 $1)
4356       $0))))))`)
4357  val num2MREG_ONTO =
4358    DT(["DISK_THM"], [],
4359       `(%9 (\%10. (%165 (\%15. ((%8 ((%11 $1) (%12 $0))) ((%4 $0) (%5 (%6
4360       (%6 (%6 (%6 %7)))))))))))`)
4361  val MREG2num_ONTO =
4362    DT(["DISK_THM"], [],
4363       `(%14 (\%15. ((%16 ((%4 $0) (%5 (%6 (%6 (%6 (%6 %7))))))) (%66
4364       (\%10. ((%17 $1) (%13 $0)))))))`)
4365  val num2MREG_thm =
4366    DT([], [],
4367       `((%8 ((%11 (%12 %19)) %18)) ((%8 ((%11 (%12 (%5 (%6 %7)))) %20))
4368       ((%8 ((%11 (%12 (%5 (%22 %7)))) %21)) ((%8 ((%11 (%12 (%5 (%6 (%6
4369       %7))))) %23)) ((%8 ((%11 (%12 (%5 (%22 (%6 %7))))) %24)) ((%8 ((%11
4370       (%12 (%5 (%6 (%22 %7))))) %25)) ((%8 ((%11 (%12 (%5 (%22 (%22
4371       %7))))) %26)) ((%8 ((%11 (%12 (%5 (%6 (%6 (%6 %7)))))) %27)) ((%8
4372       ((%11 (%12 (%5 (%22 (%6 (%6 %7)))))) %28)) ((%8 ((%11 (%12 (%5 (%6
4373       (%22 (%6 %7)))))) %29)) ((%8 ((%11 (%12 (%5 (%22 (%22 (%6 %7))))))
4374       %30)) ((%8 ((%11 (%12 (%5 (%6 (%6 (%22 %7)))))) %31)) ((%8 ((%11
4375       (%12 (%5 (%22 (%6 (%22 %7)))))) %32)) ((%8 ((%11 (%12 (%5 (%6 (%22
4376       (%22 %7)))))) %33)) ((%11 (%12 (%5 (%22 (%22 (%22 %7))))))
4377       %34)))))))))))))))`)
4378  val MREG2num_thm =
4379    DT(["DISK_THM"], [],
4380       `((%8 ((%17 (%13 %18)) %19)) ((%8 ((%17 (%13 %20)) (%5 (%6 %7))))
4381       ((%8 ((%17 (%13 %21)) (%5 (%22 %7)))) ((%8 ((%17 (%13 %23)) (%5 (%6
4382       (%6 %7))))) ((%8 ((%17 (%13 %24)) (%5 (%22 (%6 %7))))) ((%8 ((%17
4383       (%13 %25)) (%5 (%6 (%22 %7))))) ((%8 ((%17 (%13 %26)) (%5 (%22 (%22
4384       %7))))) ((%8 ((%17 (%13 %27)) (%5 (%6 (%6 (%6 %7)))))) ((%8 ((%17
4385       (%13 %28)) (%5 (%22 (%6 (%6 %7)))))) ((%8 ((%17 (%13 %29)) (%5 (%6
4386       (%22 (%6 %7)))))) ((%8 ((%17 (%13 %30)) (%5 (%22 (%22 (%6 %7))))))
4387       ((%8 ((%17 (%13 %31)) (%5 (%6 (%6 (%22 %7)))))) ((%8 ((%17 (%13
4388       %32)) (%5 (%22 (%6 (%22 %7)))))) ((%8 ((%17 (%13 %33)) (%5 (%6 (%22
4389       (%22 %7)))))) ((%17 (%13 %34)) (%5 (%22 (%22 (%22
4390       %7)))))))))))))))))))`)
4391  val MREG_EQ_MREG =
4392    DT(["DISK_THM"], [],
4393       `(%9 (\%10. (%9 (\%449. ((%16 ((%11 $1) $0)) ((%17 (%13 $1)) (%13
4394       $0)))))))`)
4395  val MREG_case_def =
4396    DT(["DISK_THM"], [],
4397       `((%8 (%37 (\%38. (%37 (\%39. (%37 (\%40. (%37 (\%41. (%37 (\%42.
4398       (%37 (\%43. (%37 (\%44. (%37 (\%45. (%37 (\%46. (%37 (\%47. (%37
4399       (\%48. (%37 (\%49. (%37 (\%50. (%37 (\%51. (%37 (\%52. ((%53
4400       ((((((((((((((((%54 $14) $13) $12) $11) $10) $9) $8) $7) $6) $5) $4)
4401       $3) $2) $1) $0) %18)) $14)))))))))))))))))))))))))))))))) ((%8 (%37
4402       (\%38. (%37 (\%39. (%37 (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43.
4403       (%37 (\%44. (%37 (\%45. (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37
4404       (\%49. (%37 (\%50. (%37 (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54
4405       $14) $13) $12) $11) $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0)
4406       %20)) $13)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37
4407       (\%39. (%37 (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44.
4408       (%37 (\%45. (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37
4409       (\%50. (%37 (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13)
4410       $12) $11) $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %21))
4411       $12)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39.
4412       (%37 (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37
4413       (\%45. (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50.
4414       (%37 (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12)
4415       $11) $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %23))
4416       $11)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39.
4417       (%37 (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37
4418       (\%45. (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50.
4419       (%37 (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12)
4420       $11) $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %24))
4421       $10)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39.
4422       (%37 (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37
4423       (\%45. (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50.
4424       (%37 (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12)
4425       $11) $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %25))
4426       $9)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4427       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4428       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4429       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4430       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %26))
4431       $8)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4432       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4433       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4434       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4435       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %27))
4436       $7)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4437       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4438       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4439       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4440       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %28))
4441       $6)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4442       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4443       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4444       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4445       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %29))
4446       $5)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4447       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4448       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4449       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4450       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %30))
4451       $4)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4452       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4453       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4454       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4455       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %31))
4456       $3)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4457       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4458       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4459       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4460       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %32))
4461       $2)))))))))))))))))))))))))))))))) ((%8 (%37 (\%38. (%37 (\%39. (%37
4462       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4463       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4464       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4465       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %33))
4466       $1)))))))))))))))))))))))))))))))) (%37 (\%38. (%37 (\%39. (%37
4467       (\%40. (%37 (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45.
4468       (%37 (\%46. (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37
4469       (\%51. (%37 (\%52. ((%53 ((((((((((((((((%54 $14) $13) $12) $11)
4470       $10) $9) $8) $7) $6) $5) $4) $3) $2) $1) $0) %34))
4471       $0)))))))))))))))))))))))))))))))))))))))))))))`)
4472  val datatype_MREG =
4473    DT(["DISK_THM"], [],
4474       `(%450 (((((((((((((((%451 %18) %20) %21) %23) %24) %25) %26) %27)
4475       %28) %29) %30) %31) %32) %33) %34))`)
4476  val MREG_distinct =
4477    DT(["DISK_THM"], [],
4478       `((%8 (%452 ((%11 %18) %20))) ((%8 (%452 ((%11 %18) %21))) ((%8
4479       (%452 ((%11 %18) %23))) ((%8 (%452 ((%11 %18) %24))) ((%8 (%452
4480       ((%11 %18) %25))) ((%8 (%452 ((%11 %18) %26))) ((%8 (%452 ((%11 %18)
4481       %27))) ((%8 (%452 ((%11 %18) %28))) ((%8 (%452 ((%11 %18) %29)))
4482       ((%8 (%452 ((%11 %18) %30))) ((%8 (%452 ((%11 %18) %31))) ((%8 (%452
4483       ((%11 %18) %32))) ((%8 (%452 ((%11 %18) %33))) ((%8 (%452 ((%11 %18)
4484       %34))) ((%8 (%452 ((%11 %20) %21))) ((%8 (%452 ((%11 %20) %23)))
4485       ((%8 (%452 ((%11 %20) %24))) ((%8 (%452 ((%11 %20) %25))) ((%8 (%452
4486       ((%11 %20) %26))) ((%8 (%452 ((%11 %20) %27))) ((%8 (%452 ((%11 %20)
4487       %28))) ((%8 (%452 ((%11 %20) %29))) ((%8 (%452 ((%11 %20) %30)))
4488       ((%8 (%452 ((%11 %20) %31))) ((%8 (%452 ((%11 %20) %32))) ((%8 (%452
4489       ((%11 %20) %33))) ((%8 (%452 ((%11 %20) %34))) ((%8 (%452 ((%11 %21)
4490       %23))) ((%8 (%452 ((%11 %21) %24))) ((%8 (%452 ((%11 %21) %25)))
4491       ((%8 (%452 ((%11 %21) %26))) ((%8 (%452 ((%11 %21) %27))) ((%8 (%452
4492       ((%11 %21) %28))) ((%8 (%452 ((%11 %21) %29))) ((%8 (%452 ((%11 %21)
4493       %30))) ((%8 (%452 ((%11 %21) %31))) ((%8 (%452 ((%11 %21) %32)))
4494       ((%8 (%452 ((%11 %21) %33))) ((%8 (%452 ((%11 %21) %34))) ((%8 (%452
4495       ((%11 %23) %24))) ((%8 (%452 ((%11 %23) %25))) ((%8 (%452 ((%11 %23)
4496       %26))) ((%8 (%452 ((%11 %23) %27))) ((%8 (%452 ((%11 %23) %28)))
4497       ((%8 (%452 ((%11 %23) %29))) ((%8 (%452 ((%11 %23) %30))) ((%8 (%452
4498       ((%11 %23) %31))) ((%8 (%452 ((%11 %23) %32))) ((%8 (%452 ((%11 %23)
4499       %33))) ((%8 (%452 ((%11 %23) %34))) ((%8 (%452 ((%11 %24) %25)))
4500       ((%8 (%452 ((%11 %24) %26))) ((%8 (%452 ((%11 %24) %27))) ((%8 (%452
4501       ((%11 %24) %28))) ((%8 (%452 ((%11 %24) %29))) ((%8 (%452 ((%11 %24)
4502       %30))) ((%8 (%452 ((%11 %24) %31))) ((%8 (%452 ((%11 %24) %32)))
4503       ((%8 (%452 ((%11 %24) %33))) ((%8 (%452 ((%11 %24) %34))) ((%8 (%452
4504       ((%11 %25) %26))) ((%8 (%452 ((%11 %25) %27))) ((%8 (%452 ((%11 %25)
4505       %28))) ((%8 (%452 ((%11 %25) %29))) ((%8 (%452 ((%11 %25) %30)))
4506       ((%8 (%452 ((%11 %25) %31))) ((%8 (%452 ((%11 %25) %32))) ((%8 (%452
4507       ((%11 %25) %33))) ((%8 (%452 ((%11 %25) %34))) ((%8 (%452 ((%11 %26)
4508       %27))) ((%8 (%452 ((%11 %26) %28))) ((%8 (%452 ((%11 %26) %29)))
4509       ((%8 (%452 ((%11 %26) %30))) ((%8 (%452 ((%11 %26) %31))) ((%8 (%452
4510       ((%11 %26) %32))) ((%8 (%452 ((%11 %26) %33))) ((%8 (%452 ((%11 %26)
4511       %34))) ((%8 (%452 ((%11 %27) %28))) ((%8 (%452 ((%11 %27) %29)))
4512       ((%8 (%452 ((%11 %27) %30))) ((%8 (%452 ((%11 %27) %31))) ((%8 (%452
4513       ((%11 %27) %32))) ((%8 (%452 ((%11 %27) %33))) ((%8 (%452 ((%11 %27)
4514       %34))) ((%8 (%452 ((%11 %28) %29))) ((%8 (%452 ((%11 %28) %30)))
4515       ((%8 (%452 ((%11 %28) %31))) ((%8 (%452 ((%11 %28) %32))) ((%8 (%452
4516       ((%11 %28) %33))) ((%8 (%452 ((%11 %28) %34))) ((%8 (%452 ((%11 %29)
4517       %30))) ((%8 (%452 ((%11 %29) %31))) ((%8 (%452 ((%11 %29) %32)))
4518       ((%8 (%452 ((%11 %29) %33))) ((%8 (%452 ((%11 %29) %34))) ((%8 (%452
4519       ((%11 %30) %31))) ((%8 (%452 ((%11 %30) %32))) ((%8 (%452 ((%11 %30)
4520       %33))) ((%8 (%452 ((%11 %30) %34))) ((%8 (%452 ((%11 %31) %32)))
4521       ((%8 (%452 ((%11 %31) %33))) ((%8 (%452 ((%11 %31) %34))) ((%8 (%452
4522       ((%11 %32) %33))) ((%8 (%452 ((%11 %32) %34))) (%452 ((%11 %33)
4523       %34))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))`)
4524  val MREG_case_cong =
4525    DT(["DISK_THM"], [],
4526       `(%9 (\%453. (%9 (\%454. (%37 (\%38. (%37 (\%39. (%37 (\%40. (%37
4527       (\%41. (%37 (\%42. (%37 (\%43. (%37 (\%44. (%37 (\%45. (%37 (\%46.
4528       (%37 (\%47. (%37 (\%48. (%37 (\%49. (%37 (\%50. (%37 (\%51. (%37
4529       (\%52. ((%63 ((%8 ((%11 $16) $15)) ((%8 ((%63 ((%11 $15) %18)) ((%53
4530       $14) %455))) ((%8 ((%63 ((%11 $15) %20)) ((%53 $13) %456))) ((%8
4531       ((%63 ((%11 $15) %21)) ((%53 $12) %457))) ((%8 ((%63 ((%11 $15)
4532       %23)) ((%53 $11) %458))) ((%8 ((%63 ((%11 $15) %24)) ((%53 $10)
4533       %459))) ((%8 ((%63 ((%11 $15) %25)) ((%53 $9) %460))) ((%8 ((%63
4534       ((%11 $15) %26)) ((%53 $8) %461))) ((%8 ((%63 ((%11 $15) %27)) ((%53
4535       $7) %462))) ((%8 ((%63 ((%11 $15) %28)) ((%53 $6) %463))) ((%8 ((%63
4536       ((%11 $15) %29)) ((%53 $5) %464))) ((%8 ((%63 ((%11 $15) %30)) ((%53
4537       $4) %465))) ((%8 ((%63 ((%11 $15) %31)) ((%53 $3) %466))) ((%8 ((%63
4538       ((%11 $15) %32)) ((%53 $2) %467))) ((%8 ((%63 ((%11 $15) %33)) ((%53
4539       $1) %468))) ((%63 ((%11 $15) %34)) ((%53 $0) %469))))))))))))))))))
4540       ((%53 ((((((((((((((((%54 $14) $13) $12) $11) $10) $9) $8) $7) $6)
4541       $5) $4) $3) $2) $1) $0) $16)) ((((((((((((((((%54 %455) %456) %457)
4542       %458) %459) %460) %461) %462) %463) %464) %465) %466) %467) %468)
4543       %469) $15)))))))))))))))))))))))))))))))))))))`)
4544  val MREG_nchotomy =
4545    DT(["DISK_THM"], [],
4546       `(%9 (\%10. ((%65 ((%11 $0) %18)) ((%65 ((%11 $0) %20)) ((%65 ((%11
4547       $0) %21)) ((%65 ((%11 $0) %23)) ((%65 ((%11 $0) %24)) ((%65 ((%11
4548       $0) %25)) ((%65 ((%11 $0) %26)) ((%65 ((%11 $0) %27)) ((%65 ((%11
4549       $0) %28)) ((%65 ((%11 $0) %29)) ((%65 ((%11 $0) %30)) ((%65 ((%11
4550       $0) %31)) ((%65 ((%11 $0) %32)) ((%65 ((%11 $0) %33)) ((%11 $0)
4551       %34)))))))))))))))))`)
4552  val MREG_Axiom =
4553    DT(["DISK_THM"], [],
4554       `(%37 (\%470. (%37 (\%471. (%37 (\%472. (%37 (\%473. (%37 (\%474.
4555       (%37 (\%475. (%37 (\%476. (%37 (\%477. (%37 (\%478. (%37 (\%479.
4556       (%37 (\%480. (%37 (\%481. (%37 (\%482. (%37 (\%483. (%37 (\%484.
4557       (%485 (\%97. ((%8 ((%53 ($0 %18)) $15)) ((%8 ((%53 ($0 %20)) $14))
4558       ((%8 ((%53 ($0 %21)) $13)) ((%8 ((%53 ($0 %23)) $12)) ((%8 ((%53 ($0
4559       %24)) $11)) ((%8 ((%53 ($0 %25)) $10)) ((%8 ((%53 ($0 %26)) $9))
4560       ((%8 ((%53 ($0 %27)) $8)) ((%8 ((%53 ($0 %28)) $7)) ((%8 ((%53 ($0
4561       %29)) $6)) ((%8 ((%53 ($0 %30)) $5)) ((%8 ((%53 ($0 %31)) $4)) ((%8
4562       ((%53 ($0 %32)) $3)) ((%8 ((%53 ($0 %33)) $2)) ((%53 ($0 %34))
4563       $1)))))))))))))))))))))))))))))))))))))))))))))))`)
4564  val MREG_induction =
4565    DT(["DISK_THM"], [],
4566       `(%486 (\%487. ((%63 ((%8 ($0 %18)) ((%8 ($0 %20)) ((%8 ($0 %30))
4567       ((%8 ($0 %31)) ((%8 ($0 %32)) ((%8 ($0 %33)) ((%8 ($0 %34)) ((%8 ($0
4568       %21)) ((%8 ($0 %23)) ((%8 ($0 %24)) ((%8 ($0 %25)) ((%8 ($0 %26))
4569       ((%8 ($0 %27)) ((%8 ($0 %28)) ($0 %29)))))))))))))))) (%9 (\%10. ($1
4570       $0))))))`)
4571  val datatype_MEXP = DT(["DISK_THM"], [], `(%450 ((%488 %94) %95))`)
4572  val MEXP_11 =
4573    DT(["DISK_THM"], [],
4574       `((%8 (%9 (\%10. (%9 (\%449. ((%16 ((%86 (%94 $1)) (%94 $0))) ((%11
4575       $1) $0))))))) (%101 (\%78. (%102 (\%80. (%101 (\%489. (%102 (\%490.
4576       ((%16 ((%86 ((%95 $3) $2)) ((%95 $1) $0))) ((%8 ((%491 $3) $1))
4577       ((%492 $2) $0))))))))))))`)
4578  val MEXP_distinct =
4579    DT(["DISK_THM"], [],
4580       `(%102 (\%80. (%101 (\%78. (%9 (\%10. (%452 ((%86 (%94 $0)) ((%95
4581       $1) $2)))))))))`)
4582  val MEXP_case_cong =
4583    DT(["DISK_THM"], [],
4584       `(%84 (\%493. (%84 (\%494. (%96 (\%97. (%98 (\%99. ((%63 ((%8 ((%86
4585       $3) $2)) ((%8 (%9 (\%10. ((%63 ((%86 $3) (%94 $0))) ((%53 ($2 $0))
4586       (%495 $0)))))) (%101 (\%78. (%102 (\%80. ((%63 ((%86 $4) ((%95 $1)
4587       $0))) ((%53 (($2 $1) $0)) ((%496 $1) $0)))))))))) ((%53 (((%100 $1)
4588       $0) $3)) (((%100 %495) %496) $2)))))))))))`)
4589  val MEXP_nchotomy =
4590    DT(["DISK_THM"], [],
4591       `(%84 (\%493. ((%65 (%66 (\%453. ((%86 $1) (%94 $0))))) (%77 (\%497.
4592       (%79 (\%498. ((%86 $2) ((%95 $1) $0)))))))))`)
4593  val MEXP_Axiom =
4594    DT(["DISK_THM"], [],
4595       `(%96 (\%499. (%98 (\%99. (%500 (\%501. ((%8 (%9 (\%10. ((%53 ($1
4596       (%94 $0))) ($3 $0))))) (%101 (\%78. (%102 (\%80. ((%53 ($2 ((%95 $1)
4597       $0))) (($3 $1) $0)))))))))))))`)
4598  val MEXP_induction =
4599    DT(["DISK_THM"], [],
4600       `(%502 (\%503. ((%63 ((%8 (%9 (\%453. ($1 (%94 $0))))) (%101 (\%497.
4601       (%102 (\%498. ($2 ((%95 $1) $0)))))))) (%84 (\%493. ($1 $0))))))`)
4602  val from_reg_index_thm =
4603    DT(["DISK_THM"], [],
4604       `((%8 ((%11 (%107 %19)) %18)) ((%8 ((%11 (%107 (%5 (%6 %7)))) %20))
4605       ((%8 ((%11 (%107 (%5 (%22 %7)))) %21)) ((%8 ((%11 (%107 (%5 (%6 (%6
4606       %7))))) %23)) ((%8 ((%11 (%107 (%5 (%22 (%6 %7))))) %24)) ((%8 ((%11
4607       (%107 (%5 (%6 (%22 %7))))) %25)) ((%8 ((%11 (%107 (%5 (%22 (%22
4608       %7))))) %26)) ((%8 ((%11 (%107 (%5 (%6 (%6 (%6 %7)))))) %27)) ((%8
4609       ((%11 (%107 (%5 (%22 (%6 (%6 %7)))))) %28)) ((%8 ((%11 (%107 (%5 (%6
4610       (%22 (%6 %7)))))) %29)) ((%8 ((%11 (%107 (%5 (%22 (%22 (%6 %7))))))
4611       %30)) ((%8 ((%11 (%107 (%5 (%6 (%6 (%22 %7)))))) %31)) ((%8 ((%11
4612       (%107 (%5 (%22 (%6 (%22 %7)))))) %32)) ((%8 ((%11 (%107 (%5 (%6 (%22
4613       (%22 %7)))))) %33)) ((%11 (%107 (%5 (%22 (%22 (%22 %7))))))
4614       %34)))))))))))))))`)
4615  val datatype_DOPER =
4616    DT(["DISK_THM"], [],
4617       `(%450 ((((((((((((((((%504 %198) %199) %200) %201) %202) %203)
4618       %204) %205) %206) %207) %208) %209) %210) %211) %212) %213))`)
4619  val DOPER_11 =
4620    DT(["DISK_THM"], [],
4621       `((%8 (%9 (\%134. (%237 (\%136. (%9 (\%505. (%237 (\%506. ((%16
4622       ((%171 ((%198 $3) $2)) ((%198 $1) $0))) ((%8 ((%11 $3) $1)) ((%507
4623       $2) $0)))))))))))) ((%8 (%237 (\%155. (%9 (\%156. (%237 (\%508. (%9
4624       (\%509. ((%16 ((%171 ((%199 $3) $2)) ((%199 $1) $0))) ((%8 ((%507
4625       $3) $1)) ((%11 $2) $0)))))))))))) ((%8 (%9 (\%134. (%84 (\%158. (%9
4626       (\%505. (%84 (\%510. ((%16 ((%171 ((%200 $3) $2)) ((%200 $1) $0)))
4627       ((%8 ((%11 $3) $1)) ((%86 $2) $0)))))))))))) ((%8 (%9 (\%134. (%9
4628       (\%156. (%84 (\%161. (%9 (\%505. (%9 (\%509. (%84 (\%511. ((%16
4629       ((%171 (((%201 $5) $4) $3)) (((%201 $2) $1) $0))) ((%8 ((%11 $5)
4630       $2)) ((%8 ((%11 $4) $1)) ((%86 $3) $0))))))))))))))))) ((%8 (%9
4631       (\%134. (%9 (\%156. (%84 (\%161. (%9 (\%505. (%9 (\%509. (%84
4632       (\%511. ((%16 ((%171 (((%202 $5) $4) $3)) (((%202 $2) $1) $0))) ((%8
4633       ((%11 $5) $2)) ((%8 ((%11 $4) $1)) ((%86 $3) $0)))))))))))))))))
4634       ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161. (%9 (\%505. (%9 (\%509.
4635       (%84 (\%511. ((%16 ((%171 (((%203 $5) $4) $3)) (((%203 $2) $1) $0)))
4636       ((%8 ((%11 $5) $2)) ((%8 ((%11 $4) $1)) ((%86 $3)
4637       $0))))))))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%9 (\%162. (%9
4638       (\%505. (%9 (\%509. (%9 (\%512. ((%16 ((%171 (((%204 $5) $4) $3))
4639       (((%204 $2) $1) $0))) ((%8 ((%11 $5) $2)) ((%8 ((%11 $4) $1)) ((%11
4640       $3) $0))))))))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161.
4641       (%9 (\%505. (%9 (\%509. (%84 (\%511. ((%16 ((%171 (((%205 $5) $4)
4642       $3)) (((%205 $2) $1) $0))) ((%8 ((%11 $5) $2)) ((%8 ((%11 $4) $1))
4643       ((%86 $3) $0))))))))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4644       (\%161. (%9 (\%505. (%9 (\%509. (%84 (\%511. ((%16 ((%171 (((%206
4645       $5) $4) $3)) (((%206 $2) $1) $0))) ((%8 ((%11 $5) $2)) ((%8 ((%11
4646       $4) $1)) ((%86 $3) $0))))))))))))))))) ((%8 (%9 (\%134. (%9 (\%156.
4647       (%84 (\%161. (%9 (\%505. (%9 (\%509. (%84 (\%511. ((%16 ((%171
4648       (((%207 $5) $4) $3)) (((%207 $2) $1) $0))) ((%8 ((%11 $5) $2)) ((%8
4649       ((%11 $4) $1)) ((%86 $3) $0))))))))))))))))) ((%8 (%9 (\%134. (%9
4650       (\%156. (%239 (\%164. (%9 (\%505. (%9 (\%509. (%239 (\%513. ((%16
4651       ((%171 (((%208 $5) $4) $3)) (((%208 $2) $1) $0))) ((%8 ((%11 $5)
4652       $2)) ((%8 ((%11 $4) $1)) ((%514 $3) $0))))))))))))))))) ((%8 (%9
4653       (\%134. (%9 (\%156. (%239 (\%164. (%9 (\%505. (%9 (\%509. (%239
4654       (\%513. ((%16 ((%171 (((%209 $5) $4) $3)) (((%209 $2) $1) $0))) ((%8
4655       ((%11 $5) $2)) ((%8 ((%11 $4) $1)) ((%514 $3) $0)))))))))))))))))
4656       ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164. (%9 (\%505. (%9 (\%509.
4657       (%239 (\%513. ((%16 ((%171 (((%210 $5) $4) $3)) (((%210 $2) $1)
4658       $0))) ((%8 ((%11 $5) $2)) ((%8 ((%11 $4) $1)) ((%514 $3)
4659       $0))))))))))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164. (%9
4660       (\%505. (%9 (\%509. (%239 (\%513. ((%16 ((%171 (((%211 $5) $4) $3))
4661       (((%211 $2) $1) $0))) ((%8 ((%11 $5) $2)) ((%8 ((%11 $4) $1)) ((%514
4662       $3) $0))))))))))))))))) ((%8 (%14 (\%166. (%240 (\%168. (%14 (\%515.
4663       (%240 (\%516. ((%16 ((%171 ((%212 $3) $2)) ((%212 $1) $0))) ((%8
4664       ((%17 $3) $1)) ((%517 $2) $0)))))))))))) (%14 (\%166. (%240 (\%168.
4665       (%14 (\%515. (%240 (\%516. ((%16 ((%171 ((%213 $3) $2)) ((%213 $1)
4666       $0))) ((%8 ((%17 $3) $1)) ((%517 $2) $0))))))))))))))))))))))))))`)
4667  val DOPER_distinct =
4668    DT(["DISK_THM"], [],
4669       `((%8 (%9 (\%509. (%237 (\%136. (%237 (\%508. (%9 (\%134. (%452
4670       ((%171 ((%198 $0) $2)) ((%199 $1) $3)))))))))))) ((%8 (%84 (\%510.
4671       (%237 (\%136. (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2))
4672       ((%200 $1) $3)))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%237
4673       (\%136. (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%201
4674       $1) $3) $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%237 (\%136.
4675       (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%202 $1) $3)
4676       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%237 (\%136. (%9
4677       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%203 $1) $3)
4678       $4)))))))))))))) ((%8 (%9 (\%162. (%9 (\%509. (%237 (\%136. (%9
4679       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%204 $1) $3)
4680       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%237 (\%136. (%9
4681       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%205 $1) $3)
4682       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%237 (\%136. (%9
4683       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%206 $1) $3)
4684       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%237 (\%136. (%9
4685       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%207 $1) $3)
4686       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%237 (\%136. (%9
4687       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%208 $1) $3)
4688       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%237 (\%136. (%9
4689       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%209 $1) $3)
4690       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%237 (\%136. (%9
4691       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%210 $1) $3)
4692       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%237 (\%136. (%9
4693       (\%505. (%9 (\%134. (%452 ((%171 ((%198 $0) $2)) (((%211 $1) $3)
4694       $4)))))))))))))) ((%8 (%240 (\%516. (%237 (\%136. (%14 (\%515. (%9
4695       (\%134. (%452 ((%171 ((%198 $0) $2)) ((%212 $1) $3)))))))))))) ((%8
4696       (%240 (\%516. (%237 (\%136. (%14 (\%515. (%9 (\%134. (%452 ((%171
4697       ((%198 $0) $2)) ((%213 $1) $3)))))))))))) ((%8 (%84 (\%510. (%9
4698       (\%156. (%9 (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2))
4699       ((%200 $1) $3)))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%9 (\%156.
4700       (%9 (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%201 $1)
4701       $3) $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9
4702       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%202 $1) $3)
4703       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9
4704       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%203 $1) $3)
4705       $4)))))))))))))) ((%8 (%9 (\%162. (%9 (\%509. (%9 (\%156. (%9
4706       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%204 $1) $3)
4707       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9
4708       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%205 $1) $3)
4709       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9
4710       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%206 $1) $3)
4711       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9
4712       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%207 $1) $3)
4713       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%9 (\%156. (%9
4714       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%208 $1) $3)
4715       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%9 (\%156. (%9
4716       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%209 $1) $3)
4717       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%9 (\%156. (%9
4718       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%210 $1) $3)
4719       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%9 (\%156. (%9
4720       (\%505. (%237 (\%155. (%452 ((%171 ((%199 $0) $2)) (((%211 $1) $3)
4721       $4)))))))))))))) ((%8 (%240 (\%516. (%9 (\%156. (%14 (\%515. (%237
4722       (\%155. (%452 ((%171 ((%199 $0) $2)) ((%212 $1) $3)))))))))))) ((%8
4723       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%237 (\%155. (%452 ((%171
4724       ((%199 $0) $2)) ((%213 $1) $3)))))))))))) ((%8 (%84 (\%161. (%9
4725       (\%509. (%84 (\%158. (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0)
4726       $2)) (((%201 $1) $3) $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509.
4727       (%84 (\%158. (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2))
4728       (((%202 $1) $3) $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%84
4729       (\%158. (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%203
4730       $1) $3) $4)))))))))))))) ((%8 (%9 (\%162. (%9 (\%509. (%84 (\%158.
4731       (%9 (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%204 $1) $3)
4732       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%84 (\%158. (%9
4733       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%205 $1) $3)
4734       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%84 (\%158. (%9
4735       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%206 $1) $3)
4736       $4)))))))))))))) ((%8 (%84 (\%161. (%9 (\%509. (%84 (\%158. (%9
4737       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%207 $1) $3)
4738       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%84 (\%158. (%9
4739       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%208 $1) $3)
4740       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%84 (\%158. (%9
4741       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%209 $1) $3)
4742       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%84 (\%158. (%9
4743       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%210 $1) $3)
4744       $4)))))))))))))) ((%8 (%239 (\%164. (%9 (\%509. (%84 (\%158. (%9
4745       (\%505. (%9 (\%134. (%452 ((%171 ((%200 $0) $2)) (((%211 $1) $3)
4746       $4)))))))))))))) ((%8 (%240 (\%516. (%84 (\%158. (%14 (\%515. (%9
4747       (\%134. (%452 ((%171 ((%200 $0) $2)) ((%212 $1) $3)))))))))))) ((%8
4748       (%240 (\%516. (%84 (\%158. (%14 (\%515. (%9 (\%134. (%452 ((%171
4749       ((%200 $0) $2)) ((%213 $1) $3)))))))))))) ((%8 (%84 (\%511. (%84
4750       (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171
4751       (((%201 $0) $2) $4)) (((%202 $1) $3) $5)))))))))))))))) ((%8 (%84
4752       (\%511. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134.
4753       (%452 ((%171 (((%201 $0) $2) $4)) (((%203 $1) $3) $5))))))))))))))))
4754       ((%8 (%9 (\%512. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505.
4755       (%9 (\%134. (%452 ((%171 (((%201 $0) $2) $4)) (((%204 $1) $3)
4756       $5)))))))))))))))) ((%8 (%84 (\%511. (%84 (\%161. (%9 (\%509. (%9
4757       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%201 $0) $2) $4))
4758       (((%205 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511. (%84 (\%161.
4759       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%201
4760       $0) $2) $4)) (((%206 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511.
4761       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4762       ((%171 (((%201 $0) $2) $4)) (((%207 $1) $3) $5)))))))))))))))) ((%8
4763       (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4764       (\%134. (%452 ((%171 (((%201 $0) $2) $4)) (((%208 $1) $3)
4765       $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9
4766       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%201 $0) $2) $4))
4767       (((%209 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161.
4768       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%201
4769       $0) $2) $4)) (((%210 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513.
4770       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4771       ((%171 (((%201 $0) $2) $4)) (((%211 $1) $3) $5)))))))))))))))) ((%8
4772       (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134.
4773       (%452 ((%171 (((%201 $0) $2) $4)) ((%212 $1) $3)))))))))))))) ((%8
4774       (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134.
4775       (%452 ((%171 (((%201 $0) $2) $4)) ((%213 $1) $3)))))))))))))) ((%8
4776       (%84 (\%511. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4777       (\%134. (%452 ((%171 (((%202 $0) $2) $4)) (((%203 $1) $3)
4778       $5)))))))))))))))) ((%8 (%9 (\%512. (%84 (\%161. (%9 (\%509. (%9
4779       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%202 $0) $2) $4))
4780       (((%204 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511. (%84 (\%161.
4781       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%202
4782       $0) $2) $4)) (((%205 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511.
4783       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4784       ((%171 (((%202 $0) $2) $4)) (((%206 $1) $3) $5)))))))))))))))) ((%8
4785       (%84 (\%511. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4786       (\%134. (%452 ((%171 (((%202 $0) $2) $4)) (((%207 $1) $3)
4787       $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9
4788       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%202 $0) $2) $4))
4789       (((%208 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161.
4790       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%202
4791       $0) $2) $4)) (((%209 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513.
4792       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4793       ((%171 (((%202 $0) $2) $4)) (((%210 $1) $3) $5)))))))))))))))) ((%8
4794       (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4795       (\%134. (%452 ((%171 (((%202 $0) $2) $4)) (((%211 $1) $3)
4796       $5)))))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4797       (\%515. (%9 (\%134. (%452 ((%171 (((%202 $0) $2) $4)) ((%212 $1)
4798       $3)))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4799       (\%515. (%9 (\%134. (%452 ((%171 (((%202 $0) $2) $4)) ((%213 $1)
4800       $3)))))))))))))) ((%8 (%9 (\%512. (%84 (\%161. (%9 (\%509. (%9
4801       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%203 $0) $2) $4))
4802       (((%204 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511. (%84 (\%161.
4803       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%203
4804       $0) $2) $4)) (((%205 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511.
4805       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4806       ((%171 (((%203 $0) $2) $4)) (((%206 $1) $3) $5)))))))))))))))) ((%8
4807       (%84 (\%511. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4808       (\%134. (%452 ((%171 (((%203 $0) $2) $4)) (((%207 $1) $3)
4809       $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9
4810       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%203 $0) $2) $4))
4811       (((%208 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161.
4812       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%203
4813       $0) $2) $4)) (((%209 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513.
4814       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4815       ((%171 (((%203 $0) $2) $4)) (((%210 $1) $3) $5)))))))))))))))) ((%8
4816       (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4817       (\%134. (%452 ((%171 (((%203 $0) $2) $4)) (((%211 $1) $3)
4818       $5)))))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4819       (\%515. (%9 (\%134. (%452 ((%171 (((%203 $0) $2) $4)) ((%212 $1)
4820       $3)))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4821       (\%515. (%9 (\%134. (%452 ((%171 (((%203 $0) $2) $4)) ((%213 $1)
4822       $3)))))))))))))) ((%8 (%84 (\%511. (%9 (\%162. (%9 (\%509. (%9
4823       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%204 $0) $2) $4))
4824       (((%205 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511. (%9 (\%162. (%9
4825       (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%204 $0)
4826       $2) $4)) (((%206 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%511. (%9
4827       (\%162. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171
4828       (((%204 $0) $2) $4)) (((%207 $1) $3) $5)))))))))))))))) ((%8 (%239
4829       (\%513. (%9 (\%162. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134.
4830       (%452 ((%171 (((%204 $0) $2) $4)) (((%208 $1) $3) $5))))))))))))))))
4831       ((%8 (%239 (\%513. (%9 (\%162. (%9 (\%509. (%9 (\%156. (%9 (\%505.
4832       (%9 (\%134. (%452 ((%171 (((%204 $0) $2) $4)) (((%209 $1) $3)
4833       $5)))))))))))))))) ((%8 (%239 (\%513. (%9 (\%162. (%9 (\%509. (%9
4834       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%204 $0) $2) $4))
4835       (((%210 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%9 (\%162.
4836       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%204
4837       $0) $2) $4)) (((%211 $1) $3) $5)))))))))))))))) ((%8 (%9 (\%162.
4838       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171
4839       (((%204 $0) $2) $4)) ((%212 $1) $3)))))))))))))) ((%8 (%9 (\%162.
4840       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171
4841       (((%204 $0) $2) $4)) ((%213 $1) $3)))))))))))))) ((%8 (%84 (\%511.
4842       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4843       ((%171 (((%205 $0) $2) $4)) (((%206 $1) $3) $5)))))))))))))))) ((%8
4844       (%84 (\%511. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4845       (\%134. (%452 ((%171 (((%205 $0) $2) $4)) (((%207 $1) $3)
4846       $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9
4847       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%205 $0) $2) $4))
4848       (((%208 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161.
4849       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%205
4850       $0) $2) $4)) (((%209 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513.
4851       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4852       ((%171 (((%205 $0) $2) $4)) (((%210 $1) $3) $5)))))))))))))))) ((%8
4853       (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4854       (\%134. (%452 ((%171 (((%205 $0) $2) $4)) (((%211 $1) $3)
4855       $5)))))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4856       (\%515. (%9 (\%134. (%452 ((%171 (((%205 $0) $2) $4)) ((%212 $1)
4857       $3)))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4858       (\%515. (%9 (\%134. (%452 ((%171 (((%205 $0) $2) $4)) ((%213 $1)
4859       $3)))))))))))))) ((%8 (%84 (\%511. (%84 (\%161. (%9 (\%509. (%9
4860       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%206 $0) $2) $4))
4861       (((%207 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161.
4862       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%206
4863       $0) $2) $4)) (((%208 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513.
4864       (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4865       ((%171 (((%206 $0) $2) $4)) (((%209 $1) $3) $5)))))))))))))))) ((%8
4866       (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4867       (\%134. (%452 ((%171 (((%206 $0) $2) $4)) (((%210 $1) $3)
4868       $5)))))))))))))))) ((%8 (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9
4869       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%206 $0) $2) $4))
4870       (((%211 $1) $3) $5)))))))))))))))) ((%8 (%84 (\%161. (%240 (\%516.
4871       (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171 (((%206 $0) $2)
4872       $4)) ((%212 $1) $3)))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9
4873       (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171 (((%206 $0) $2) $4))
4874       ((%213 $1) $3)))))))))))))) ((%8 (%239 (\%513. (%84 (\%161. (%9
4875       (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%207 $0)
4876       $2) $4)) (((%208 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%84
4877       (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171
4878       (((%207 $0) $2) $4)) (((%209 $1) $3) $5)))))))))))))))) ((%8 (%239
4879       (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134.
4880       (%452 ((%171 (((%207 $0) $2) $4)) (((%210 $1) $3) $5))))))))))))))))
4881       ((%8 (%239 (\%513. (%84 (\%161. (%9 (\%509. (%9 (\%156. (%9 (\%505.
4882       (%9 (\%134. (%452 ((%171 (((%207 $0) $2) $4)) (((%211 $1) $3)
4883       $5)))))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4884       (\%515. (%9 (\%134. (%452 ((%171 (((%207 $0) $2) $4)) ((%212 $1)
4885       $3)))))))))))))) ((%8 (%84 (\%161. (%240 (\%516. (%9 (\%156. (%14
4886       (\%515. (%9 (\%134. (%452 ((%171 (((%207 $0) $2) $4)) ((%213 $1)
4887       $3)))))))))))))) ((%8 (%239 (\%513. (%239 (\%164. (%9 (\%509. (%9
4888       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%208 $0) $2) $4))
4889       (((%209 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513. (%239 (\%164.
4890       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%208
4891       $0) $2) $4)) (((%210 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%513.
4892       (%239 (\%164. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452
4893       ((%171 (((%208 $0) $2) $4)) (((%211 $1) $3) $5)))))))))))))))) ((%8
4894       (%239 (\%164. (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134.
4895       (%452 ((%171 (((%208 $0) $2) $4)) ((%212 $1) $3)))))))))))))) ((%8
4896       (%239 (\%164. (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134.
4897       (%452 ((%171 (((%208 $0) $2) $4)) ((%213 $1) $3)))))))))))))) ((%8
4898       (%239 (\%513. (%239 (\%164. (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9
4899       (\%134. (%452 ((%171 (((%209 $0) $2) $4)) (((%210 $1) $3)
4900       $5)))))))))))))))) ((%8 (%239 (\%513. (%239 (\%164. (%9 (\%509. (%9
4901       (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%209 $0) $2) $4))
4902       (((%211 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%164. (%240 (\%516.
4903       (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171 (((%209 $0) $2)
4904       $4)) ((%212 $1) $3)))))))))))))) ((%8 (%239 (\%164. (%240 (\%516.
4905       (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171 (((%209 $0) $2)
4906       $4)) ((%213 $1) $3)))))))))))))) ((%8 (%239 (\%513. (%239 (\%164.
4907       (%9 (\%509. (%9 (\%156. (%9 (\%505. (%9 (\%134. (%452 ((%171 (((%210
4908       $0) $2) $4)) (((%211 $1) $3) $5)))))))))))))))) ((%8 (%239 (\%164.
4909       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171
4910       (((%210 $0) $2) $4)) ((%212 $1) $3)))))))))))))) ((%8 (%239 (\%164.
4911       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171
4912       (((%210 $0) $2) $4)) ((%213 $1) $3)))))))))))))) ((%8 (%239 (\%164.
4913       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171
4914       (((%211 $0) $2) $4)) ((%212 $1) $3)))))))))))))) ((%8 (%239 (\%164.
4915       (%240 (\%516. (%9 (\%156. (%14 (\%515. (%9 (\%134. (%452 ((%171
4916       (((%211 $0) $2) $4)) ((%213 $1) $3)))))))))))))) (%240 (\%516. (%240
4917       (\%168. (%14 (\%515. (%14 (\%166. (%452 ((%171 ((%212 $0) $2))
4918       ((%213 $1)
4919       $3))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))`)
4920  val DOPER_case_cong =
4921    DT(["DISK_THM"], [],
4922       `(%169 (\%518. (%169 (\%519. (%214 (\%215. (%216 (\%217. (%218
4923       (\%219. (%220 (\%221. (%220 (\%222. (%220 (\%223. (%224 (\%225.
4924       (%220 (\%226. (%220 (\%227. (%220 (\%228. (%229 (\%230. (%229
4925       (\%231. (%229 (\%232. (%229 (\%233. (%234 (\%235. (%234 (\%236.
4926       ((%63 ((%8 ((%171 $17) $16)) ((%8 (%9 (\%134. (%237 (\%136. ((%63
4927       ((%171 $18) ((%198 $1) $0))) ((%53 (($17 $1) $0)) ((%520 $1)
4928       $0)))))))) ((%8 (%237 (\%155. (%9 (\%156. ((%63 ((%171 $18) ((%199
4929       $1) $0))) ((%53 (($16 $1) $0)) ((%521 $1) $0)))))))) ((%8 (%9
4930       (\%134. (%84 (\%158. ((%63 ((%171 $18) ((%200 $1) $0))) ((%53 (($15
4931       $1) $0)) ((%522 $1) $0)))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4932       (\%161. ((%63 ((%171 $19) (((%201 $2) $1) $0))) ((%53 ((($15 $2) $1)
4933       $0)) (((%523 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4934       (\%161. ((%63 ((%171 $19) (((%202 $2) $1) $0))) ((%53 ((($14 $2) $1)
4935       $0)) (((%524 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4936       (\%161. ((%63 ((%171 $19) (((%203 $2) $1) $0))) ((%53 ((($13 $2) $1)
4937       $0)) (((%525 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%9
4938       (\%162. ((%63 ((%171 $19) (((%204 $2) $1) $0))) ((%53 ((($12 $2) $1)
4939       $0)) (((%526 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4940       (\%161. ((%63 ((%171 $19) (((%205 $2) $1) $0))) ((%53 ((($11 $2) $1)
4941       $0)) (((%527 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4942       (\%161. ((%63 ((%171 $19) (((%206 $2) $1) $0))) ((%53 ((($10 $2) $1)
4943       $0)) (((%528 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84
4944       (\%161. ((%63 ((%171 $19) (((%207 $2) $1) $0))) ((%53 ((($9 $2) $1)
4945       $0)) (((%529 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239
4946       (\%164. ((%63 ((%171 $19) (((%208 $2) $1) $0))) ((%53 ((($8 $2) $1)
4947       $0)) (((%530 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239
4948       (\%164. ((%63 ((%171 $19) (((%209 $2) $1) $0))) ((%53 ((($7 $2) $1)
4949       $0)) (((%531 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239
4950       (\%164. ((%63 ((%171 $19) (((%210 $2) $1) $0))) ((%53 ((($6 $2) $1)
4951       $0)) (((%532 $2) $1) $0)))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239
4952       (\%164. ((%63 ((%171 $19) (((%211 $2) $1) $0))) ((%53 ((($5 $2) $1)
4953       $0)) (((%533 $2) $1) $0)))))))))) ((%8 (%14 (\%166. (%240 (\%168.
4954       ((%63 ((%171 $18) ((%212 $1) $0))) ((%53 (($3 $1) $0)) ((%534 $1)
4955       $0)))))))) (%14 (\%166. (%240 (\%168. ((%63 ((%171 $18) ((%213 $1)
4956       $0))) ((%53 (($2 $1) $0)) ((%535 $1) $0))))))))))))))))))))))))
4957       ((%53 (((((((((((((((((%238 $15) $14) $13) $12) $11) $10) $9) $8)
4958       $7) $6) $5) $4) $3) $2) $1) $0) $17)) (((((((((((((((((%238 %520)
4959       %521) %522) %523) %524) %525) %526) %527) %528) %529) %530) %531)
4960       %532) %533) %534) %535) $16)))))))))))))))))))))))))))))))))))))))`)
4961  val DOPER_nchotomy =
4962    DT(["DISK_THM"], [],
4963       `(%169 (\%536. ((%65 (%66 (\%453. (%135 (\%537. ((%171 $2) ((%198
4964       $1) $0))))))) ((%65 (%135 (\%537. (%66 (\%453. ((%171 $2) ((%199 $1)
4965       $0))))))) ((%65 (%66 (\%453. (%157 (\%538. ((%171 $2) ((%200 $1)
4966       $0))))))) ((%65 (%66 (\%453. (%66 (\%539. (%157 (\%540. ((%171 $3)
4967       (((%201 $2) $1) $0))))))))) ((%65 (%66 (\%453. (%66 (\%539. (%157
4968       (\%540. ((%171 $3) (((%202 $2) $1) $0))))))))) ((%65 (%66 (\%453.
4969       (%66 (\%539. (%157 (\%540. ((%171 $3) (((%203 $2) $1) $0)))))))))
4970       ((%65 (%66 (\%453. (%66 (\%539. (%66 (\%541. ((%171 $3) (((%204 $2)
4971       $1) $0))))))))) ((%65 (%66 (\%453. (%66 (\%539. (%157 (\%540. ((%171
4972       $3) (((%205 $2) $1) $0))))))))) ((%65 (%66 (\%453. (%66 (\%539.
4973       (%157 (\%540. ((%171 $3) (((%206 $2) $1) $0))))))))) ((%65 (%66
4974       (\%453. (%66 (\%539. (%157 (\%540. ((%171 $3) (((%207 $2) $1)
4975       $0))))))))) ((%65 (%66 (\%453. (%66 (\%539. (%163 (\%542. ((%171 $3)
4976       (((%208 $2) $1) $0))))))))) ((%65 (%66 (\%453. (%66 (\%539. (%163
4977       (\%542. ((%171 $3) (((%209 $2) $1) $0))))))))) ((%65 (%66 (\%453.
4978       (%66 (\%539. (%163 (\%542. ((%171 $3) (((%210 $2) $1) $0)))))))))
4979       ((%65 (%66 (\%453. (%66 (\%539. (%163 (\%542. ((%171 $3) (((%211 $2)
4980       $1) $0))))))))) ((%65 (%165 (\%3. (%167 (\%543. ((%171 $2) ((%212
4981       $1) $0))))))) (%165 (\%3. (%167 (\%543. ((%171 $2) ((%213 $1)
4982       $0)))))))))))))))))))))))`)
4983  val DOPER_Axiom =
4984    DT(["DISK_THM"], [],
4985       `(%214 (\%544. (%216 (\%217. (%218 (\%219. (%220 (\%221. (%220
4986       (\%222. (%220 (\%223. (%224 (\%225. (%220 (\%226. (%220 (\%227.
4987       (%220 (\%228. (%229 (\%230. (%229 (\%231. (%229 (\%232. (%229
4988       (\%233. (%234 (\%235. (%234 (\%236. (%545 (\%546. ((%8 (%9 (\%134.
4989       (%237 (\%136. ((%53 ($2 ((%198 $1) $0))) (($18 $1) $0))))))) ((%8
4990       (%237 (\%155. (%9 (\%156. ((%53 ($2 ((%199 $1) $0))) (($17 $1)
4991       $0))))))) ((%8 (%9 (\%134. (%84 (\%158. ((%53 ($2 ((%200 $1) $0)))
4992       (($16 $1) $0))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161. ((%53
4993       ($3 (((%201 $2) $1) $0))) ((($16 $2) $1) $0))))))))) ((%8 (%9
4994       (\%134. (%9 (\%156. (%84 (\%161. ((%53 ($3 (((%202 $2) $1) $0)))
4995       ((($15 $2) $1) $0))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161.
4996       ((%53 ($3 (((%203 $2) $1) $0))) ((($14 $2) $1) $0))))))))) ((%8 (%9
4997       (\%134. (%9 (\%156. (%9 (\%162. ((%53 ($3 (((%204 $2) $1) $0)))
4998       ((($13 $2) $1) $0))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161.
4999       ((%53 ($3 (((%205 $2) $1) $0))) ((($12 $2) $1) $0))))))))) ((%8 (%9
5000       (\%134. (%9 (\%156. (%84 (\%161. ((%53 ($3 (((%206 $2) $1) $0)))
5001       ((($11 $2) $1) $0))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%84 (\%161.
5002       ((%53 ($3 (((%207 $2) $1) $0))) ((($10 $2) $1) $0))))))))) ((%8 (%9
5003       (\%134. (%9 (\%156. (%239 (\%164. ((%53 ($3 (((%208 $2) $1) $0)))
5004       ((($9 $2) $1) $0))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164.
5005       ((%53 ($3 (((%209 $2) $1) $0))) ((($8 $2) $1) $0))))))))) ((%8 (%9
5006       (\%134. (%9 (\%156. (%239 (\%164. ((%53 ($3 (((%210 $2) $1) $0)))
5007       ((($7 $2) $1) $0))))))))) ((%8 (%9 (\%134. (%9 (\%156. (%239 (\%164.
5008       ((%53 ($3 (((%211 $2) $1) $0))) ((($6 $2) $1) $0))))))))) ((%8 (%14
5009       (\%166. (%240 (\%168. ((%53 ($2 ((%212 $1) $0))) (($4 $1) $0)))))))
5010       (%14 (\%166. (%240 (\%168. ((%53 ($2 ((%213 $1) $0))) (($3 $1)
5011       $0)))))))))))))))))))))))))))))))))))))))))))))))))))))))`)
5012  val DOPER_induction =
5013    DT(["DISK_THM"], [],
5014       `(%547 (\%548. ((%63 ((%8 (%9 (\%453. (%237 (\%537. ($2 ((%198 $1)
5015       $0))))))) ((%8 (%237 (\%537. (%9 (\%453. ($2 ((%199 $1) $0)))))))
5016       ((%8 (%9 (\%453. (%84 (\%538. ($2 ((%200 $1) $0))))))) ((%8 (%9
5017       (\%453. (%9 (\%539. (%84 (\%540. ($3 (((%201 $2) $1) $0)))))))))
5018       ((%8 (%9 (\%453. (%9 (\%539. (%84 (\%540. ($3 (((%202 $2) $1)
5019       $0))))))))) ((%8 (%9 (\%453. (%9 (\%539. (%84 (\%540. ($3 (((%203
5020       $2) $1) $0))))))))) ((%8 (%9 (\%453. (%9 (\%539. (%9 (\%541. ($3
5021       (((%204 $2) $1) $0))))))))) ((%8 (%9 (\%453. (%9 (\%539. (%84
5022       (\%540. ($3 (((%205 $2) $1) $0))))))))) ((%8 (%9 (\%453. (%9 (\%539.
5023       (%84 (\%540. ($3 (((%206 $2) $1) $0))))))))) ((%8 (%9 (\%453. (%9
5024       (\%539. (%84 (\%540. ($3 (((%207 $2) $1) $0))))))))) ((%8 (%9
5025       (\%453. (%9 (\%539. (%239 (\%542. ($3 (((%208 $2) $1) $0)))))))))
5026       ((%8 (%9 (\%453. (%9 (\%539. (%239 (\%542. ($3 (((%209 $2) $1)
5027       $0))))))))) ((%8 (%9 (\%453. (%9 (\%539. (%239 (\%542. ($3 (((%210
5028       $2) $1) $0))))))))) ((%8 (%9 (\%453. (%9 (\%539. (%239 (\%542. ($3
5029       (((%211 $2) $1) $0))))))))) ((%8 (%14 (\%3. (%240 (\%543. ($2 ((%212
5030       $1) $0))))))) (%14 (\%3. (%240 (\%543. ($2 ((%213 $1)
5031       $0)))))))))))))))))))))) (%169 (\%536. ($1 $0))))))`)
5032  val datatype_CTL_STRUCTURE =
5033    DT(["DISK_THM"], [], `(%450 ((((%549 %288) %289) %290) %291))`)
5034  val CTL_STRUCTURE_11 =
5035    DT(["DISK_THM"], [],
5036       `((%8 (%300 (\%255. (%300 (\%550. ((%16 ((%273 (%288 $1)) (%288
5037       $0))) ((%551 $1) $0))))))) ((%8 (%271 (\%281. (%271 (\%282. (%271
5038       (\%552. (%271 (\%553. ((%16 ((%273 ((%289 $3) $2)) ((%289 $1) $0)))
5039       ((%8 ((%273 $3) $1)) ((%273 $2) $0)))))))))))) ((%8 (%302 (\%269.
5040       (%271 (\%282. (%271 (\%285. (%302 (\%554. (%271 (\%553. (%271
5041       (\%555. ((%16 ((%273 (((%290 $5) $4) $3)) (((%290 $2) $1) $0))) ((%8
5042       ((%556 $5) $2)) ((%8 ((%273 $4) $1)) ((%273 $3) $0)))))))))))))))))
5043       (%302 (\%269. (%271 (\%282. (%302 (\%554. (%271 (\%553. ((%16 ((%273
5044       ((%291 $3) $2)) ((%291 $1) $0))) ((%8 ((%556 $3) $1)) ((%273 $2)
5045       $0))))))))))))))`)
5046  val CTL_STRUCTURE_distinct =
5047    DT(["DISK_THM"], [],
5048       `((%8 (%271 (\%282. (%271 (\%281. (%300 (\%255. (%452 ((%273 (%288
5049       $0)) ((%289 $1) $2)))))))))) ((%8 (%271 (\%285. (%271 (\%282. (%302
5050       (\%269. (%300 (\%255. (%452 ((%273 (%288 $0)) (((%290 $1) $2)
5051       $3)))))))))))) ((%8 (%271 (\%282. (%302 (\%269. (%300 (\%255. (%452
5052       ((%273 (%288 $0)) ((%291 $1) $2)))))))))) ((%8 (%271 (\%285. (%271
5053       (\%553. (%271 (\%282. (%302 (\%554. (%271 (\%281. (%452 ((%273
5054       ((%289 $0) $2)) (((%290 $1) $3) $4)))))))))))))) ((%8 (%271 (\%553.
5055       (%271 (\%282. (%302 (\%554. (%271 (\%281. (%452 ((%273 ((%289 $0)
5056       $2)) ((%291 $1) $3)))))))))))) (%271 (\%285. (%271 (\%553. (%271
5057       (\%282. (%302 (\%554. (%302 (\%269. (%452 ((%273 (((%290 $0) $2)
5058       $4)) ((%291 $1) $3))))))))))))))))))`)
5059  val CTL_STRUCTURE_case_cong =
5060    DT(["DISK_THM"], [],
5061       `(%271 (\%557. (%271 (\%558. (%292 (\%293. (%294 (\%295. (%296
5062       (\%297. (%298 (\%299. ((%63 ((%8 ((%273 $5) $4)) ((%8 (%300 (\%255.
5063       ((%63 ((%273 $5) (%288 $0))) ((%53 ($4 $0)) (%559 $0)))))) ((%8
5064       (%271 (\%281. (%271 (\%282. ((%63 ((%273 $6) ((%289 $1) $0))) ((%53
5065       (($4 $1) $0)) ((%560 $1) $0)))))))) ((%8 (%302 (\%269. (%271 (\%282.
5066       (%271 (\%285. ((%63 ((%273 $7) (((%290 $2) $1) $0))) ((%53 ((($4 $2)
5067       $1) $0)) (((%561 $2) $1) $0)))))))))) (%302 (\%269. (%271 (\%282.
5068       ((%63 ((%273 $6) ((%291 $1) $0))) ((%53 (($2 $1) $0)) ((%562 $1)
5069       $0)))))))))))) ((%53 (((((%301 $3) $2) $1) $0) $5)) (((((%301 %559)
5070       %560) %561) %562) $4)))))))))))))))`)
5071  val CTL_STRUCTURE_nchotomy =
5072    DT(["DISK_THM"], [],
5073       `(%271 (\%563. ((%65 (%254 (\%564. ((%273 $1) (%288 $0))))) ((%65
5074       (%565 (\%563. (%565 (\%566. ((%273 $2) ((%289 $1) $0))))))) ((%65
5075       (%268 (\%567. (%565 (\%563. (%565 (\%566. ((%273 $3) (((%290 $2) $1)
5076       $0))))))))) (%268 (\%567. (%565 (\%563. ((%273 $2) ((%291 $1)
5077       $0)))))))))))`)
5078  val CTL_STRUCTURE_Axiom =
5079    DT(["DISK_THM"], [],
5080       `(%292 (\%568. (%569 (\%570. (%571 (\%572. (%573 (\%574. (%575
5081       (\%576. ((%8 (%300 (\%255. ((%53 ($1 (%288 $0))) ($5 $0))))) ((%8
5082       (%271 (\%281. (%271 (\%282. ((%53 ($2 ((%289 $1) $0))) (((($5 $1)
5083       $0) ($2 $1)) ($2 $0)))))))) ((%8 (%302 (\%269. (%271 (\%282. (%271
5084       (\%285. ((%53 ($3 (((%290 $2) $1) $0))) ((((($5 $2) $1) $0) ($3 $1))
5085       ($3 $0)))))))))) (%302 (\%269. (%271 (\%282. ((%53 ($2 ((%291 $1)
5086       $0))) ((($3 $1) $0) ($2 $0))))))))))))))))))))`)
5087  val CTL_STRUCTURE_induction =
5088    DT(["DISK_THM"], [],
5089       `(%577 (\%578. ((%63 ((%8 (%300 (\%564. ($1 (%288 $0))))) ((%8 (%271
5090       (\%563. (%271 (\%566. ((%63 ((%8 ($2 $1)) ($2 $0))) ($2 ((%289 $1)
5091       $0)))))))) ((%8 (%271 (\%563. (%271 (\%566. ((%63 ((%8 ($2 $1)) ($2
5092       $0))) (%302 (\%567. ($3 (((%290 $0) $2) $1)))))))))) (%271 (\%563.
5093       ((%63 ($1 $0)) (%302 (\%567. ($2 ((%291 $0) $1))))))))))) (%271
5094       (\%563. ($1 $0))))))`)
5095  val TRANSLATE_ASSIGMENT_CORRECT =
5096    DT(["DISK_THM"], [],
5097       `(%169 (\%405. (%14 (\%425. (%426 (\%427. (%311 (\%312. ((%579
5098       ((%433 (%81 $2)) ((%434 $1) ((%336 $0) $3)))) ((%580 ((%433 $2)
5099       ((%434 $1) $0))) (%355 $3)))))))))))`)
5100  val TRANSLATE_ASSIGMENT_CORRECT_2 =
5101    DT(["DISK_THM"], [],
5102       `(%169 (\%405. (%581 (\%582. ((%579 ((%580 $0) (%355 $1))) ((%433
5103       (%81 (%583 $0))) ((%434 (%584 (%585 $0))) ((%336 (%586 (%585 $0)))
5104       $1))))))))`)
5105  val translate_ind =
5106    DT(["DISK_THM"], [],
5107       `(%577 (\%578. ((%63 ((%8 (%169 (\%405. (%300 (\%406. ((%63 ($2
5108       (%288 $0))) ($2 (%288 ((%407 $1) $0))))))))) ((%8 ($0 (%288 %587)))
5109       ((%8 (%271 (\%408. (%271 (\%409. ((%63 ((%8 ($2 $1)) ($2 $0))) ($2
5110       ((%289 $1) $0)))))))) ((%8 (%302 (\%394. (%271 (\%411. (%271 (\%410.
5111       ((%63 ((%8 ($3 $0)) ($3 $1))) ($3 (((%290 $2) $1) $0)))))))))) (%302
5112       (\%394. (%271 (\%412. ((%63 ($2 $0)) ($2 ((%291 $1) $0))))))))))))
5113       (%271 (\%588. ($1 $0))))))`)
5114  val translate_def =
5115    DT(["DISK_THM"], [],
5116       `((%8 ((%589 (%400 (%288 ((%407 %405) %406)))) ((%418 (%355 %405))
5117       (%400 (%288 %406))))) ((%8 ((%589 (%400 (%288 %587))) %417)) ((%8
5118       ((%589 (%400 ((%289 %408) %409))) ((%419 (%400 %408)) (%400 %409))))
5119       ((%8 ((%589 (%400 (((%290 %394) %411) %410))) (((%420 (%398 %394))
5120       (%400 %411)) (%400 %410)))) ((%589 (%400 ((%291 %394) %412))) ((%422
5121       (%398 %394)) (%400 %412)))))))`)
5122  val WELL_FORMED_SUB_thm =
5123    DT(["DISK_THM"], [],
5124       `(%271 (\%439. ((%16 (%443 $0)) ((%8 (%447 $0)) (%444 (%400
5125       $0))))))`)
5126  val HOARE_SC_IR =
5127    DT(["DISK_THM"], [],
5128       `(%271 (\%590. (%271 (\%591. (%592 (\%593. (%592 (\%594. (%592
5129       (\%595. (%592 (\%596. ((%63 ((%8 (%443 $5)) ((%8 (%443 $4)) ((%8
5130       (%311 (\%312. ((%63 ($4 $0)) ($3 ((%440 $6) $0)))))) ((%8 (%311
5131       (\%312. ((%63 ($2 $0)) ($1 ((%440 $5) $0)))))) (%311 (\%312. ((%63
5132       ($3 $0)) ($2 $0))))))))) (%311 (\%312. ((%63 ($4 $0)) ($1 ((%440
5133       ((%289 $6) $5)) $0))))))))))))))))))`)
5134  val HOARE_CJ_IR =
5135    DT(["DISK_THM"], [],
5136       `(%302 (\%394. (%271 (\%597. (%271 (\%598. (%592 (\%593. (%592
5137       (\%594. (%592 (\%595. ((%63 ((%8 (%443 $4)) ((%8 (%443 $3)) ((%8
5138       (%311 (\%312. ((%63 ($3 $0)) ($2 ((%440 $5) $0)))))) (%311 (\%312.
5139       ((%63 ($3 $0)) ($1 ((%440 $4) $0))))))))) (%311 (\%312. ((%63 ($3
5140       $0)) (((%599 ((%396 $6) $0)) ($2 ((%440 (((%290 $6) $5) $4)) $0)))
5141       ($1 ((%440 (((%290 $6) $5) $4)) $0)))))))))))))))))))`)
5142  val HOARE_TR_IR =
5143    DT(["DISK_THM"], [],
5144       `(%302 (\%394. (%271 (\%439. (%592 (\%593. ((%63 ((%8 (%443 $1))
5145       ((%8 (%445 ((%446 (%398 $2)) (%400 $1)))) (%311 (\%312. ((%63 ($1
5146       $0)) ($1 ((%440 $2) $0)))))))) (%311 (\%312. ((%63 ($1 $0)) ((%8 ($1
5147       ((%440 ((%291 $3) $2)) $0))) ((%396 $3) ((%440 ((%291 $3) $2))
5148       $0)))))))))))))`)
5149  val UPLOAD_LEM_2 =
5150    DT(["DISK_THM"], [],
5151       `(%600 (\%601. (%602 (\%603. (%604 (\%605. ((%606 ((((%607 ((%608
5152       $1) %609)) $0) (%610 $2)) (%610 $2))) $1)))))))`)
5153  val STATEMENT_IS_WELL_FORMED =
5154    DT(["DISK_THM"], [], `(%169 (\%405. (%444 ((%418 (%355 $0)) %417))))`)
5155  val BLOCK_IS_WELL_FORMED =
5156    DT(["DISK_THM"], [], `(%300 (\%406. (%443 (%288 $0))))`)
5157  val IR_SC_IS_WELL_FORMED =
5158    DT(["DISK_THM"], [],
5159       `(%271 (\%590. (%271 (\%591. ((%16 ((%8 (%443 $1)) (%443 $0))) (%443
5160       ((%289 $1) $0)))))))`)
5161  val IR_CJ_IS_WELL_FORMED =
5162    DT(["DISK_THM"], [],
5163       `(%302 (\%394. (%271 (\%597. (%271 (\%598. ((%16 ((%8 (%443 $1))
5164       (%443 $0))) (%443 (((%290 $2) $1) $0)))))))))`)
5165  val IR_TR_IS_WELL_FORMED =
5166    DT(["DISK_THM"], [],
5167       `(%271 (\%439. (%302 (\%394. ((%16 ((%8 (%443 $1)) (%445 ((%446
5168       (%398 $0)) (%400 $1))))) (%443 ((%291 $0) $1)))))))`)
5169  val WELL_FORMED_thm =
5170    DT(["DISK_THM"], [],
5171       `((%8 ((%16 (%443 (%288 %406))) %73)) ((%8 ((%16 (%443 ((%289 %408)
5172       %409))) ((%8 (%443 %408)) (%443 %409)))) ((%8 ((%16 (%443 (((%290
5173       %394) %408) %409))) ((%8 (%443 %408)) (%443 %409)))) ((%16 (%443
5174       ((%291 %394) %408))) ((%8 (%443 %408)) (%445 ((%446 (%398 %394))
5175       (%400 %408))))))))`)
5176  val IR_SEMANTICS_SC =
5177    DT(["DISK_THM"], [],
5178       `((%63 ((%8 (%443 %590)) (%443 %591))) ((%315 ((%440 ((%289 %590)
5179       %591)) %312)) ((%440 %591) ((%440 %590) %312))))`)
5180  val IR_SEMANTICS_BLK =
5181    DT(["DISK_THM"], [],
5182       `((%8 ((%315 ((%440 (%288 ((%407 %405) %406))) %312)) ((%440 (%288
5183       %406)) ((%336 %312) %405)))) ((%315 ((%440 (%288 %587)) %312))
5184       %312))`)
5185  val IR_SEMANTICS_CJ =
5186    DT(["DISK_THM"], [],
5187       `((%63 ((%8 (%443 %597)) (%443 %598))) ((%315 ((%440 (((%290 %394)
5188       %597) %598)) %312)) (((%611 ((%396 %394) %312)) ((%440 %597) %312))
5189       ((%440 %598) %312))))`)
5190  val IR_SEMANTICS_TR =
5191    DT(["DISK_THM"], [],
5192       `((%63 ((%8 (%443 %439)) (%445 ((%446 (%398 %394)) (%400 %439)))))
5193       ((%315 ((%440 ((%291 %394) %439)) %312)) (((%612 (\%613. (%452
5194       ((%396 %394) $0)))) (%440 %439)) %312)))`)
5195  val SEMANTICS_OF_IR =
5196    DT(["DISK_THM"], [],
5197       `((%63 ((%8 (%443 %590)) (%443 %591))) ((%8 ((%315 ((%440 (%288
5198       ((%407 %405) %406))) %312)) ((%440 (%288 %406)) ((%336 %312)
5199       %405)))) ((%8 ((%315 ((%440 (%288 %587)) %312)) %312)) ((%8 ((%315
5200       ((%440 ((%289 %590) %591)) %312)) ((%440 %591) ((%440 %590) %312))))
5201       ((%8 ((%315 ((%440 (((%290 %394) %590) %591)) %312)) (((%611 ((%396
5202       %394) %312)) ((%440 %590) %312)) ((%440 %591) %312)))) ((%63 (%445
5203       ((%446 (%398 %394)) (%400 %590)))) ((%315 ((%440 ((%291 %394) %590))
5204       %312)) (((%612 (\%613. (%452 ((%396 %394) $0)))) (%440 %590))
5205       %312))))))))`)
5206  end
5207  val _ = DB.bindl "IL"
5208  [("MREG_TY_DEF",MREG_TY_DEF,DB.Def), ("MREG_BIJ",MREG_BIJ,DB.Def),
5209   ("R0",R0,DB.Def), ("R1",R1,DB.Def), ("R2",R2,DB.Def), ("R3",R3,DB.Def),
5210   ("R4",R4,DB.Def), ("R5",R5,DB.Def), ("R6",R6,DB.Def), ("R7",R7,DB.Def),
5211   ("R8",R8,DB.Def), ("R9",R9,DB.Def), ("R10",R10,DB.Def),
5212   ("R11",R11,DB.Def), ("R12",R12,DB.Def), ("R13",R13,DB.Def),
5213   ("R14",R14,DB.Def), ("MREG_size_def",MREG_size_def,DB.Def),
5214   ("MREG_case",MREG_case,DB.Def), ("MEXP_TY_DEF",MEXP_TY_DEF,DB.Def),
5215   ("MEXP_repfns",MEXP_repfns,DB.Def), ("IL0_def",IL0_def,DB.Def),
5216   ("IL1_def",IL1_def,DB.Def), ("MR",MR,DB.Def), ("MC",MC,DB.Def),
5217   ("MEXP_case_def",MEXP_case_def,DB.Def),
5218   ("MEXP_size_def",MEXP_size_def,DB.Def),
5219   ("index_of_reg_def",index_of_reg_def,DB.Def),
5220   ("from_reg_index_def",from_reg_index_def,DB.Def),
5221   ("toREG_def",toREG_def,DB.Def), ("toMEM_def",toMEM_def,DB.Def),
5222   ("toEXP_def",toEXP_def,DB.Def), ("DOPER_TY_DEF",DOPER_TY_DEF,DB.Def),
5223   ("DOPER_repfns",DOPER_repfns,DB.Def), ("IL2_def",IL2_def,DB.Def),
5224   ("IL3_def",IL3_def,DB.Def), ("IL4_def",IL4_def,DB.Def),
5225   ("IL5_def",IL5_def,DB.Def), ("IL6_def",IL6_def,DB.Def),
5226   ("IL7_def",IL7_def,DB.Def), ("IL8_def",IL8_def,DB.Def),
5227   ("IL9_def",IL9_def,DB.Def), ("IL10_def",IL10_def,DB.Def),
5228   ("IL11_def",IL11_def,DB.Def), ("IL12_def",IL12_def,DB.Def),
5229   ("IL13_def",IL13_def,DB.Def), ("IL14_def",IL14_def,DB.Def),
5230   ("IL15_def",IL15_def,DB.Def), ("IL16_def",IL16_def,DB.Def),
5231   ("IL17_def",IL17_def,DB.Def), ("MLDR",MLDR,DB.Def),
5232   ("MSTR",MSTR,DB.Def), ("MMOV",MMOV,DB.Def), ("MADD",MADD,DB.Def),
5233   ("MSUB",MSUB,DB.Def), ("MRSB",MRSB,DB.Def), ("MMUL",MMUL,DB.Def),
5234   ("MAND",MAND,DB.Def), ("MORR",MORR,DB.Def), ("MEOR",MEOR,DB.Def),
5235   ("MLSL",MLSL,DB.Def), ("MLSR",MLSR,DB.Def), ("MASR",MASR,DB.Def),
5236   ("MROR",MROR,DB.Def), ("MPUSH",MPUSH,DB.Def), ("MPOP",MPOP,DB.Def),
5237   ("DOPER_case_def",DOPER_case_def,DB.Def),
5238   ("DOPER_size_def",DOPER_size_def,DB.Def),
5239   ("CTL_STRUCTURE_TY_DEF",CTL_STRUCTURE_TY_DEF,DB.Def),
5240   ("CTL_STRUCTURE_repfns",CTL_STRUCTURE_repfns,DB.Def),
5241   ("IL18_def",IL18_def,DB.Def), ("IL19_def",IL19_def,DB.Def),
5242   ("IL20_def",IL20_def,DB.Def), ("IL21_def",IL21_def,DB.Def),
5243   ("BLK",BLK,DB.Def), ("SC",SC,DB.Def), ("CJ",CJ,DB.Def),
5244   ("TR",TR,DB.Def),
5245   ("CTL_STRUCTURE_case_def",CTL_STRUCTURE_case_def,DB.Def),
5246   ("CTL_STRUCTURE_size_def",CTL_STRUCTURE_size_def,DB.Def),
5247   ("pushL_def",pushL_def,DB.Def), ("popL_def",popL_def,DB.Def),
5248   ("mdecode_def",mdecode_def,DB.Def),
5249   ("translate_assignment_def",translate_assignment_def,DB.Def),
5250   ("translate_condition_def",translate_condition_def,DB.Def),
5251   ("eval_il_cond_def",eval_il_cond_def,DB.Def),
5252   ("translate_primitive_def",translate_primitive_def,DB.Def),
5253   ("run_arm_def",run_arm_def,DB.Def), ("run_ir_def",run_ir_def,DB.Def),
5254   ("WELL_FORMED_def",WELL_FORMED_def,DB.Def),
5255   ("WELL_FORMED_SUB_def",WELL_FORMED_SUB_def,DB.Def),
5256   ("num2MREG_MREG2num",num2MREG_MREG2num,DB.Thm),
5257   ("MREG2num_num2MREG",MREG2num_num2MREG,DB.Thm),
5258   ("num2MREG_11",num2MREG_11,DB.Thm), ("MREG2num_11",MREG2num_11,DB.Thm),
5259   ("num2MREG_ONTO",num2MREG_ONTO,DB.Thm),
5260   ("MREG2num_ONTO",MREG2num_ONTO,DB.Thm),
5261   ("num2MREG_thm",num2MREG_thm,DB.Thm),
5262   ("MREG2num_thm",MREG2num_thm,DB.Thm),
5263   ("MREG_EQ_MREG",MREG_EQ_MREG,DB.Thm),
5264   ("MREG_case_def",MREG_case_def,DB.Thm),
5265   ("datatype_MREG",datatype_MREG,DB.Thm),
5266   ("MREG_distinct",MREG_distinct,DB.Thm),
5267   ("MREG_case_cong",MREG_case_cong,DB.Thm),
5268   ("MREG_nchotomy",MREG_nchotomy,DB.Thm),
5269   ("MREG_Axiom",MREG_Axiom,DB.Thm),
5270   ("MREG_induction",MREG_induction,DB.Thm),
5271   ("datatype_MEXP",datatype_MEXP,DB.Thm), ("MEXP_11",MEXP_11,DB.Thm),
5272   ("MEXP_distinct",MEXP_distinct,DB.Thm),
5273   ("MEXP_case_cong",MEXP_case_cong,DB.Thm),
5274   ("MEXP_nchotomy",MEXP_nchotomy,DB.Thm),
5275   ("MEXP_Axiom",MEXP_Axiom,DB.Thm),
5276   ("MEXP_induction",MEXP_induction,DB.Thm),
5277   ("from_reg_index_thm",from_reg_index_thm,DB.Thm),
5278   ("datatype_DOPER",datatype_DOPER,DB.Thm), ("DOPER_11",DOPER_11,DB.Thm),
5279   ("DOPER_distinct",DOPER_distinct,DB.Thm),
5280   ("DOPER_case_cong",DOPER_case_cong,DB.Thm),
5281   ("DOPER_nchotomy",DOPER_nchotomy,DB.Thm),
5282   ("DOPER_Axiom",DOPER_Axiom,DB.Thm),
5283   ("DOPER_induction",DOPER_induction,DB.Thm),
5284   ("datatype_CTL_STRUCTURE",datatype_CTL_STRUCTURE,DB.Thm),
5285   ("CTL_STRUCTURE_11",CTL_STRUCTURE_11,DB.Thm),
5286   ("CTL_STRUCTURE_distinct",CTL_STRUCTURE_distinct,DB.Thm),
5287   ("CTL_STRUCTURE_case_cong",CTL_STRUCTURE_case_cong,DB.Thm),
5288   ("CTL_STRUCTURE_nchotomy",CTL_STRUCTURE_nchotomy,DB.Thm),
5289   ("CTL_STRUCTURE_Axiom",CTL_STRUCTURE_Axiom,DB.Thm),
5290   ("CTL_STRUCTURE_induction",CTL_STRUCTURE_induction,DB.Thm),
5291   ("TRANSLATE_ASSIGMENT_CORRECT",TRANSLATE_ASSIGMENT_CORRECT,DB.Thm),
5292   ("TRANSLATE_ASSIGMENT_CORRECT_2",TRANSLATE_ASSIGMENT_CORRECT_2,DB.Thm),
5293   ("translate_ind",translate_ind,DB.Thm),
5294   ("translate_def",translate_def,DB.Thm),
5295   ("WELL_FORMED_SUB_thm",WELL_FORMED_SUB_thm,DB.Thm),
5296   ("HOARE_SC_IR",HOARE_SC_IR,DB.Thm), ("HOARE_CJ_IR",HOARE_CJ_IR,DB.Thm),
5297   ("HOARE_TR_IR",HOARE_TR_IR,DB.Thm),
5298   ("UPLOAD_LEM_2",UPLOAD_LEM_2,DB.Thm),
5299   ("STATEMENT_IS_WELL_FORMED",STATEMENT_IS_WELL_FORMED,DB.Thm),
5300   ("BLOCK_IS_WELL_FORMED",BLOCK_IS_WELL_FORMED,DB.Thm),
5301   ("IR_SC_IS_WELL_FORMED",IR_SC_IS_WELL_FORMED,DB.Thm),
5302   ("IR_CJ_IS_WELL_FORMED",IR_CJ_IS_WELL_FORMED,DB.Thm),
5303   ("IR_TR_IS_WELL_FORMED",IR_TR_IS_WELL_FORMED,DB.Thm),
5304   ("WELL_FORMED_thm",WELL_FORMED_thm,DB.Thm),
5305   ("IR_SEMANTICS_SC",IR_SEMANTICS_SC,DB.Thm),
5306   ("IR_SEMANTICS_BLK",IR_SEMANTICS_BLK,DB.Thm),
5307   ("IR_SEMANTICS_CJ",IR_SEMANTICS_CJ,DB.Thm),
5308   ("IR_SEMANTICS_TR",IR_SEMANTICS_TR,DB.Thm),
5309   ("SEMANTICS_OF_IR",SEMANTICS_OF_IR,DB.Thm)]
5310
5311  local open Portable GrammarSpecials Parse
5312  in
5313  val _ = mk_local_grms [("ARMCompositionTheory.ARMComposition_grammars",
5314                          ARMCompositionTheory.ARMComposition_grammars)]
5315  val _ = List.app (update_grms reveal) []
5316  val _ = update_grms temp_add_type "MREG"
5317  val _ = update_grms
5318       (temp_overload_on_by_nametype "MREG2num")
5319        {Name = "MREG2num", Thy = "IL"}
5320  val _ = update_grms
5321       (temp_overload_on_by_nametype "num2MREG")
5322        {Name = "num2MREG", Thy = "IL"}
5323  val _ = update_grms
5324       (temp_overload_on_by_nametype "R0")
5325        {Name = "R0", Thy = "IL"}
5326  val _ = update_grms
5327       (temp_overload_on_by_nametype "R1")
5328        {Name = "R1", Thy = "IL"}
5329  val _ = update_grms
5330       (temp_overload_on_by_nametype "R2")
5331        {Name = "R2", Thy = "IL"}
5332  val _ = update_grms
5333       (temp_overload_on_by_nametype "R3")
5334        {Name = "R3", Thy = "IL"}
5335  val _ = update_grms
5336       (temp_overload_on_by_nametype "R4")
5337        {Name = "R4", Thy = "IL"}
5338  val _ = update_grms
5339       (temp_overload_on_by_nametype "R5")
5340        {Name = "R5", Thy = "IL"}
5341  val _ = update_grms
5342       (temp_overload_on_by_nametype "R6")
5343        {Name = "R6", Thy = "IL"}
5344  val _ = update_grms
5345       (temp_overload_on_by_nametype "R7")
5346        {Name = "R7", Thy = "IL"}
5347  val _ = update_grms
5348       (temp_overload_on_by_nametype "R8")
5349        {Name = "R8", Thy = "IL"}
5350  val _ = update_grms
5351       (temp_overload_on_by_nametype "R9")
5352        {Name = "R9", Thy = "IL"}
5353  val _ = update_grms
5354       (temp_overload_on_by_nametype "R10")
5355        {Name = "R10", Thy = "IL"}
5356  val _ = update_grms
5357       (temp_overload_on_by_nametype "R11")
5358        {Name = "R11", Thy = "IL"}
5359  val _ = update_grms
5360       (temp_overload_on_by_nametype "R12")
5361        {Name = "R12", Thy = "IL"}
5362  val _ = update_grms
5363       (temp_overload_on_by_nametype "R13")
5364        {Name = "R13", Thy = "IL"}
5365  val _ = update_grms
5366       (temp_overload_on_by_nametype "R14")
5367        {Name = "R14", Thy = "IL"}
5368  val _ = update_grms
5369       (temp_overload_on_by_nametype "MREG_size")
5370        {Name = "MREG_size", Thy = "IL"}
5371  val _ = update_grms
5372       (temp_overload_on_by_nametype "MREG_case")
5373        {Name = "MREG_case", Thy = "IL"}
5374  val _ = update_grms
5375       temp_type_abbrev
5376       ("MMEM", T"prod" "pair" [T"num" "num" [], T"OFFSET" "preARM" []])
5377  val _ = update_grms temp_add_type "MEXP"
5378  val _ = update_grms
5379       (temp_overload_on_by_nametype "dest_MEXP")
5380        {Name = "dest_MEXP", Thy = "IL"}
5381  val _ = update_grms
5382       (temp_overload_on_by_nametype "mk_MEXP")
5383        {Name = "mk_MEXP", Thy = "IL"}
5384  val _ = update_grms
5385       (temp_overload_on_by_nametype "IL0")
5386        {Name = "IL0", Thy = "IL"}
5387  val _ = update_grms
5388       (temp_overload_on_by_nametype "IL1")
5389        {Name = "IL1", Thy = "IL"}
5390  val _ = update_grms
5391       (temp_overload_on_by_nametype "MR")
5392        {Name = "MR", Thy = "IL"}
5393  val _ = update_grms
5394       (temp_overload_on_by_nametype "MC")
5395        {Name = "MC", Thy = "IL"}
5396  val _ = update_grms
5397       (temp_overload_on_by_nametype "MEXP_case")
5398        {Name = "MEXP_case", Thy = "IL"}
5399  val _ = update_grms
5400       (temp_overload_on_by_nametype "MEXP_size")
5401        {Name = "MEXP_size", Thy = "IL"}
5402  val _ = update_grms
5403       (temp_overload_on_by_nametype "index_of_reg")
5404        {Name = "index_of_reg", Thy = "IL"}
5405  val _ = update_grms
5406       (temp_overload_on_by_nametype "from_reg_index")
5407        {Name = "from_reg_index", Thy = "IL"}
5408  val _ = update_grms
5409       (temp_overload_on_by_nametype "toREG")
5410        {Name = "toREG", Thy = "IL"}
5411  val _ = update_grms
5412       (temp_overload_on_by_nametype "toMEM")
5413        {Name = "toMEM", Thy = "IL"}
5414  val _ = update_grms
5415       (temp_overload_on_by_nametype "toEXP")
5416        {Name = "toEXP", Thy = "IL"}
5417  val _ = update_grms temp_add_type "DOPER"
5418  val _ = update_grms
5419       (temp_overload_on_by_nametype "dest_DOPER")
5420        {Name = "dest_DOPER", Thy = "IL"}
5421  val _ = update_grms
5422       (temp_overload_on_by_nametype "mk_DOPER")
5423        {Name = "mk_DOPER", Thy = "IL"}
5424  val _ = update_grms
5425       (temp_overload_on_by_nametype "IL2")
5426        {Name = "IL2", Thy = "IL"}
5427  val _ = update_grms
5428       (temp_overload_on_by_nametype "IL3")
5429        {Name = "IL3", Thy = "IL"}
5430  val _ = update_grms
5431       (temp_overload_on_by_nametype "IL4")
5432        {Name = "IL4", Thy = "IL"}
5433  val _ = update_grms
5434       (temp_overload_on_by_nametype "IL5")
5435        {Name = "IL5", Thy = "IL"}
5436  val _ = update_grms
5437       (temp_overload_on_by_nametype "IL6")
5438        {Name = "IL6", Thy = "IL"}
5439  val _ = update_grms
5440       (temp_overload_on_by_nametype "IL7")
5441        {Name = "IL7", Thy = "IL"}
5442  val _ = update_grms
5443       (temp_overload_on_by_nametype "IL8")
5444        {Name = "IL8", Thy = "IL"}
5445  val _ = update_grms
5446       (temp_overload_on_by_nametype "IL9")
5447        {Name = "IL9", Thy = "IL"}
5448  val _ = update_grms
5449       (temp_overload_on_by_nametype "IL10")
5450        {Name = "IL10", Thy = "IL"}
5451  val _ = update_grms
5452       (temp_overload_on_by_nametype "IL11")
5453        {Name = "IL11", Thy = "IL"}
5454  val _ = update_grms
5455       (temp_overload_on_by_nametype "IL12")
5456        {Name = "IL12", Thy = "IL"}
5457  val _ = update_grms
5458       (temp_overload_on_by_nametype "IL13")
5459        {Name = "IL13", Thy = "IL"}
5460  val _ = update_grms
5461       (temp_overload_on_by_nametype "IL14")
5462        {Name = "IL14", Thy = "IL"}
5463  val _ = update_grms
5464       (temp_overload_on_by_nametype "IL15")
5465        {Name = "IL15", Thy = "IL"}
5466  val _ = update_grms
5467       (temp_overload_on_by_nametype "IL16")
5468        {Name = "IL16", Thy = "IL"}
5469  val _ = update_grms
5470       (temp_overload_on_by_nametype "IL17")
5471        {Name = "IL17", Thy = "IL"}
5472  val _ = update_grms
5473       (temp_overload_on_by_nametype "MLDR")
5474        {Name = "MLDR", Thy = "IL"}
5475  val _ = update_grms
5476       (temp_overload_on_by_nametype "MSTR")
5477        {Name = "MSTR", Thy = "IL"}
5478  val _ = update_grms
5479       (temp_overload_on_by_nametype "MMOV")
5480        {Name = "MMOV", Thy = "IL"}
5481  val _ = update_grms
5482       (temp_overload_on_by_nametype "MADD")
5483        {Name = "MADD", Thy = "IL"}
5484  val _ = update_grms
5485       (temp_overload_on_by_nametype "MSUB")
5486        {Name = "MSUB", Thy = "IL"}
5487  val _ = update_grms
5488       (temp_overload_on_by_nametype "MRSB")
5489        {Name = "MRSB", Thy = "IL"}
5490  val _ = update_grms
5491       (temp_overload_on_by_nametype "MMUL")
5492        {Name = "MMUL", Thy = "IL"}
5493  val _ = update_grms
5494       (temp_overload_on_by_nametype "MAND")
5495        {Name = "MAND", Thy = "IL"}
5496  val _ = update_grms
5497       (temp_overload_on_by_nametype "MORR")
5498        {Name = "MORR", Thy = "IL"}
5499  val _ = update_grms
5500       (temp_overload_on_by_nametype "MEOR")
5501        {Name = "MEOR", Thy = "IL"}
5502  val _ = update_grms
5503       (temp_overload_on_by_nametype "MLSL")
5504        {Name = "MLSL", Thy = "IL"}
5505  val _ = update_grms
5506       (temp_overload_on_by_nametype "MLSR")
5507        {Name = "MLSR", Thy = "IL"}
5508  val _ = update_grms
5509       (temp_overload_on_by_nametype "MASR")
5510        {Name = "MASR", Thy = "IL"}
5511  val _ = update_grms
5512       (temp_overload_on_by_nametype "MROR")
5513        {Name = "MROR", Thy = "IL"}
5514  val _ = update_grms
5515       (temp_overload_on_by_nametype "MPUSH")
5516        {Name = "MPUSH", Thy = "IL"}
5517  val _ = update_grms
5518       (temp_overload_on_by_nametype "MPOP")
5519        {Name = "MPOP", Thy = "IL"}
5520  val _ = update_grms
5521       (temp_overload_on_by_nametype "DOPER_case")
5522        {Name = "DOPER_case", Thy = "IL"}
5523  val _ = update_grms
5524       (temp_overload_on_by_nametype "DOPER_size")
5525        {Name = "DOPER_size", Thy = "IL"}
5526  val _ = update_grms
5527       temp_type_abbrev
5528       ("CEXP", T"prod" "pair"
5529 [T"MREG" "IL" [],
5530  T"prod" "pair" [T"COND" "preARM" [], T"MEXP" "IL" []]])
5531  val _ = update_grms temp_add_type "CTL_STRUCTURE"
5532  val _ = update_grms
5533       (temp_overload_on_by_nametype "dest_CTL_STRUCTURE")
5534        {Name = "dest_CTL_STRUCTURE", Thy = "IL"}
5535  val _ = update_grms
5536       (temp_overload_on_by_nametype "mk_CTL_STRUCTURE")
5537        {Name = "mk_CTL_STRUCTURE", Thy = "IL"}
5538  val _ = update_grms
5539       (temp_overload_on_by_nametype "IL18")
5540        {Name = "IL18", Thy = "IL"}
5541  val _ = update_grms
5542       (temp_overload_on_by_nametype "IL19")
5543        {Name = "IL19", Thy = "IL"}
5544  val _ = update_grms
5545       (temp_overload_on_by_nametype "IL20")
5546        {Name = "IL20", Thy = "IL"}
5547  val _ = update_grms
5548       (temp_overload_on_by_nametype "IL21")
5549        {Name = "IL21", Thy = "IL"}
5550  val _ = update_grms
5551       (temp_overload_on_by_nametype "BLK")
5552        {Name = "BLK", Thy = "IL"}
5553  val _ = update_grms
5554       (temp_overload_on_by_nametype "SC")
5555        {Name = "SC", Thy = "IL"}
5556  val _ = update_grms
5557       (temp_overload_on_by_nametype "CJ")
5558        {Name = "CJ", Thy = "IL"}
5559  val _ = update_grms
5560       (temp_overload_on_by_nametype "TR")
5561        {Name = "TR", Thy = "IL"}
5562  val _ = update_grms
5563       (temp_overload_on_by_nametype "CTL_STRUCTURE_case")
5564        {Name = "CTL_STRUCTURE_case", Thy = "IL"}
5565  val _ = update_grms
5566       (temp_overload_on_by_nametype "CTL_STRUCTURE_size")
5567        {Name = "CTL_STRUCTURE_size", Thy = "IL"}
5568  val _ = update_grms
5569       (temp_overload_on_by_nametype "pushL")
5570        {Name = "pushL", Thy = "IL"}
5571  val _ = update_grms
5572       (temp_overload_on_by_nametype "popL")
5573        {Name = "popL", Thy = "IL"}
5574  val _ = update_grms
5575       (temp_overload_on_by_nametype "mdecode")
5576        {Name = "mdecode", Thy = "IL"}
5577  val _ = update_grms
5578       (temp_overload_on_by_nametype "translate_assignment")
5579        {Name = "translate_assignment", Thy = "IL"}
5580  val _ = update_grms
5581       (temp_overload_on_by_nametype "translate_condition")
5582        {Name = "translate_condition", Thy = "IL"}
5583  val _ = update_grms
5584       (temp_overload_on_by_nametype "eval_il_cond")
5585        {Name = "eval_il_cond", Thy = "IL"}
5586  val _ = update_grms
5587       (temp_overload_on_by_nametype "translate")
5588        {Name = "translate", Thy = "IL"}
5589  val _ = update_grms
5590       (temp_overload_on_by_nametype "run_arm")
5591        {Name = "run_arm", Thy = "IL"}
5592  val _ = update_grms
5593       (temp_overload_on_by_nametype "run_ir")
5594        {Name = "run_ir", Thy = "IL"}
5595  val _ = update_grms
5596       (temp_overload_on_by_nametype "WELL_FORMED")
5597        {Name = "WELL_FORMED", Thy = "IL"}
5598  val _ = update_grms
5599       (temp_overload_on_by_nametype "WELL_FORMED_SUB")
5600        {Name = "WELL_FORMED_SUB", Thy = "IL"}
5601  val IL_grammars = Parse.current_lgrms()
5602  end
5603
5604
5605
5606
5607  val _ =
5608    TypeBase.write [
5609      let
5610        open TypeBasePure
5611        val tyinfo0 = mk_datatype_info
5612          {ax=ORIG MREG_Axiom,
5613           case_def=MREG_case_def,
5614           case_cong=MREG_case_cong,
5615           induction=ORIG MREG_induction,
5616           nchotomy=MREG_nchotomy,
5617           size=SOME(Parse.Term`(IL$MREG_size) :(IL$MREG) -> (num$num)`,
5618                     ORIG MREG_size_def),
5619           encode = NONE,
5620           lift=NONE,
5621           one_one=NONE,
5622           distinct=SOME MREG_distinct,
5623           fields=let fun T t s A = mk_thy_type{Thy=t,Tyop=s,Args=A}
5624    val U = mk_vartype
5625in
5626[] end,
5627           accessors=[],
5628           updates=[]}
5629        val tyinfo0 = tyinfo0
5630        val () = computeLib.write_datatype_info tyinfo0
5631      in
5632        tyinfo0
5633      end
5634    ];
5635
5636
5637  val _ =
5638    TypeBase.write [
5639      let
5640        open TypeBasePure
5641        val tyinfo0 = mk_datatype_info
5642          {ax=ORIG MEXP_Axiom,
5643           case_def=MEXP_case_def,
5644           case_cong=MEXP_case_cong,
5645           induction=ORIG MEXP_induction,
5646           nchotomy=MEXP_nchotomy,
5647           size=SOME(Parse.Term`(IL$MEXP_size) :(IL$MEXP) -> (num$num)`,
5648                     ORIG MEXP_size_def),
5649           encode = NONE,
5650           lift=NONE,
5651           one_one=SOME MEXP_11,
5652           distinct=SOME MEXP_distinct,
5653           fields=let fun T t s A = mk_thy_type{Thy=t,Tyop=s,Args=A}
5654    val U = mk_vartype
5655in
5656[] end,
5657           accessors=[],
5658           updates=[]}
5659        val tyinfo0 = tyinfo0
5660        val () = computeLib.write_datatype_info tyinfo0
5661      in
5662        tyinfo0
5663      end
5664    ];
5665
5666
5667  val _ = computeLib.add_funs [index_of_reg_def];
5668
5669  val _ = computeLib.add_funs [from_reg_index_def];
5670
5671  val _ = computeLib.add_funs [toREG_def];
5672
5673  val _ = computeLib.add_funs [toMEM_def];
5674
5675  val _ = computeLib.add_funs [toEXP_def];
5676
5677  val _ =
5678    TypeBase.write [
5679      let
5680        open TypeBasePure
5681        val tyinfo0 = mk_datatype_info
5682          {ax=ORIG DOPER_Axiom,
5683           case_def=DOPER_case_def,
5684           case_cong=DOPER_case_cong,
5685           induction=ORIG DOPER_induction,
5686           nchotomy=DOPER_nchotomy,
5687           size=SOME(Parse.Term`(IL$DOPER_size) :(IL$DOPER) -> (num$num)`,
5688                     ORIG DOPER_size_def),
5689           encode = NONE,
5690           lift=NONE,
5691           one_one=SOME DOPER_11,
5692           distinct=SOME DOPER_distinct,
5693           fields=let fun T t s A = mk_thy_type{Thy=t,Tyop=s,Args=A}
5694    val U = mk_vartype
5695in
5696[] end,
5697           accessors=[],
5698           updates=[]}
5699        val tyinfo0 = tyinfo0
5700        val () = computeLib.write_datatype_info tyinfo0
5701      in
5702        tyinfo0
5703      end
5704    ];
5705
5706
5707  val _ =
5708    TypeBase.write [
5709      let
5710        open TypeBasePure
5711        val tyinfo0 = mk_datatype_info
5712          {ax=ORIG CTL_STRUCTURE_Axiom,
5713           case_def=CTL_STRUCTURE_case_def,
5714           case_cong=CTL_STRUCTURE_case_cong,
5715           induction=ORIG CTL_STRUCTURE_induction,
5716           nchotomy=CTL_STRUCTURE_nchotomy,
5717           size=SOME(Parse.Term`(IL$CTL_STRUCTURE_size) :(IL$CTL_STRUCTURE) -> (num$num)`,
5718                     ORIG CTL_STRUCTURE_size_def),
5719           encode = NONE,
5720           lift=NONE,
5721           one_one=SOME CTL_STRUCTURE_11,
5722           distinct=SOME CTL_STRUCTURE_distinct,
5723           fields=let fun T t s A = mk_thy_type{Thy=t,Tyop=s,Args=A}
5724    val U = mk_vartype
5725in
5726[] end,
5727           accessors=[],
5728           updates=[]}
5729        val tyinfo0 = tyinfo0
5730        val () = computeLib.write_datatype_info tyinfo0
5731      in
5732        tyinfo0
5733      end
5734    ];
5735
5736
5737  val _ = computeLib.add_funs [pushL_def];
5738
5739  val _ = computeLib.add_funs [popL_def];
5740
5741  val _ = computeLib.add_funs [mdecode_def];
5742
5743  val _ = computeLib.add_funs [translate_assignment_def];
5744
5745  val _ = computeLib.add_funs [translate_condition_def];
5746
5747  val _ = computeLib.add_funs [eval_il_cond_def];
5748
5749  val _ = computeLib.add_funs [translate_def];
5750
5751  val _ = computeLib.add_funs [run_arm_def];
5752
5753  val _ = computeLib.add_funs [run_ir_def];
5754
5755  val _ = computeLib.add_funs [WELL_FORMED_def];
5756
5757  val _ = computeLib.add_funs [WELL_FORMED_SUB_def];
5758  val _ = if !Globals.print_thy_loads then print "done\n" else ()
5759
5760end
5761