Changeset 2717


Ignore:
Timestamp:
Feb 23, 2013, 1:16:55 AM (7 years ago)
Author:
sacerdot
Message:

Extracted code for the whole compiler.
The space cost model is not there yet.

I have fixed by hand the few extraction problems
(i.e. composed coercions not extracted and type
definitions with wrong syntax).

I have also changed all axioms to be implemented
so that they do not fail at initialization time.

Location:
extracted
Files:
68 added
112 edited

Legend:

Unmodified
Added
Removed
  • extracted/aSM.ml

    r2649 r2717  
    6060
    6161open Identifiers
     62
     63open BitVectorTrie
     64
     65open Exp
    6266
    6367open Arithmetic
     
    109113    -> 'a1) -> addressing_mode -> 'a1 **)
    110114let rec addressing_mode_rect_Type4 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function
    111 | DIRECT x_59 -> h_DIRECT x_59
    112 | INDIRECT x_60 -> h_INDIRECT x_60
    113 | EXT_INDIRECT x_61 -> h_EXT_INDIRECT x_61
    114 | REGISTER x_62 -> h_REGISTER x_62
     115| DIRECT x_18716 -> h_DIRECT x_18716
     116| INDIRECT x_18717 -> h_INDIRECT x_18717
     117| EXT_INDIRECT x_18718 -> h_EXT_INDIRECT x_18718
     118| REGISTER x_18719 -> h_REGISTER x_18719
    115119| ACC_A -> h_ACC_A
    116120| ACC_B -> h_ACC_B
    117121| DPTR -> h_DPTR
    118 | DATA x_63 -> h_DATA x_63
    119 | DATA16 x_64 -> h_DATA16 x_64
     122| DATA x_18720 -> h_DATA x_18720
     123| DATA16 x_18721 -> h_DATA16 x_18721
    120124| ACC_DPTR -> h_ACC_DPTR
    121125| ACC_PC -> h_ACC_PC
     
    123127| INDIRECT_DPTR -> h_INDIRECT_DPTR
    124128| CARRY -> h_CARRY
    125 | BIT_ADDR x_65 -> h_BIT_ADDR x_65
    126 | N_BIT_ADDR x_66 -> h_N_BIT_ADDR x_66
    127 | RELATIVE x_67 -> h_RELATIVE x_67
    128 | ADDR11 x_68 -> h_ADDR11 x_68
    129 | ADDR16 x_69 -> h_ADDR16 x_69
     129| BIT_ADDR x_18722 -> h_BIT_ADDR x_18722
     130| N_BIT_ADDR x_18723 -> h_N_BIT_ADDR x_18723
     131| RELATIVE x_18724 -> h_RELATIVE x_18724
     132| ADDR11 x_18725 -> h_ADDR11 x_18725
     133| ADDR16 x_18726 -> h_ADDR16 x_18726
    130134
    131135(** val addressing_mode_rect_Type5 :
     
    137141    -> 'a1) -> addressing_mode -> 'a1 **)
    138142let rec addressing_mode_rect_Type5 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function
    139 | DIRECT x_90 -> h_DIRECT x_90
    140 | INDIRECT x_91 -> h_INDIRECT x_91
    141 | EXT_INDIRECT x_92 -> h_EXT_INDIRECT x_92
    142 | REGISTER x_93 -> h_REGISTER x_93
     143| DIRECT x_18747 -> h_DIRECT x_18747
     144| INDIRECT x_18748 -> h_INDIRECT x_18748
     145| EXT_INDIRECT x_18749 -> h_EXT_INDIRECT x_18749
     146| REGISTER x_18750 -> h_REGISTER x_18750
    143147| ACC_A -> h_ACC_A
    144148| ACC_B -> h_ACC_B
    145149| DPTR -> h_DPTR
    146 | DATA x_94 -> h_DATA x_94
    147 | DATA16 x_95 -> h_DATA16 x_95
     150| DATA x_18751 -> h_DATA x_18751
     151| DATA16 x_18752 -> h_DATA16 x_18752
    148152| ACC_DPTR -> h_ACC_DPTR
    149153| ACC_PC -> h_ACC_PC
     
    151155| INDIRECT_DPTR -> h_INDIRECT_DPTR
    152156| CARRY -> h_CARRY
    153 | BIT_ADDR x_96 -> h_BIT_ADDR x_96
    154 | N_BIT_ADDR x_97 -> h_N_BIT_ADDR x_97
    155 | RELATIVE x_98 -> h_RELATIVE x_98
    156 | ADDR11 x_99 -> h_ADDR11 x_99
    157 | ADDR16 x_100 -> h_ADDR16 x_100
     157| BIT_ADDR x_18753 -> h_BIT_ADDR x_18753
     158| N_BIT_ADDR x_18754 -> h_N_BIT_ADDR x_18754
     159| RELATIVE x_18755 -> h_RELATIVE x_18755
     160| ADDR11 x_18756 -> h_ADDR11 x_18756
     161| ADDR16 x_18757 -> h_ADDR16 x_18757
    158162
    159163(** val addressing_mode_rect_Type3 :
     
    165169    -> 'a1) -> addressing_mode -> 'a1 **)
    166170let rec addressing_mode_rect_Type3 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function
    167 | DIRECT x_121 -> h_DIRECT x_121
    168 | INDIRECT x_122 -> h_INDIRECT x_122
    169 | EXT_INDIRECT x_123 -> h_EXT_INDIRECT x_123
    170 | REGISTER x_124 -> h_REGISTER x_124
     171| DIRECT x_18778 -> h_DIRECT x_18778
     172| INDIRECT x_18779 -> h_INDIRECT x_18779
     173| EXT_INDIRECT x_18780 -> h_EXT_INDIRECT x_18780
     174| REGISTER x_18781 -> h_REGISTER x_18781
    171175| ACC_A -> h_ACC_A
    172176| ACC_B -> h_ACC_B
    173177| DPTR -> h_DPTR
    174 | DATA x_125 -> h_DATA x_125
    175 | DATA16 x_126 -> h_DATA16 x_126
     178| DATA x_18782 -> h_DATA x_18782
     179| DATA16 x_18783 -> h_DATA16 x_18783
    176180| ACC_DPTR -> h_ACC_DPTR
    177181| ACC_PC -> h_ACC_PC
     
    179183| INDIRECT_DPTR -> h_INDIRECT_DPTR
    180184| CARRY -> h_CARRY
    181 | BIT_ADDR x_127 -> h_BIT_ADDR x_127
    182 | N_BIT_ADDR x_128 -> h_N_BIT_ADDR x_128
    183 | RELATIVE x_129 -> h_RELATIVE x_129
    184 | ADDR11 x_130 -> h_ADDR11 x_130
    185 | ADDR16 x_131 -> h_ADDR16 x_131
     185| BIT_ADDR x_18784 -> h_BIT_ADDR x_18784
     186| N_BIT_ADDR x_18785 -> h_N_BIT_ADDR x_18785
     187| RELATIVE x_18786 -> h_RELATIVE x_18786
     188| ADDR11 x_18787 -> h_ADDR11 x_18787
     189| ADDR16 x_18788 -> h_ADDR16 x_18788
    186190
    187191(** val addressing_mode_rect_Type2 :
     
    193197    -> 'a1) -> addressing_mode -> 'a1 **)
    194198let rec addressing_mode_rect_Type2 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function
    195 | DIRECT x_152 -> h_DIRECT x_152
    196 | INDIRECT x_153 -> h_INDIRECT x_153
    197 | EXT_INDIRECT x_154 -> h_EXT_INDIRECT x_154
    198 | REGISTER x_155 -> h_REGISTER x_155
     199| DIRECT x_18809 -> h_DIRECT x_18809
     200| INDIRECT x_18810 -> h_INDIRECT x_18810
     201| EXT_INDIRECT x_18811 -> h_EXT_INDIRECT x_18811
     202| REGISTER x_18812 -> h_REGISTER x_18812
    199203| ACC_A -> h_ACC_A
    200204| ACC_B -> h_ACC_B
    201205| DPTR -> h_DPTR
    202 | DATA x_156 -> h_DATA x_156
    203 | DATA16 x_157 -> h_DATA16 x_157
     206| DATA x_18813 -> h_DATA x_18813
     207| DATA16 x_18814 -> h_DATA16 x_18814
    204208| ACC_DPTR -> h_ACC_DPTR
    205209| ACC_PC -> h_ACC_PC
     
    207211| INDIRECT_DPTR -> h_INDIRECT_DPTR
    208212| CARRY -> h_CARRY
    209 | BIT_ADDR x_158 -> h_BIT_ADDR x_158
    210 | N_BIT_ADDR x_159 -> h_N_BIT_ADDR x_159
    211 | RELATIVE x_160 -> h_RELATIVE x_160
    212 | ADDR11 x_161 -> h_ADDR11 x_161
    213 | ADDR16 x_162 -> h_ADDR16 x_162
     213| BIT_ADDR x_18815 -> h_BIT_ADDR x_18815
     214| N_BIT_ADDR x_18816 -> h_N_BIT_ADDR x_18816
     215| RELATIVE x_18817 -> h_RELATIVE x_18817
     216| ADDR11 x_18818 -> h_ADDR11 x_18818
     217| ADDR16 x_18819 -> h_ADDR16 x_18819
    214218
    215219(** val addressing_mode_rect_Type1 :
     
    221225    -> 'a1) -> addressing_mode -> 'a1 **)
    222226let rec addressing_mode_rect_Type1 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function
    223 | DIRECT x_183 -> h_DIRECT x_183
    224 | INDIRECT x_184 -> h_INDIRECT x_184
    225 | EXT_INDIRECT x_185 -> h_EXT_INDIRECT x_185
    226 | REGISTER x_186 -> h_REGISTER x_186
     227| DIRECT x_18840 -> h_DIRECT x_18840
     228| INDIRECT x_18841 -> h_INDIRECT x_18841
     229| EXT_INDIRECT x_18842 -> h_EXT_INDIRECT x_18842
     230| REGISTER x_18843 -> h_REGISTER x_18843
    227231| ACC_A -> h_ACC_A
    228232| ACC_B -> h_ACC_B
    229233| DPTR -> h_DPTR
    230 | DATA x_187 -> h_DATA x_187
    231 | DATA16 x_188 -> h_DATA16 x_188
     234| DATA x_18844 -> h_DATA x_18844
     235| DATA16 x_18845 -> h_DATA16 x_18845
    232236| ACC_DPTR -> h_ACC_DPTR
    233237| ACC_PC -> h_ACC_PC
     
    235239| INDIRECT_DPTR -> h_INDIRECT_DPTR
    236240| CARRY -> h_CARRY
    237 | BIT_ADDR x_189 -> h_BIT_ADDR x_189
    238 | N_BIT_ADDR x_190 -> h_N_BIT_ADDR x_190
    239 | RELATIVE x_191 -> h_RELATIVE x_191
    240 | ADDR11 x_192 -> h_ADDR11 x_192
    241 | ADDR16 x_193 -> h_ADDR16 x_193
     241| BIT_ADDR x_18846 -> h_BIT_ADDR x_18846
     242| N_BIT_ADDR x_18847 -> h_N_BIT_ADDR x_18847
     243| RELATIVE x_18848 -> h_RELATIVE x_18848
     244| ADDR11 x_18849 -> h_ADDR11 x_18849
     245| ADDR16 x_18850 -> h_ADDR16 x_18850
    242246
    243247(** val addressing_mode_rect_Type0 :
     
    249253    -> 'a1) -> addressing_mode -> 'a1 **)
    250254let rec addressing_mode_rect_Type0 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function
    251 | DIRECT x_214 -> h_DIRECT x_214
    252 | INDIRECT x_215 -> h_INDIRECT x_215
    253 | EXT_INDIRECT x_216 -> h_EXT_INDIRECT x_216
    254 | REGISTER x_217 -> h_REGISTER x_217
     255| DIRECT x_18871 -> h_DIRECT x_18871
     256| INDIRECT x_18872 -> h_INDIRECT x_18872
     257| EXT_INDIRECT x_18873 -> h_EXT_INDIRECT x_18873
     258| REGISTER x_18874 -> h_REGISTER x_18874
    255259| ACC_A -> h_ACC_A
    256260| ACC_B -> h_ACC_B
    257261| DPTR -> h_DPTR
    258 | DATA x_218 -> h_DATA x_218
    259 | DATA16 x_219 -> h_DATA16 x_219
     262| DATA x_18875 -> h_DATA x_18875
     263| DATA16 x_18876 -> h_DATA16 x_18876
    260264| ACC_DPTR -> h_ACC_DPTR
    261265| ACC_PC -> h_ACC_PC
     
    263267| INDIRECT_DPTR -> h_INDIRECT_DPTR
    264268| CARRY -> h_CARRY
    265 | BIT_ADDR x_220 -> h_BIT_ADDR x_220
    266 | N_BIT_ADDR x_221 -> h_N_BIT_ADDR x_221
    267 | RELATIVE x_222 -> h_RELATIVE x_222
    268 | ADDR11 x_223 -> h_ADDR11 x_223
    269 | ADDR16 x_224 -> h_ADDR16 x_224
     269| BIT_ADDR x_18877 -> h_BIT_ADDR x_18877
     270| N_BIT_ADDR x_18878 -> h_N_BIT_ADDR x_18878
     271| RELATIVE x_18879 -> h_RELATIVE x_18879
     272| ADDR11 x_18880 -> h_ADDR11 x_18880
     273| ADDR16 x_18881 -> h_ADDR16 x_18881
    270274
    271275(** val addressing_mode_inv_rect_Type4 :
     
    19241928    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19251929    'a1) -> subaddressing_mode -> 'a1 **)
    1926 let rec subaddressing_mode_rect_Type4 n l h_mk_subaddressing_mode x_692 =
    1927   let subaddressing_modeel = x_692 in
     1930let rec subaddressing_mode_rect_Type4 n l h_mk_subaddressing_mode x_19349 =
     1931  let subaddressing_modeel = x_19349 in
    19281932  h_mk_subaddressing_mode subaddressing_modeel __
    19291933
     
    19311935    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19321936    'a1) -> subaddressing_mode -> 'a1 **)
    1933 let rec subaddressing_mode_rect_Type5 n l h_mk_subaddressing_mode x_694 =
    1934   let subaddressing_modeel = x_694 in
     1937let rec subaddressing_mode_rect_Type5 n l h_mk_subaddressing_mode x_19351 =
     1938  let subaddressing_modeel = x_19351 in
    19351939  h_mk_subaddressing_mode subaddressing_modeel __
    19361940
     
    19381942    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19391943    'a1) -> subaddressing_mode -> 'a1 **)
    1940 let rec subaddressing_mode_rect_Type3 n l h_mk_subaddressing_mode x_696 =
    1941   let subaddressing_modeel = x_696 in
     1944let rec subaddressing_mode_rect_Type3 n l h_mk_subaddressing_mode x_19353 =
     1945  let subaddressing_modeel = x_19353 in
    19421946  h_mk_subaddressing_mode subaddressing_modeel __
    19431947
     
    19451949    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19461950    'a1) -> subaddressing_mode -> 'a1 **)
    1947 let rec subaddressing_mode_rect_Type2 n l h_mk_subaddressing_mode x_698 =
    1948   let subaddressing_modeel = x_698 in
     1951let rec subaddressing_mode_rect_Type2 n l h_mk_subaddressing_mode x_19355 =
     1952  let subaddressing_modeel = x_19355 in
    19491953  h_mk_subaddressing_mode subaddressing_modeel __
    19501954
     
    19521956    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19531957    'a1) -> subaddressing_mode -> 'a1 **)
    1954 let rec subaddressing_mode_rect_Type1 n l h_mk_subaddressing_mode x_700 =
    1955   let subaddressing_modeel = x_700 in
     1958let rec subaddressing_mode_rect_Type1 n l h_mk_subaddressing_mode x_19357 =
     1959  let subaddressing_modeel = x_19357 in
    19561960  h_mk_subaddressing_mode subaddressing_modeel __
    19571961
     
    19591963    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19601964    'a1) -> subaddressing_mode -> 'a1 **)
    1961 let rec subaddressing_mode_rect_Type0 n l h_mk_subaddressing_mode x_702 =
    1962   let subaddressing_modeel = x_702 in
     1965let rec subaddressing_mode_rect_Type0 n l h_mk_subaddressing_mode x_19359 =
     1966  let subaddressing_modeel = x_19359 in
    19631967  h_mk_subaddressing_mode subaddressing_modeel __
    19641968
     
    20942098| RETI
    20952099| NOP
     2100| JMP of subaddressing_mode
    20962101
    20972102(** val preinstruction_rect_Type4 :
     
    21292134    (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode
    21302135    -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 ->
    2131     'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)
    2132 let rec preinstruction_rect_Type4 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function
    2133 | ADD (x_802, x_801) -> h_ADD x_802 x_801
    2134 | ADDC (x_804, x_803) -> h_ADDC x_804 x_803
    2135 | SUBB (x_806, x_805) -> h_SUBB x_806 x_805
    2136 | INC x_807 -> h_INC x_807
    2137 | DEC x_808 -> h_DEC x_808
    2138 | MUL (x_810, x_809) -> h_MUL x_810 x_809
    2139 | DIV (x_812, x_811) -> h_DIV x_812 x_811
    2140 | DA x_813 -> h_DA x_813
    2141 | JC x_814 -> h_JC x_814
    2142 | JNC x_815 -> h_JNC x_815
    2143 | JB (x_817, x_816) -> h_JB x_817 x_816
    2144 | JNB (x_819, x_818) -> h_JNB x_819 x_818
    2145 | JBC (x_821, x_820) -> h_JBC x_821 x_820
    2146 | JZ x_822 -> h_JZ x_822
    2147 | JNZ x_823 -> h_JNZ x_823
    2148 | CJNE (x_825, x_824) -> h_CJNE x_825 x_824
    2149 | DJNZ (x_827, x_826) -> h_DJNZ x_827 x_826
    2150 | ANL x_828 -> h_ANL x_828
    2151 | ORL x_829 -> h_ORL x_829
    2152 | XRL x_830 -> h_XRL x_830
    2153 | CLR x_831 -> h_CLR x_831
    2154 | CPL x_832 -> h_CPL x_832
    2155 | RL x_833 -> h_RL x_833
    2156 | RLC x_834 -> h_RLC x_834
    2157 | RR x_835 -> h_RR x_835
    2158 | RRC x_836 -> h_RRC x_836
    2159 | SWAP x_837 -> h_SWAP x_837
    2160 | MOV x_838 -> h_MOV x_838
    2161 | MOVX x_839 -> h_MOVX x_839
    2162 | SETB x_840 -> h_SETB x_840
    2163 | PUSH x_841 -> h_PUSH x_841
    2164 | POP x_842 -> h_POP x_842
    2165 | XCH (x_844, x_843) -> h_XCH x_844 x_843
    2166 | XCHD (x_846, x_845) -> h_XCHD x_846 x_845
     2136    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
     2137let rec preinstruction_rect_Type4 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function
     2138| ADD (x_19461, x_19460) -> h_ADD x_19461 x_19460
     2139| ADDC (x_19463, x_19462) -> h_ADDC x_19463 x_19462
     2140| SUBB (x_19465, x_19464) -> h_SUBB x_19465 x_19464
     2141| INC x_19466 -> h_INC x_19466
     2142| DEC x_19467 -> h_DEC x_19467
     2143| MUL (x_19469, x_19468) -> h_MUL x_19469 x_19468
     2144| DIV (x_19471, x_19470) -> h_DIV x_19471 x_19470
     2145| DA x_19472 -> h_DA x_19472
     2146| JC x_19473 -> h_JC x_19473
     2147| JNC x_19474 -> h_JNC x_19474
     2148| JB (x_19476, x_19475) -> h_JB x_19476 x_19475
     2149| JNB (x_19478, x_19477) -> h_JNB x_19478 x_19477
     2150| JBC (x_19480, x_19479) -> h_JBC x_19480 x_19479
     2151| JZ x_19481 -> h_JZ x_19481
     2152| JNZ x_19482 -> h_JNZ x_19482
     2153| CJNE (x_19484, x_19483) -> h_CJNE x_19484 x_19483
     2154| DJNZ (x_19486, x_19485) -> h_DJNZ x_19486 x_19485
     2155| ANL x_19487 -> h_ANL x_19487
     2156| ORL x_19488 -> h_ORL x_19488
     2157| XRL x_19489 -> h_XRL x_19489
     2158| CLR x_19490 -> h_CLR x_19490
     2159| CPL x_19491 -> h_CPL x_19491
     2160| RL x_19492 -> h_RL x_19492
     2161| RLC x_19493 -> h_RLC x_19493
     2162| RR x_19494 -> h_RR x_19494
     2163| RRC x_19495 -> h_RRC x_19495
     2164| SWAP x_19496 -> h_SWAP x_19496
     2165| MOV x_19497 -> h_MOV x_19497
     2166| MOVX x_19498 -> h_MOVX x_19498
     2167| SETB x_19499 -> h_SETB x_19499
     2168| PUSH x_19500 -> h_PUSH x_19500
     2169| POP x_19501 -> h_POP x_19501
     2170| XCH (x_19503, x_19502) -> h_XCH x_19503 x_19502
     2171| XCHD (x_19505, x_19504) -> h_XCHD x_19505 x_19504
    21672172| RET -> h_RET
    21682173| RETI -> h_RETI
    21692174| NOP -> h_NOP
     2175| JMP x_19506 -> h_JMP x_19506
    21702176
    21712177(** val preinstruction_rect_Type5 :
     
    22032209    (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode
    22042210    -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 ->
    2205     'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)
    2206 let rec preinstruction_rect_Type5 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function
    2207 | ADD (x_886, x_885) -> h_ADD x_886 x_885
    2208 | ADDC (x_888, x_887) -> h_ADDC x_888 x_887
    2209 | SUBB (x_890, x_889) -> h_SUBB x_890 x_889
    2210 | INC x_891 -> h_INC x_891
    2211 | DEC x_892 -> h_DEC x_892
    2212 | MUL (x_894, x_893) -> h_MUL x_894 x_893
    2213 | DIV (x_896, x_895) -> h_DIV x_896 x_895
    2214 | DA x_897 -> h_DA x_897
    2215 | JC x_898 -> h_JC x_898
    2216 | JNC x_899 -> h_JNC x_899
    2217 | JB (x_901, x_900) -> h_JB x_901 x_900
    2218 | JNB (x_903, x_902) -> h_JNB x_903 x_902
    2219 | JBC (x_905, x_904) -> h_JBC x_905 x_904
    2220 | JZ x_906 -> h_JZ x_906
    2221 | JNZ x_907 -> h_JNZ x_907
    2222 | CJNE (x_909, x_908) -> h_CJNE x_909 x_908
    2223 | DJNZ (x_911, x_910) -> h_DJNZ x_911 x_910
    2224 | ANL x_912 -> h_ANL x_912
    2225 | ORL x_913 -> h_ORL x_913
    2226 | XRL x_914 -> h_XRL x_914
    2227 | CLR x_915 -> h_CLR x_915
    2228 | CPL x_916 -> h_CPL x_916
    2229 | RL x_917 -> h_RL x_917
    2230 | RLC x_918 -> h_RLC x_918
    2231 | RR x_919 -> h_RR x_919
    2232 | RRC x_920 -> h_RRC x_920
    2233 | SWAP x_921 -> h_SWAP x_921
    2234 | MOV x_922 -> h_MOV x_922
    2235 | MOVX x_923 -> h_MOVX x_923
    2236 | SETB x_924 -> h_SETB x_924
    2237 | PUSH x_925 -> h_PUSH x_925
    2238 | POP x_926 -> h_POP x_926
    2239 | XCH (x_928, x_927) -> h_XCH x_928 x_927
    2240 | XCHD (x_930, x_929) -> h_XCHD x_930 x_929
     2211    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
     2212let rec preinstruction_rect_Type5 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function
     2213| ADD (x_19547, x_19546) -> h_ADD x_19547 x_19546
     2214| ADDC (x_19549, x_19548) -> h_ADDC x_19549 x_19548
     2215| SUBB (x_19551, x_19550) -> h_SUBB x_19551 x_19550
     2216| INC x_19552 -> h_INC x_19552
     2217| DEC x_19553 -> h_DEC x_19553
     2218| MUL (x_19555, x_19554) -> h_MUL x_19555 x_19554
     2219| DIV (x_19557, x_19556) -> h_DIV x_19557 x_19556
     2220| DA x_19558 -> h_DA x_19558
     2221| JC x_19559 -> h_JC x_19559
     2222| JNC x_19560 -> h_JNC x_19560
     2223| JB (x_19562, x_19561) -> h_JB x_19562 x_19561
     2224| JNB (x_19564, x_19563) -> h_JNB x_19564 x_19563
     2225| JBC (x_19566, x_19565) -> h_JBC x_19566 x_19565
     2226| JZ x_19567 -> h_JZ x_19567
     2227| JNZ x_19568 -> h_JNZ x_19568
     2228| CJNE (x_19570, x_19569) -> h_CJNE x_19570 x_19569
     2229| DJNZ (x_19572, x_19571) -> h_DJNZ x_19572 x_19571
     2230| ANL x_19573 -> h_ANL x_19573
     2231| ORL x_19574 -> h_ORL x_19574
     2232| XRL x_19575 -> h_XRL x_19575
     2233| CLR x_19576 -> h_CLR x_19576
     2234| CPL x_19577 -> h_CPL x_19577
     2235| RL x_19578 -> h_RL x_19578
     2236| RLC x_19579 -> h_RLC x_19579
     2237| RR x_19580 -> h_RR x_19580
     2238| RRC x_19581 -> h_RRC x_19581
     2239| SWAP x_19582 -> h_SWAP x_19582
     2240| MOV x_19583 -> h_MOV x_19583
     2241| MOVX x_19584 -> h_MOVX x_19584
     2242| SETB x_19585 -> h_SETB x_19585
     2243| PUSH x_19586 -> h_PUSH x_19586
     2244| POP x_19587 -> h_POP x_19587
     2245| XCH (x_19589, x_19588) -> h_XCH x_19589 x_19588
     2246| XCHD (x_19591, x_19590) -> h_XCHD x_19591 x_19590
    22412247| RET -> h_RET
    22422248| RETI -> h_RETI
    22432249| NOP -> h_NOP
     2250| JMP x_19592 -> h_JMP x_19592
    22442251
    22452252(** val preinstruction_rect_Type3 :
     
    22772284    (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode
    22782285    -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 ->
    2279     'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)
    2280 let rec preinstruction_rect_Type3 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function
    2281 | ADD (x_970, x_969) -> h_ADD x_970 x_969
    2282 | ADDC (x_972, x_971) -> h_ADDC x_972 x_971
    2283 | SUBB (x_974, x_973) -> h_SUBB x_974 x_973
    2284 | INC x_975 -> h_INC x_975
    2285 | DEC x_976 -> h_DEC x_976
    2286 | MUL (x_978, x_977) -> h_MUL x_978 x_977
    2287 | DIV (x_980, x_979) -> h_DIV x_980 x_979
    2288 | DA x_981 -> h_DA x_981
    2289 | JC x_982 -> h_JC x_982
    2290 | JNC x_983 -> h_JNC x_983
    2291 | JB (x_985, x_984) -> h_JB x_985 x_984
    2292 | JNB (x_987, x_986) -> h_JNB x_987 x_986
    2293 | JBC (x_989, x_988) -> h_JBC x_989 x_988
    2294 | JZ x_990 -> h_JZ x_990
    2295 | JNZ x_991 -> h_JNZ x_991
    2296 | CJNE (x_993, x_992) -> h_CJNE x_993 x_992
    2297 | DJNZ (x_995, x_994) -> h_DJNZ x_995 x_994
    2298 | ANL x_996 -> h_ANL x_996
    2299 | ORL x_997 -> h_ORL x_997
    2300 | XRL x_998 -> h_XRL x_998
    2301 | CLR x_999 -> h_CLR x_999
    2302 | CPL x_1000 -> h_CPL x_1000
    2303 | RL x_1001 -> h_RL x_1001
    2304 | RLC x_1002 -> h_RLC x_1002
    2305 | RR x_1003 -> h_RR x_1003
    2306 | RRC x_1004 -> h_RRC x_1004
    2307 | SWAP x_1005 -> h_SWAP x_1005
    2308 | MOV x_1006 -> h_MOV x_1006
    2309 | MOVX x_1007 -> h_MOVX x_1007
    2310 | SETB x_1008 -> h_SETB x_1008
    2311 | PUSH x_1009 -> h_PUSH x_1009
    2312 | POP x_1010 -> h_POP x_1010
    2313 | XCH (x_1012, x_1011) -> h_XCH x_1012 x_1011
    2314 | XCHD (x_1014, x_1013) -> h_XCHD x_1014 x_1013
     2286    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
     2287let rec preinstruction_rect_Type3 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function
     2288| ADD (x_19633, x_19632) -> h_ADD x_19633 x_19632
     2289| ADDC (x_19635, x_19634) -> h_ADDC x_19635 x_19634
     2290| SUBB (x_19637, x_19636) -> h_SUBB x_19637 x_19636
     2291| INC x_19638 -> h_INC x_19638
     2292| DEC x_19639 -> h_DEC x_19639
     2293| MUL (x_19641, x_19640) -> h_MUL x_19641 x_19640
     2294| DIV (x_19643, x_19642) -> h_DIV x_19643 x_19642
     2295| DA x_19644 -> h_DA x_19644
     2296| JC x_19645 -> h_JC x_19645
     2297| JNC x_19646 -> h_JNC x_19646
     2298| JB (x_19648, x_19647) -> h_JB x_19648 x_19647
     2299| JNB (x_19650, x_19649) -> h_JNB x_19650 x_19649
     2300| JBC (x_19652, x_19651) -> h_JBC x_19652 x_19651
     2301| JZ x_19653 -> h_JZ x_19653
     2302| JNZ x_19654 -> h_JNZ x_19654
     2303| CJNE (x_19656, x_19655) -> h_CJNE x_19656 x_19655
     2304| DJNZ (x_19658, x_19657) -> h_DJNZ x_19658 x_19657
     2305| ANL x_19659 -> h_ANL x_19659
     2306| ORL x_19660 -> h_ORL x_19660
     2307| XRL x_19661 -> h_XRL x_19661
     2308| CLR x_19662 -> h_CLR x_19662
     2309| CPL x_19663 -> h_CPL x_19663
     2310| RL x_19664 -> h_RL x_19664
     2311| RLC x_19665 -> h_RLC x_19665
     2312| RR x_19666 -> h_RR x_19666
     2313| RRC x_19667 -> h_RRC x_19667
     2314| SWAP x_19668 -> h_SWAP x_19668
     2315| MOV x_19669 -> h_MOV x_19669
     2316| MOVX x_19670 -> h_MOVX x_19670
     2317| SETB x_19671 -> h_SETB x_19671
     2318| PUSH x_19672 -> h_PUSH x_19672
     2319| POP x_19673 -> h_POP x_19673
     2320| XCH (x_19675, x_19674) -> h_XCH x_19675 x_19674
     2321| XCHD (x_19677, x_19676) -> h_XCHD x_19677 x_19676
    23152322| RET -> h_RET
    23162323| RETI -> h_RETI
    23172324| NOP -> h_NOP
     2325| JMP x_19678 -> h_JMP x_19678
    23182326
    23192327(** val preinstruction_rect_Type2 :
     
    23512359    (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode
    23522360    -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 ->
    2353     'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)
    2354 let rec preinstruction_rect_Type2 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function
    2355 | ADD (x_1054, x_1053) -> h_ADD x_1054 x_1053
    2356 | ADDC (x_1056, x_1055) -> h_ADDC x_1056 x_1055
    2357 | SUBB (x_1058, x_1057) -> h_SUBB x_1058 x_1057
    2358 | INC x_1059 -> h_INC x_1059
    2359 | DEC x_1060 -> h_DEC x_1060
    2360 | MUL (x_1062, x_1061) -> h_MUL x_1062 x_1061
    2361 | DIV (x_1064, x_1063) -> h_DIV x_1064 x_1063
    2362 | DA x_1065 -> h_DA x_1065
    2363 | JC x_1066 -> h_JC x_1066
    2364 | JNC x_1067 -> h_JNC x_1067
    2365 | JB (x_1069, x_1068) -> h_JB x_1069 x_1068
    2366 | JNB (x_1071, x_1070) -> h_JNB x_1071 x_1070
    2367 | JBC (x_1073, x_1072) -> h_JBC x_1073 x_1072
    2368 | JZ x_1074 -> h_JZ x_1074
    2369 | JNZ x_1075 -> h_JNZ x_1075
    2370 | CJNE (x_1077, x_1076) -> h_CJNE x_1077 x_1076
    2371 | DJNZ (x_1079, x_1078) -> h_DJNZ x_1079 x_1078
    2372 | ANL x_1080 -> h_ANL x_1080
    2373 | ORL x_1081 -> h_ORL x_1081
    2374 | XRL x_1082 -> h_XRL x_1082
    2375 | CLR x_1083 -> h_CLR x_1083
    2376 | CPL x_1084 -> h_CPL x_1084
    2377 | RL x_1085 -> h_RL x_1085
    2378 | RLC x_1086 -> h_RLC x_1086
    2379 | RR x_1087 -> h_RR x_1087
    2380 | RRC x_1088 -> h_RRC x_1088
    2381 | SWAP x_1089 -> h_SWAP x_1089
    2382 | MOV x_1090 -> h_MOV x_1090
    2383 | MOVX x_1091 -> h_MOVX x_1091
    2384 | SETB x_1092 -> h_SETB x_1092
    2385 | PUSH x_1093 -> h_PUSH x_1093
    2386 | POP x_1094 -> h_POP x_1094
    2387 | XCH (x_1096, x_1095) -> h_XCH x_1096 x_1095
    2388 | XCHD (x_1098, x_1097) -> h_XCHD x_1098 x_1097
     2361    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
     2362let rec preinstruction_rect_Type2 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function
     2363| ADD (x_19719, x_19718) -> h_ADD x_19719 x_19718
     2364| ADDC (x_19721, x_19720) -> h_ADDC x_19721 x_19720
     2365| SUBB (x_19723, x_19722) -> h_SUBB x_19723 x_19722
     2366| INC x_19724 -> h_INC x_19724
     2367| DEC x_19725 -> h_DEC x_19725
     2368| MUL (x_19727, x_19726) -> h_MUL x_19727 x_19726
     2369| DIV (x_19729, x_19728) -> h_DIV x_19729 x_19728
     2370| DA x_19730 -> h_DA x_19730
     2371| JC x_19731 -> h_JC x_19731
     2372| JNC x_19732 -> h_JNC x_19732
     2373| JB (x_19734, x_19733) -> h_JB x_19734 x_19733
     2374| JNB (x_19736, x_19735) -> h_JNB x_19736 x_19735
     2375| JBC (x_19738, x_19737) -> h_JBC x_19738 x_19737
     2376| JZ x_19739 -> h_JZ x_19739
     2377| JNZ x_19740 -> h_JNZ x_19740
     2378| CJNE (x_19742, x_19741) -> h_CJNE x_19742 x_19741
     2379| DJNZ (x_19744, x_19743) -> h_DJNZ x_19744 x_19743
     2380| ANL x_19745 -> h_ANL x_19745
     2381| ORL x_19746 -> h_ORL x_19746
     2382| XRL x_19747 -> h_XRL x_19747
     2383| CLR x_19748 -> h_CLR x_19748
     2384| CPL x_19749 -> h_CPL x_19749
     2385| RL x_19750 -> h_RL x_19750
     2386| RLC x_19751 -> h_RLC x_19751
     2387| RR x_19752 -> h_RR x_19752
     2388| RRC x_19753 -> h_RRC x_19753
     2389| SWAP x_19754 -> h_SWAP x_19754
     2390| MOV x_19755 -> h_MOV x_19755
     2391| MOVX x_19756 -> h_MOVX x_19756
     2392| SETB x_19757 -> h_SETB x_19757
     2393| PUSH x_19758 -> h_PUSH x_19758
     2394| POP x_19759 -> h_POP x_19759
     2395| XCH (x_19761, x_19760) -> h_XCH x_19761 x_19760
     2396| XCHD (x_19763, x_19762) -> h_XCHD x_19763 x_19762
    23892397| RET -> h_RET
    23902398| RETI -> h_RETI
    23912399| NOP -> h_NOP
     2400| JMP x_19764 -> h_JMP x_19764
    23922401
    23932402(** val preinstruction_rect_Type1 :
     
    24252434    (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode
    24262435    -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 ->
    2427     'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)
    2428 let rec preinstruction_rect_Type1 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function
    2429 | ADD (x_1138, x_1137) -> h_ADD x_1138 x_1137
    2430 | ADDC (x_1140, x_1139) -> h_ADDC x_1140 x_1139
    2431 | SUBB (x_1142, x_1141) -> h_SUBB x_1142 x_1141
    2432 | INC x_1143 -> h_INC x_1143
    2433 | DEC x_1144 -> h_DEC x_1144
    2434 | MUL (x_1146, x_1145) -> h_MUL x_1146 x_1145
    2435 | DIV (x_1148, x_1147) -> h_DIV x_1148 x_1147
    2436 | DA x_1149 -> h_DA x_1149
    2437 | JC x_1150 -> h_JC x_1150
    2438 | JNC x_1151 -> h_JNC x_1151
    2439 | JB (x_1153, x_1152) -> h_JB x_1153 x_1152
    2440 | JNB (x_1155, x_1154) -> h_JNB x_1155 x_1154
    2441 | JBC (x_1157, x_1156) -> h_JBC x_1157 x_1156
    2442 | JZ x_1158 -> h_JZ x_1158
    2443 | JNZ x_1159 -> h_JNZ x_1159
    2444 | CJNE (x_1161, x_1160) -> h_CJNE x_1161 x_1160
    2445 | DJNZ (x_1163, x_1162) -> h_DJNZ x_1163 x_1162
    2446 | ANL x_1164 -> h_ANL x_1164
    2447 | ORL x_1165 -> h_ORL x_1165
    2448 | XRL x_1166 -> h_XRL x_1166
    2449 | CLR x_1167 -> h_CLR x_1167
    2450 | CPL x_1168 -> h_CPL x_1168
    2451 | RL x_1169 -> h_RL x_1169
    2452 | RLC x_1170 -> h_RLC x_1170
    2453 | RR x_1171 -> h_RR x_1171
    2454 | RRC x_1172 -> h_RRC x_1172
    2455 | SWAP x_1173 -> h_SWAP x_1173
    2456 | MOV x_1174 -> h_MOV x_1174
    2457 | MOVX x_1175 -> h_MOVX x_1175
    2458 | SETB x_1176 -> h_SETB x_1176
    2459 | PUSH x_1177 -> h_PUSH x_1177
    2460 | POP x_1178 -> h_POP x_1178
    2461 | XCH (x_1180, x_1179) -> h_XCH x_1180 x_1179
    2462 | XCHD (x_1182, x_1181) -> h_XCHD x_1182 x_1181
     2436    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
     2437let rec preinstruction_rect_Type1 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function
     2438| ADD (x_19805, x_19804) -> h_ADD x_19805 x_19804
     2439| ADDC (x_19807, x_19806) -> h_ADDC x_19807 x_19806
     2440| SUBB (x_19809, x_19808) -> h_SUBB x_19809 x_19808
     2441| INC x_19810 -> h_INC x_19810
     2442| DEC x_19811 -> h_DEC x_19811
     2443| MUL (x_19813, x_19812) -> h_MUL x_19813 x_19812
     2444| DIV (x_19815, x_19814) -> h_DIV x_19815 x_19814
     2445| DA x_19816 -> h_DA x_19816
     2446| JC x_19817 -> h_JC x_19817
     2447| JNC x_19818 -> h_JNC x_19818
     2448| JB (x_19820, x_19819) -> h_JB x_19820 x_19819
     2449| JNB (x_19822, x_19821) -> h_JNB x_19822 x_19821
     2450| JBC (x_19824, x_19823) -> h_JBC x_19824 x_19823
     2451| JZ x_19825 -> h_JZ x_19825
     2452| JNZ x_19826 -> h_JNZ x_19826
     2453| CJNE (x_19828, x_19827) -> h_CJNE x_19828 x_19827
     2454| DJNZ (x_19830, x_19829) -> h_DJNZ x_19830 x_19829
     2455| ANL x_19831 -> h_ANL x_19831
     2456| ORL x_19832 -> h_ORL x_19832
     2457| XRL x_19833 -> h_XRL x_19833
     2458| CLR x_19834 -> h_CLR x_19834
     2459| CPL x_19835 -> h_CPL x_19835
     2460| RL x_19836 -> h_RL x_19836
     2461| RLC x_19837 -> h_RLC x_19837
     2462| RR x_19838 -> h_RR x_19838
     2463| RRC x_19839 -> h_RRC x_19839
     2464| SWAP x_19840 -> h_SWAP x_19840
     2465| MOV x_19841 -> h_MOV x_19841
     2466| MOVX x_19842 -> h_MOVX x_19842
     2467| SETB x_19843 -> h_SETB x_19843
     2468| PUSH x_19844 -> h_PUSH x_19844
     2469| POP x_19845 -> h_POP x_19845
     2470| XCH (x_19847, x_19846) -> h_XCH x_19847 x_19846
     2471| XCHD (x_19849, x_19848) -> h_XCHD x_19849 x_19848
    24632472| RET -> h_RET
    24642473| RETI -> h_RETI
    24652474| NOP -> h_NOP
     2475| JMP x_19850 -> h_JMP x_19850
    24662476
    24672477(** val preinstruction_rect_Type0 :
     
    24992509    (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode
    25002510    -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 ->
    2501     'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)
    2502 let rec preinstruction_rect_Type0 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function
    2503 | ADD (x_1222, x_1221) -> h_ADD x_1222 x_1221
    2504 | ADDC (x_1224, x_1223) -> h_ADDC x_1224 x_1223
    2505 | SUBB (x_1226, x_1225) -> h_SUBB x_1226 x_1225
    2506 | INC x_1227 -> h_INC x_1227
    2507 | DEC x_1228 -> h_DEC x_1228
    2508 | MUL (x_1230, x_1229) -> h_MUL x_1230 x_1229
    2509 | DIV (x_1232, x_1231) -> h_DIV x_1232 x_1231
    2510 | DA x_1233 -> h_DA x_1233
    2511 | JC x_1234 -> h_JC x_1234
    2512 | JNC x_1235 -> h_JNC x_1235
    2513 | JB (x_1237, x_1236) -> h_JB x_1237 x_1236
    2514 | JNB (x_1239, x_1238) -> h_JNB x_1239 x_1238
    2515 | JBC (x_1241, x_1240) -> h_JBC x_1241 x_1240
    2516 | JZ x_1242 -> h_JZ x_1242
    2517 | JNZ x_1243 -> h_JNZ x_1243
    2518 | CJNE (x_1245, x_1244) -> h_CJNE x_1245 x_1244
    2519 | DJNZ (x_1247, x_1246) -> h_DJNZ x_1247 x_1246
    2520 | ANL x_1248 -> h_ANL x_1248
    2521 | ORL x_1249 -> h_ORL x_1249
    2522 | XRL x_1250 -> h_XRL x_1250
    2523 | CLR x_1251 -> h_CLR x_1251
    2524 | CPL x_1252 -> h_CPL x_1252
    2525 | RL x_1253 -> h_RL x_1253
    2526 | RLC x_1254 -> h_RLC x_1254
    2527 | RR x_1255 -> h_RR x_1255
    2528 | RRC x_1256 -> h_RRC x_1256
    2529 | SWAP x_1257 -> h_SWAP x_1257
    2530 | MOV x_1258 -> h_MOV x_1258
    2531 | MOVX x_1259 -> h_MOVX x_1259
    2532 | SETB x_1260 -> h_SETB x_1260
    2533 | PUSH x_1261 -> h_PUSH x_1261
    2534 | POP x_1262 -> h_POP x_1262
    2535 | XCH (x_1264, x_1263) -> h_XCH x_1264 x_1263
    2536 | XCHD (x_1266, x_1265) -> h_XCHD x_1266 x_1265
     2511    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
     2512let rec preinstruction_rect_Type0 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function
     2513| ADD (x_19891, x_19890) -> h_ADD x_19891 x_19890
     2514| ADDC (x_19893, x_19892) -> h_ADDC x_19893 x_19892
     2515| SUBB (x_19895, x_19894) -> h_SUBB x_19895 x_19894
     2516| INC x_19896 -> h_INC x_19896
     2517| DEC x_19897 -> h_DEC x_19897
     2518| MUL (x_19899, x_19898) -> h_MUL x_19899 x_19898
     2519| DIV (x_19901, x_19900) -> h_DIV x_19901 x_19900
     2520| DA x_19902 -> h_DA x_19902
     2521| JC x_19903 -> h_JC x_19903
     2522| JNC x_19904 -> h_JNC x_19904
     2523| JB (x_19906, x_19905) -> h_JB x_19906 x_19905
     2524| JNB (x_19908, x_19907) -> h_JNB x_19908 x_19907
     2525| JBC (x_19910, x_19909) -> h_JBC x_19910 x_19909
     2526| JZ x_19911 -> h_JZ x_19911
     2527| JNZ x_19912 -> h_JNZ x_19912
     2528| CJNE (x_19914, x_19913) -> h_CJNE x_19914 x_19913
     2529| DJNZ (x_19916, x_19915) -> h_DJNZ x_19916 x_19915
     2530| ANL x_19917 -> h_ANL x_19917
     2531| ORL x_19918 -> h_ORL x_19918
     2532| XRL x_19919 -> h_XRL x_19919
     2533| CLR x_19920 -> h_CLR x_19920
     2534| CPL x_19921 -> h_CPL x_19921
     2535| RL x_19922 -> h_RL x_19922
     2536| RLC x_19923 -> h_RLC x_19923
     2537| RR x_19924 -> h_RR x_19924
     2538| RRC x_19925 -> h_RRC x_19925
     2539| SWAP x_19926 -> h_SWAP x_19926
     2540| MOV x_19927 -> h_MOV x_19927
     2541| MOVX x_19928 -> h_MOVX x_19928
     2542| SETB x_19929 -> h_SETB x_19929
     2543| PUSH x_19930 -> h_PUSH x_19930
     2544| POP x_19931 -> h_POP x_19931
     2545| XCH (x_19933, x_19932) -> h_XCH x_19933 x_19932
     2546| XCHD (x_19935, x_19934) -> h_XCHD x_19935 x_19934
    25372547| RET -> h_RET
    25382548| RETI -> h_RETI
    25392549| NOP -> h_NOP
     2550| JMP x_19936 -> h_JMP x_19936
    25402551
    25412552(** val preinstruction_inv_rect_Type4 :
     
    25752586    -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) ->
    25762587    (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) ->
    2577     (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)
    2578 let preinstruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =
     2588    (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **)
     2589let preinstruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 =
    25792590  let hcut =
    25802591    preinstruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14
    25812592      h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32
    2582       h33 h34 h35 h36 h37 hterm
     2593      h33 h34 h35 h36 h37 h38 hterm
    25832594  in
    25842595  hcut __
     
    26202631    -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) ->
    26212632    (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) ->
    2622     (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)
    2623 let preinstruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =
     2633    (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **)
     2634let preinstruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 =
    26242635  let hcut =
    26252636    preinstruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14
    26262637      h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32
    2627       h33 h34 h35 h36 h37 hterm
     2638      h33 h34 h35 h36 h37 h38 hterm
    26282639  in
    26292640  hcut __
     
    26652676    -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) ->
    26662677    (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) ->
    2667     (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)
    2668 let preinstruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =
     2678    (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **)
     2679let preinstruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 =
    26692680  let hcut =
    26702681    preinstruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14
    26712682      h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32
    2672       h33 h34 h35 h36 h37 hterm
     2683      h33 h34 h35 h36 h37 h38 hterm
    26732684  in
    26742685  hcut __
     
    27102721    -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) ->
    27112722    (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) ->
    2712     (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)
    2713 let preinstruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =
     2723    (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **)
     2724let preinstruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 =
    27142725  let hcut =
    27152726    preinstruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14
    27162727      h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32
    2717       h33 h34 h35 h36 h37 hterm
     2728      h33 h34 h35 h36 h37 h38 hterm
    27182729  in
    27192730  hcut __
     
    27552766    -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) ->
    27562767    (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) ->
    2757     (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)
    2758 let preinstruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =
     2768    (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **)
     2769let preinstruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 =
    27592770  let hcut =
    27602771    preinstruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14
    27612772      h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32
    2762       h33 h34 h35 h36 h37 hterm
     2773      h33 h34 h35 h36 h37 h38 hterm
    27632774  in
    27642775  hcut __
     
    28052816     | RET -> Obj.magic (fun _ dH -> dH)
    28062817     | RETI -> Obj.magic (fun _ dH -> dH)
    2807      | NOP -> Obj.magic (fun _ dH -> dH)) y
     2818     | NOP -> Obj.magic (fun _ dH -> dH)
     2819     | JMP a0 -> Obj.magic (fun _ dH -> dH __)) y
    28082820
    28092821(** val preinstruction_jmdiscr :
     
    28482860     | RET -> Obj.magic (fun _ dH -> dH)
    28492861     | RETI -> Obj.magic (fun _ dH -> dH)
    2850      | NOP -> Obj.magic (fun _ dH -> dH)) y
     2862     | NOP -> Obj.magic (fun _ dH -> dH)
     2863     | JMP a0 -> Obj.magic (fun _ dH -> dH __)) y
    28512864
    28522865(** val eq_preinstruction :
     
    29082921     | RET -> Bool.False
    29092922     | RETI -> Bool.False
    2910      | NOP -> Bool.False)
     2923     | NOP -> Bool.False
     2924     | JMP x -> Bool.False)
    29112925  | ADDC (arg1, arg2) ->
    29122926    (match j with
     
    29622976     | RET -> Bool.False
    29632977     | RETI -> Bool.False
    2964      | NOP -> Bool.False)
     2978     | NOP -> Bool.False
     2979     | JMP x -> Bool.False)
    29652980  | SUBB (arg1, arg2) ->
    29662981    (match j with
     
    30163031     | RET -> Bool.False
    30173032     | RETI -> Bool.False
    3018      | NOP -> Bool.False)
     3033     | NOP -> Bool.False
     3034     | JMP x -> Bool.False)
    30193035  | INC arg ->
    30203036    (match j with
     
    30683084     | RET -> Bool.False
    30693085     | RETI -> Bool.False
    3070      | NOP -> Bool.False)
     3086     | NOP -> Bool.False
     3087     | JMP x -> Bool.False)
    30713088  | DEC arg ->
    30723089    (match j with
     
    31163133     | RET -> Bool.False
    31173134     | RETI -> Bool.False
    3118      | NOP -> Bool.False)
     3135     | NOP -> Bool.False
     3136     | JMP x -> Bool.False)
    31193137  | MUL (arg1, arg2) ->
    31203138    (match j with
     
    31663184     | RET -> Bool.False
    31673185     | RETI -> Bool.False
    3168      | NOP -> Bool.False)
     3186     | NOP -> Bool.False
     3187     | JMP x -> Bool.False)
    31693188  | DIV (arg1, arg2) ->
    31703189    (match j with
     
    32163235     | RET -> Bool.False
    32173236     | RETI -> Bool.False
    3218      | NOP -> Bool.False)
     3237     | NOP -> Bool.False
     3238     | JMP x -> Bool.False)
    32193239  | DA arg ->
    32203240    (match j with
     
    32603280     | RET -> Bool.False
    32613281     | RETI -> Bool.False
    3262      | NOP -> Bool.False)
     3282     | NOP -> Bool.False
     3283     | JMP x -> Bool.False)
    32633284  | JC arg ->
    32643285    (match j with
     
    33043325     | RET -> Bool.False
    33053326     | RETI -> Bool.False
    3306      | NOP -> Bool.False)
     3327     | NOP -> Bool.False
     3328     | JMP x -> Bool.False)
    33073329  | JNC arg ->
    33083330    (match j with
     
    33483370     | RET -> Bool.False
    33493371     | RETI -> Bool.False
    3350      | NOP -> Bool.False)
     3372     | NOP -> Bool.False
     3373     | JMP x -> Bool.False)
    33513374  | JB (arg1, arg2) ->
    33523375    (match j with
     
    33983421     | RET -> Bool.False
    33993422     | RETI -> Bool.False
    3400      | NOP -> Bool.False)
     3423     | NOP -> Bool.False
     3424     | JMP x -> Bool.False)
    34013425  | JNB (arg1, arg2) ->
    34023426    (match j with
     
    34483472     | RET -> Bool.False
    34493473     | RETI -> Bool.False
    3450      | NOP -> Bool.False)
     3474     | NOP -> Bool.False
     3475     | JMP x -> Bool.False)
    34513476  | JBC (arg1, arg2) ->
    34523477    (match j with
     
    34983523     | RET -> Bool.False
    34993524     | RETI -> Bool.False
    3500      | NOP -> Bool.False)
     3525     | NOP -> Bool.False
     3526     | JMP x -> Bool.False)
    35013527  | JZ arg ->
    35023528    (match j with
     
    35423568     | RET -> Bool.False
    35433569     | RETI -> Bool.False
    3544      | NOP -> Bool.False)
     3570     | NOP -> Bool.False
     3571     | JMP x -> Bool.False)
    35453572  | JNZ arg ->
    35463573    (match j with
     
    35863613     | RET -> Bool.False
    35873614     | RETI -> Bool.False
    3588      | NOP -> Bool.False)
     3615     | NOP -> Bool.False
     3616     | JMP x -> Bool.False)
    35893617  | CJNE (arg1, arg2) ->
    35903618    (match j with
     
    36623690     | RET -> Bool.False
    36633691     | RETI -> Bool.False
    3664      | NOP -> Bool.False)
     3692     | NOP -> Bool.False
     3693     | JMP x -> Bool.False)
    36653694  | DJNZ (arg1, arg2) ->
    36663695    (match j with
     
    37123741     | RET -> Bool.False
    37133742     | RETI -> Bool.False
    3714      | NOP -> Bool.False)
     3743     | NOP -> Bool.False
     3744     | JMP x -> Bool.False)
    37153745  | ANL arg ->
    37163746    (match j with
     
    38023832     | RET -> Bool.False
    38033833     | RETI -> Bool.False
    3804      | NOP -> Bool.False)
     3834     | NOP -> Bool.False
     3835     | JMP x -> Bool.False)
    38053836  | ORL arg ->
    38063837    (match j with
     
    38923923     | RET -> Bool.False
    38933924     | RETI -> Bool.False
    3894      | NOP -> Bool.False)
     3925     | NOP -> Bool.False
     3926     | JMP x -> Bool.False)
    38953927  | XRL arg ->
    38963928    (match j with
     
    39663998     | RET -> Bool.False
    39673999     | RETI -> Bool.False
    3968      | NOP -> Bool.False)
     4000     | NOP -> Bool.False
     4001     | JMP x -> Bool.False)
    39694002  | CLR arg ->
    39704003    (match j with
     
    40124045     | RET -> Bool.False
    40134046     | RETI -> Bool.False
    4014      | NOP -> Bool.False)
     4047     | NOP -> Bool.False
     4048     | JMP x -> Bool.False)
    40154049  | CPL arg ->
    40164050    (match j with
     
    40584092     | RET -> Bool.False
    40594093     | RETI -> Bool.False
    4060      | NOP -> Bool.False)
     4094     | NOP -> Bool.False
     4095     | JMP x -> Bool.False)
    40614096  | RL arg ->
    40624097    (match j with
     
    41024137     | RET -> Bool.False
    41034138     | RETI -> Bool.False
    4104      | NOP -> Bool.False)
     4139     | NOP -> Bool.False
     4140     | JMP x -> Bool.False)
    41054141  | RLC arg ->
    41064142    (match j with
     
    41464182     | RET -> Bool.False
    41474183     | RETI -> Bool.False
    4148      | NOP -> Bool.False)
     4184     | NOP -> Bool.False
     4185     | JMP x -> Bool.False)
    41494186  | RR arg ->
    41504187    (match j with
     
    41904227     | RET -> Bool.False
    41914228     | RETI -> Bool.False
    4192      | NOP -> Bool.False)
     4229     | NOP -> Bool.False
     4230     | JMP x -> Bool.False)
    41934231  | RRC arg ->
    41944232    (match j with
     
    42344272     | RET -> Bool.False
    42354273     | RETI -> Bool.False
    4236      | NOP -> Bool.False)
     4274     | NOP -> Bool.False
     4275     | JMP x -> Bool.False)
    42374276  | SWAP arg ->
    42384277    (match j with
     
    42784317     | RET -> Bool.False
    42794318     | RETI -> Bool.False
    4280      | NOP -> Bool.False)
     4319     | NOP -> Bool.False
     4320     | JMP x -> Bool.False)
    42814321  | MOV arg ->
    42824322    (match j with
     
    44184458     | RET -> Bool.False
    44194459     | RETI -> Bool.False
    4420      | NOP -> Bool.False)
     4460     | NOP -> Bool.False
     4461     | JMP x -> Bool.False)
    44214462  | MOVX arg ->
    44224463    (match j with
     
    44884529     | RET -> Bool.False
    44894530     | RETI -> Bool.False
    4490      | NOP -> Bool.False)
     4531     | NOP -> Bool.False
     4532     | JMP x -> Bool.False)
    44914533  | SETB arg ->
    44924534    (match j with
     
    45324574     | RET -> Bool.False
    45334575     | RETI -> Bool.False
    4534      | NOP -> Bool.False)
     4576     | NOP -> Bool.False
     4577     | JMP x -> Bool.False)
    45354578  | PUSH arg ->
    45364579    (match j with
     
    45764619     | RET -> Bool.False
    45774620     | RETI -> Bool.False
    4578      | NOP -> Bool.False)
     4621     | NOP -> Bool.False
     4622     | JMP x -> Bool.False)
    45794623  | POP arg ->
    45804624    (match j with
     
    46204664     | RET -> Bool.False
    46214665     | RETI -> Bool.False
    4622      | NOP -> Bool.False)
     4666     | NOP -> Bool.False
     4667     | JMP x -> Bool.False)
    46234668  | XCH (arg1, arg2) ->
    46244669    (match j with
     
    46724717     | RET -> Bool.False
    46734718     | RETI -> Bool.False
    4674      | NOP -> Bool.False)
     4719     | NOP -> Bool.False
     4720     | JMP x -> Bool.False)
    46754721  | XCHD (arg1, arg2) ->
    46764722    (match j with
     
    47224768     | RET -> Bool.False
    47234769     | RETI -> Bool.False
    4724      | NOP -> Bool.False)
     4770     | NOP -> Bool.False
     4771     | JMP x -> Bool.False)
    47254772  | RET ->
    47264773    (match j with
     
    47614808     | RET -> Bool.True
    47624809     | RETI -> Bool.False
    4763      | NOP -> Bool.False)
     4810     | NOP -> Bool.False
     4811     | JMP x -> Bool.False)
    47644812  | RETI ->
    47654813    (match j with
     
    48004848     | RET -> Bool.False
    48014849     | RETI -> Bool.True
    4802      | NOP -> Bool.False)
     4850     | NOP -> Bool.False
     4851     | JMP x -> Bool.False)
    48034852  | NOP ->
    48044853    (match j with
     
    48394888     | RET -> Bool.False
    48404889     | RETI -> Bool.False
    4841      | NOP -> Bool.True)
     4890     | NOP -> Bool.True
     4891     | JMP x -> Bool.False)
     4892  | JMP arg ->
     4893    (match j with
     4894     | ADD (x, x0) -> Bool.False
     4895     | ADDC (x, x0) -> Bool.False
     4896     | SUBB (x, x0) -> Bool.False
     4897     | INC x -> Bool.False
     4898     | DEC x -> Bool.False
     4899     | MUL (x, x0) -> Bool.False
     4900     | DIV (x, x0) -> Bool.False
     4901     | DA x -> Bool.False
     4902     | JC x -> Bool.False
     4903     | JNC x -> Bool.False
     4904     | JB (x, x0) -> Bool.False
     4905     | JNB (x, x0) -> Bool.False
     4906     | JBC (x, x0) -> Bool.False
     4907     | JZ x -> Bool.False
     4908     | JNZ x -> Bool.False
     4909     | CJNE (x, x0) -> Bool.False
     4910     | DJNZ (x, x0) -> Bool.False
     4911     | ANL x -> Bool.False
     4912     | ORL x -> Bool.False
     4913     | XRL x -> Bool.False
     4914     | CLR x -> Bool.False
     4915     | CPL x -> Bool.False
     4916     | RL x -> Bool.False
     4917     | RLC x -> Bool.False
     4918     | RR x -> Bool.False
     4919     | RRC x -> Bool.False
     4920     | SWAP x -> Bool.False
     4921     | MOV x -> Bool.False
     4922     | MOVX x -> Bool.False
     4923     | SETB x -> Bool.False
     4924     | PUSH x -> Bool.False
     4925     | POP x -> Bool.False
     4926     | XCH (x, x0) -> Bool.False
     4927     | XCHD (x, x0) -> Bool.False
     4928     | RET -> Bool.False
     4929     | RETI -> Bool.False
     4930     | NOP -> Bool.False
     4931     | JMP arg' ->
     4932       eq_addressing_mode
     4933         (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,
     4934           Vector.VEmpty)) arg)
     4935         (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,
     4936           Vector.VEmpty)) arg'))
    48424937
    48434938type instruction =
     
    48474942| LJMP of subaddressing_mode
    48484943| SJMP of subaddressing_mode
    4849 | JMP of subaddressing_mode
    48504944| MOVC of subaddressing_mode * subaddressing_mode
    48514945| RealInstruction of subaddressing_mode preinstruction
     
    48544948    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    48554949    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4856     (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4857     (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    4858     preinstruction -> 'a1) -> instruction -> 'a1 **)
    4859 let rec instruction_rect_Type4 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function
    4860 | ACALL x_1827 -> h_ACALL x_1827
    4861 | LCALL x_1828 -> h_LCALL x_1828
    4862 | AJMP x_1829 -> h_AJMP x_1829
    4863 | LJMP x_1830 -> h_LJMP x_1830
    4864 | SJMP x_1831 -> h_SJMP x_1831
    4865 | JMP x_1832 -> h_JMP x_1832
    4866 | MOVC (x_1834, x_1833) -> h_MOVC x_1834 x_1833
    4867 | RealInstruction x_1835 -> h_RealInstruction x_1835
     4950    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode
     4951    -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction ->
     4952    'a1 **)
     4953let rec instruction_rect_Type4 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
     4954| ACALL x_20508 -> h_ACALL x_20508
     4955| LCALL x_20509 -> h_LCALL x_20509
     4956| AJMP x_20510 -> h_AJMP x_20510
     4957| LJMP x_20511 -> h_LJMP x_20511
     4958| SJMP x_20512 -> h_SJMP x_20512
     4959| MOVC (x_20514, x_20513) -> h_MOVC x_20514 x_20513
     4960| RealInstruction x_20515 -> h_RealInstruction x_20515
    48684961
    48694962(** val instruction_rect_Type5 :
    48704963    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    48714964    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4872     (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4873     (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    4874     preinstruction -> 'a1) -> instruction -> 'a1 **)
    4875 let rec instruction_rect_Type5 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function
    4876 | ACALL x_1845 -> h_ACALL x_1845
    4877 | LCALL x_1846 -> h_LCALL x_1846
    4878 | AJMP x_1847 -> h_AJMP x_1847
    4879 | LJMP x_1848 -> h_LJMP x_1848
    4880 | SJMP x_1849 -> h_SJMP x_1849
    4881 | JMP x_1850 -> h_JMP x_1850
    4882 | MOVC (x_1852, x_1851) -> h_MOVC x_1852 x_1851
    4883 | RealInstruction x_1853 -> h_RealInstruction x_1853
     4965    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode
     4966    -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction ->
     4967    'a1 **)
     4968let rec instruction_rect_Type5 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
     4969| ACALL x_20524 -> h_ACALL x_20524
     4970| LCALL x_20525 -> h_LCALL x_20525
     4971| AJMP x_20526 -> h_AJMP x_20526
     4972| LJMP x_20527 -> h_LJMP x_20527
     4973| SJMP x_20528 -> h_SJMP x_20528
     4974| MOVC (x_20530, x_20529) -> h_MOVC x_20530 x_20529
     4975| RealInstruction x_20531 -> h_RealInstruction x_20531
    48844976
    48854977(** val instruction_rect_Type3 :
    48864978    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    48874979    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4888     (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4889     (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    4890     preinstruction -> 'a1) -> instruction -> 'a1 **)
    4891 let rec instruction_rect_Type3 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function
    4892 | ACALL x_1863 -> h_ACALL x_1863
    4893 | LCALL x_1864 -> h_LCALL x_1864
    4894 | AJMP x_1865 -> h_AJMP x_1865
    4895 | LJMP x_1866 -> h_LJMP x_1866
    4896 | SJMP x_1867 -> h_SJMP x_1867
    4897 | JMP x_1868 -> h_JMP x_1868
    4898 | MOVC (x_1870, x_1869) -> h_MOVC x_1870 x_1869
    4899 | RealInstruction x_1871 -> h_RealInstruction x_1871
     4980    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode
     4981    -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction ->
     4982    'a1 **)
     4983let rec instruction_rect_Type3 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
     4984| ACALL x_20540 -> h_ACALL x_20540
     4985| LCALL x_20541 -> h_LCALL x_20541
     4986| AJMP x_20542 -> h_AJMP x_20542
     4987| LJMP x_20543 -> h_LJMP x_20543
     4988| SJMP x_20544 -> h_SJMP x_20544
     4989| MOVC (x_20546, x_20545) -> h_MOVC x_20546 x_20545
     4990| RealInstruction x_20547 -> h_RealInstruction x_20547
    49004991
    49014992(** val instruction_rect_Type2 :
    49024993    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    49034994    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4904     (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4905     (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    4906     preinstruction -> 'a1) -> instruction -> 'a1 **)
    4907 let rec instruction_rect_Type2 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function
    4908 | ACALL x_1881 -> h_ACALL x_1881
    4909 | LCALL x_1882 -> h_LCALL x_1882
    4910 | AJMP x_1883 -> h_AJMP x_1883
    4911 | LJMP x_1884 -> h_LJMP x_1884
    4912 | SJMP x_1885 -> h_SJMP x_1885
    4913 | JMP x_1886 -> h_JMP x_1886
    4914 | MOVC (x_1888, x_1887) -> h_MOVC x_1888 x_1887
    4915 | RealInstruction x_1889 -> h_RealInstruction x_1889
     4995    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode
     4996    -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction ->
     4997    'a1 **)
     4998let rec instruction_rect_Type2 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
     4999| ACALL x_20556 -> h_ACALL x_20556
     5000| LCALL x_20557 -> h_LCALL x_20557
     5001| AJMP x_20558 -> h_AJMP x_20558
     5002| LJMP x_20559 -> h_LJMP x_20559
     5003| SJMP x_20560 -> h_SJMP x_20560
     5004| MOVC (x_20562, x_20561) -> h_MOVC x_20562 x_20561
     5005| RealInstruction x_20563 -> h_RealInstruction x_20563
    49165006
    49175007(** val instruction_rect_Type1 :
    49185008    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    49195009    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4920     (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4921     (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    4922     preinstruction -> 'a1) -> instruction -> 'a1 **)
    4923 let rec instruction_rect_Type1 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function
    4924 | ACALL x_1899 -> h_ACALL x_1899
    4925 | LCALL x_1900 -> h_LCALL x_1900
    4926 | AJMP x_1901 -> h_AJMP x_1901
    4927 | LJMP x_1902 -> h_LJMP x_1902
    4928 | SJMP x_1903 -> h_SJMP x_1903
    4929 | JMP x_1904 -> h_JMP x_1904
    4930 | MOVC (x_1906, x_1905) -> h_MOVC x_1906 x_1905
    4931 | RealInstruction x_1907 -> h_RealInstruction x_1907
     5010    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode
     5011    -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction ->
     5012    'a1 **)
     5013let rec instruction_rect_Type1 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
     5014| ACALL x_20572 -> h_ACALL x_20572
     5015| LCALL x_20573 -> h_LCALL x_20573
     5016| AJMP x_20574 -> h_AJMP x_20574
     5017| LJMP x_20575 -> h_LJMP x_20575
     5018| SJMP x_20576 -> h_SJMP x_20576
     5019| MOVC (x_20578, x_20577) -> h_MOVC x_20578 x_20577
     5020| RealInstruction x_20579 -> h_RealInstruction x_20579
    49325021
    49335022(** val instruction_rect_Type0 :
    49345023    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    49355024    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4936     (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    4937     (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    4938     preinstruction -> 'a1) -> instruction -> 'a1 **)
    4939 let rec instruction_rect_Type0 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function
    4940 | ACALL x_1917 -> h_ACALL x_1917
    4941 | LCALL x_1918 -> h_LCALL x_1918
    4942 | AJMP x_1919 -> h_AJMP x_1919
    4943 | LJMP x_1920 -> h_LJMP x_1920
    4944 | SJMP x_1921 -> h_SJMP x_1921
    4945 | JMP x_1922 -> h_JMP x_1922
    4946 | MOVC (x_1924, x_1923) -> h_MOVC x_1924 x_1923
    4947 | RealInstruction x_1925 -> h_RealInstruction x_1925
     5025    (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode
     5026    -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction ->
     5027    'a1 **)
     5028let rec instruction_rect_Type0 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
     5029| ACALL x_20588 -> h_ACALL x_20588
     5030| LCALL x_20589 -> h_LCALL x_20589
     5031| AJMP x_20590 -> h_AJMP x_20590
     5032| LJMP x_20591 -> h_LJMP x_20591
     5033| SJMP x_20592 -> h_SJMP x_20592
     5034| MOVC (x_20594, x_20593) -> h_MOVC x_20594 x_20593
     5035| RealInstruction x_20595 -> h_RealInstruction x_20595
    49485036
    49495037(** val instruction_inv_rect_Type4 :
     
    49515039    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    49525040    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    4953     -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)
    4954     -> (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1 **)
    4955 let instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    4956   let hcut = instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 hterm in hcut __
     5041    -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction
     5042    -> __ -> 'a1) -> 'a1 **)
     5043let instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 =
     5044  let hcut = instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __
    49575045
    49585046(** val instruction_inv_rect_Type3 :
     
    49605048    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    49615049    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    4962     -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)
    4963     -> (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1 **)
    4964 let instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    4965   let hcut = instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 hterm in hcut __
     5050    -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction
     5051    -> __ -> 'a1) -> 'a1 **)
     5052let instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 =
     5053  let hcut = instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __
    49665054
    49675055(** val instruction_inv_rect_Type2 :
     
    49695057    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    49705058    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    4971     -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)
    4972     -> (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1 **)
    4973 let instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    4974   let hcut = instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 hterm in hcut __
     5059    -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction
     5060    -> __ -> 'a1) -> 'a1 **)
     5061let instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 =
     5062  let hcut = instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __
    49755063
    49765064(** val instruction_inv_rect_Type1 :
     
    49785066    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    49795067    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    4980     -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)
    4981     -> (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1 **)
    4982 let instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    4983   let hcut = instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 hterm in hcut __
     5068    -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction
     5069    -> __ -> 'a1) -> 'a1 **)
     5070let instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 =
     5071  let hcut = instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __
    49845072
    49855073(** val instruction_inv_rect_Type0 :
     
    49875075    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    49885076    -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode
    4989     -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)
    4990     -> (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1 **)
    4991 let instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    4992   let hcut = instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 hterm in hcut __
     5077    -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction
     5078    -> __ -> 'a1) -> 'a1 **)
     5079let instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 =
     5080  let hcut = instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __
    49935081
    49945082(** val instruction_discr : instruction -> instruction -> __ **)
     
    50015089     | LJMP a0 -> Obj.magic (fun _ dH -> dH __)
    50025090     | SJMP a0 -> Obj.magic (fun _ dH -> dH __)
    5003      | JMP a0 -> Obj.magic (fun _ dH -> dH __)
    50045091     | MOVC (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)
    50055092     | RealInstruction a0 -> Obj.magic (fun _ dH -> dH __)) y
     
    50145101     | LJMP a0 -> Obj.magic (fun _ dH -> dH __)
    50155102     | SJMP a0 -> Obj.magic (fun _ dH -> dH __)
    5016      | JMP a0 -> Obj.magic (fun _ dH -> dH __)
    50175103     | MOVC (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)
    50185104     | RealInstruction a0 -> Obj.magic (fun _ dH -> dH __)) y
     
    50335119     | LJMP x -> Bool.False
    50345120     | SJMP x -> Bool.False
    5035      | JMP x -> Bool.False
    50365121     | MOVC (x, x0) -> Bool.False
    50375122     | RealInstruction x -> Bool.False)
     
    50485133     | LJMP x -> Bool.False
    50495134     | SJMP x -> Bool.False
    5050      | JMP x -> Bool.False
    50515135     | MOVC (x, x0) -> Bool.False
    50525136     | RealInstruction x -> Bool.False)
     
    50635147     | LJMP x -> Bool.False
    50645148     | SJMP x -> Bool.False
    5065      | JMP x -> Bool.False
    50665149     | MOVC (x, x0) -> Bool.False
    50675150     | RealInstruction x -> Bool.False)
     
    50785161           Vector.VEmpty)) arg')
    50795162     | SJMP x -> Bool.False
    5080      | JMP x -> Bool.False
    50815163     | MOVC (x, x0) -> Bool.False
    50825164     | RealInstruction x -> Bool.False)
     
    50935175         (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Relative,
    50945176           Vector.VEmpty)) arg')
    5095      | JMP x -> Bool.False
    5096      | MOVC (x, x0) -> Bool.False
    5097      | RealInstruction x -> Bool.False)
    5098   | JMP arg ->
    5099     (match j with
    5100      | ACALL x -> Bool.False
    5101      | LCALL x -> Bool.False
    5102      | AJMP x -> Bool.False
    5103      | LJMP x -> Bool.False
    5104      | SJMP x -> Bool.False
    5105      | JMP arg' ->
    5106        eq_addressing_mode
    5107          (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,
    5108            Vector.VEmpty)) arg)
    5109          (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,
    5110            Vector.VEmpty)) arg')
    51115177     | MOVC (x, x0) -> Bool.False
    51125178     | RealInstruction x -> Bool.False)
     
    51185184     | LJMP x -> Bool.False
    51195185     | SJMP x -> Bool.False
    5120      | JMP x -> Bool.False
    51215186     | MOVC (arg1', arg2') ->
    51225187       Bool.andb
     
    51395204     | LJMP x -> Bool.False
    51405205     | SJMP x -> Bool.False
    5141      | JMP x -> Bool.False
    51425206     | MOVC (x, x0) -> Bool.False
    51435207     | RealInstruction instr' -> eq_preinstruction instr instr')
     5208
     5209type word_side =
     5210| HIGH
     5211| LOW
     5212
     5213(** val word_side_rect_Type4 : 'a1 -> 'a1 -> word_side -> 'a1 **)
     5214let rec word_side_rect_Type4 h_HIGH h_LOW = function
     5215| HIGH -> h_HIGH
     5216| LOW -> h_LOW
     5217
     5218(** val word_side_rect_Type5 : 'a1 -> 'a1 -> word_side -> 'a1 **)
     5219let rec word_side_rect_Type5 h_HIGH h_LOW = function
     5220| HIGH -> h_HIGH
     5221| LOW -> h_LOW
     5222
     5223(** val word_side_rect_Type3 : 'a1 -> 'a1 -> word_side -> 'a1 **)
     5224let rec word_side_rect_Type3 h_HIGH h_LOW = function
     5225| HIGH -> h_HIGH
     5226| LOW -> h_LOW
     5227
     5228(** val word_side_rect_Type2 : 'a1 -> 'a1 -> word_side -> 'a1 **)
     5229let rec word_side_rect_Type2 h_HIGH h_LOW = function
     5230| HIGH -> h_HIGH
     5231| LOW -> h_LOW
     5232
     5233(** val word_side_rect_Type1 : 'a1 -> 'a1 -> word_side -> 'a1 **)
     5234let rec word_side_rect_Type1 h_HIGH h_LOW = function
     5235| HIGH -> h_HIGH
     5236| LOW -> h_LOW
     5237
     5238(** val word_side_rect_Type0 : 'a1 -> 'a1 -> word_side -> 'a1 **)
     5239let rec word_side_rect_Type0 h_HIGH h_LOW = function
     5240| HIGH -> h_HIGH
     5241| LOW -> h_LOW
     5242
     5243(** val word_side_inv_rect_Type4 :
     5244    word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **)
     5245let word_side_inv_rect_Type4 hterm h1 h2 =
     5246  let hcut = word_side_rect_Type4 h1 h2 hterm in hcut __
     5247
     5248(** val word_side_inv_rect_Type3 :
     5249    word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **)
     5250let word_side_inv_rect_Type3 hterm h1 h2 =
     5251  let hcut = word_side_rect_Type3 h1 h2 hterm in hcut __
     5252
     5253(** val word_side_inv_rect_Type2 :
     5254    word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **)
     5255let word_side_inv_rect_Type2 hterm h1 h2 =
     5256  let hcut = word_side_rect_Type2 h1 h2 hterm in hcut __
     5257
     5258(** val word_side_inv_rect_Type1 :
     5259    word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **)
     5260let word_side_inv_rect_Type1 hterm h1 h2 =
     5261  let hcut = word_side_rect_Type1 h1 h2 hterm in hcut __
     5262
     5263(** val word_side_inv_rect_Type0 :
     5264    word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **)
     5265let word_side_inv_rect_Type0 hterm h1 h2 =
     5266  let hcut = word_side_rect_Type0 h1 h2 hterm in hcut __
     5267
     5268(** val word_side_discr : word_side -> word_side -> __ **)
     5269let word_side_discr x y =
     5270  Logic.eq_rect_Type2 x
     5271    (match x with
     5272     | HIGH -> Obj.magic (fun _ dH -> dH)
     5273     | LOW -> Obj.magic (fun _ dH -> dH)) y
     5274
     5275(** val word_side_jmdiscr : word_side -> word_side -> __ **)
     5276let word_side_jmdiscr x y =
     5277  Logic.eq_rect_Type2 x
     5278    (match x with
     5279     | HIGH -> Obj.magic (fun _ dH -> dH)
     5280     | LOW -> Obj.magic (fun _ dH -> dH)) y
    51445281
    51455282type pseudo_instruction =
     
    51485285| Cost of CostLabel.costlabel
    51495286| Jmp of identifier0
     5287| Jnz of subaddressing_mode * identifier0 * identifier0
     5288| MovSuccessor of subaddressing_mode * word_side * identifier0
    51505289| Call of identifier0
    51515290| Mov of subaddressing_mode * identifier0
     
    51535292(** val pseudo_instruction_rect_Type4 :
    51545293    (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5155     (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    5156     'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction
    5157     -> 'a1 **)
    5158 let rec pseudo_instruction_rect_Type4 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function
    5159 | Instruction x_2057 -> h_Instruction x_2057
    5160 | Comment x_2058 -> h_Comment x_2058
    5161 | Cost x_2059 -> h_Cost x_2059
    5162 | Jmp x_2060 -> h_Jmp x_2060
    5163 | Call x_2061 -> h_Call x_2061
    5164 | Mov (x_2063, x_2062) -> h_Mov x_2063 x_2062
     5294    (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) ->
     5295    (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) ->
     5296    (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0
     5297    -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) ->
     5298    pseudo_instruction -> 'a1 **)
     5299let rec pseudo_instruction_rect_Type4 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5300| Instruction x_20761 -> h_Instruction x_20761
     5301| Comment x_20762 -> h_Comment x_20762
     5302| Cost x_20763 -> h_Cost x_20763
     5303| Jmp x_20764 -> h_Jmp x_20764
     5304| Jnz (x_20767, x_20766, x_20765) -> h_Jnz x_20767 x_20766 x_20765
     5305| MovSuccessor (x_20770, x_20769, x_20768) ->
     5306  h_MovSuccessor x_20770 x_20769 x_20768
     5307| Call x_20771 -> h_Call x_20771
     5308| Mov (x_20773, x_20772) -> h_Mov x_20773 x_20772
    51655309
    51665310(** val pseudo_instruction_rect_Type5 :
    51675311    (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5168     (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    5169     'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction
    5170     -> 'a1 **)
    5171 let rec pseudo_instruction_rect_Type5 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function
    5172 | Instruction x_2071 -> h_Instruction x_2071
    5173 | Comment x_2072 -> h_Comment x_2072
    5174 | Cost x_2073 -> h_Cost x_2073
    5175 | Jmp x_2074 -> h_Jmp x_2074
    5176 | Call x_2075 -> h_Call x_2075
    5177 | Mov (x_2077, x_2076) -> h_Mov x_2077 x_2076
     5312    (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) ->
     5313    (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) ->
     5314    (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0
     5315    -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) ->
     5316    pseudo_instruction -> 'a1 **)
     5317let rec pseudo_instruction_rect_Type5 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5318| Instruction x_20783 -> h_Instruction x_20783
     5319| Comment x_20784 -> h_Comment x_20784
     5320| Cost x_20785 -> h_Cost x_20785
     5321| Jmp x_20786 -> h_Jmp x_20786
     5322| Jnz (x_20789, x_20788, x_20787) -> h_Jnz x_20789 x_20788 x_20787
     5323| MovSuccessor (x_20792, x_20791, x_20790) ->
     5324  h_MovSuccessor x_20792 x_20791 x_20790
     5325| Call x_20793 -> h_Call x_20793
     5326| Mov (x_20795, x_20794) -> h_Mov x_20795 x_20794
    51785327
    51795328(** val pseudo_instruction_rect_Type3 :
    51805329    (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5181     (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    5182     'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction
    5183     -> 'a1 **)
    5184 let rec pseudo_instruction_rect_Type3 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function
    5185 | Instruction x_2085 -> h_Instruction x_2085
    5186 | Comment x_2086 -> h_Comment x_2086
    5187 | Cost x_2087 -> h_Cost x_2087
    5188 | Jmp x_2088 -> h_Jmp x_2088
    5189 | Call x_2089 -> h_Call x_2089
    5190 | Mov (x_2091, x_2090) -> h_Mov x_2091 x_2090
     5330    (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) ->
     5331    (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) ->
     5332    (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0
     5333    -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) ->
     5334    pseudo_instruction -> 'a1 **)
     5335let rec pseudo_instruction_rect_Type3 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5336| Instruction x_20805 -> h_Instruction x_20805
     5337| Comment x_20806 -> h_Comment x_20806
     5338| Cost x_20807 -> h_Cost x_20807
     5339| Jmp x_20808 -> h_Jmp x_20808
     5340| Jnz (x_20811, x_20810, x_20809) -> h_Jnz x_20811 x_20810 x_20809
     5341| MovSuccessor (x_20814, x_20813, x_20812) ->
     5342  h_MovSuccessor x_20814 x_20813 x_20812
     5343| Call x_20815 -> h_Call x_20815
     5344| Mov (x_20817, x_20816) -> h_Mov x_20817 x_20816
    51915345
    51925346(** val pseudo_instruction_rect_Type2 :
    51935347    (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5194     (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    5195     'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction
    5196     -> 'a1 **)
    5197 let rec pseudo_instruction_rect_Type2 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function
    5198 | Instruction x_2099 -> h_Instruction x_2099
    5199 | Comment x_2100 -> h_Comment x_2100
    5200 | Cost x_2101 -> h_Cost x_2101
    5201 | Jmp x_2102 -> h_Jmp x_2102
    5202 | Call x_2103 -> h_Call x_2103
    5203 | Mov (x_2105, x_2104) -> h_Mov x_2105 x_2104
     5348    (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) ->
     5349    (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) ->
     5350    (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0
     5351    -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) ->
     5352    pseudo_instruction -> 'a1 **)
     5353let rec pseudo_instruction_rect_Type2 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5354| Instruction x_20827 -> h_Instruction x_20827
     5355| Comment x_20828 -> h_Comment x_20828
     5356| Cost x_20829 -> h_Cost x_20829
     5357| Jmp x_20830 -> h_Jmp x_20830
     5358| Jnz (x_20833, x_20832, x_20831) -> h_Jnz x_20833 x_20832 x_20831
     5359| MovSuccessor (x_20836, x_20835, x_20834) ->
     5360  h_MovSuccessor x_20836 x_20835 x_20834
     5361| Call x_20837 -> h_Call x_20837
     5362| Mov (x_20839, x_20838) -> h_Mov x_20839 x_20838
    52045363
    52055364(** val pseudo_instruction_rect_Type1 :
    52065365    (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5207     (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    5208     'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction
    5209     -> 'a1 **)
    5210 let rec pseudo_instruction_rect_Type1 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function
    5211 | Instruction x_2113 -> h_Instruction x_2113
    5212 | Comment x_2114 -> h_Comment x_2114
    5213 | Cost x_2115 -> h_Cost x_2115
    5214 | Jmp x_2116 -> h_Jmp x_2116
    5215 | Call x_2117 -> h_Call x_2117
    5216 | Mov (x_2119, x_2118) -> h_Mov x_2119 x_2118
     5366    (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) ->
     5367    (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) ->
     5368    (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0
     5369    -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) ->
     5370    pseudo_instruction -> 'a1 **)
     5371let rec pseudo_instruction_rect_Type1 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5372| Instruction x_20849 -> h_Instruction x_20849
     5373| Comment x_20850 -> h_Comment x_20850
     5374| Cost x_20851 -> h_Cost x_20851
     5375| Jmp x_20852 -> h_Jmp x_20852
     5376| Jnz (x_20855, x_20854, x_20853) -> h_Jnz x_20855 x_20854 x_20853
     5377| MovSuccessor (x_20858, x_20857, x_20856) ->
     5378  h_MovSuccessor x_20858 x_20857 x_20856
     5379| Call x_20859 -> h_Call x_20859
     5380| Mov (x_20861, x_20860) -> h_Mov x_20861 x_20860
    52175381
    52185382(** val pseudo_instruction_rect_Type0 :
    52195383    (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5220     (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    5221     'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction
    5222     -> 'a1 **)
    5223 let rec pseudo_instruction_rect_Type0 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function
    5224 | Instruction x_2127 -> h_Instruction x_2127
    5225 | Comment x_2128 -> h_Comment x_2128
    5226 | Cost x_2129 -> h_Cost x_2129
    5227 | Jmp x_2130 -> h_Jmp x_2130
    5228 | Call x_2131 -> h_Call x_2131
    5229 | Mov (x_2133, x_2132) -> h_Mov x_2133 x_2132
     5384    (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) ->
     5385    (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) ->
     5386    (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0
     5387    -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) ->
     5388    pseudo_instruction -> 'a1 **)
     5389let rec pseudo_instruction_rect_Type0 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5390| Instruction x_20871 -> h_Instruction x_20871
     5391| Comment x_20872 -> h_Comment x_20872
     5392| Cost x_20873 -> h_Cost x_20873
     5393| Jmp x_20874 -> h_Jmp x_20874
     5394| Jnz (x_20877, x_20876, x_20875) -> h_Jnz x_20877 x_20876 x_20875
     5395| MovSuccessor (x_20880, x_20879, x_20878) ->
     5396  h_MovSuccessor x_20880 x_20879 x_20878
     5397| Call x_20881 -> h_Call x_20881
     5398| Mov (x_20883, x_20882) -> h_Mov x_20883 x_20882
    52305399
    52315400(** val pseudo_instruction_inv_rect_Type4 :
    52325401    pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    52335402    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    5234     (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     5403    (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     5404    identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     5405    identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    52355406    (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **)
    5236 let pseudo_instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 =
    5237   let hcut = pseudo_instruction_rect_Type4 h1 h2 h3 h4 h5 h6 hterm in hcut __
     5407let pseudo_instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
     5408  let hcut = pseudo_instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5409  hcut __
    52385410
    52395411(** val pseudo_instruction_inv_rect_Type3 :
    52405412    pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    52415413    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    5242     (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     5414    (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     5415    identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     5416    identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    52435417    (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **)
    5244 let pseudo_instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 =
    5245   let hcut = pseudo_instruction_rect_Type3 h1 h2 h3 h4 h5 h6 hterm in hcut __
     5418let pseudo_instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
     5419  let hcut = pseudo_instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5420  hcut __
    52465421
    52475422(** val pseudo_instruction_inv_rect_Type2 :
    52485423    pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    52495424    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    5250     (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     5425    (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     5426    identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     5427    identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    52515428    (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **)
    5252 let pseudo_instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 =
    5253   let hcut = pseudo_instruction_rect_Type2 h1 h2 h3 h4 h5 h6 hterm in hcut __
     5429let pseudo_instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
     5430  let hcut = pseudo_instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5431  hcut __
    52545432
    52555433(** val pseudo_instruction_inv_rect_Type1 :
    52565434    pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    52575435    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    5258     (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     5436    (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     5437    identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     5438    identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    52595439    (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **)
    5260 let pseudo_instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 =
    5261   let hcut = pseudo_instruction_rect_Type1 h1 h2 h3 h4 h5 h6 hterm in hcut __
     5440let pseudo_instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
     5441  let hcut = pseudo_instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5442  hcut __
    52625443
    52635444(** val pseudo_instruction_inv_rect_Type0 :
    52645445    pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    52655446    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    5266     (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     5447    (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     5448    identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     5449    identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    52675450    (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **)
    5268 let pseudo_instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 =
    5269   let hcut = pseudo_instruction_rect_Type0 h1 h2 h3 h4 h5 h6 hterm in hcut __
     5451let pseudo_instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
     5452  let hcut = pseudo_instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5453  hcut __
    52705454
    52715455(** val pseudo_instruction_discr :
     
    52785462     | Cost a0 -> Obj.magic (fun _ dH -> dH __)
    52795463     | Jmp a0 -> Obj.magic (fun _ dH -> dH __)
     5464     | Jnz (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
     5465     | MovSuccessor (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
    52805466     | Call a0 -> Obj.magic (fun _ dH -> dH __)
    52815467     | Mov (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)) y
     
    52905476     | Cost a0 -> Obj.magic (fun _ dH -> dH __)
    52915477     | Jmp a0 -> Obj.magic (fun _ dH -> dH __)
     5478     | Jnz (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
     5479     | MovSuccessor (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
    52925480     | Call a0 -> Obj.magic (fun _ dH -> dH __)
    52935481     | Mov (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)) y
     
    52955483type labelled_instruction = pseudo_instruction LabelledObjects.labelled_obj
    52965484
    5297 type preamble =
    5298   (Nat.nat Identifiers.identifier_map, (identifier0, BitVector.word)
    5299   Types.prod List.list) Types.prod
     5485type preamble = (identifier0, BitVector.word) Types.prod List.list
    53005486
    53015487type assembly_program = instruction List.list
     
    53435529| RETI -> Bool.False
    53445530| NOP -> Bool.False
     5531| JMP x0 -> Bool.False
    53455532
    53465533(** val is_relative_jump : pseudo_instruction -> Bool.bool **)
     
    53505537| Cost x -> Bool.False
    53515538| Jmp x -> Bool.False
     5539| Jnz (x, x0, x1) -> Bool.False
     5540| MovSuccessor (x, x0, x1) -> Bool.False
    53525541| Call x -> Bool.False
    53535542| Mov (x, x0) -> Bool.False
     
    53595548| Cost x -> Bool.False
    53605549| Jmp x -> Bool.True
     5550| Jnz (x, x0, x1) -> Bool.False
     5551| MovSuccessor (x, x0, x1) -> Bool.False
    53615552| Call x -> Bool.True
    53625553| Mov (x, x0) -> Bool.False
     
    53685559| Cost x -> Bool.False
    53695560| Jmp x -> Bool.False
     5561| Jnz (x, x0, x1) -> Bool.False
     5562| MovSuccessor (x, x0, x1) -> Bool.False
    53705563| Call x -> Bool.True
    53715564| Mov (x, x0) -> Bool.False
  • extracted/aSM.mli

    r2649 r2717  
    6060
    6161open Identifiers
     62
     63open BitVectorTrie
     64
     65open Exp
    6266
    6367open Arithmetic
     
    433437| RETI
    434438| NOP
     439| JMP of subaddressing_mode
    435440
    436441val preinstruction_rect_Type4 :
     
    466471  'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) ->
    467472  (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode ->
    468   subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction ->
    469   'a2
     473  subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode ->
     474  'a2) -> 'a1 preinstruction -> 'a2
    470475
    471476val preinstruction_rect_Type5 :
     
    501506  'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) ->
    502507  (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode ->
    503   subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction ->
    504   'a2
     508  subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode ->
     509  'a2) -> 'a1 preinstruction -> 'a2
    505510
    506511val preinstruction_rect_Type3 :
     
    536541  'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) ->
    537542  (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode ->
    538   subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction ->
    539   'a2
     543  subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode ->
     544  'a2) -> 'a1 preinstruction -> 'a2
    540545
    541546val preinstruction_rect_Type2 :
     
    571576  'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) ->
    572577  (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode ->
    573   subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction ->
    574   'a2
     578  subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode ->
     579  'a2) -> 'a1 preinstruction -> 'a2
    575580
    576581val preinstruction_rect_Type1 :
     
    606611  'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) ->
    607612  (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode ->
    608   subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction ->
    609   'a2
     613  subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode ->
     614  'a2) -> 'a1 preinstruction -> 'a2
    610615
    611616val preinstruction_rect_Type0 :
     
    641646  'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) ->
    642647  (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode ->
    643   subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction ->
    644   'a2
     648  subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode ->
     649  'a2) -> 'a1 preinstruction -> 'a2
    645650
    646651val preinstruction_inv_rect_Type4 :
     
    680685  subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode ->
    681686  subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ ->
    682   'a2) -> 'a2
     687  'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2
    683688
    684689val preinstruction_inv_rect_Type3 :
     
    718723  subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode ->
    719724  subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ ->
    720   'a2) -> 'a2
     725  'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2
    721726
    722727val preinstruction_inv_rect_Type2 :
     
    756761  subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode ->
    757762  subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ ->
    758   'a2) -> 'a2
     763  'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2
    759764
    760765val preinstruction_inv_rect_Type1 :
     
    794799  subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode ->
    795800  subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ ->
    796   'a2) -> 'a2
     801  'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2
    797802
    798803val preinstruction_inv_rect_Type0 :
     
    832837  subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode ->
    833838  subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ ->
    834   'a2) -> 'a2
     839  'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2
    835840
    836841val preinstruction_discr : 'a1 preinstruction -> 'a1 preinstruction -> __
     
    848853| LJMP of subaddressing_mode
    849854| SJMP of subaddressing_mode
    850 | JMP of subaddressing_mode
    851855| MOVC of subaddressing_mode * subaddressing_mode
    852856| RealInstruction of subaddressing_mode preinstruction
     
    855859  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    856860  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    857   (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    858   (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    859   preinstruction -> 'a1) -> instruction -> 'a1
     861  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode ->
     862  'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1
    860863
    861864val instruction_rect_Type5 :
    862865  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    863866  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    864   (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    865   (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    866   preinstruction -> 'a1) -> instruction -> 'a1
     867  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode ->
     868  'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1
    867869
    868870val instruction_rect_Type3 :
    869871  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    870872  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    871   (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    872   (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    873   preinstruction -> 'a1) -> instruction -> 'a1
     873  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode ->
     874  'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1
    874875
    875876val instruction_rect_Type2 :
    876877  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    877878  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    878   (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    879   (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    880   preinstruction -> 'a1) -> instruction -> 'a1
     879  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode ->
     880  'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1
    881881
    882882val instruction_rect_Type1 :
    883883  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    884884  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    885   (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    886   (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    887   preinstruction -> 'a1) -> instruction -> 'a1
     885  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode ->
     886  'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1
    888887
    889888val instruction_rect_Type0 :
    890889  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    891890  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    892   (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) ->
    893   (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode
    894   preinstruction -> 'a1) -> instruction -> 'a1
     891  (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode ->
     892  'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1
    895893
    896894val instruction_inv_rect_Type4 :
     
    898896  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    899897  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    900   __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1) ->
    901   (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1
     898  subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction ->
     899  __ -> 'a1) -> 'a1
    902900
    903901val instruction_inv_rect_Type3 :
     
    905903  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    906904  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    907   __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1) ->
    908   (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1
     905  subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction ->
     906  __ -> 'a1) -> 'a1
    909907
    910908val instruction_inv_rect_Type2 :
     
    912910  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    913911  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    914   __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1) ->
    915   (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1
     912  subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction ->
     913  __ -> 'a1) -> 'a1
    916914
    917915val instruction_inv_rect_Type1 :
     
    919917  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    920918  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    921   __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1) ->
    922   (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1
     919  subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction ->
     920  __ -> 'a1) -> 'a1
    923921
    924922val instruction_inv_rect_Type0 :
     
    926924  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    927925  __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode ->
    928   __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1) ->
    929   (subaddressing_mode preinstruction -> __ -> 'a1) -> 'a1
     926  subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction ->
     927  __ -> 'a1) -> 'a1
    930928
    931929val instruction_discr : instruction -> instruction -> __
     
    934932
    935933val eq_instruction : instruction -> instruction -> Bool.bool
     934
     935type word_side =
     936| HIGH
     937| LOW
     938
     939val word_side_rect_Type4 : 'a1 -> 'a1 -> word_side -> 'a1
     940
     941val word_side_rect_Type5 : 'a1 -> 'a1 -> word_side -> 'a1
     942
     943val word_side_rect_Type3 : 'a1 -> 'a1 -> word_side -> 'a1
     944
     945val word_side_rect_Type2 : 'a1 -> 'a1 -> word_side -> 'a1
     946
     947val word_side_rect_Type1 : 'a1 -> 'a1 -> word_side -> 'a1
     948
     949val word_side_rect_Type0 : 'a1 -> 'a1 -> word_side -> 'a1
     950
     951val word_side_inv_rect_Type4 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1
     952
     953val word_side_inv_rect_Type3 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1
     954
     955val word_side_inv_rect_Type2 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1
     956
     957val word_side_inv_rect_Type1 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1
     958
     959val word_side_inv_rect_Type0 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1
     960
     961val word_side_discr : word_side -> word_side -> __
     962
     963val word_side_jmdiscr : word_side -> word_side -> __
    936964
    937965type pseudo_instruction =
     
    940968| Cost of CostLabel.costlabel
    941969| Jmp of identifier0
     970| Jnz of subaddressing_mode * identifier0 * identifier0
     971| MovSuccessor of subaddressing_mode * word_side * identifier0
    942972| Call of identifier0
    943973| Mov of subaddressing_mode * identifier0
     
    945975val pseudo_instruction_rect_Type4 :
    946976  (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    947   (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    948   'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction ->
    949   'a1
     977  (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode
     978  -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side
     979  -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode ->
     980  identifier0 -> 'a1) -> pseudo_instruction -> 'a1
    950981
    951982val pseudo_instruction_rect_Type5 :
    952983  (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    953   (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    954   'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction ->
    955   'a1
     984  (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode
     985  -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side
     986  -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode ->
     987  identifier0 -> 'a1) -> pseudo_instruction -> 'a1
    956988
    957989val pseudo_instruction_rect_Type3 :
    958990  (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    959   (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    960   'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction ->
    961   'a1
     991  (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode
     992  -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side
     993  -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode ->
     994  identifier0 -> 'a1) -> pseudo_instruction -> 'a1
    962995
    963996val pseudo_instruction_rect_Type2 :
    964997  (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    965   (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    966   'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction ->
    967   'a1
     998  (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode
     999  -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side
     1000  -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode ->
     1001  identifier0 -> 'a1) -> pseudo_instruction -> 'a1
    9681002
    9691003val pseudo_instruction_rect_Type1 :
    9701004  (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    971   (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    972   'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction ->
    973   'a1
     1005  (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode
     1006  -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side
     1007  -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode ->
     1008  identifier0 -> 'a1) -> pseudo_instruction -> 'a1
    9741009
    9751010val pseudo_instruction_rect_Type0 :
    9761011  (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) ->
    977   (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 ->
    978   'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction ->
    979   'a1
     1012  (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode
     1013  -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side
     1014  -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode ->
     1015  identifier0 -> 'a1) -> pseudo_instruction -> 'a1
    9801016
    9811017val pseudo_instruction_inv_rect_Type4 :
    9821018  pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    9831019  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    984   (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     1020  (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     1021  identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     1022  identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    9851023  (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1
    9861024
     
    9881026  pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    9891027  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    990   (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     1028  (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     1029  identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     1030  identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    9911031  (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1
    9921032
     
    9941034  pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    9951035  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    996   (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     1036  (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     1037  identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     1038  identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    9971039  (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1
    9981040
     
    10001042  pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    10011043  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    1002   (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     1044  (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     1045  identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     1046  identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    10031047  (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1
    10041048
     
    10061050  pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) ->
    10071051  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    1008   (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
     1052  (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 ->
     1053  identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
     1054  identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) ->
    10091055  (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1
    10101056
     
    10161062type labelled_instruction = pseudo_instruction LabelledObjects.labelled_obj
    10171063
    1018 type preamble =
    1019   (Nat.nat Identifiers.identifier_map, (identifier0, BitVector.word)
    1020   Types.prod List.list) Types.prod
     1064type preamble = (identifier0, BitVector.word) Types.prod List.list
    10211065
    10221066type assembly_program = instruction List.list
  • extracted/aSMCosts.ml

    r2649 r2717  
    55open LabelledObjects
    66
     7open BitVectorTrie
     8
     9open Exp
     10
    711open Arithmetic
    812
     
    7478
    7579open ASM
    76 
    77 open BitVectorTrie
    7880
    7981open Fetch
     
    141143| StructuredTraces.Tal_base_call (pre_fun_call, start_fun_call, final, x2) ->
    142144  Interpret.current_instruction_cost code_memory (Obj.magic pre_fun_call)
    143 | StructuredTraces.Tal_base_tailcall (x, x0, x1, x4) ->
    144   assert false (* absurd case *)
     145| StructuredTraces.Tal_base_tailcall
     146    (pre_fun_call, start_fun_call, final, x1) ->
     147  Interpret.current_instruction_cost code_memory (Obj.magic pre_fun_call)
    145148| StructuredTraces.Tal_step_call
    146149    (end_flag, pre_fun_call, start_fun_call, after_fun_call, final,
     
    184187   | Nat.S program_size' ->
    185188     (fun _ ->
    186        (let { Types.fst = eta24805; Types.snd = ticks } =
     189       (let { Types.fst = eta31521; Types.snd = ticks } =
    187190          Fetch.fetch code_memory' program_counter'
    188191        in
    189192       let { Types.fst = instruction0; Types.snd = program_counter'' } =
    190          eta24805
     193         eta31521
    191194       in
    192195       (fun _ ->
     
    247250                          (block_cost' code_memory' jump_target program_size'
    248251                            cost_labels Bool.False)))
    249                   | ASM.JMP addr ->
    250                     (fun _ ->
    251                       Nat.plus ticks
    252                         (Types.pi1
    253                           (block_cost' code_memory' program_counter''
    254                             program_size' cost_labels Bool.False)))
    255252                  | ASM.MOVC (src, trgt) ->
    256253                    (fun _ ->
     
    428425                             (Types.pi1
    429426                               (block_cost' code_memory' program_counter''
     427                                 program_size' cost_labels Bool.False)))
     428                       | ASM.JMP addr ->
     429                         (fun _ ->
     430                           Nat.plus ticks
     431                             (Types.pi1
     432                               (block_cost' code_memory' program_counter''
    430433                                 program_size' cost_labels Bool.False)))) __))
    431434                  __))
     
    440443  let cost_of_block =
    441444    block_cost' code_memory program_counter0
    442       (Util.exponential (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S
     445      (Exp.exp (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    443446        (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    444         (Nat.S (Nat.S Nat.O))))))))))))))))) cost_labels Bool.True
     447        (Nat.S Nat.O))))))))))))))))) cost_labels Bool.True
    445448  in
    446449  cost_of_block
  • extracted/aSMCosts.mli

    r2649 r2717  
    44
    55open LabelledObjects
     6
     7open BitVectorTrie
     8
     9open Exp
    610
    711open Arithmetic
     
    7579open ASM
    7680
    77 open BitVectorTrie
    78 
    7981open Fetch
    8082
  • extracted/aSMCostsSplit.ml

    r2649 r2717  
    1515open Interpret
    1616
    17 open BitVectorTrie
    18 
    1917open Fetch
    2018
     
    2220
    2321open LabelledObjects
     22
     23open BitVectorTrie
     24
     25open Exp
    2426
    2527open Arithmetic
     
    142144        (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    143145        Nat.O)))))))))))))))))
    144       (Util.exponential (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S
     146      (Exp.exp (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    145147        (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    146         (Nat.S (Nat.S Nat.O))))))))))))))))))
     148        (Nat.S Nat.O))))))))))))))))))
    147149
    148150(** val compute_costs :
  • extracted/aSMCostsSplit.mli

    r2649 r2717  
    1515open Interpret
    1616
    17 open BitVectorTrie
    18 
    1917open Fetch
    2018
     
    2220
    2321open LabelledObjects
     22
     23open BitVectorTrie
     24
     25open Exp
    2426
    2527open Arithmetic
  • extracted/aST.ml

    r2649 r2717  
    1010
    1111open Types
     12
     13open Exp
    1214
    1315open Arithmetic
     
    416418    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    417419let rec typ_rect_Type4 h_ASTint h_ASTptr = function
    418 | ASTint (x_1373, x_1372) -> h_ASTint x_1373 x_1372
     420| ASTint (x_3480, x_3479) -> h_ASTint x_3480 x_3479
    419421| ASTptr -> h_ASTptr
    420422
     
    422424    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    423425let rec typ_rect_Type5 h_ASTint h_ASTptr = function
    424 | ASTint (x_1378, x_1377) -> h_ASTint x_1378 x_1377
     426| ASTint (x_3485, x_3484) -> h_ASTint x_3485 x_3484
    425427| ASTptr -> h_ASTptr
    426428
     
    428430    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    429431let rec typ_rect_Type3 h_ASTint h_ASTptr = function
    430 | ASTint (x_1383, x_1382) -> h_ASTint x_1383 x_1382
     432| ASTint (x_3490, x_3489) -> h_ASTint x_3490 x_3489
    431433| ASTptr -> h_ASTptr
    432434
     
    434436    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    435437let rec typ_rect_Type2 h_ASTint h_ASTptr = function
    436 | ASTint (x_1388, x_1387) -> h_ASTint x_1388 x_1387
     438| ASTint (x_3495, x_3494) -> h_ASTint x_3495 x_3494
    437439| ASTptr -> h_ASTptr
    438440
     
    440442    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    441443let rec typ_rect_Type1 h_ASTint h_ASTptr = function
    442 | ASTint (x_1393, x_1392) -> h_ASTint x_1393 x_1392
     444| ASTint (x_3500, x_3499) -> h_ASTint x_3500 x_3499
    443445| ASTptr -> h_ASTptr
    444446
     
    446448    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    447449let rec typ_rect_Type0 h_ASTint h_ASTptr = function
    448 | ASTint (x_1398, x_1397) -> h_ASTint x_1398 x_1397
     450| ASTint (x_3505, x_3504) -> h_ASTint x_3505 x_3504
    449451| ASTptr -> h_ASTptr
    450452
     
    875877(** val signature_rect_Type4 :
    876878    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    877 let rec signature_rect_Type4 h_mk_signature x_1433 =
    878   let { sig_args = sig_args0; sig_res = sig_res0 } = x_1433 in
     879let rec signature_rect_Type4 h_mk_signature x_3540 =
     880  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3540 in
    879881  h_mk_signature sig_args0 sig_res0
    880882
    881883(** val signature_rect_Type5 :
    882884    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    883 let rec signature_rect_Type5 h_mk_signature x_1435 =
    884   let { sig_args = sig_args0; sig_res = sig_res0 } = x_1435 in
     885let rec signature_rect_Type5 h_mk_signature x_3542 =
     886  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3542 in
    885887  h_mk_signature sig_args0 sig_res0
    886888
    887889(** val signature_rect_Type3 :
    888890    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    889 let rec signature_rect_Type3 h_mk_signature x_1437 =
    890   let { sig_args = sig_args0; sig_res = sig_res0 } = x_1437 in
     891let rec signature_rect_Type3 h_mk_signature x_3544 =
     892  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3544 in
    891893  h_mk_signature sig_args0 sig_res0
    892894
    893895(** val signature_rect_Type2 :
    894896    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    895 let rec signature_rect_Type2 h_mk_signature x_1439 =
    896   let { sig_args = sig_args0; sig_res = sig_res0 } = x_1439 in
     897let rec signature_rect_Type2 h_mk_signature x_3546 =
     898  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3546 in
    897899  h_mk_signature sig_args0 sig_res0
    898900
    899901(** val signature_rect_Type1 :
    900902    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    901 let rec signature_rect_Type1 h_mk_signature x_1441 =
    902   let { sig_args = sig_args0; sig_res = sig_res0 } = x_1441 in
     903let rec signature_rect_Type1 h_mk_signature x_3548 =
     904  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3548 in
    903905  h_mk_signature sig_args0 sig_res0
    904906
    905907(** val signature_rect_Type0 :
    906908    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    907 let rec signature_rect_Type0 h_mk_signature x_1443 =
    908   let { sig_args = sig_args0; sig_res = sig_res0 } = x_1443 in
     909let rec signature_rect_Type0 h_mk_signature x_3550 =
     910  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3550 in
    909911  h_mk_signature sig_args0 sig_res0
    910912
     
    982984    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    983985let rec init_data_rect_Type4 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    984 | Init_int8 x_1471 -> h_Init_int8 x_1471
    985 | Init_int16 x_1472 -> h_Init_int16 x_1472
    986 | Init_int32 x_1473 -> h_Init_int32 x_1473
    987 | Init_space x_1474 -> h_Init_space x_1474
     986| Init_int8 x_3578 -> h_Init_int8 x_3578
     987| Init_int16 x_3579 -> h_Init_int16 x_3579
     988| Init_int32 x_3580 -> h_Init_int32 x_3580
     989| Init_space x_3581 -> h_Init_space x_3581
    988990| Init_null -> h_Init_null
    989 | Init_addrof (x_1476, x_1475) -> h_Init_addrof x_1476 x_1475
     991| Init_addrof (x_3583, x_3582) -> h_Init_addrof x_3583 x_3582
    990992
    991993(** val init_data_rect_Type5 :
     
    993995    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    994996let rec init_data_rect_Type5 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    995 | Init_int8 x_1484 -> h_Init_int8 x_1484
    996 | Init_int16 x_1485 -> h_Init_int16 x_1485
    997 | Init_int32 x_1486 -> h_Init_int32 x_1486
    998 | Init_space x_1487 -> h_Init_space x_1487
     997| Init_int8 x_3591 -> h_Init_int8 x_3591
     998| Init_int16 x_3592 -> h_Init_int16 x_3592
     999| Init_int32 x_3593 -> h_Init_int32 x_3593
     1000| Init_space x_3594 -> h_Init_space x_3594
    9991001| Init_null -> h_Init_null
    1000 | Init_addrof (x_1489, x_1488) -> h_Init_addrof x_1489 x_1488
     1002| Init_addrof (x_3596, x_3595) -> h_Init_addrof x_3596 x_3595
    10011003
    10021004(** val init_data_rect_Type3 :
     
    10041006    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10051007let rec init_data_rect_Type3 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1006 | Init_int8 x_1497 -> h_Init_int8 x_1497
    1007 | Init_int16 x_1498 -> h_Init_int16 x_1498
    1008 | Init_int32 x_1499 -> h_Init_int32 x_1499
    1009 | Init_space x_1500 -> h_Init_space x_1500
     1008| Init_int8 x_3604 -> h_Init_int8 x_3604
     1009| Init_int16 x_3605 -> h_Init_int16 x_3605
     1010| Init_int32 x_3606 -> h_Init_int32 x_3606
     1011| Init_space x_3607 -> h_Init_space x_3607
    10101012| Init_null -> h_Init_null
    1011 | Init_addrof (x_1502, x_1501) -> h_Init_addrof x_1502 x_1501
     1013| Init_addrof (x_3609, x_3608) -> h_Init_addrof x_3609 x_3608
    10121014
    10131015(** val init_data_rect_Type2 :
     
    10151017    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10161018let rec init_data_rect_Type2 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1017 | Init_int8 x_1510 -> h_Init_int8 x_1510
    1018 | Init_int16 x_1511 -> h_Init_int16 x_1511
    1019 | Init_int32 x_1512 -> h_Init_int32 x_1512
    1020 | Init_space x_1513 -> h_Init_space x_1513
     1019| Init_int8 x_3617 -> h_Init_int8 x_3617
     1020| Init_int16 x_3618 -> h_Init_int16 x_3618
     1021| Init_int32 x_3619 -> h_Init_int32 x_3619
     1022| Init_space x_3620 -> h_Init_space x_3620
    10211023| Init_null -> h_Init_null
    1022 | Init_addrof (x_1515, x_1514) -> h_Init_addrof x_1515 x_1514
     1024| Init_addrof (x_3622, x_3621) -> h_Init_addrof x_3622 x_3621
    10231025
    10241026(** val init_data_rect_Type1 :
     
    10261028    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10271029let rec init_data_rect_Type1 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1028 | Init_int8 x_1523 -> h_Init_int8 x_1523
    1029 | Init_int16 x_1524 -> h_Init_int16 x_1524
    1030 | Init_int32 x_1525 -> h_Init_int32 x_1525
    1031 | Init_space x_1526 -> h_Init_space x_1526
     1030| Init_int8 x_3630 -> h_Init_int8 x_3630
     1031| Init_int16 x_3631 -> h_Init_int16 x_3631
     1032| Init_int32 x_3632 -> h_Init_int32 x_3632
     1033| Init_space x_3633 -> h_Init_space x_3633
    10321034| Init_null -> h_Init_null
    1033 | Init_addrof (x_1528, x_1527) -> h_Init_addrof x_1528 x_1527
     1035| Init_addrof (x_3635, x_3634) -> h_Init_addrof x_3635 x_3634
    10341036
    10351037(** val init_data_rect_Type0 :
     
    10371039    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10381040let rec init_data_rect_Type0 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1039 | Init_int8 x_1536 -> h_Init_int8 x_1536
    1040 | Init_int16 x_1537 -> h_Init_int16 x_1537
    1041 | Init_int32 x_1538 -> h_Init_int32 x_1538
    1042 | Init_space x_1539 -> h_Init_space x_1539
     1041| Init_int8 x_3643 -> h_Init_int8 x_3643
     1042| Init_int16 x_3644 -> h_Init_int16 x_3644
     1043| Init_int32 x_3645 -> h_Init_int32 x_3645
     1044| Init_space x_3646 -> h_Init_space x_3646
    10431045| Init_null -> h_Init_null
    1044 | Init_addrof (x_1541, x_1540) -> h_Init_addrof x_1541 x_1540
     1046| Init_addrof (x_3648, x_3647) -> h_Init_addrof x_3648 x_3647
    10451047
    10461048(** val init_data_inv_rect_Type4 :
     
    11091111    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11101112    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1111 let rec program_rect_Type4 h_mk_program x_1628 =
     1113let rec program_rect_Type4 h_mk_program x_3735 =
    11121114  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1113     prog_main0 } = x_1628
     1115    prog_main0 } = x_3735
    11141116  in
    11151117  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11181120    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11191121    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1120 let rec program_rect_Type5 h_mk_program x_1630 =
     1122let rec program_rect_Type5 h_mk_program x_3737 =
    11211123  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1122     prog_main0 } = x_1630
     1124    prog_main0 } = x_3737
    11231125  in
    11241126  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11271129    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11281130    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1129 let rec program_rect_Type3 h_mk_program x_1632 =
     1131let rec program_rect_Type3 h_mk_program x_3739 =
    11301132  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1131     prog_main0 } = x_1632
     1133    prog_main0 } = x_3739
    11321134  in
    11331135  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11361138    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11371139    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1138 let rec program_rect_Type2 h_mk_program x_1634 =
     1140let rec program_rect_Type2 h_mk_program x_3741 =
    11391141  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1140     prog_main0 } = x_1634
     1142    prog_main0 } = x_3741
    11411143  in
    11421144  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11451147    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11461148    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1147 let rec program_rect_Type1 h_mk_program x_1636 =
     1149let rec program_rect_Type1 h_mk_program x_3743 =
    11481150  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1149     prog_main0 } = x_1636
     1151    prog_main0 } = x_3743
    11501152  in
    11511153  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11541156    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11551157    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1156 let rec program_rect_Type0 h_mk_program x_1638 =
     1158let rec program_rect_Type0 h_mk_program x_3745 =
    11571159  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1158     prog_main0 } = x_1638
     1160    prog_main0 } = x_3745
    11591161  in
    11601162  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    14791481(** val external_function_rect_Type4 :
    14801482    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1481 let rec external_function_rect_Type4 h_mk_external_function x_1842 =
    1482   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_1842 in
     1483let rec external_function_rect_Type4 h_mk_external_function x_3949 =
     1484  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3949 in
    14831485  h_mk_external_function ef_id0 ef_sig0
    14841486
    14851487(** val external_function_rect_Type5 :
    14861488    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1487 let rec external_function_rect_Type5 h_mk_external_function x_1844 =
    1488   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_1844 in
     1489let rec external_function_rect_Type5 h_mk_external_function x_3951 =
     1490  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3951 in
    14891491  h_mk_external_function ef_id0 ef_sig0
    14901492
    14911493(** val external_function_rect_Type3 :
    14921494    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1493 let rec external_function_rect_Type3 h_mk_external_function x_1846 =
    1494   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_1846 in
     1495let rec external_function_rect_Type3 h_mk_external_function x_3953 =
     1496  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3953 in
    14951497  h_mk_external_function ef_id0 ef_sig0
    14961498
    14971499(** val external_function_rect_Type2 :
    14981500    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1499 let rec external_function_rect_Type2 h_mk_external_function x_1848 =
    1500   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_1848 in
     1501let rec external_function_rect_Type2 h_mk_external_function x_3955 =
     1502  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3955 in
    15011503  h_mk_external_function ef_id0 ef_sig0
    15021504
    15031505(** val external_function_rect_Type1 :
    15041506    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1505 let rec external_function_rect_Type1 h_mk_external_function x_1850 =
    1506   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_1850 in
     1507let rec external_function_rect_Type1 h_mk_external_function x_3957 =
     1508  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3957 in
    15071509  h_mk_external_function ef_id0 ef_sig0
    15081510
    15091511(** val external_function_rect_Type0 :
    15101512    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1511 let rec external_function_rect_Type0 h_mk_external_function x_1852 =
    1512   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_1852 in
     1513let rec external_function_rect_Type0 h_mk_external_function x_3959 =
     1514  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3959 in
    15131515  h_mk_external_function ef_id0 ef_sig0
    15141516
     
    15771579    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15781580let rec fundef_rect_Type4 h_Internal h_External = function
    1579 | Internal x_1872 -> h_Internal x_1872
    1580 | External x_1873 -> h_External x_1873
     1581| Internal x_3979 -> h_Internal x_3979
     1582| External x_3980 -> h_External x_3980
    15811583
    15821584(** val fundef_rect_Type5 :
    15831585    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15841586let rec fundef_rect_Type5 h_Internal h_External = function
    1585 | Internal x_1877 -> h_Internal x_1877
    1586 | External x_1878 -> h_External x_1878
     1587| Internal x_3984 -> h_Internal x_3984
     1588| External x_3985 -> h_External x_3985
    15871589
    15881590(** val fundef_rect_Type3 :
    15891591    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15901592let rec fundef_rect_Type3 h_Internal h_External = function
    1591 | Internal x_1882 -> h_Internal x_1882
    1592 | External x_1883 -> h_External x_1883
     1593| Internal x_3989 -> h_Internal x_3989
     1594| External x_3990 -> h_External x_3990
    15931595
    15941596(** val fundef_rect_Type2 :
    15951597    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15961598let rec fundef_rect_Type2 h_Internal h_External = function
    1597 | Internal x_1887 -> h_Internal x_1887
    1598 | External x_1888 -> h_External x_1888
     1599| Internal x_3994 -> h_Internal x_3994
     1600| External x_3995 -> h_External x_3995
    15991601
    16001602(** val fundef_rect_Type1 :
    16011603    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    16021604let rec fundef_rect_Type1 h_Internal h_External = function
    1603 | Internal x_1892 -> h_Internal x_1892
    1604 | External x_1893 -> h_External x_1893
     1605| Internal x_3999 -> h_Internal x_3999
     1606| External x_4000 -> h_External x_4000
    16051607
    16061608(** val fundef_rect_Type0 :
    16071609    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    16081610let rec fundef_rect_Type0 h_Internal h_External = function
    1609 | Internal x_1897 -> h_Internal x_1897
    1610 | External x_1898 -> h_External x_1898
     1611| Internal x_4004 -> h_Internal x_4004
     1612| External x_4005 -> h_External x_4005
    16111613
    16121614(** val fundef_inv_rect_Type4 :
  • extracted/aST.mli

    r2649 r2717  
    1010
    1111open Types
     12
     13open Exp
    1214
    1315open Arithmetic
  • extracted/abstractStatus.ml

    r2649 r2717  
    44
    55open LabelledObjects
     6
     7open BitVectorTrie
     8
     9open Exp
    610
    711open Arithmetic
     
    7579open ASM
    7680
    77 open BitVectorTrie
    78 
    7981open Status
    8082
     
    127129| ASM.RETI -> StructuredTraces.Cl_return
    128130| ASM.NOP -> StructuredTraces.Cl_other
     131| ASM.JMP x -> StructuredTraces.Cl_call
    129132
    130133(** val aSM_classify0 : ASM.instruction -> StructuredTraces.status_class **)
     
    135138| ASM.LJMP x -> StructuredTraces.Cl_other
    136139| ASM.SJMP x -> StructuredTraces.Cl_other
    137 | ASM.JMP x -> StructuredTraces.Cl_call
    138140| ASM.MOVC (x, x0) -> StructuredTraces.Cl_other
    139141| ASM.RealInstruction pre -> aSM_classify00 pre
  • extracted/abstractStatus.mli

    r2649 r2717  
    44
    55open LabelledObjects
     6
     7open BitVectorTrie
     8
     9open Exp
    610
    711open Arithmetic
     
    7579open ASM
    7680
    77 open BitVectorTrie
    78 
    7981open Status
    8082
  • extracted/arithmetic.ml

    r2649 r2717  
    3434
    3535open BitVector
     36
     37open Exp
    3638
    3739(** val addr16_of_addr11 :
  • extracted/arithmetic.mli

    r2649 r2717  
    3434
    3535open BitVector
     36
     37open Exp
    3638
    3739val addr16_of_addr11 : BitVector.word -> BitVector.word11 -> BitVector.word
  • extracted/bitVectorTrie.ml

    r2649 r2717  
    4343    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    4444    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    45 let rec bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub x_14569 = function
    46 | Leaf x_14571 -> h_Leaf x_14571
    47 | Node (n, x_14573, x_14572) ->
    48   h_Node n x_14573 x_14572
    49     (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_14573)
    50     (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_14572)
     45let rec bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub x_4046 = function
     46| Leaf x_4048 -> h_Leaf x_4048
     47| Node (n, x_4050, x_4049) ->
     48  h_Node n x_4050 x_4049
     49    (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_4050)
     50    (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_4049)
    5151| Stub n -> h_Stub n
    5252
     
    5454    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    5555    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    56 let rec bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub x_14585 = function
    57 | Leaf x_14587 -> h_Leaf x_14587
    58 | Node (n, x_14589, x_14588) ->
    59   h_Node n x_14589 x_14588
    60     (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_14589)
    61     (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_14588)
     56let rec bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub x_4062 = function
     57| Leaf x_4064 -> h_Leaf x_4064
     58| Node (n, x_4066, x_4065) ->
     59  h_Node n x_4066 x_4065
     60    (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_4066)
     61    (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_4065)
    6262| Stub n -> h_Stub n
    6363
     
    6565    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    6666    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    67 let rec bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub x_14593 = function
    68 | Leaf x_14595 -> h_Leaf x_14595
    69 | Node (n, x_14597, x_14596) ->
    70   h_Node n x_14597 x_14596
    71     (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_14597)
    72     (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_14596)
     67let rec bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub x_4070 = function
     68| Leaf x_4072 -> h_Leaf x_4072
     69| Node (n, x_4074, x_4073) ->
     70  h_Node n x_4074 x_4073
     71    (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_4074)
     72    (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_4073)
    7373| Stub n -> h_Stub n
    7474
     
    7676    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    7777    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    78 let rec bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub x_14601 = function
    79 | Leaf x_14603 -> h_Leaf x_14603
    80 | Node (n, x_14605, x_14604) ->
    81   h_Node n x_14605 x_14604
    82     (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_14605)
    83     (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_14604)
     78let rec bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub x_4078 = function
     79| Leaf x_4080 -> h_Leaf x_4080
     80| Node (n, x_4082, x_4081) ->
     81  h_Node n x_4082 x_4081
     82    (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_4082)
     83    (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_4081)
    8484| Stub n -> h_Stub n
    8585
     
    8787    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    8888    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    89 let rec bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub x_14609 = function
    90 | Leaf x_14611 -> h_Leaf x_14611
    91 | Node (n, x_14613, x_14612) ->
    92   h_Node n x_14613 x_14612
    93     (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_14613)
    94     (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_14612)
     89let rec bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub x_4086 = function
     90| Leaf x_4088 -> h_Leaf x_4088
     91| Node (n, x_4090, x_4089) ->
     92  h_Node n x_4090 x_4089
     93    (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_4090)
     94    (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_4089)
    9595| Stub n -> h_Stub n
    9696
  • extracted/bitVectorZ.ml

    r2649 r2717  
    3838
    3939open BitVector
     40
     41open Exp
    4042
    4143open Arithmetic
  • extracted/bitVectorZ.mli

    r2649 r2717  
    3939open BitVector
    4040
     41open Exp
     42
    4143open Arithmetic
    4244
  • extracted/byteValues.ml

    r2649 r2717  
    3030
    3131open Division
     32
     33open Exp
    3234
    3335open Arithmetic
     
    8789    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    8890    'a1 **)
    89 let rec program_counter_rect_Type4 h_mk_program_counter x_4510 =
    90   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_4510 in
     91let rec program_counter_rect_Type4 h_mk_program_counter x_6074 =
     92  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6074 in
    9193  h_mk_program_counter pc_block0 pc_offset0
    9294
     
    9496    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    9597    'a1 **)
    96 let rec program_counter_rect_Type5 h_mk_program_counter x_4512 =
    97   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_4512 in
     98let rec program_counter_rect_Type5 h_mk_program_counter x_6076 =
     99  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6076 in
    98100  h_mk_program_counter pc_block0 pc_offset0
    99101
     
    101103    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    102104    'a1 **)
    103 let rec program_counter_rect_Type3 h_mk_program_counter x_4514 =
    104   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_4514 in
     105let rec program_counter_rect_Type3 h_mk_program_counter x_6078 =
     106  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6078 in
    105107  h_mk_program_counter pc_block0 pc_offset0
    106108
     
    108110    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    109111    'a1 **)
    110 let rec program_counter_rect_Type2 h_mk_program_counter x_4516 =
    111   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_4516 in
     112let rec program_counter_rect_Type2 h_mk_program_counter x_6080 =
     113  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6080 in
    112114  h_mk_program_counter pc_block0 pc_offset0
    113115
     
    115117    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    116118    'a1 **)
    117 let rec program_counter_rect_Type1 h_mk_program_counter x_4518 =
    118   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_4518 in
     119let rec program_counter_rect_Type1 h_mk_program_counter x_6082 =
     120  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6082 in
    119121  h_mk_program_counter pc_block0 pc_offset0
    120122
     
    122124    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    123125    'a1 **)
    124 let rec program_counter_rect_Type0 h_mk_program_counter x_4520 =
    125   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_4520 in
     126let rec program_counter_rect_Type0 h_mk_program_counter x_6084 =
     127  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6084 in
    126128  h_mk_program_counter pc_block0 pc_offset0
    127129
     
    213215
    214216(** val part_rect_Type4 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    215 let rec part_rect_Type4 h_mk_part x_4536 =
    216   let part_no = x_4536 in h_mk_part part_no __
     217let rec part_rect_Type4 h_mk_part x_6100 =
     218  let part_no = x_6100 in h_mk_part part_no __
    217219
    218220(** val part_rect_Type5 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    219 let rec part_rect_Type5 h_mk_part x_4538 =
    220   let part_no = x_4538 in h_mk_part part_no __
     221let rec part_rect_Type5 h_mk_part x_6102 =
     222  let part_no = x_6102 in h_mk_part part_no __
    221223
    222224(** val part_rect_Type3 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    223 let rec part_rect_Type3 h_mk_part x_4540 =
    224   let part_no = x_4540 in h_mk_part part_no __
     225let rec part_rect_Type3 h_mk_part x_6104 =
     226  let part_no = x_6104 in h_mk_part part_no __
    225227
    226228(** val part_rect_Type2 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    227 let rec part_rect_Type2 h_mk_part x_4542 =
    228   let part_no = x_4542 in h_mk_part part_no __
     229let rec part_rect_Type2 h_mk_part x_6106 =
     230  let part_no = x_6106 in h_mk_part part_no __
    229231
    230232(** val part_rect_Type1 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    231 let rec part_rect_Type1 h_mk_part x_4544 =
    232   let part_no = x_4544 in h_mk_part part_no __
     233let rec part_rect_Type1 h_mk_part x_6108 =
     234  let part_no = x_6108 in h_mk_part part_no __
    233235
    234236(** val part_rect_Type0 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    235 let rec part_rect_Type0 h_mk_part x_4546 =
    236   let part_no = x_4546 in h_mk_part part_no __
     237let rec part_rect_Type0 h_mk_part x_6110 =
     238  let part_no = x_6110 in h_mk_part part_no __
    237239
    238240(** val part_no : part -> Nat.nat **)
     
    324326| BVundef -> h_BVundef
    325327| BVnonzero -> h_BVnonzero
    326 | BVXor (x_4580, x_4579, x_4578) -> h_BVXor x_4580 x_4579 x_4578
    327 | BVByte x_4581 -> h_BVByte x_4581
    328 | BVnull x_4582 -> h_BVnull x_4582
    329 | BVptr (x_4584, x_4583) -> h_BVptr x_4584 x_4583
    330 | BVpc (x_4586, x_4585) -> h_BVpc x_4586 x_4585
     328| BVXor (x_6144, x_6143, x_6142) -> h_BVXor x_6144 x_6143 x_6142
     329| BVByte x_6145 -> h_BVByte x_6145
     330| BVnull x_6146 -> h_BVnull x_6146
     331| BVptr (x_6148, x_6147) -> h_BVptr x_6148 x_6147
     332| BVpc (x_6150, x_6149) -> h_BVpc x_6150 x_6149
    331333
    332334(** val beval_rect_Type5 :
     
    338340| BVundef -> h_BVundef
    339341| BVnonzero -> h_BVnonzero
    340 | BVXor (x_4597, x_4596, x_4595) -> h_BVXor x_4597 x_4596 x_4595
    341 | BVByte x_4598 -> h_BVByte x_4598
    342 | BVnull x_4599 -> h_BVnull x_4599
    343 | BVptr (x_4601, x_4600) -> h_BVptr x_4601 x_4600
    344 | BVpc (x_4603, x_4602) -> h_BVpc x_4603 x_4602
     342| BVXor (x_6161, x_6160, x_6159) -> h_BVXor x_6161 x_6160 x_6159
     343| BVByte x_6162 -> h_BVByte x_6162
     344| BVnull x_6163 -> h_BVnull x_6163
     345| BVptr (x_6165, x_6164) -> h_BVptr x_6165 x_6164
     346| BVpc (x_6167, x_6166) -> h_BVpc x_6167 x_6166
    345347
    346348(** val beval_rect_Type3 :
     
    352354| BVundef -> h_BVundef
    353355| BVnonzero -> h_BVnonzero
    354 | BVXor (x_4614, x_4613, x_4612) -> h_BVXor x_4614 x_4613 x_4612
    355 | BVByte x_4615 -> h_BVByte x_4615
    356 | BVnull x_4616 -> h_BVnull x_4616
    357 | BVptr (x_4618, x_4617) -> h_BVptr x_4618 x_4617
    358 | BVpc (x_4620, x_4619) -> h_BVpc x_4620 x_4619
     356| BVXor (x_6178, x_6177, x_6176) -> h_BVXor x_6178 x_6177 x_6176
     357| BVByte x_6179 -> h_BVByte x_6179
     358| BVnull x_6180 -> h_BVnull x_6180
     359| BVptr (x_6182, x_6181) -> h_BVptr x_6182 x_6181
     360| BVpc (x_6184, x_6183) -> h_BVpc x_6184 x_6183
    359361
    360362(** val beval_rect_Type2 :
     
    366368| BVundef -> h_BVundef
    367369| BVnonzero -> h_BVnonzero
    368 | BVXor (x_4631, x_4630, x_4629) -> h_BVXor x_4631 x_4630 x_4629
    369 | BVByte x_4632 -> h_BVByte x_4632
    370 | BVnull x_4633 -> h_BVnull x_4633
    371 | BVptr (x_4635, x_4634) -> h_BVptr x_4635 x_4634
    372 | BVpc (x_4637, x_4636) -> h_BVpc x_4637 x_4636
     370| BVXor (x_6195, x_6194, x_6193) -> h_BVXor x_6195 x_6194 x_6193
     371| BVByte x_6196 -> h_BVByte x_6196
     372| BVnull x_6197 -> h_BVnull x_6197
     373| BVptr (x_6199, x_6198) -> h_BVptr x_6199 x_6198
     374| BVpc (x_6201, x_6200) -> h_BVpc x_6201 x_6200
    373375
    374376(** val beval_rect_Type1 :
     
    380382| BVundef -> h_BVundef
    381383| BVnonzero -> h_BVnonzero
    382 | BVXor (x_4648, x_4647, x_4646) -> h_BVXor x_4648 x_4647 x_4646
    383 | BVByte x_4649 -> h_BVByte x_4649
    384 | BVnull x_4650 -> h_BVnull x_4650
    385 | BVptr (x_4652, x_4651) -> h_BVptr x_4652 x_4651
    386 | BVpc (x_4654, x_4653) -> h_BVpc x_4654 x_4653
     384| BVXor (x_6212, x_6211, x_6210) -> h_BVXor x_6212 x_6211 x_6210
     385| BVByte x_6213 -> h_BVByte x_6213
     386| BVnull x_6214 -> h_BVnull x_6214
     387| BVptr (x_6216, x_6215) -> h_BVptr x_6216 x_6215
     388| BVpc (x_6218, x_6217) -> h_BVpc x_6218 x_6217
    387389
    388390(** val beval_rect_Type0 :
     
    394396| BVundef -> h_BVundef
    395397| BVnonzero -> h_BVnonzero
    396 | BVXor (x_4665, x_4664, x_4663) -> h_BVXor x_4665 x_4664 x_4663
    397 | BVByte x_4666 -> h_BVByte x_4666
    398 | BVnull x_4667 -> h_BVnull x_4667
    399 | BVptr (x_4669, x_4668) -> h_BVptr x_4669 x_4668
    400 | BVpc (x_4671, x_4670) -> h_BVpc x_4671 x_4670
     398| BVXor (x_6229, x_6228, x_6227) -> h_BVXor x_6229 x_6228 x_6227
     399| BVByte x_6230 -> h_BVByte x_6230
     400| BVnull x_6231 -> h_BVnull x_6231
     401| BVptr (x_6233, x_6232) -> h_BVptr x_6233 x_6232
     402| BVpc (x_6235, x_6234) -> h_BVpc x_6235 x_6234
    401403
    402404(** val beval_inv_rect_Type4 :
     
    737739    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    738740let rec bebit_rect_Type4 h_BBbit h_BBundef h_BBptrcarry = function
    739 | BBbit x_4790 -> h_BBbit x_4790
     741| BBbit x_6354 -> h_BBbit x_6354
    740742| BBundef -> h_BBundef
    741 | BBptrcarry (x_4793, x_4792, p, x_4791) ->
    742   h_BBptrcarry x_4793 x_4792 p x_4791
     743| BBptrcarry (x_6357, x_6356, p, x_6355) ->
     744  h_BBptrcarry x_6357 x_6356 p x_6355
    743745
    744746(** val bebit_rect_Type5 :
     
    746748    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    747749let rec bebit_rect_Type5 h_BBbit h_BBundef h_BBptrcarry = function
    748 | BBbit x_4798 -> h_BBbit x_4798
     750| BBbit x_6362 -> h_BBbit x_6362
    749751| BBundef -> h_BBundef
    750 | BBptrcarry (x_4801, x_4800, p, x_4799) ->
    751   h_BBptrcarry x_4801 x_4800 p x_4799
     752| BBptrcarry (x_6365, x_6364, p, x_6363) ->
     753  h_BBptrcarry x_6365 x_6364 p x_6363
    752754
    753755(** val bebit_rect_Type3 :
     
    755757    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    756758let rec bebit_rect_Type3 h_BBbit h_BBundef h_BBptrcarry = function
    757 | BBbit x_4806 -> h_BBbit x_4806
     759| BBbit x_6370 -> h_BBbit x_6370
    758760| BBundef -> h_BBundef
    759 | BBptrcarry (x_4809, x_4808, p, x_4807) ->
    760   h_BBptrcarry x_4809 x_4808 p x_4807
     761| BBptrcarry (x_6373, x_6372, p, x_6371) ->
     762  h_BBptrcarry x_6373 x_6372 p x_6371
    761763
    762764(** val bebit_rect_Type2 :
     
    764766    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    765767let rec bebit_rect_Type2 h_BBbit h_BBundef h_BBptrcarry = function
    766 | BBbit x_4814 -> h_BBbit x_4814
     768| BBbit x_6378 -> h_BBbit x_6378
    767769| BBundef -> h_BBundef
    768 | BBptrcarry (x_4817, x_4816, p, x_4815) ->
    769   h_BBptrcarry x_4817 x_4816 p x_4815
     770| BBptrcarry (x_6381, x_6380, p, x_6379) ->
     771  h_BBptrcarry x_6381 x_6380 p x_6379
    770772
    771773(** val bebit_rect_Type1 :
     
    773775    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    774776let rec bebit_rect_Type1 h_BBbit h_BBundef h_BBptrcarry = function
    775 | BBbit x_4822 -> h_BBbit x_4822
     777| BBbit x_6386 -> h_BBbit x_6386
    776778| BBundef -> h_BBundef
    777 | BBptrcarry (x_4825, x_4824, p, x_4823) ->
    778   h_BBptrcarry x_4825 x_4824 p x_4823
     779| BBptrcarry (x_6389, x_6388, p, x_6387) ->
     780  h_BBptrcarry x_6389 x_6388 p x_6387
    779781
    780782(** val bebit_rect_Type0 :
     
    782784    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    783785let rec bebit_rect_Type0 h_BBbit h_BBundef h_BBptrcarry = function
    784 | BBbit x_4830 -> h_BBbit x_4830
     786| BBbit x_6394 -> h_BBbit x_6394
    785787| BBundef -> h_BBundef
    786 | BBptrcarry (x_4833, x_4832, p, x_4831) ->
    787   h_BBptrcarry x_4833 x_4832 p x_4831
     788| BBptrcarry (x_6397, x_6396, p, x_6395) ->
     789  h_BBptrcarry x_6397 x_6396 p x_6395
    788790
    789791(** val bebit_inv_rect_Type4 :
  • extracted/byteValues.mli

    r2649 r2717  
    3030
    3131open Division
     32
     33open Exp
    3234
    3335open Arithmetic
  • extracted/casts.ml

    r2649 r2717  
    1818
    1919open Division
     20
     21open Exp
    2022
    2123open Arithmetic
  • extracted/casts.mli

    r2649 r2717  
    1818
    1919open Division
     20
     21open Exp
    2022
    2123open Arithmetic
  • extracted/cexec.ml

    r2649 r2717  
    2929open Extralib
    3030
     31open BitVectorTrie
     32
    3133open CostLabel
    3234
     
    4446
    4547open Division
     48
     49open Exp
    4650
    4751open Arithmetic
     
    805809                 Obj.magic
    806810                   (IO.ret { Types.fst = (Events.eapp tr2 tr3); Types.snd =
    807                      (Csem.Callstate (fd, vargs, (Csem.Kcall (Types.None, f,
    808                      e1, k)), m)) })
     811                     (Csem.Callstate (vf, fd, vargs, (Csem.Kcall (Types.None,
     812                     f, e1, k)), m)) })
    809813               | Types.Some lhs' ->
    810814                 Monad.m_bind2 (Monad.max_def IOMonad.iOMonad)
     
    814818                     (IO.ret { Types.fst =
    815819                       (Events.eapp tr1 (Events.eapp tr2 tr3)); Types.snd =
    816                        (Csem.Callstate (fd, vargs, (Csem.Kcall ((Types.Some
    817                        { Types.fst = locofs; Types.snd =
     820                       (Csem.Callstate (vf, fd, vargs, (Csem.Kcall
     821                       ((Types.Some { Types.fst = locofs; Types.snd =
    818822                       (Csyntax.typeof lhs') }), f, e1, k)), m)) })))))))
    819823   | Csyntax.Ssequence (s1, s2) ->
     
    10351039     IO.ret { Types.fst = (Events.echarge lbl); Types.snd = (Csem.State (f,
    10361040       s', k, e1, m)) })
    1037 | Csem.Callstate (f0, vargs, k, m) ->
     1041| Csem.Callstate (x, f0, vargs, k, m) ->
    10381042  (match f0 with
    10391043   | Csyntax.CL_Internal f ->
     
    10441048     Obj.magic
    10451049       (Monad.m_bind0 (Monad.max_def IOMonad.iOMonad)
    1046          (let x =
     1050         (let x0 =
    10471051            IOMonad.err_to_io
    10481052              (exec_bind_parameters e1 m1 f.Csyntax.fn_params vargs)
    10491053          in
    1050          Obj.magic x) (fun m2 ->
     1054         Obj.magic x0) (fun m2 ->
    10511055         Obj.magic
    10521056           (IO.ret { Types.fst = Events.e0; Types.snd = (Csem.State (f,
     
    10551059     Obj.magic
    10561060       (Monad.m_bind0 (Monad.max_def IOMonad.iOMonad)
    1057          (let x =
     1061         (let x0 =
    10581062            IOMonad.err_to_io
    10591063              (IO.check_eventval_list vargs
    10601064                (Csyntax.typlist_of_typelist argtys))
    10611065          in
    1062          Obj.magic x) (fun evargs ->
     1066         Obj.magic x0) (fun evargs ->
    10631067         Monad.m_bind0 (Monad.max_def IOMonad.iOMonad)
    10641068           (Obj.magic
     
    11431147            (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    11441148              (Globalenvs.find_funct_ptr ge0 b))) (fun f ->
    1145           Obj.magic (Errors.OK (Csem.Callstate (f, List.Nil, Csem.Kstop,
    1146             m0)))))))
     1149          Obj.magic (Errors.OK (Csem.Callstate ((Values.Vptr
     1150            { Pointers.pblock = b; Pointers.poff = Pointers.zero_offset }),
     1151            f, List.Nil, Csem.Kstop, m0)))))))
    11471152
    11481153(** val is_final0 : Csem.state0 -> Integers.int Types.option **)
    11491154let rec is_final0 = function
    11501155| Csem.State (x, x0, x1, x2, x3) -> Types.None
    1151 | Csem.Callstate (x, x0, x1, x2) -> Types.None
     1156| Csem.Callstate (x, x0, x1, x2, x3) -> Types.None
    11521157| Csem.Returnstate (x, x0, x1) -> Types.None
    11531158| Csem.Finalstate r -> Types.Some r
     
    11561161    Csem.state0 -> (Integers.int Types.sig0, __) Types.sum **)
    11571162let is_final_state st =
    1158   Csem.state_rect_Type0 (fun f s k e1 m -> Types.Inr __) (fun f l k m ->
     1163  Csem.state_rect_Type0 (fun f s k e1 m -> Types.Inr __) (fun vf f l k m ->
    11591164    Types.Inr __) (fun v k m -> Types.Inr __) (fun r -> Types.Inl r) st
    11601165
    1161 (** val exec_steps :
     1166(** val exec_steps0 :
    11621167    Nat.nat -> Csem.genv0 -> Csem.state0 -> (IO.io_out, IO.io_in,
    11631168    (Events.trace, Csem.state0) Types.prod) IOMonad.iO **)
    1164 let rec exec_steps n ge0 s =
     1169let rec exec_steps0 n ge0 s =
    11651170  match is_final_state s with
    11661171  | Types.Inl x -> IO.ret { Types.fst = Events.e0; Types.snd = s }
     
    11731178           (Obj.magic (exec_step ge0 s)) (fun t s' ->
    11741179           Monad.m_bind2 (Monad.max_def IOMonad.iOMonad)
    1175              (Obj.magic (exec_steps n' ge0 s')) (fun t' s'' ->
     1180             (Obj.magic (exec_steps0 n' ge0 s')) (fun t' s'' ->
    11761181             Obj.magic
    11771182               (IO.ret { Types.fst = (Events.eapp t t'); Types.snd = s'' })))))
  • extracted/cexec.mli

    r2649 r2717  
    2929open Extralib
    3030
     31open BitVectorTrie
     32
    3133open CostLabel
    3234
     
    4446
    4547open Division
     48
     49open Exp
    4650
    4751open Arithmetic
     
    174178val is_final_state : Csem.state0 -> (Integers.int Types.sig0, __) Types.sum
    175179
    176 val exec_steps :
     180val exec_steps0 :
    177181  Nat.nat -> Csem.genv0 -> Csem.state0 -> (IO.io_out, IO.io_in,
    178182  (Events.trace, Csem.state0) Types.prod) IOMonad.iO
  • extracted/cexecInd.ml

    r2649 r2717  
    11open Preamble
     2
     3open BitVectorTrie
    24
    35open CostLabel
     
    3032
    3133open Identifiers
     34
     35open Exp
    3236
    3337open Arithmetic
  • extracted/cexecInd.mli

    r2649 r2717  
    11open Preamble
     2
     3open BitVectorTrie
    24
    35open CostLabel
     
    3032
    3133open Identifiers
     34
     35open Exp
    3236
    3337open Arithmetic
  • extracted/cexecSound.ml

    r2649 r2717  
    2727open SmallstepExec
    2828
     29open BitVectorTrie
     30
    2931open CostLabel
    3032
     
    4244
    4345open Division
     46
     47open Exp
    4448
    4549open Arithmetic
  • extracted/cexecSound.mli

    r2649 r2717  
    2727open SmallstepExec
    2828
     29open BitVectorTrie
     30
    2931open CostLabel
    3032
     
    4244
    4345open Division
     46
     47open Exp
    4448
    4549open Arithmetic
  • extracted/classifyOp.ml

    r2649 r2717  
    11open Preamble
    22
     3open BitVectorTrie
     4
    35open CostLabel
    46
     
    3032
    3133open Identifiers
     34
     35open Exp
    3236
    3337open Arithmetic
     
    9498    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    9599    -> classify_add_cases -> 'a1 **)
    96 let rec classify_add_cases_rect_Type4 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_3395 x_3394 = function
     100let rec classify_add_cases_rect_Type4 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7324 x_7323 = function
    97101| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    98102| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    106110    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    107111    -> classify_add_cases -> 'a1 **)
    108 let rec classify_add_cases_rect_Type5 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_3402 x_3401 = function
     112let rec classify_add_cases_rect_Type5 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7331 x_7330 = function
    109113| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    110114| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    118122    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    119123    -> classify_add_cases -> 'a1 **)
    120 let rec classify_add_cases_rect_Type3 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_3409 x_3408 = function
     124let rec classify_add_cases_rect_Type3 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7338 x_7337 = function
    121125| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    122126| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    130134    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    131135    -> classify_add_cases -> 'a1 **)
    132 let rec classify_add_cases_rect_Type2 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_3416 x_3415 = function
     136let rec classify_add_cases_rect_Type2 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7345 x_7344 = function
    133137| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    134138| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    142146    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    143147    -> classify_add_cases -> 'a1 **)
    144 let rec classify_add_cases_rect_Type1 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_3423 x_3422 = function
     148let rec classify_add_cases_rect_Type1 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7352 x_7351 = function
    145149| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    146150| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    154158    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    155159    -> classify_add_cases -> 'a1 **)
    156 let rec classify_add_cases_rect_Type0 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_3430 x_3429 = function
     160let rec classify_add_cases_rect_Type0 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7359 x_7358 = function
    157161| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    158162| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    317321    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    318322    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    319 let rec classify_sub_cases_rect_Type4 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_3486 x_3485 = function
     323let rec classify_sub_cases_rect_Type4 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7415 x_7414 = function
    320324| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    321325| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    329333    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    330334    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    331 let rec classify_sub_cases_rect_Type5 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_3493 x_3492 = function
     335let rec classify_sub_cases_rect_Type5 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7422 x_7421 = function
    332336| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    333337| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    341345    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    342346    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    343 let rec classify_sub_cases_rect_Type3 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_3500 x_3499 = function
     347let rec classify_sub_cases_rect_Type3 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7429 x_7428 = function
    344348| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    345349| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    353357    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    354358    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    355 let rec classify_sub_cases_rect_Type2 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_3507 x_3506 = function
     359let rec classify_sub_cases_rect_Type2 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7436 x_7435 = function
    356360| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    357361| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    365369    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    366370    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    367 let rec classify_sub_cases_rect_Type1 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_3514 x_3513 = function
     371let rec classify_sub_cases_rect_Type1 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7443 x_7442 = function
    368372| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    369373| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    377381    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    378382    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    379 let rec classify_sub_cases_rect_Type0 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_3521 x_3520 = function
     383let rec classify_sub_cases_rect_Type0 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7450 x_7449 = function
    380384| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    381385| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    517521    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    518522    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    519 let rec classify_aop_cases_rect_Type4 h_aop_case_ii h_aop_default x_3575 x_3574 = function
     523let rec classify_aop_cases_rect_Type4 h_aop_case_ii h_aop_default x_7504 x_7503 = function
    520524| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    521525| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    524528    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    525529    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    526 let rec classify_aop_cases_rect_Type5 h_aop_case_ii h_aop_default x_3580 x_3579 = function
     530let rec classify_aop_cases_rect_Type5 h_aop_case_ii h_aop_default x_7509 x_7508 = function
    527531| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    528532| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    531535    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    532536    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    533 let rec classify_aop_cases_rect_Type3 h_aop_case_ii h_aop_default x_3585 x_3584 = function
     537let rec classify_aop_cases_rect_Type3 h_aop_case_ii h_aop_default x_7514 x_7513 = function
    534538| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    535539| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    538542    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    539543    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    540 let rec classify_aop_cases_rect_Type2 h_aop_case_ii h_aop_default x_3590 x_3589 = function
     544let rec classify_aop_cases_rect_Type2 h_aop_case_ii h_aop_default x_7519 x_7518 = function
    541545| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    542546| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    545549    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    546550    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    547 let rec classify_aop_cases_rect_Type1 h_aop_case_ii h_aop_default x_3595 x_3594 = function
     551let rec classify_aop_cases_rect_Type1 h_aop_case_ii h_aop_default x_7524 x_7523 = function
    548552| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    549553| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    552556    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    553557    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    554 let rec classify_aop_cases_rect_Type0 h_aop_case_ii h_aop_default x_3600 x_3599 = function
     558let rec classify_aop_cases_rect_Type0 h_aop_case_ii h_aop_default x_7529 x_7528 = function
    555559| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    556560| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    634638    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    635639    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    636 let rec classify_cmp_cases_rect_Type4 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_3641 x_3640 = function
     640let rec classify_cmp_cases_rect_Type4 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7570 x_7569 = function
    637641| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    638642| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    643647    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    644648    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    645 let rec classify_cmp_cases_rect_Type5 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_3647 x_3646 = function
     649let rec classify_cmp_cases_rect_Type5 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7576 x_7575 = function
    646650| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    647651| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    652656    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    653657    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    654 let rec classify_cmp_cases_rect_Type3 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_3653 x_3652 = function
     658let rec classify_cmp_cases_rect_Type3 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7582 x_7581 = function
    655659| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    656660| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    661665    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    662666    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    663 let rec classify_cmp_cases_rect_Type2 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_3659 x_3658 = function
     667let rec classify_cmp_cases_rect_Type2 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7588 x_7587 = function
    664668| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    665669| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    670674    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    671675    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    672 let rec classify_cmp_cases_rect_Type1 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_3665 x_3664 = function
     676let rec classify_cmp_cases_rect_Type1 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7594 x_7593 = function
    673677| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    674678| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    679683    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    680684    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    681 let rec classify_cmp_cases_rect_Type0 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_3671 x_3670 = function
     685let rec classify_cmp_cases_rect_Type0 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7600 x_7599 = function
    682686| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    683687| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    778782    -> 'a1 **)
    779783let rec classify_fun_cases_rect_Type4 h_fun_case_f h_fun_default = function
    780 | Fun_case_f (x_3719, x_3718) -> h_fun_case_f x_3719 x_3718
     784| Fun_case_f (x_7648, x_7647) -> h_fun_case_f x_7648 x_7647
    781785| Fun_default -> h_fun_default
    782786
     
    785789    -> 'a1 **)
    786790let rec classify_fun_cases_rect_Type5 h_fun_case_f h_fun_default = function
    787 | Fun_case_f (x_3724, x_3723) -> h_fun_case_f x_3724 x_3723
     791| Fun_case_f (x_7653, x_7652) -> h_fun_case_f x_7653 x_7652
    788792| Fun_default -> h_fun_default
    789793
     
    792796    -> 'a1 **)
    793797let rec classify_fun_cases_rect_Type3 h_fun_case_f h_fun_default = function
    794 | Fun_case_f (x_3729, x_3728) -> h_fun_case_f x_3729 x_3728
     798| Fun_case_f (x_7658, x_7657) -> h_fun_case_f x_7658 x_7657
    795799| Fun_default -> h_fun_default
    796800
     
    799803    -> 'a1 **)
    800804let rec classify_fun_cases_rect_Type2 h_fun_case_f h_fun_default = function
    801 | Fun_case_f (x_3734, x_3733) -> h_fun_case_f x_3734 x_3733
     805| Fun_case_f (x_7663, x_7662) -> h_fun_case_f x_7663 x_7662
    802806| Fun_default -> h_fun_default
    803807
     
    806810    -> 'a1 **)
    807811let rec classify_fun_cases_rect_Type1 h_fun_case_f h_fun_default = function
    808 | Fun_case_f (x_3739, x_3738) -> h_fun_case_f x_3739 x_3738
     812| Fun_case_f (x_7668, x_7667) -> h_fun_case_f x_7668 x_7667
    809813| Fun_default -> h_fun_default
    810814
     
    813817    -> 'a1 **)
    814818let rec classify_fun_cases_rect_Type0 h_fun_case_f h_fun_default = function
    815 | Fun_case_f (x_3744, x_3743) -> h_fun_case_f x_3744 x_3743
     819| Fun_case_f (x_7673, x_7672) -> h_fun_case_f x_7673 x_7672
    816820| Fun_default -> h_fun_default
    817821
  • extracted/classifyOp.mli

    r2649 r2717  
    11open Preamble
    22
     3open BitVectorTrie
     4
    35open CostLabel
    46
     
    3032
    3133open Identifiers
     34
     35open Exp
    3236
    3337open Arithmetic
  • extracted/cminor_syntax.ml

    r2649 r2717  
    2929open Division
    3030
     31open Exp
     32
    3133open Arithmetic
    3234
     
    9092
    9193open FrontEndOps
     94
     95open BitVectorTrie
    9296
    9397open CostLabel
     
    111115    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    112116    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    113 let rec expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_10365 = function
    114 | Id (t, x_10367) -> h_Id t x_10367
    115 | Cst (t, x_10368) -> h_Cst t x_10368
    116 | Op1 (t, t', x_10370, x_10369) ->
    117   h_Op1 t t' x_10370 x_10369
    118     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10369)
    119 | Op2 (t1, t2, t', x_10373, x_10372, x_10371) ->
    120   h_Op2 t1 t2 t' x_10373 x_10372 x_10371
    121     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_10372)
    122     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_10371)
    123 | Mem (t, x_10374) ->
    124   h_Mem t x_10374
     117let rec expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13681 = function
     118| Id (t, x_13683) -> h_Id t x_13683
     119| Cst (t, x_13684) -> h_Cst t x_13684
     120| Op1 (t, t', x_13686, x_13685) ->
     121  h_Op1 t t' x_13686 x_13685
     122    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13685)
     123| Op2 (t1, t2, t', x_13689, x_13688, x_13687) ->
     124  h_Op2 t1 t2 t' x_13689 x_13688 x_13687
     125    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13688)
     126    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13687)
     127| Mem (t, x_13690) ->
     128  h_Mem t x_13690
    125129    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    126       x_10374)
    127 | Cond (sz, sg, t, x_10377, x_10376, x_10375) ->
    128   h_Cond sz sg t x_10377 x_10376 x_10375
     130      x_13690)
     131| Cond (sz, sg, t, x_13693, x_13692, x_13691) ->
     132  h_Cond sz sg t x_13693 x_13692 x_13691
    129133    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    130       (sz, sg)) x_10377)
    131     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10376)
    132     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10375)
    133 | Ecost (t, x_10379, x_10378) ->
    134   h_Ecost t x_10379 x_10378
    135     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10378)
     134      (sz, sg)) x_13693)
     135    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13692)
     136    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13691)
     137| Ecost (t, x_13695, x_13694) ->
     138  h_Ecost t x_13695 x_13694
     139    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13694)
    136140
    137141(** val expr_rect_Type3 :
     
    143147    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    144148    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    145 let rec expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_10409 = function
    146 | Id (t, x_10411) -> h_Id t x_10411
    147 | Cst (t, x_10412) -> h_Cst t x_10412
    148 | Op1 (t, t', x_10414, x_10413) ->
    149   h_Op1 t t' x_10414 x_10413
    150     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10413)
    151 | Op2 (t1, t2, t', x_10417, x_10416, x_10415) ->
    152   h_Op2 t1 t2 t' x_10417 x_10416 x_10415
    153     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_10416)
    154     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_10415)
    155 | Mem (t, x_10418) ->
    156   h_Mem t x_10418
     149let rec expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13725 = function
     150| Id (t, x_13727) -> h_Id t x_13727
     151| Cst (t, x_13728) -> h_Cst t x_13728
     152| Op1 (t, t', x_13730, x_13729) ->
     153  h_Op1 t t' x_13730 x_13729
     154    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13729)
     155| Op2 (t1, t2, t', x_13733, x_13732, x_13731) ->
     156  h_Op2 t1 t2 t' x_13733 x_13732 x_13731
     157    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13732)
     158    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13731)
     159| Mem (t, x_13734) ->
     160  h_Mem t x_13734
    157161    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    158       x_10418)
    159 | Cond (sz, sg, t, x_10421, x_10420, x_10419) ->
    160   h_Cond sz sg t x_10421 x_10420 x_10419
     162      x_13734)
     163| Cond (sz, sg, t, x_13737, x_13736, x_13735) ->
     164  h_Cond sz sg t x_13737 x_13736 x_13735
    161165    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    162       (sz, sg)) x_10421)
    163     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10420)
    164     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10419)
    165 | Ecost (t, x_10423, x_10422) ->
    166   h_Ecost t x_10423 x_10422
    167     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10422)
     166      (sz, sg)) x_13737)
     167    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13736)
     168    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13735)
     169| Ecost (t, x_13739, x_13738) ->
     170  h_Ecost t x_13739 x_13738
     171    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13738)
    168172
    169173(** val expr_rect_Type2 :
     
    175179    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    176180    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    177 let rec expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_10431 = function
    178 | Id (t, x_10433) -> h_Id t x_10433
    179 | Cst (t, x_10434) -> h_Cst t x_10434
    180 | Op1 (t, t', x_10436, x_10435) ->
    181   h_Op1 t t' x_10436 x_10435
    182     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10435)
    183 | Op2 (t1, t2, t', x_10439, x_10438, x_10437) ->
    184   h_Op2 t1 t2 t' x_10439 x_10438 x_10437
    185     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_10438)
    186     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_10437)
    187 | Mem (t, x_10440) ->
    188   h_Mem t x_10440
     181let rec expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13747 = function
     182| Id (t, x_13749) -> h_Id t x_13749
     183| Cst (t, x_13750) -> h_Cst t x_13750
     184| Op1 (t, t', x_13752, x_13751) ->
     185  h_Op1 t t' x_13752 x_13751
     186    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13751)
     187| Op2 (t1, t2, t', x_13755, x_13754, x_13753) ->
     188  h_Op2 t1 t2 t' x_13755 x_13754 x_13753
     189    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13754)
     190    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13753)
     191| Mem (t, x_13756) ->
     192  h_Mem t x_13756
    189193    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    190       x_10440)
    191 | Cond (sz, sg, t, x_10443, x_10442, x_10441) ->
    192   h_Cond sz sg t x_10443 x_10442 x_10441
     194      x_13756)
     195| Cond (sz, sg, t, x_13759, x_13758, x_13757) ->
     196  h_Cond sz sg t x_13759 x_13758 x_13757
    193197    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    194       (sz, sg)) x_10443)
    195     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10442)
    196     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10441)
    197 | Ecost (t, x_10445, x_10444) ->
    198   h_Ecost t x_10445 x_10444
    199     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10444)
     198      (sz, sg)) x_13759)
     199    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13758)
     200    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13757)
     201| Ecost (t, x_13761, x_13760) ->
     202  h_Ecost t x_13761 x_13760
     203    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13760)
    200204
    201205(** val expr_rect_Type1 :
     
    207211    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    208212    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    209 let rec expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_10453 = function
    210 | Id (t, x_10455) -> h_Id t x_10455
    211 | Cst (t, x_10456) -> h_Cst t x_10456
    212 | Op1 (t, t', x_10458, x_10457) ->
    213   h_Op1 t t' x_10458 x_10457
    214     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10457)
    215 | Op2 (t1, t2, t', x_10461, x_10460, x_10459) ->
    216   h_Op2 t1 t2 t' x_10461 x_10460 x_10459
    217     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_10460)
    218     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_10459)
    219 | Mem (t, x_10462) ->
    220   h_Mem t x_10462
     213let rec expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13769 = function
     214| Id (t, x_13771) -> h_Id t x_13771
     215| Cst (t, x_13772) -> h_Cst t x_13772
     216| Op1 (t, t', x_13774, x_13773) ->
     217  h_Op1 t t' x_13774 x_13773
     218    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13773)
     219| Op2 (t1, t2, t', x_13777, x_13776, x_13775) ->
     220  h_Op2 t1 t2 t' x_13777 x_13776 x_13775
     221    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13776)
     222    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13775)
     223| Mem (t, x_13778) ->
     224  h_Mem t x_13778
    221225    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    222       x_10462)
    223 | Cond (sz, sg, t, x_10465, x_10464, x_10463) ->
    224   h_Cond sz sg t x_10465 x_10464 x_10463
     226      x_13778)
     227| Cond (sz, sg, t, x_13781, x_13780, x_13779) ->
     228  h_Cond sz sg t x_13781 x_13780 x_13779
    225229    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    226       (sz, sg)) x_10465)
    227     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10464)
    228     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10463)
    229 | Ecost (t, x_10467, x_10466) ->
    230   h_Ecost t x_10467 x_10466
    231     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10466)
     230      (sz, sg)) x_13781)
     231    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13780)
     232    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13779)
     233| Ecost (t, x_13783, x_13782) ->
     234  h_Ecost t x_13783 x_13782
     235    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13782)
    232236
    233237(** val expr_rect_Type0 :
     
    239243    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    240244    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    241 let rec expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_10475 = function
    242 | Id (t, x_10477) -> h_Id t x_10477
    243 | Cst (t, x_10478) -> h_Cst t x_10478
    244 | Op1 (t, t', x_10480, x_10479) ->
    245   h_Op1 t t' x_10480 x_10479
    246     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10479)
    247 | Op2 (t1, t2, t', x_10483, x_10482, x_10481) ->
    248   h_Op2 t1 t2 t' x_10483 x_10482 x_10481
    249     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_10482)
    250     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_10481)
    251 | Mem (t, x_10484) ->
    252   h_Mem t x_10484
     245let rec expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13791 = function
     246| Id (t, x_13793) -> h_Id t x_13793
     247| Cst (t, x_13794) -> h_Cst t x_13794
     248| Op1 (t, t', x_13796, x_13795) ->
     249  h_Op1 t t' x_13796 x_13795
     250    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13795)
     251| Op2 (t1, t2, t', x_13799, x_13798, x_13797) ->
     252  h_Op2 t1 t2 t' x_13799 x_13798 x_13797
     253    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13798)
     254    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13797)
     255| Mem (t, x_13800) ->
     256  h_Mem t x_13800
    253257    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    254       x_10484)
    255 | Cond (sz, sg, t, x_10487, x_10486, x_10485) ->
    256   h_Cond sz sg t x_10487 x_10486 x_10485
     258      x_13800)
     259| Cond (sz, sg, t, x_13803, x_13802, x_13801) ->
     260  h_Cond sz sg t x_13803 x_13802 x_13801
    257261    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    258       (sz, sg)) x_10487)
    259     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10486)
    260     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10485)
    261 | Ecost (t, x_10489, x_10488) ->
    262   h_Ecost t x_10489 x_10488
    263     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_10488)
     262      (sz, sg)) x_13803)
     263    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13802)
     264    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13801)
     265| Ecost (t, x_13805, x_13804) ->
     266  h_Ecost t x_13805 x_13804
     267    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13804)
    264268
    265269(** val expr_inv_rect_Type4 :
     
    373377let rec stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function
    374378| St_skip -> h_St_skip
    375 | St_assign (t, x_10660, x_10659) -> h_St_assign t x_10660 x_10659
    376 | St_store (t, x_10662, x_10661) -> h_St_store t x_10662 x_10661
    377 | St_call (x_10665, x_10664, x_10663) -> h_St_call x_10665 x_10664 x_10663
    378 | St_seq (x_10667, x_10666) ->
    379   h_St_seq x_10667 x_10666
     379| St_assign (t, x_13976, x_13975) -> h_St_assign t x_13976 x_13975
     380| St_store (t, x_13978, x_13977) -> h_St_store t x_13978 x_13977
     381| St_call (x_13981, x_13980, x_13979) -> h_St_call x_13981 x_13980 x_13979
     382| St_seq (x_13983, x_13982) ->
     383  h_St_seq x_13983 x_13982
    380384    (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    381       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10667)
     385      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13983)
    382386    (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    383       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10666)
    384 | St_ifthenelse (sz, sg, x_10670, x_10669, x_10668) ->
    385   h_St_ifthenelse sz sg x_10670 x_10669 x_10668
     387      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13982)
     388| St_ifthenelse (sz, sg, x_13986, x_13985, x_13984) ->
     389  h_St_ifthenelse sz sg x_13986 x_13985 x_13984
    386390    (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    387       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10669)
     391      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13985)
    388392    (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    389       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10668)
    390 | St_return x_10671 -> h_St_return x_10671
    391 | St_label (x_10673, x_10672) ->
    392   h_St_label x_10673 x_10672
     393      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13984)
     394| St_return x_13987 -> h_St_return x_13987
     395| St_label (x_13989, x_13988) ->
     396  h_St_label x_13989 x_13988
    393397    (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    394       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10672)
    395 | St_goto x_10674 -> h_St_goto x_10674
    396 | St_cost (x_10676, x_10675) ->
    397   h_St_cost x_10676 x_10675
     398      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13988)
     399| St_goto x_13990 -> h_St_goto x_13990
     400| St_cost (x_13992, x_13991) ->
     401  h_St_cost x_13992 x_13991
    398402    (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    399       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10675)
     403      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13991)
    400404
    401405(** val stmt_rect_Type3 :
     
    410414let rec stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function
    411415| St_skip -> h_St_skip
    412 | St_assign (t, x_10718, x_10717) -> h_St_assign t x_10718 x_10717
    413 | St_store (t, x_10720, x_10719) -> h_St_store t x_10720 x_10719
    414 | St_call (x_10723, x_10722, x_10721) -> h_St_call x_10723 x_10722 x_10721
    415 | St_seq (x_10725, x_10724) ->
    416   h_St_seq x_10725 x_10724
     416| St_assign (t, x_14034, x_14033) -> h_St_assign t x_14034 x_14033
     417| St_store (t, x_14036, x_14035) -> h_St_store t x_14036 x_14035
     418| St_call (x_14039, x_14038, x_14037) -> h_St_call x_14039 x_14038 x_14037
     419| St_seq (x_14041, x_14040) ->
     420  h_St_seq x_14041 x_14040
    417421    (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    418       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10725)
     422      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14041)
    419423    (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    420       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10724)
    421 | St_ifthenelse (sz, sg, x_10728, x_10727, x_10726) ->
    422   h_St_ifthenelse sz sg x_10728 x_10727 x_10726
     424      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14040)
     425| St_ifthenelse (sz, sg, x_14044, x_14043, x_14042) ->
     426  h_St_ifthenelse sz sg x_14044 x_14043 x_14042
    423427    (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    424       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10727)
     428      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14043)
    425429    (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    426       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10726)
    427 | St_return x_10729 -> h_St_return x_10729
    428 | St_label (x_10731, x_10730) ->
    429   h_St_label x_10731 x_10730
     430      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14042)
     431| St_return x_14045 -> h_St_return x_14045
     432| St_label (x_14047, x_14046) ->
     433  h_St_label x_14047 x_14046
    430434    (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    431       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10730)
    432 | St_goto x_10732 -> h_St_goto x_10732
    433 | St_cost (x_10734, x_10733) ->
    434   h_St_cost x_10734 x_10733
     435      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14046)
     436| St_goto x_14048 -> h_St_goto x_14048
     437| St_cost (x_14050, x_14049) ->
     438  h_St_cost x_14050 x_14049
    435439    (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    436       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10733)
     440      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14049)
    437441
    438442(** val stmt_rect_Type2 :
     
    447451let rec stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function
    448452| St_skip -> h_St_skip
    449 | St_assign (t, x_10747, x_10746) -> h_St_assign t x_10747 x_10746
    450 | St_store (t, x_10749, x_10748) -> h_St_store t x_10749 x_10748
    451 | St_call (x_10752, x_10751, x_10750) -> h_St_call x_10752 x_10751 x_10750
    452 | St_seq (x_10754, x_10753) ->
    453   h_St_seq x_10754 x_10753
     453| St_assign (t, x_14063, x_14062) -> h_St_assign t x_14063 x_14062
     454| St_store (t, x_14065, x_14064) -> h_St_store t x_14065 x_14064
     455| St_call (x_14068, x_14067, x_14066) -> h_St_call x_14068 x_14067 x_14066
     456| St_seq (x_14070, x_14069) ->
     457  h_St_seq x_14070 x_14069
    454458    (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    455       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10754)
     459      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14070)
    456460    (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    457       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10753)
    458 | St_ifthenelse (sz, sg, x_10757, x_10756, x_10755) ->
    459   h_St_ifthenelse sz sg x_10757 x_10756 x_10755
     461      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14069)
     462| St_ifthenelse (sz, sg, x_14073, x_14072, x_14071) ->
     463  h_St_ifthenelse sz sg x_14073 x_14072 x_14071
    460464    (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    461       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10756)
     465      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14072)
    462466    (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    463       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10755)
    464 | St_return x_10758 -> h_St_return x_10758
    465 | St_label (x_10760, x_10759) ->
    466   h_St_label x_10760 x_10759
     467      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14071)
     468| St_return x_14074 -> h_St_return x_14074
     469| St_label (x_14076, x_14075) ->
     470  h_St_label x_14076 x_14075
    467471    (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    468       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10759)
    469 | St_goto x_10761 -> h_St_goto x_10761
    470 | St_cost (x_10763, x_10762) ->
    471   h_St_cost x_10763 x_10762
     472      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14075)
     473| St_goto x_14077 -> h_St_goto x_14077
     474| St_cost (x_14079, x_14078) ->
     475  h_St_cost x_14079 x_14078
    472476    (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    473       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10762)
     477      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14078)
    474478
    475479(** val stmt_rect_Type1 :
     
    484488let rec stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function
    485489| St_skip -> h_St_skip
    486 | St_assign (t, x_10776, x_10775) -> h_St_assign t x_10776 x_10775
    487 | St_store (t, x_10778, x_10777) -> h_St_store t x_10778 x_10777
    488 | St_call (x_10781, x_10780, x_10779) -> h_St_call x_10781 x_10780 x_10779
    489 | St_seq (x_10783, x_10782) ->
    490   h_St_seq x_10783 x_10782
     490| St_assign (t, x_14092, x_14091) -> h_St_assign t x_14092 x_14091
     491| St_store (t, x_14094, x_14093) -> h_St_store t x_14094 x_14093
     492| St_call (x_14097, x_14096, x_14095) -> h_St_call x_14097 x_14096 x_14095
     493| St_seq (x_14099, x_14098) ->
     494  h_St_seq x_14099 x_14098
    491495    (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    492       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10783)
     496      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14099)
    493497    (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    494       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10782)
    495 | St_ifthenelse (sz, sg, x_10786, x_10785, x_10784) ->
    496   h_St_ifthenelse sz sg x_10786 x_10785 x_10784
     498      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14098)
     499| St_ifthenelse (sz, sg, x_14102, x_14101, x_14100) ->
     500  h_St_ifthenelse sz sg x_14102 x_14101 x_14100
    497501    (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    498       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10785)
     502      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14101)
    499503    (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    500       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10784)
    501 | St_return x_10787 -> h_St_return x_10787
    502 | St_label (x_10789, x_10788) ->
    503   h_St_label x_10789 x_10788
     504      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14100)
     505| St_return x_14103 -> h_St_return x_14103
     506| St_label (x_14105, x_14104) ->
     507  h_St_label x_14105 x_14104
    504508    (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    505       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10788)
    506 | St_goto x_10790 -> h_St_goto x_10790
    507 | St_cost (x_10792, x_10791) ->
    508   h_St_cost x_10792 x_10791
     509      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14104)
     510| St_goto x_14106 -> h_St_goto x_14106
     511| St_cost (x_14108, x_14107) ->
     512  h_St_cost x_14108 x_14107
    509513    (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    510       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10791)
     514      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14107)
    511515
    512516(** val stmt_rect_Type0 :
     
    521525let rec stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function
    522526| St_skip -> h_St_skip
    523 | St_assign (t, x_10805, x_10804) -> h_St_assign t x_10805 x_10804
    524 | St_store (t, x_10807, x_10806) -> h_St_store t x_10807 x_10806
    525 | St_call (x_10810, x_10809, x_10808) -> h_St_call x_10810 x_10809 x_10808
    526 | St_seq (x_10812, x_10811) ->
    527   h_St_seq x_10812 x_10811
     527| St_assign (t, x_14121, x_14120) -> h_St_assign t x_14121 x_14120
     528| St_store (t, x_14123, x_14122) -> h_St_store t x_14123 x_14122
     529| St_call (x_14126, x_14125, x_14124) -> h_St_call x_14126 x_14125 x_14124
     530| St_seq (x_14128, x_14127) ->
     531  h_St_seq x_14128 x_14127
    528532    (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    529       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10812)
     533      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14128)
    530534    (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    531       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10811)
    532 | St_ifthenelse (sz, sg, x_10815, x_10814, x_10813) ->
    533   h_St_ifthenelse sz sg x_10815 x_10814 x_10813
     535      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14127)
     536| St_ifthenelse (sz, sg, x_14131, x_14130, x_14129) ->
     537  h_St_ifthenelse sz sg x_14131 x_14130 x_14129
    534538    (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    535       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10814)
     539      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14130)
    536540    (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    537       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10813)
    538 | St_return x_10816 -> h_St_return x_10816
    539 | St_label (x_10818, x_10817) ->
    540   h_St_label x_10818 x_10817
     541      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14129)
     542| St_return x_14132 -> h_St_return x_14132
     543| St_label (x_14134, x_14133) ->
     544  h_St_label x_14134 x_14133
    541545    (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    542       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10817)
    543 | St_goto x_10819 -> h_St_goto x_10819
    544 | St_cost (x_10821, x_10820) ->
    545   h_St_cost x_10821 x_10820
     546      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14133)
     547| St_goto x_14135 -> h_St_goto x_14135
     548| St_cost (x_14137, x_14136) ->
     549  h_St_cost x_14137 x_14136
    546550    (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq
    547       h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_10820)
     551      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14136)
    548552
    549553(** val stmt_inv_rect_Type4 :
     
    759763    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    760764    -> 'a1) -> internal_function -> 'a1 **)
    761 let rec internal_function_rect_Type4 h_mk_internal_function x_11116 =
     765let rec internal_function_rect_Type4 h_mk_internal_function x_14432 =
    762766  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    763     f_stacksize = f_stacksize0; f_body = f_body0 } = x_11116
     767    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14432
    764768  in
    765769  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    770774    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    771775    -> 'a1) -> internal_function -> 'a1 **)
    772 let rec internal_function_rect_Type5 h_mk_internal_function x_11118 =
     776let rec internal_function_rect_Type5 h_mk_internal_function x_14434 =
    773777  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    774     f_stacksize = f_stacksize0; f_body = f_body0 } = x_11118
     778    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14434
    775779  in
    776780  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    781785    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    782786    -> 'a1) -> internal_function -> 'a1 **)
    783 let rec internal_function_rect_Type3 h_mk_internal_function x_11120 =
     787let rec internal_function_rect_Type3 h_mk_internal_function x_14436 =
    784788  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    785     f_stacksize = f_stacksize0; f_body = f_body0 } = x_11120
     789    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14436
    786790  in
    787791  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    792796    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    793797    -> 'a1) -> internal_function -> 'a1 **)
    794 let rec internal_function_rect_Type2 h_mk_internal_function x_11122 =
     798let rec internal_function_rect_Type2 h_mk_internal_function x_14438 =
    795799  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    796     f_stacksize = f_stacksize0; f_body = f_body0 } = x_11122
     800    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14438
    797801  in
    798802  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    803807    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    804808    -> 'a1) -> internal_function -> 'a1 **)
    805 let rec internal_function_rect_Type1 h_mk_internal_function x_11124 =
     809let rec internal_function_rect_Type1 h_mk_internal_function x_14440 =
    806810  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    807     f_stacksize = f_stacksize0; f_body = f_body0 } = x_11124
     811    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14440
    808812  in
    809813  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    814818    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    815819    -> 'a1) -> internal_function -> 'a1 **)
    816 let rec internal_function_rect_Type0 h_mk_internal_function x_11126 =
     820let rec internal_function_rect_Type0 h_mk_internal_function x_14442 =
    817821  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    818     f_stacksize = f_stacksize0; f_body = f_body0 } = x_11126
     822    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14442
    819823  in
    820824  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
  • extracted/cminor_syntax.mli

    r2649 r2717  
    2929open Division
    3030
     31open Exp
     32
    3133open Arithmetic
    3234
     
    9092
    9193open FrontEndOps
     94
     95open BitVectorTrie
    9296
    9397open CostLabel
  • extracted/compiler.ml

    r2649 r2717  
    11open Preamble
    22
     3open BitVectorTrie
     4
    35open CostLabel
    46
     
    3133open Identifiers
    3234
     35open Exp
     36
    3337open Arithmetic
    3438
     
    148152
    149153open Initialisation
    150 
    151 open BitVectorTrie
    152154
    153155open Graphs
     
    175177        init_cost; Types.snd = p' }; Types.snd = p5 }))
    176178
     179open Deqsets
     180
     181open State
     182
     183open Bind_new
     184
     185open BindLists
     186
     187open Blocks
     188
     189open TranslateUtils
     190
     191open AssocList
     192
    177193open String
    178194
    179195open LabelledObjects
    180196
     197open I8051
     198
     199open BackEndOps
     200
     201open Joint
     202
     203open RTL
     204
     205open RTLabsToRTL
     206
     207open ERTL
     208
     209open RegisterSet
     210
     211open RTLToERTL
     212
     213open ERTLptr
     214
     215open ERTLToERTLptr
     216
     217open Fixpoints
     218
     219open Set_adt
     220
     221open Liveness
     222
     223open Interference
     224
     225open Joint_LTL_LIN
     226
     227open LTL
     228
     229open ERTLptrToLTL
     230
     231open LIN
     232
     233open Linearise
     234
     235open LTLToLIN
     236
    181237open ASM
     238
     239open BitVectorTrieSet
     240
     241open LINToASM
     242
     243(** val compute_fixpoint : Fixpoints.fixpoint_computer **)
     244let compute_fixpoint _ =
     245  failwith "AXIOM TO BE REALIZED"
     246
     247(** val colour_graph : Interference.coloured_graph_computer **)
     248let colour_graph _ =
     249  failwith "AXIOM TO BE REALIZED"
    182250
    183251(** val back_end :
    184252    RTLabs_syntax.rTLabs_program -> ASM.pseudo_assembly_program **)
    185 let back_end x =
    186   failwith "AXIOM TO BE REALIZED"
     253let back_end p =
     254  let p0 = RTLabsToRTL.rtlabs_to_rtl p in
     255  let p3 = RTLToERTL.rtl_to_ertl p0 in
     256  let p4 = ERTLToERTLptr.ertl_to_ertlptr p3 in
     257  let p5 = ERTLptrToLTL.ertlptr_to_ltl compute_fixpoint colour_graph p4 in
     258  let p6 = LTLToLIN.ltl_to_lin p5 in LINToASM.lin_to_asm p6
    187259
    188260type object_code = BitVector.byte List.list
    189261
    190 type costlabel_map = CostLabel.costlabel BitVectorTrie.bitVectorTrie
     262type costlabel_map1 = CostLabel.costlabel BitVectorTrie.bitVectorTrie
     263
     264open Assembly
     265
     266open Status
     267
     268open Fetch
     269
     270open PolicyFront
     271
     272open PolicyStep
     273
     274open Policy
    191275
    192276(** val assembler :
    193     ASM.pseudo_assembly_program -> (object_code, costlabel_map) Types.prod
     277    ASM.pseudo_assembly_program -> (object_code, costlabel_map1) Types.prod
    194278    Errors.res **)
    195 let assembler x =
    196   failwith "AXIOM TO BE REALIZED"
     279let assembler p =
     280  let { Types.fst = preamble0; Types.snd = list_instr } = p in
     281  let p' = { Types.fst = preamble0; Types.snd = list_instr } in
     282  Obj.magic
     283    (Monad.m_bind0 (Monad.max_def Errors.res0)
     284      (Obj.magic
     285        (Errors.opt_to_res (Errors.msg ErrorMessages.Jump_expansion_failed)
     286          (Policy.jump_expansion' (Types.coerc_pair_sigma p'))))
     287      (fun sigma_pol ->
     288      let sigma0 = fun ppc -> (Types.pi1 sigma_pol).Types.fst ppc in
     289      let pol = fun ppc -> (Types.pi1 sigma_pol).Types.snd ppc in
     290      Obj.magic (Errors.OK (Types.pi1 (Assembly.assembly p sigma0 pol)))))
    197291
    198292open StructuredTraces
     
    200294open AbstractStatus
    201295
    202 open Status
    203 
    204296open StatusProofs
    205297
    206298open Interpret
    207 
    208 open Fetch
    209299
    210300open ASMCosts
     
    223313
    224314(** val compile :
    225     Csyntax.clight_program -> ((object_code, costlabel_map) Types.prod,
     315    Csyntax.clight_program -> ((object_code, costlabel_map1) Types.prod,
    226316    (Csyntax.clight_program, Label.clight_cost_map) Types.dPair) Types.prod
    227317    Errors.res **)
  • extracted/compiler.mli

    r2649 r2717  
    11open Preamble
    22
     3open BitVectorTrie
     4
    35open CostLabel
    46
     
    3133open Identifiers
    3234
     35open Exp
     36
    3337open Arithmetic
    3438
     
    148152
    149153open Initialisation
    150 
    151 open BitVectorTrie
    152154
    153155open Graphs
     
    165167  Types.prod, RTLabs_syntax.rTLabs_program) Types.prod Errors.res
    166168
     169open Deqsets
     170
     171open State
     172
     173open Bind_new
     174
     175open BindLists
     176
     177open Blocks
     178
     179open TranslateUtils
     180
     181open AssocList
     182
    167183open String
    168184
    169185open LabelledObjects
    170186
     187open I8051
     188
     189open BackEndOps
     190
     191open Joint
     192
     193open RTL
     194
     195open RTLabsToRTL
     196
     197open ERTL
     198
     199open RegisterSet
     200
     201open RTLToERTL
     202
     203open ERTLptr
     204
     205open ERTLToERTLptr
     206
     207open Fixpoints
     208
     209open Set_adt
     210
     211open Liveness
     212
     213open Interference
     214
     215open Joint_LTL_LIN
     216
     217open LTL
     218
     219open ERTLptrToLTL
     220
     221open LIN
     222
     223open Linearise
     224
     225open LTLToLIN
     226
    171227open ASM
    172228
     229open BitVectorTrieSet
     230
     231open LINToASM
     232
     233val compute_fixpoint : Fixpoints.fixpoint_computer
     234
     235val colour_graph : Interference.coloured_graph_computer
     236
    173237val back_end : RTLabs_syntax.rTLabs_program -> ASM.pseudo_assembly_program
    174238
    175239type object_code = BitVector.byte List.list
    176240
    177 type costlabel_map = CostLabel.costlabel BitVectorTrie.bitVectorTrie
     241type costlabel_map1 = CostLabel.costlabel BitVectorTrie.bitVectorTrie
     242
     243open Assembly
     244
     245open Status
     246
     247open Fetch
     248
     249open PolicyFront
     250
     251open PolicyStep
     252
     253open Policy
    178254
    179255val assembler :
    180   ASM.pseudo_assembly_program -> (object_code, costlabel_map) Types.prod
     256  ASM.pseudo_assembly_program -> (object_code, costlabel_map1) Types.prod
    181257  Errors.res
    182258
     
    185261open AbstractStatus
    186262
    187 open Status
    188 
    189263open StatusProofs
    190264
    191265open Interpret
    192 
    193 open Fetch
    194266
    195267open ASMCosts
     
    206278
    207279val compile :
    208   Csyntax.clight_program -> ((object_code, costlabel_map) Types.prod,
     280  Csyntax.clight_program -> ((object_code, costlabel_map1) Types.prod,
    209281  (Csyntax.clight_program, Label.clight_cost_map) Types.dPair) Types.prod
    210282  Errors.res
  • extracted/costLabel.ml

    r2649 r2717  
    2626
    2727open Identifiers
     28
     29open Exp
    2830
    2931open Arithmetic
     
    6769open AST
    6870
     71open BitVectorTrie
     72
    6973type costlabel = PreIdentifiers.identifier
    7074
     
    7377  Identifiers.identifier_of_nat PreIdentifiers.CostTag
    7478
     79type costlabel_map = costlabel BitVectorTrie.bitVectorTrie
     80
     81(** val costlabel_map0 : costlabel_map **)
     82let costlabel_map0 =
     83  BitVectorTrie.Stub (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     84    (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     85    Nat.O))))))))))))))))
     86
  • extracted/costLabel.mli

    r2649 r2717  
    2626
    2727open Identifiers
     28
     29open Exp
    2830
    2931open Arithmetic
     
    6769open AST
    6870
     71open BitVectorTrie
     72
    6973type costlabel = PreIdentifiers.identifier
    7074
    7175val costlabel_of_nat : Nat.nat -> costlabel
    7276
     77type costlabel_map = costlabel BitVectorTrie.bitVectorTrie
     78
     79val costlabel_map0 : costlabel_map
     80
  • extracted/csem.ml

    r2649 r2717  
    3737open Identifiers
    3838
     39open Exp
     40
    3941open Arithmetic
    4042
     
    9294
    9395open Globalenvs
     96
     97open BitVectorTrie
    9498
    9599open CostLabel
     
    776780let rec cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    777781| Kstop -> h_Kstop
    778 | Kseq (x_5937, x_5936) ->
    779   h_Kseq x_5937 x_5936
     782| Kseq (x_8622, x_8621) ->
     783  h_Kseq x_8622 x_8621
    780784    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    781       h_Kswitch h_Kcall x_5936)
    782 | Kwhile (x_5940, x_5939, x_5938) ->
    783   h_Kwhile x_5940 x_5939 x_5938
     785      h_Kswitch h_Kcall x_8621)
     786| Kwhile (x_8625, x_8624, x_8623) ->
     787  h_Kwhile x_8625 x_8624 x_8623
    784788    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    785       h_Kswitch h_Kcall x_5938)
    786 | Kdowhile (x_5943, x_5942, x_5941) ->
    787   h_Kdowhile x_5943 x_5942 x_5941
     789      h_Kswitch h_Kcall x_8623)
     790| Kdowhile (x_8628, x_8627, x_8626) ->
     791  h_Kdowhile x_8628 x_8627 x_8626
    788792    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    789       h_Kswitch h_Kcall x_5941)
    790 | Kfor2 (x_5947, x_5946, x_5945, x_5944) ->
    791   h_Kfor2 x_5947 x_5946 x_5945 x_5944
     793      h_Kswitch h_Kcall x_8626)
     794| Kfor2 (x_8632, x_8631, x_8630, x_8629) ->
     795  h_Kfor2 x_8632 x_8631 x_8630 x_8629
    792796    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    793       h_Kswitch h_Kcall x_5944)
    794 | Kfor3 (x_5951, x_5950, x_5949, x_5948) ->
    795   h_Kfor3 x_5951 x_5950 x_5949 x_5948
     797      h_Kswitch h_Kcall x_8629)
     798| Kfor3 (x_8636, x_8635, x_8634, x_8633) ->
     799  h_Kfor3 x_8636 x_8635 x_8634 x_8633
    796800    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    797       h_Kswitch h_Kcall x_5948)
    798 | Kswitch x_5952 ->
    799   h_Kswitch x_5952
     801      h_Kswitch h_Kcall x_8633)
     802| Kswitch x_8637 ->
     803  h_Kswitch x_8637
    800804    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    801       h_Kswitch h_Kcall x_5952)
    802 | Kcall (x_5956, x_5955, x_5954, x_5953) ->
    803   h_Kcall x_5956 x_5955 x_5954 x_5953
     805      h_Kswitch h_Kcall x_8637)
     806| Kcall (x_8641, x_8640, x_8639, x_8638) ->
     807  h_Kcall x_8641 x_8640 x_8639 x_8638
    804808    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    805       h_Kswitch h_Kcall x_5953)
     809      h_Kswitch h_Kcall x_8638)
    806810
    807811(** val cont_rect_Type3 :
     
    816820let rec cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    817821| Kstop -> h_Kstop
    818 | Kseq (x_5997, x_5996) ->
    819   h_Kseq x_5997 x_5996
     822| Kseq (x_8682, x_8681) ->
     823  h_Kseq x_8682 x_8681
    820824    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    821       h_Kswitch h_Kcall x_5996)
    822 | Kwhile (x_6000, x_5999, x_5998) ->
    823   h_Kwhile x_6000 x_5999 x_5998
     825      h_Kswitch h_Kcall x_8681)
     826| Kwhile (x_8685, x_8684, x_8683) ->
     827  h_Kwhile x_8685 x_8684 x_8683
    824828    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    825       h_Kswitch h_Kcall x_5998)
    826 | Kdowhile (x_6003, x_6002, x_6001) ->
    827   h_Kdowhile x_6003 x_6002 x_6001
     829      h_Kswitch h_Kcall x_8683)
     830| Kdowhile (x_8688, x_8687, x_8686) ->
     831  h_Kdowhile x_8688 x_8687 x_8686
    828832    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    829       h_Kswitch h_Kcall x_6001)
    830 | Kfor2 (x_6007, x_6006, x_6005, x_6004) ->
    831   h_Kfor2 x_6007 x_6006 x_6005 x_6004
     833      h_Kswitch h_Kcall x_8686)
     834| Kfor2 (x_8692, x_8691, x_8690, x_8689) ->
     835  h_Kfor2 x_8692 x_8691 x_8690 x_8689
    832836    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    833       h_Kswitch h_Kcall x_6004)
    834 | Kfor3 (x_6011, x_6010, x_6009, x_6008) ->
    835   h_Kfor3 x_6011 x_6010 x_6009 x_6008
     837      h_Kswitch h_Kcall x_8689)
     838| Kfor3 (x_8696, x_8695, x_8694, x_8693) ->
     839  h_Kfor3 x_8696 x_8695 x_8694 x_8693
    836840    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    837       h_Kswitch h_Kcall x_6008)
    838 | Kswitch x_6012 ->
    839   h_Kswitch x_6012
     841      h_Kswitch h_Kcall x_8693)
     842| Kswitch x_8697 ->
     843  h_Kswitch x_8697
    840844    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    841       h_Kswitch h_Kcall x_6012)
    842 | Kcall (x_6016, x_6015, x_6014, x_6013) ->
    843   h_Kcall x_6016 x_6015 x_6014 x_6013
     845      h_Kswitch h_Kcall x_8697)
     846| Kcall (x_8701, x_8700, x_8699, x_8698) ->
     847  h_Kcall x_8701 x_8700 x_8699 x_8698
    844848    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    845       h_Kswitch h_Kcall x_6013)
     849      h_Kswitch h_Kcall x_8698)
    846850
    847851(** val cont_rect_Type2 :
     
    856860let rec cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    857861| Kstop -> h_Kstop
    858 | Kseq (x_6027, x_6026) ->
    859   h_Kseq x_6027 x_6026
     862| Kseq (x_8712, x_8711) ->
     863  h_Kseq x_8712 x_8711
    860864    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    861       h_Kswitch h_Kcall x_6026)
    862 | Kwhile (x_6030, x_6029, x_6028) ->
    863   h_Kwhile x_6030 x_6029 x_6028
     865      h_Kswitch h_Kcall x_8711)
     866| Kwhile (x_8715, x_8714, x_8713) ->
     867  h_Kwhile x_8715 x_8714 x_8713
    864868    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    865       h_Kswitch h_Kcall x_6028)
    866 | Kdowhile (x_6033, x_6032, x_6031) ->
    867   h_Kdowhile x_6033 x_6032 x_6031
     869      h_Kswitch h_Kcall x_8713)
     870| Kdowhile (x_8718, x_8717, x_8716) ->
     871  h_Kdowhile x_8718 x_8717 x_8716
    868872    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    869       h_Kswitch h_Kcall x_6031)
    870 | Kfor2 (x_6037, x_6036, x_6035, x_6034) ->
    871   h_Kfor2 x_6037 x_6036 x_6035 x_6034
     873      h_Kswitch h_Kcall x_8716)
     874| Kfor2 (x_8722, x_8721, x_8720, x_8719) ->
     875  h_Kfor2 x_8722 x_8721 x_8720 x_8719
    872876    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    873       h_Kswitch h_Kcall x_6034)
    874 | Kfor3 (x_6041, x_6040, x_6039, x_6038) ->
    875   h_Kfor3 x_6041 x_6040 x_6039 x_6038
     877      h_Kswitch h_Kcall x_8719)
     878| Kfor3 (x_8726, x_8725, x_8724, x_8723) ->
     879  h_Kfor3 x_8726 x_8725 x_8724 x_8723
    876880    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    877       h_Kswitch h_Kcall x_6038)
    878 | Kswitch x_6042 ->
    879   h_Kswitch x_6042
     881      h_Kswitch h_Kcall x_8723)
     882| Kswitch x_8727 ->
     883  h_Kswitch x_8727
    880884    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    881       h_Kswitch h_Kcall x_6042)
    882 | Kcall (x_6046, x_6045, x_6044, x_6043) ->
    883   h_Kcall x_6046 x_6045 x_6044 x_6043
     885      h_Kswitch h_Kcall x_8727)
     886| Kcall (x_8731, x_8730, x_8729, x_8728) ->
     887  h_Kcall x_8731 x_8730 x_8729 x_8728
    884888    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    885       h_Kswitch h_Kcall x_6043)
     889      h_Kswitch h_Kcall x_8728)
    886890
    887891(** val cont_rect_Type1 :
     
    896900let rec cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    897901| Kstop -> h_Kstop
    898 | Kseq (x_6057, x_6056) ->
    899   h_Kseq x_6057 x_6056
     902| Kseq (x_8742, x_8741) ->
     903  h_Kseq x_8742 x_8741
    900904    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    901       h_Kswitch h_Kcall x_6056)
    902 | Kwhile (x_6060, x_6059, x_6058) ->
    903   h_Kwhile x_6060 x_6059 x_6058
     905      h_Kswitch h_Kcall x_8741)
     906| Kwhile (x_8745, x_8744, x_8743) ->
     907  h_Kwhile x_8745 x_8744 x_8743
    904908    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    905       h_Kswitch h_Kcall x_6058)
    906 | Kdowhile (x_6063, x_6062, x_6061) ->
    907   h_Kdowhile x_6063 x_6062 x_6061
     909      h_Kswitch h_Kcall x_8743)
     910| Kdowhile (x_8748, x_8747, x_8746) ->
     911  h_Kdowhile x_8748 x_8747 x_8746
    908912    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    909       h_Kswitch h_Kcall x_6061)
    910 | Kfor2 (x_6067, x_6066, x_6065, x_6064) ->
    911   h_Kfor2 x_6067 x_6066 x_6065 x_6064
     913      h_Kswitch h_Kcall x_8746)
     914| Kfor2 (x_8752, x_8751, x_8750, x_8749) ->
     915  h_Kfor2 x_8752 x_8751 x_8750 x_8749
    912916    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    913       h_Kswitch h_Kcall x_6064)
    914 | Kfor3 (x_6071, x_6070, x_6069, x_6068) ->
    915   h_Kfor3 x_6071 x_6070 x_6069 x_6068
     917      h_Kswitch h_Kcall x_8749)
     918| Kfor3 (x_8756, x_8755, x_8754, x_8753) ->
     919  h_Kfor3 x_8756 x_8755 x_8754 x_8753
    916920    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    917       h_Kswitch h_Kcall x_6068)
    918 | Kswitch x_6072 ->
    919   h_Kswitch x_6072
     921      h_Kswitch h_Kcall x_8753)
     922| Kswitch x_8757 ->
     923  h_Kswitch x_8757
    920924    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    921       h_Kswitch h_Kcall x_6072)
    922 | Kcall (x_6076, x_6075, x_6074, x_6073) ->
    923   h_Kcall x_6076 x_6075 x_6074 x_6073
     925      h_Kswitch h_Kcall x_8757)
     926| Kcall (x_8761, x_8760, x_8759, x_8758) ->
     927  h_Kcall x_8761 x_8760 x_8759 x_8758
    924928    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    925       h_Kswitch h_Kcall x_6073)
     929      h_Kswitch h_Kcall x_8758)
    926930
    927931(** val cont_rect_Type0 :
     
    936940let rec cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    937941| Kstop -> h_Kstop
    938 | Kseq (x_6087, x_6086) ->
    939   h_Kseq x_6087 x_6086
     942| Kseq (x_8772, x_8771) ->
     943  h_Kseq x_8772 x_8771
    940944    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    941       h_Kswitch h_Kcall x_6086)
    942 | Kwhile (x_6090, x_6089, x_6088) ->
    943   h_Kwhile x_6090 x_6089 x_6088
     945      h_Kswitch h_Kcall x_8771)
     946| Kwhile (x_8775, x_8774, x_8773) ->
     947  h_Kwhile x_8775 x_8774 x_8773
    944948    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    945       h_Kswitch h_Kcall x_6088)
    946 | Kdowhile (x_6093, x_6092, x_6091) ->
    947   h_Kdowhile x_6093 x_6092 x_6091
     949      h_Kswitch h_Kcall x_8773)
     950| Kdowhile (x_8778, x_8777, x_8776) ->
     951  h_Kdowhile x_8778 x_8777 x_8776
    948952    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    949       h_Kswitch h_Kcall x_6091)
    950 | Kfor2 (x_6097, x_6096, x_6095, x_6094) ->
    951   h_Kfor2 x_6097 x_6096 x_6095 x_6094
     953      h_Kswitch h_Kcall x_8776)
     954| Kfor2 (x_8782, x_8781, x_8780, x_8779) ->
     955  h_Kfor2 x_8782 x_8781 x_8780 x_8779
    952956    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    953       h_Kswitch h_Kcall x_6094)
    954 | Kfor3 (x_6101, x_6100, x_6099, x_6098) ->
    955   h_Kfor3 x_6101 x_6100 x_6099 x_6098
     957      h_Kswitch h_Kcall x_8779)
     958| Kfor3 (x_8786, x_8785, x_8784, x_8783) ->
     959  h_Kfor3 x_8786 x_8785 x_8784 x_8783
    956960    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    957       h_Kswitch h_Kcall x_6098)
    958 | Kswitch x_6102 ->
    959   h_Kswitch x_6102
     961      h_Kswitch h_Kcall x_8783)
     962| Kswitch x_8787 ->
     963  h_Kswitch x_8787
    960964    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    961       h_Kswitch h_Kcall x_6102)
    962 | Kcall (x_6106, x_6105, x_6104, x_6103) ->
    963   h_Kcall x_6106 x_6105 x_6104 x_6103
     965      h_Kswitch h_Kcall x_8787)
     966| Kcall (x_8791, x_8790, x_8789, x_8788) ->
     967  h_Kcall x_8791 x_8790 x_8789 x_8788
    964968    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    965       h_Kswitch h_Kcall x_6103)
     969      h_Kswitch h_Kcall x_8788)
    966970
    967971(** val cont_inv_rect_Type4 :
     
    10691073type state0 =
    10701074| State of Csyntax.function0 * Csyntax.statement * cont * env * GenMem.mem1
    1071 | Callstate of Csyntax.clight_fundef * Values.val0 List.list * cont
    1072    * GenMem.mem1
     1075| Callstate of Values.val0 * Csyntax.clight_fundef * Values.val0 List.list
     1076   * cont * GenMem.mem1
    10731077| Returnstate of Values.val0 * cont * GenMem.mem1
    10741078| Finalstate of Integers.int
     
    10761080(** val state_rect_Type4 :
    10771081    (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 ->
    1078     'a1) -> (Csyntax.clight_fundef -> Values.val0 List.list -> cont ->
    1079     GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1) ->
    1080     (Integers.int -> 'a1) -> state0 -> 'a1 **)
     1082    'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list ->
     1083    cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 ->
     1084    'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **)
    10811085let rec state_rect_Type4 h_State h_Callstate h_Returnstate h_Finalstate = function
    10821086| State (f, s, k, e1, m) -> h_State f s k e1 m
    1083 | Callstate (fd, args, k, m) -> h_Callstate fd args k m
     1087| Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m
    10841088| Returnstate (res1, k, m) -> h_Returnstate res1 k m
    10851089| Finalstate r -> h_Finalstate r
     
    10871091(** val state_rect_Type5 :
    10881092    (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 ->
    1089     'a1) -> (Csyntax.clight_fundef -> Values.val0 List.list -> cont ->
    1090     GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1) ->
    1091     (Integers.int -> 'a1) -> state0 -> 'a1 **)
     1093    'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list ->
     1094    cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 ->
     1095    'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **)
    10921096let rec state_rect_Type5 h_State h_Callstate h_Returnstate h_Finalstate = function
    10931097| State (f, s, k, e1, m) -> h_State f s k e1 m
    1094 | Callstate (fd, args, k, m) -> h_Callstate fd args k m
     1098| Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m
    10951099| Returnstate (res1, k, m) -> h_Returnstate res1 k m
    10961100| Finalstate r -> h_Finalstate r
     
    10981102(** val state_rect_Type3 :
    10991103    (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 ->
    1100     'a1) -> (Csyntax.clight_fundef -> Values.val0 List.list -> cont ->
    1101     GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1) ->
    1102     (Integers.int -> 'a1) -> state0 -> 'a1 **)
     1104    'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list ->
     1105    cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 ->
     1106    'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **)
    11031107let rec state_rect_Type3 h_State h_Callstate h_Returnstate h_Finalstate = function
    11041108| State (f, s, k, e1, m) -> h_State f s k e1 m
    1105 | Callstate (fd, args, k, m) -> h_Callstate fd args k m
     1109| Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m
    11061110| Returnstate (res1, k, m) -> h_Returnstate res1 k m
    11071111| Finalstate r -> h_Finalstate r
     
    11091113(** val state_rect_Type2 :
    11101114    (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 ->
    1111     'a1) -> (Csyntax.clight_fundef -> Values.val0 List.list -> cont ->
    1112     GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1) ->
    1113     (Integers.int -> 'a1) -> state0 -> 'a1 **)
     1115    'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list ->
     1116    cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 ->
     1117    'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **)
    11141118let rec state_rect_Type2 h_State h_Callstate h_Returnstate h_Finalstate = function
    11151119| State (f, s, k, e1, m) -> h_State f s k e1 m
    1116 | Callstate (fd, args, k, m) -> h_Callstate fd args k m
     1120| Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m
    11171121| Returnstate (res1, k, m) -> h_Returnstate res1 k m
    11181122| Finalstate r -> h_Finalstate r
     
    11201124(** val state_rect_Type1 :
    11211125    (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 ->
    1122     'a1) -> (Csyntax.clight_fundef -> Values.val0 List.list -> cont ->
    1123     GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1) ->
    1124     (Integers.int -> 'a1) -> state0 -> 'a1 **)
     1126    'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list ->
     1127    cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 ->
     1128    'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **)
    11251129let rec state_rect_Type1 h_State h_Callstate h_Returnstate h_Finalstate = function
    11261130| State (f, s, k, e1, m) -> h_State f s k e1 m
    1127 | Callstate (fd, args, k, m) -> h_Callstate fd args k m
     1131| Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m
    11281132| Returnstate (res1, k, m) -> h_Returnstate res1 k m
    11291133| Finalstate r -> h_Finalstate r
     
    11311135(** val state_rect_Type0 :
    11321136    (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 ->
    1133     'a1) -> (Csyntax.clight_fundef -> Values.val0 List.list -> cont ->
    1134     GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1) ->
    1135     (Integers.int -> 'a1) -> state0 -> 'a1 **)
     1137    'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list ->
     1138    cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 ->
     1139    'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **)
    11361140let rec state_rect_Type0 h_State h_Callstate h_Returnstate h_Finalstate = function
    11371141| State (f, s, k, e1, m) -> h_State f s k e1 m
    1138 | Callstate (fd, args, k, m) -> h_Callstate fd args k m
     1142| Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m
    11391143| Returnstate (res1, k, m) -> h_Returnstate res1 k m
    11401144| Finalstate r -> h_Finalstate r
     
    11421146(** val state_inv_rect_Type4 :
    11431147    state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env ->
    1144     GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0
    1145     List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont ->
    1146     GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **)
     1148    GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef ->
     1149    Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) ->
     1150    (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __
     1151    -> 'a1) -> 'a1 **)
    11471152let state_inv_rect_Type4 hterm h1 h2 h3 h4 =
    11481153  let hcut = state_rect_Type4 h1 h2 h3 h4 hterm in hcut __
     
    11501155(** val state_inv_rect_Type3 :
    11511156    state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env ->
    1152     GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0
    1153     List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont ->
    1154     GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **)
     1157    GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef ->
     1158    Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) ->
     1159    (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __
     1160    -> 'a1) -> 'a1 **)
    11551161let state_inv_rect_Type3 hterm h1 h2 h3 h4 =
    11561162  let hcut = state_rect_Type3 h1 h2 h3 h4 hterm in hcut __
     
    11581164(** val state_inv_rect_Type2 :
    11591165    state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env ->
    1160     GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0
    1161     List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont ->
    1162     GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **)
     1166    GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef ->
     1167    Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) ->
     1168    (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __
     1169    -> 'a1) -> 'a1 **)
    11631170let state_inv_rect_Type2 hterm h1 h2 h3 h4 =
    11641171  let hcut = state_rect_Type2 h1 h2 h3 h4 hterm in hcut __
     
    11661173(** val state_inv_rect_Type1 :
    11671174    state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env ->
    1168     GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0
    1169     List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont ->
    1170     GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **)
     1175    GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef ->
     1176    Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) ->
     1177    (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __
     1178    -> 'a1) -> 'a1 **)
    11711179let state_inv_rect_Type1 hterm h1 h2 h3 h4 =
    11721180  let hcut = state_rect_Type1 h1 h2 h3 h4 hterm in hcut __
     
    11741182(** val state_inv_rect_Type0 :
    11751183    state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env ->
    1176     GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0
    1177     List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont ->
    1178     GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **)
     1184    GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef ->
     1185    Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) ->
     1186    (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __
     1187    -> 'a1) -> 'a1 **)
    11791188let state_inv_rect_Type0 hterm h1 h2 h3 h4 =
    11801189  let hcut = state_rect_Type0 h1 h2 h3 h4 hterm in hcut __
     
    11861195     | State (a0, a1, a2, a3, a4) ->
    11871196       Obj.magic (fun _ dH -> dH __ __ __ __ __)