Changeset 3043


Ignore:
Timestamp:
Mar 29, 2013, 6:38:26 PM (4 years ago)
Author:
sacerdot
Message:

New major extraction that should have solved all remaining issues.
As tests/PROBLEMI shows, we still have some bugs with:

a) initialization of global data (regression)
b) function pointers call

Files:
1 added
97 edited

Legend:

Unmodified
Added
Removed
  • driver/printer.ml

    r3014 r3043  
    5959 ; print_Op2 = print_op2
    6060 ; print_nat = (fun n -> string_of_int (Extracted.Glue.int_of_matitanat n))
     61 ; print_bitvector = (fun _ n -> string_of_int (Extracted.Glue.int_of_bitvector n))
    6162 }
    6263
  • extracted/aSM.ml

    r2999 r3043  
    113113    -> 'a1) -> addressing_mode -> 'a1 **)
    114114let 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
    115 | DIRECT x_33 -> h_DIRECT x_33
    116 | INDIRECT x_34 -> h_INDIRECT x_34
    117 | EXT_INDIRECT x_35 -> h_EXT_INDIRECT x_35
    118 | REGISTER x_36 -> h_REGISTER x_36
     115| DIRECT x_124 -> h_DIRECT x_124
     116| INDIRECT x_125 -> h_INDIRECT x_125
     117| EXT_INDIRECT x_126 -> h_EXT_INDIRECT x_126
     118| REGISTER x_127 -> h_REGISTER x_127
    119119| ACC_A -> h_ACC_A
    120120| ACC_B -> h_ACC_B
    121121| DPTR -> h_DPTR
    122 | DATA x_37 -> h_DATA x_37
    123 | DATA16 x_38 -> h_DATA16 x_38
     122| DATA x_128 -> h_DATA x_128
     123| DATA16 x_129 -> h_DATA16 x_129
    124124| ACC_DPTR -> h_ACC_DPTR
    125125| ACC_PC -> h_ACC_PC
     
    127127| INDIRECT_DPTR -> h_INDIRECT_DPTR
    128128| CARRY -> h_CARRY
    129 | BIT_ADDR x_39 -> h_BIT_ADDR x_39
    130 | N_BIT_ADDR x_40 -> h_N_BIT_ADDR x_40
    131 | RELATIVE x_41 -> h_RELATIVE x_41
    132 | ADDR11 x_42 -> h_ADDR11 x_42
    133 | ADDR16 x_43 -> h_ADDR16 x_43
     129| BIT_ADDR x_130 -> h_BIT_ADDR x_130
     130| N_BIT_ADDR x_131 -> h_N_BIT_ADDR x_131
     131| RELATIVE x_132 -> h_RELATIVE x_132
     132| ADDR11 x_133 -> h_ADDR11 x_133
     133| ADDR16 x_134 -> h_ADDR16 x_134
    134134
    135135(** val addressing_mode_rect_Type5 :
     
    141141    -> 'a1) -> addressing_mode -> 'a1 **)
    142142let 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
    143 | DIRECT x_64 -> h_DIRECT x_64
    144 | INDIRECT x_65 -> h_INDIRECT x_65
    145 | EXT_INDIRECT x_66 -> h_EXT_INDIRECT x_66
    146 | REGISTER x_67 -> h_REGISTER x_67
     143| DIRECT x_155 -> h_DIRECT x_155
     144| INDIRECT x_156 -> h_INDIRECT x_156
     145| EXT_INDIRECT x_157 -> h_EXT_INDIRECT x_157
     146| REGISTER x_158 -> h_REGISTER x_158
    147147| ACC_A -> h_ACC_A
    148148| ACC_B -> h_ACC_B
    149149| DPTR -> h_DPTR
    150 | DATA x_68 -> h_DATA x_68
    151 | DATA16 x_69 -> h_DATA16 x_69
     150| DATA x_159 -> h_DATA x_159
     151| DATA16 x_160 -> h_DATA16 x_160
    152152| ACC_DPTR -> h_ACC_DPTR
    153153| ACC_PC -> h_ACC_PC
     
    155155| INDIRECT_DPTR -> h_INDIRECT_DPTR
    156156| CARRY -> h_CARRY
    157 | BIT_ADDR x_70 -> h_BIT_ADDR x_70
    158 | N_BIT_ADDR x_71 -> h_N_BIT_ADDR x_71
    159 | RELATIVE x_72 -> h_RELATIVE x_72
    160 | ADDR11 x_73 -> h_ADDR11 x_73
    161 | ADDR16 x_74 -> h_ADDR16 x_74
     157| BIT_ADDR x_161 -> h_BIT_ADDR x_161
     158| N_BIT_ADDR x_162 -> h_N_BIT_ADDR x_162
     159| RELATIVE x_163 -> h_RELATIVE x_163
     160| ADDR11 x_164 -> h_ADDR11 x_164
     161| ADDR16 x_165 -> h_ADDR16 x_165
    162162
    163163(** val addressing_mode_rect_Type3 :
     
    169169    -> 'a1) -> addressing_mode -> 'a1 **)
    170170let 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
    171 | DIRECT x_95 -> h_DIRECT x_95
    172 | INDIRECT x_96 -> h_INDIRECT x_96
    173 | EXT_INDIRECT x_97 -> h_EXT_INDIRECT x_97
    174 | REGISTER x_98 -> h_REGISTER x_98
     171| DIRECT x_186 -> h_DIRECT x_186
     172| INDIRECT x_187 -> h_INDIRECT x_187
     173| EXT_INDIRECT x_188 -> h_EXT_INDIRECT x_188
     174| REGISTER x_189 -> h_REGISTER x_189
    175175| ACC_A -> h_ACC_A
    176176| ACC_B -> h_ACC_B
    177177| DPTR -> h_DPTR
    178 | DATA x_99 -> h_DATA x_99
    179 | DATA16 x_100 -> h_DATA16 x_100
     178| DATA x_190 -> h_DATA x_190
     179| DATA16 x_191 -> h_DATA16 x_191
    180180| ACC_DPTR -> h_ACC_DPTR
    181181| ACC_PC -> h_ACC_PC
     
    183183| INDIRECT_DPTR -> h_INDIRECT_DPTR
    184184| CARRY -> h_CARRY
    185 | BIT_ADDR x_101 -> h_BIT_ADDR x_101
    186 | N_BIT_ADDR x_102 -> h_N_BIT_ADDR x_102
    187 | RELATIVE x_103 -> h_RELATIVE x_103
    188 | ADDR11 x_104 -> h_ADDR11 x_104
    189 | ADDR16 x_105 -> h_ADDR16 x_105
     185| BIT_ADDR x_192 -> h_BIT_ADDR x_192
     186| N_BIT_ADDR x_193 -> h_N_BIT_ADDR x_193
     187| RELATIVE x_194 -> h_RELATIVE x_194
     188| ADDR11 x_195 -> h_ADDR11 x_195
     189| ADDR16 x_196 -> h_ADDR16 x_196
    190190
    191191(** val addressing_mode_rect_Type2 :
     
    197197    -> 'a1) -> addressing_mode -> 'a1 **)
    198198let 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
    199 | DIRECT x_126 -> h_DIRECT x_126
    200 | INDIRECT x_127 -> h_INDIRECT x_127
    201 | EXT_INDIRECT x_128 -> h_EXT_INDIRECT x_128
    202 | REGISTER x_129 -> h_REGISTER x_129
     199| DIRECT x_217 -> h_DIRECT x_217
     200| INDIRECT x_218 -> h_INDIRECT x_218
     201| EXT_INDIRECT x_219 -> h_EXT_INDIRECT x_219
     202| REGISTER x_220 -> h_REGISTER x_220
    203203| ACC_A -> h_ACC_A
    204204| ACC_B -> h_ACC_B
    205205| DPTR -> h_DPTR
    206 | DATA x_130 -> h_DATA x_130
    207 | DATA16 x_131 -> h_DATA16 x_131
     206| DATA x_221 -> h_DATA x_221
     207| DATA16 x_222 -> h_DATA16 x_222
    208208| ACC_DPTR -> h_ACC_DPTR
    209209| ACC_PC -> h_ACC_PC
     
    211211| INDIRECT_DPTR -> h_INDIRECT_DPTR
    212212| CARRY -> h_CARRY
    213 | BIT_ADDR x_132 -> h_BIT_ADDR x_132
    214 | N_BIT_ADDR x_133 -> h_N_BIT_ADDR x_133
    215 | RELATIVE x_134 -> h_RELATIVE x_134
    216 | ADDR11 x_135 -> h_ADDR11 x_135
    217 | ADDR16 x_136 -> h_ADDR16 x_136
     213| BIT_ADDR x_223 -> h_BIT_ADDR x_223
     214| N_BIT_ADDR x_224 -> h_N_BIT_ADDR x_224
     215| RELATIVE x_225 -> h_RELATIVE x_225
     216| ADDR11 x_226 -> h_ADDR11 x_226
     217| ADDR16 x_227 -> h_ADDR16 x_227
    218218
    219219(** val addressing_mode_rect_Type1 :
     
    225225    -> 'a1) -> addressing_mode -> 'a1 **)
    226226let 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
    227 | DIRECT x_157 -> h_DIRECT x_157
    228 | INDIRECT x_158 -> h_INDIRECT x_158
    229 | EXT_INDIRECT x_159 -> h_EXT_INDIRECT x_159
    230 | REGISTER x_160 -> h_REGISTER x_160
     227| DIRECT x_248 -> h_DIRECT x_248
     228| INDIRECT x_249 -> h_INDIRECT x_249
     229| EXT_INDIRECT x_250 -> h_EXT_INDIRECT x_250
     230| REGISTER x_251 -> h_REGISTER x_251
    231231| ACC_A -> h_ACC_A
    232232| ACC_B -> h_ACC_B
    233233| DPTR -> h_DPTR
    234 | DATA x_161 -> h_DATA x_161
    235 | DATA16 x_162 -> h_DATA16 x_162
     234| DATA x_252 -> h_DATA x_252
     235| DATA16 x_253 -> h_DATA16 x_253
    236236| ACC_DPTR -> h_ACC_DPTR
    237237| ACC_PC -> h_ACC_PC
     
    239239| INDIRECT_DPTR -> h_INDIRECT_DPTR
    240240| CARRY -> h_CARRY
    241 | BIT_ADDR x_163 -> h_BIT_ADDR x_163
    242 | N_BIT_ADDR x_164 -> h_N_BIT_ADDR x_164
    243 | RELATIVE x_165 -> h_RELATIVE x_165
    244 | ADDR11 x_166 -> h_ADDR11 x_166
    245 | ADDR16 x_167 -> h_ADDR16 x_167
     241| BIT_ADDR x_254 -> h_BIT_ADDR x_254
     242| N_BIT_ADDR x_255 -> h_N_BIT_ADDR x_255
     243| RELATIVE x_256 -> h_RELATIVE x_256
     244| ADDR11 x_257 -> h_ADDR11 x_257
     245| ADDR16 x_258 -> h_ADDR16 x_258
    246246
    247247(** val addressing_mode_rect_Type0 :
     
    253253    -> 'a1) -> addressing_mode -> 'a1 **)
    254254let 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
    255 | DIRECT x_188 -> h_DIRECT x_188
    256 | INDIRECT x_189 -> h_INDIRECT x_189
    257 | EXT_INDIRECT x_190 -> h_EXT_INDIRECT x_190
    258 | REGISTER x_191 -> h_REGISTER x_191
     255| DIRECT x_279 -> h_DIRECT x_279
     256| INDIRECT x_280 -> h_INDIRECT x_280
     257| EXT_INDIRECT x_281 -> h_EXT_INDIRECT x_281
     258| REGISTER x_282 -> h_REGISTER x_282
    259259| ACC_A -> h_ACC_A
    260260| ACC_B -> h_ACC_B
    261261| DPTR -> h_DPTR
    262 | DATA x_192 -> h_DATA x_192
    263 | DATA16 x_193 -> h_DATA16 x_193
     262| DATA x_283 -> h_DATA x_283
     263| DATA16 x_284 -> h_DATA16 x_284
    264264| ACC_DPTR -> h_ACC_DPTR
    265265| ACC_PC -> h_ACC_PC
     
    267267| INDIRECT_DPTR -> h_INDIRECT_DPTR
    268268| CARRY -> h_CARRY
    269 | BIT_ADDR x_194 -> h_BIT_ADDR x_194
    270 | N_BIT_ADDR x_195 -> h_N_BIT_ADDR x_195
    271 | RELATIVE x_196 -> h_RELATIVE x_196
    272 | ADDR11 x_197 -> h_ADDR11 x_197
    273 | ADDR16 x_198 -> h_ADDR16 x_198
     269| BIT_ADDR x_285 -> h_BIT_ADDR x_285
     270| N_BIT_ADDR x_286 -> h_N_BIT_ADDR x_286
     271| RELATIVE x_287 -> h_RELATIVE x_287
     272| ADDR11 x_288 -> h_ADDR11 x_288
     273| ADDR16 x_289 -> h_ADDR16 x_289
    274274
    275275(** val addressing_mode_inv_rect_Type4 :
     
    19261926    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19271927    'a1) -> subaddressing_mode -> 'a1 **)
    1928 let rec subaddressing_mode_rect_Type4 n l h_mk_subaddressing_mode x_666 =
    1929   let subaddressing_modeel = x_666 in
     1928let rec subaddressing_mode_rect_Type4 n l h_mk_subaddressing_mode x_757 =
     1929  let subaddressing_modeel = x_757 in
    19301930  h_mk_subaddressing_mode subaddressing_modeel __
    19311931
     
    19331933    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19341934    'a1) -> subaddressing_mode -> 'a1 **)
    1935 let rec subaddressing_mode_rect_Type5 n l h_mk_subaddressing_mode x_668 =
    1936   let subaddressing_modeel = x_668 in
     1935let rec subaddressing_mode_rect_Type5 n l h_mk_subaddressing_mode x_759 =
     1936  let subaddressing_modeel = x_759 in
    19371937  h_mk_subaddressing_mode subaddressing_modeel __
    19381938
     
    19401940    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19411941    'a1) -> subaddressing_mode -> 'a1 **)
    1942 let rec subaddressing_mode_rect_Type3 n l h_mk_subaddressing_mode x_670 =
    1943   let subaddressing_modeel = x_670 in
     1942let rec subaddressing_mode_rect_Type3 n l h_mk_subaddressing_mode x_761 =
     1943  let subaddressing_modeel = x_761 in
    19441944  h_mk_subaddressing_mode subaddressing_modeel __
    19451945
     
    19471947    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19481948    'a1) -> subaddressing_mode -> 'a1 **)
    1949 let rec subaddressing_mode_rect_Type2 n l h_mk_subaddressing_mode x_672 =
    1950   let subaddressing_modeel = x_672 in
     1949let rec subaddressing_mode_rect_Type2 n l h_mk_subaddressing_mode x_763 =
     1950  let subaddressing_modeel = x_763 in
    19511951  h_mk_subaddressing_mode subaddressing_modeel __
    19521952
     
    19541954    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19551955    'a1) -> subaddressing_mode -> 'a1 **)
    1956 let rec subaddressing_mode_rect_Type1 n l h_mk_subaddressing_mode x_674 =
    1957   let subaddressing_modeel = x_674 in
     1956let rec subaddressing_mode_rect_Type1 n l h_mk_subaddressing_mode x_765 =
     1957  let subaddressing_modeel = x_765 in
    19581958  h_mk_subaddressing_mode subaddressing_modeel __
    19591959
     
    19611961    Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ ->
    19621962    'a1) -> subaddressing_mode -> 'a1 **)
    1963 let rec subaddressing_mode_rect_Type0 n l h_mk_subaddressing_mode x_676 =
    1964   let subaddressing_modeel = x_676 in
     1963let rec subaddressing_mode_rect_Type0 n l h_mk_subaddressing_mode x_767 =
     1964  let subaddressing_modeel = x_767 in
    19651965  h_mk_subaddressing_mode subaddressing_modeel __
    19661966
     
    22882288    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
    22892289let 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
    2290 | ADD (x_778, x_777) -> h_ADD x_778 x_777
    2291 | ADDC (x_780, x_779) -> h_ADDC x_780 x_779
    2292 | SUBB (x_782, x_781) -> h_SUBB x_782 x_781
    2293 | INC x_783 -> h_INC x_783
    2294 | DEC x_784 -> h_DEC x_784
    2295 | MUL (x_786, x_785) -> h_MUL x_786 x_785
    2296 | DIV (x_788, x_787) -> h_DIV x_788 x_787
    2297 | DA x_789 -> h_DA x_789
    2298 | JC x_790 -> h_JC x_790
    2299 | JNC x_791 -> h_JNC x_791
    2300 | JB (x_793, x_792) -> h_JB x_793 x_792
    2301 | JNB (x_795, x_794) -> h_JNB x_795 x_794
    2302 | JBC (x_797, x_796) -> h_JBC x_797 x_796
    2303 | JZ x_798 -> h_JZ x_798
    2304 | JNZ x_799 -> h_JNZ x_799
    2305 | CJNE (x_801, x_800) -> h_CJNE x_801 x_800
    2306 | DJNZ (x_803, x_802) -> h_DJNZ x_803 x_802
    2307 | ANL x_804 -> h_ANL x_804
    2308 | ORL x_805 -> h_ORL x_805
    2309 | XRL x_806 -> h_XRL x_806
    2310 | CLR x_807 -> h_CLR x_807
    2311 | CPL x_808 -> h_CPL x_808
    2312 | RL x_809 -> h_RL x_809
    2313 | RLC x_810 -> h_RLC x_810
    2314 | RR x_811 -> h_RR x_811
    2315 | RRC x_812 -> h_RRC x_812
    2316 | SWAP x_813 -> h_SWAP x_813
    2317 | MOV x_814 -> h_MOV x_814
    2318 | MOVX x_815 -> h_MOVX x_815
    2319 | SETB x_816 -> h_SETB x_816
    2320 | PUSH x_817 -> h_PUSH x_817
    2321 | POP x_818 -> h_POP x_818
    2322 | XCH (x_820, x_819) -> h_XCH x_820 x_819
    2323 | XCHD (x_822, x_821) -> h_XCHD x_822 x_821
     2290| ADD (x_869, x_868) -> h_ADD x_869 x_868
     2291| ADDC (x_871, x_870) -> h_ADDC x_871 x_870
     2292| SUBB (x_873, x_872) -> h_SUBB x_873 x_872
     2293| INC x_874 -> h_INC x_874
     2294| DEC x_875 -> h_DEC x_875
     2295| MUL (x_877, x_876) -> h_MUL x_877 x_876
     2296| DIV (x_879, x_878) -> h_DIV x_879 x_878
     2297| DA x_880 -> h_DA x_880
     2298| JC x_881 -> h_JC x_881
     2299| JNC x_882 -> h_JNC x_882
     2300| JB (x_884, x_883) -> h_JB x_884 x_883
     2301| JNB (x_886, x_885) -> h_JNB x_886 x_885
     2302| JBC (x_888, x_887) -> h_JBC x_888 x_887
     2303| JZ x_889 -> h_JZ x_889
     2304| JNZ x_890 -> h_JNZ x_890
     2305| CJNE (x_892, x_891) -> h_CJNE x_892 x_891
     2306| DJNZ (x_894, x_893) -> h_DJNZ x_894 x_893
     2307| ANL x_895 -> h_ANL x_895
     2308| ORL x_896 -> h_ORL x_896
     2309| XRL x_897 -> h_XRL x_897
     2310| CLR x_898 -> h_CLR x_898
     2311| CPL x_899 -> h_CPL x_899
     2312| RL x_900 -> h_RL x_900
     2313| RLC x_901 -> h_RLC x_901
     2314| RR x_902 -> h_RR x_902
     2315| RRC x_903 -> h_RRC x_903
     2316| SWAP x_904 -> h_SWAP x_904
     2317| MOV x_905 -> h_MOV x_905
     2318| MOVX x_906 -> h_MOVX x_906
     2319| SETB x_907 -> h_SETB x_907
     2320| PUSH x_908 -> h_PUSH x_908
     2321| POP x_909 -> h_POP x_909
     2322| XCH (x_911, x_910) -> h_XCH x_911 x_910
     2323| XCHD (x_913, x_912) -> h_XCHD x_913 x_912
    23242324| RET -> h_RET
    23252325| RETI -> h_RETI
    23262326| NOP -> h_NOP
    2327 | JMP x_823 -> h_JMP x_823
     2327| JMP x_914 -> h_JMP x_914
    23282328
    23292329(** val preinstruction_rect_Type5 :
     
    23632363    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
    23642364let 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
    2365 | ADD (x_864, x_863) -> h_ADD x_864 x_863
    2366 | ADDC (x_866, x_865) -> h_ADDC x_866 x_865
    2367 | SUBB (x_868, x_867) -> h_SUBB x_868 x_867
    2368 | INC x_869 -> h_INC x_869
    2369 | DEC x_870 -> h_DEC x_870
    2370 | MUL (x_872, x_871) -> h_MUL x_872 x_871
    2371 | DIV (x_874, x_873) -> h_DIV x_874 x_873
    2372 | DA x_875 -> h_DA x_875
    2373 | JC x_876 -> h_JC x_876
    2374 | JNC x_877 -> h_JNC x_877
    2375 | JB (x_879, x_878) -> h_JB x_879 x_878
    2376 | JNB (x_881, x_880) -> h_JNB x_881 x_880
    2377 | JBC (x_883, x_882) -> h_JBC x_883 x_882
    2378 | JZ x_884 -> h_JZ x_884
    2379 | JNZ x_885 -> h_JNZ x_885
    2380 | CJNE (x_887, x_886) -> h_CJNE x_887 x_886
    2381 | DJNZ (x_889, x_888) -> h_DJNZ x_889 x_888
    2382 | ANL x_890 -> h_ANL x_890
    2383 | ORL x_891 -> h_ORL x_891
    2384 | XRL x_892 -> h_XRL x_892
    2385 | CLR x_893 -> h_CLR x_893
    2386 | CPL x_894 -> h_CPL x_894
    2387 | RL x_895 -> h_RL x_895
    2388 | RLC x_896 -> h_RLC x_896
    2389 | RR x_897 -> h_RR x_897
    2390 | RRC x_898 -> h_RRC x_898
    2391 | SWAP x_899 -> h_SWAP x_899
    2392 | MOV x_900 -> h_MOV x_900
    2393 | MOVX x_901 -> h_MOVX x_901
    2394 | SETB x_902 -> h_SETB x_902
    2395 | PUSH x_903 -> h_PUSH x_903
    2396 | POP x_904 -> h_POP x_904
    2397 | XCH (x_906, x_905) -> h_XCH x_906 x_905
    2398 | XCHD (x_908, x_907) -> h_XCHD x_908 x_907
     2365| ADD (x_955, x_954) -> h_ADD x_955 x_954
     2366| ADDC (x_957, x_956) -> h_ADDC x_957 x_956
     2367| SUBB (x_959, x_958) -> h_SUBB x_959 x_958
     2368| INC x_960 -> h_INC x_960
     2369| DEC x_961 -> h_DEC x_961
     2370| MUL (x_963, x_962) -> h_MUL x_963 x_962
     2371| DIV (x_965, x_964) -> h_DIV x_965 x_964
     2372| DA x_966 -> h_DA x_966
     2373| JC x_967 -> h_JC x_967
     2374| JNC x_968 -> h_JNC x_968
     2375| JB (x_970, x_969) -> h_JB x_970 x_969
     2376| JNB (x_972, x_971) -> h_JNB x_972 x_971
     2377| JBC (x_974, x_973) -> h_JBC x_974 x_973
     2378| JZ x_975 -> h_JZ x_975
     2379| JNZ x_976 -> h_JNZ x_976
     2380| CJNE (x_978, x_977) -> h_CJNE x_978 x_977
     2381| DJNZ (x_980, x_979) -> h_DJNZ x_980 x_979
     2382| ANL x_981 -> h_ANL x_981
     2383| ORL x_982 -> h_ORL x_982
     2384| XRL x_983 -> h_XRL x_983
     2385| CLR x_984 -> h_CLR x_984
     2386| CPL x_985 -> h_CPL x_985
     2387| RL x_986 -> h_RL x_986
     2388| RLC x_987 -> h_RLC x_987
     2389| RR x_988 -> h_RR x_988
     2390| RRC x_989 -> h_RRC x_989
     2391| SWAP x_990 -> h_SWAP x_990
     2392| MOV x_991 -> h_MOV x_991
     2393| MOVX x_992 -> h_MOVX x_992
     2394| SETB x_993 -> h_SETB x_993
     2395| PUSH x_994 -> h_PUSH x_994
     2396| POP x_995 -> h_POP x_995
     2397| XCH (x_997, x_996) -> h_XCH x_997 x_996
     2398| XCHD (x_999, x_998) -> h_XCHD x_999 x_998
    23992399| RET -> h_RET
    24002400| RETI -> h_RETI
    24012401| NOP -> h_NOP
    2402 | JMP x_909 -> h_JMP x_909
     2402| JMP x_1000 -> h_JMP x_1000
    24032403
    24042404(** val preinstruction_rect_Type3 :
     
    24382438    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
    24392439let 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
    2440 | ADD (x_950, x_949) -> h_ADD x_950 x_949
    2441 | ADDC (x_952, x_951) -> h_ADDC x_952 x_951
    2442 | SUBB (x_954, x_953) -> h_SUBB x_954 x_953
    2443 | INC x_955 -> h_INC x_955
    2444 | DEC x_956 -> h_DEC x_956
    2445 | MUL (x_958, x_957) -> h_MUL x_958 x_957
    2446 | DIV (x_960, x_959) -> h_DIV x_960 x_959
    2447 | DA x_961 -> h_DA x_961
    2448 | JC x_962 -> h_JC x_962
    2449 | JNC x_963 -> h_JNC x_963
    2450 | JB (x_965, x_964) -> h_JB x_965 x_964
    2451 | JNB (x_967, x_966) -> h_JNB x_967 x_966
    2452 | JBC (x_969, x_968) -> h_JBC x_969 x_968
    2453 | JZ x_970 -> h_JZ x_970
    2454 | JNZ x_971 -> h_JNZ x_971
    2455 | CJNE (x_973, x_972) -> h_CJNE x_973 x_972
    2456 | DJNZ (x_975, x_974) -> h_DJNZ x_975 x_974
    2457 | ANL x_976 -> h_ANL x_976
    2458 | ORL x_977 -> h_ORL x_977
    2459 | XRL x_978 -> h_XRL x_978
    2460 | CLR x_979 -> h_CLR x_979
    2461 | CPL x_980 -> h_CPL x_980
    2462 | RL x_981 -> h_RL x_981
    2463 | RLC x_982 -> h_RLC x_982
    2464 | RR x_983 -> h_RR x_983
    2465 | RRC x_984 -> h_RRC x_984
    2466 | SWAP x_985 -> h_SWAP x_985
    2467 | MOV x_986 -> h_MOV x_986
    2468 | MOVX x_987 -> h_MOVX x_987
    2469 | SETB x_988 -> h_SETB x_988
    2470 | PUSH x_989 -> h_PUSH x_989
    2471 | POP x_990 -> h_POP x_990
    2472 | XCH (x_992, x_991) -> h_XCH x_992 x_991
    2473 | XCHD (x_994, x_993) -> h_XCHD x_994 x_993
     2440| ADD (x_1041, x_1040) -> h_ADD x_1041 x_1040
     2441| ADDC (x_1043, x_1042) -> h_ADDC x_1043 x_1042
     2442| SUBB (x_1045, x_1044) -> h_SUBB x_1045 x_1044
     2443| INC x_1046 -> h_INC x_1046
     2444| DEC x_1047 -> h_DEC x_1047
     2445| MUL (x_1049, x_1048) -> h_MUL x_1049 x_1048
     2446| DIV (x_1051, x_1050) -> h_DIV x_1051 x_1050
     2447| DA x_1052 -> h_DA x_1052
     2448| JC x_1053 -> h_JC x_1053
     2449| JNC x_1054 -> h_JNC x_1054
     2450| JB (x_1056, x_1055) -> h_JB x_1056 x_1055
     2451| JNB (x_1058, x_1057) -> h_JNB x_1058 x_1057
     2452| JBC (x_1060, x_1059) -> h_JBC x_1060 x_1059
     2453| JZ x_1061 -> h_JZ x_1061
     2454| JNZ x_1062 -> h_JNZ x_1062
     2455| CJNE (x_1064, x_1063) -> h_CJNE x_1064 x_1063
     2456| DJNZ (x_1066, x_1065) -> h_DJNZ x_1066 x_1065
     2457| ANL x_1067 -> h_ANL x_1067
     2458| ORL x_1068 -> h_ORL x_1068
     2459| XRL x_1069 -> h_XRL x_1069
     2460| CLR x_1070 -> h_CLR x_1070
     2461| CPL x_1071 -> h_CPL x_1071
     2462| RL x_1072 -> h_RL x_1072
     2463| RLC x_1073 -> h_RLC x_1073
     2464| RR x_1074 -> h_RR x_1074
     2465| RRC x_1075 -> h_RRC x_1075
     2466| SWAP x_1076 -> h_SWAP x_1076
     2467| MOV x_1077 -> h_MOV x_1077
     2468| MOVX x_1078 -> h_MOVX x_1078
     2469| SETB x_1079 -> h_SETB x_1079
     2470| PUSH x_1080 -> h_PUSH x_1080
     2471| POP x_1081 -> h_POP x_1081
     2472| XCH (x_1083, x_1082) -> h_XCH x_1083 x_1082
     2473| XCHD (x_1085, x_1084) -> h_XCHD x_1085 x_1084
    24742474| RET -> h_RET
    24752475| RETI -> h_RETI
    24762476| NOP -> h_NOP
    2477 | JMP x_995 -> h_JMP x_995
     2477| JMP x_1086 -> h_JMP x_1086
    24782478
    24792479(** val preinstruction_rect_Type2 :
     
    25132513    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
    25142514let 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
    2515 | ADD (x_1036, x_1035) -> h_ADD x_1036 x_1035
    2516 | ADDC (x_1038, x_1037) -> h_ADDC x_1038 x_1037
    2517 | SUBB (x_1040, x_1039) -> h_SUBB x_1040 x_1039
    2518 | INC x_1041 -> h_INC x_1041
    2519 | DEC x_1042 -> h_DEC x_1042
    2520 | MUL (x_1044, x_1043) -> h_MUL x_1044 x_1043
    2521 | DIV (x_1046, x_1045) -> h_DIV x_1046 x_1045
    2522 | DA x_1047 -> h_DA x_1047
    2523 | JC x_1048 -> h_JC x_1048
    2524 | JNC x_1049 -> h_JNC x_1049
    2525 | JB (x_1051, x_1050) -> h_JB x_1051 x_1050
    2526 | JNB (x_1053, x_1052) -> h_JNB x_1053 x_1052
    2527 | JBC (x_1055, x_1054) -> h_JBC x_1055 x_1054
    2528 | JZ x_1056 -> h_JZ x_1056
    2529 | JNZ x_1057 -> h_JNZ x_1057
    2530 | CJNE (x_1059, x_1058) -> h_CJNE x_1059 x_1058
    2531 | DJNZ (x_1061, x_1060) -> h_DJNZ x_1061 x_1060
    2532 | ANL x_1062 -> h_ANL x_1062
    2533 | ORL x_1063 -> h_ORL x_1063
    2534 | XRL x_1064 -> h_XRL x_1064
    2535 | CLR x_1065 -> h_CLR x_1065
    2536 | CPL x_1066 -> h_CPL x_1066
    2537 | RL x_1067 -> h_RL x_1067
    2538 | RLC x_1068 -> h_RLC x_1068
    2539 | RR x_1069 -> h_RR x_1069
    2540 | RRC x_1070 -> h_RRC x_1070
    2541 | SWAP x_1071 -> h_SWAP x_1071
    2542 | MOV x_1072 -> h_MOV x_1072
    2543 | MOVX x_1073 -> h_MOVX x_1073
    2544 | SETB x_1074 -> h_SETB x_1074
    2545 | PUSH x_1075 -> h_PUSH x_1075
    2546 | POP x_1076 -> h_POP x_1076
    2547 | XCH (x_1078, x_1077) -> h_XCH x_1078 x_1077
    2548 | XCHD (x_1080, x_1079) -> h_XCHD x_1080 x_1079
     2515| ADD (x_1127, x_1126) -> h_ADD x_1127 x_1126
     2516| ADDC (x_1129, x_1128) -> h_ADDC x_1129 x_1128
     2517| SUBB (x_1131, x_1130) -> h_SUBB x_1131 x_1130
     2518| INC x_1132 -> h_INC x_1132
     2519| DEC x_1133 -> h_DEC x_1133
     2520| MUL (x_1135, x_1134) -> h_MUL x_1135 x_1134
     2521| DIV (x_1137, x_1136) -> h_DIV x_1137 x_1136
     2522| DA x_1138 -> h_DA x_1138
     2523| JC x_1139 -> h_JC x_1139
     2524| JNC x_1140 -> h_JNC x_1140
     2525| JB (x_1142, x_1141) -> h_JB x_1142 x_1141
     2526| JNB (x_1144, x_1143) -> h_JNB x_1144 x_1143
     2527| JBC (x_1146, x_1145) -> h_JBC x_1146 x_1145
     2528| JZ x_1147 -> h_JZ x_1147
     2529| JNZ x_1148 -> h_JNZ x_1148
     2530| CJNE (x_1150, x_1149) -> h_CJNE x_1150 x_1149
     2531| DJNZ (x_1152, x_1151) -> h_DJNZ x_1152 x_1151
     2532| ANL x_1153 -> h_ANL x_1153
     2533| ORL x_1154 -> h_ORL x_1154
     2534| XRL x_1155 -> h_XRL x_1155
     2535| CLR x_1156 -> h_CLR x_1156
     2536| CPL x_1157 -> h_CPL x_1157
     2537| RL x_1158 -> h_RL x_1158
     2538| RLC x_1159 -> h_RLC x_1159
     2539| RR x_1160 -> h_RR x_1160
     2540| RRC x_1161 -> h_RRC x_1161
     2541| SWAP x_1162 -> h_SWAP x_1162
     2542| MOV x_1163 -> h_MOV x_1163
     2543| MOVX x_1164 -> h_MOVX x_1164
     2544| SETB x_1165 -> h_SETB x_1165
     2545| PUSH x_1166 -> h_PUSH x_1166
     2546| POP x_1167 -> h_POP x_1167
     2547| XCH (x_1169, x_1168) -> h_XCH x_1169 x_1168
     2548| XCHD (x_1171, x_1170) -> h_XCHD x_1171 x_1170
    25492549| RET -> h_RET
    25502550| RETI -> h_RETI
    25512551| NOP -> h_NOP
    2552 | JMP x_1081 -> h_JMP x_1081
     2552| JMP x_1172 -> h_JMP x_1172
    25532553
    25542554(** val preinstruction_rect_Type1 :
     
    25882588    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
    25892589let 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
    2590 | ADD (x_1122, x_1121) -> h_ADD x_1122 x_1121
    2591 | ADDC (x_1124, x_1123) -> h_ADDC x_1124 x_1123
    2592 | SUBB (x_1126, x_1125) -> h_SUBB x_1126 x_1125
    2593 | INC x_1127 -> h_INC x_1127
    2594 | DEC x_1128 -> h_DEC x_1128
    2595 | MUL (x_1130, x_1129) -> h_MUL x_1130 x_1129
    2596 | DIV (x_1132, x_1131) -> h_DIV x_1132 x_1131
    2597 | DA x_1133 -> h_DA x_1133
    2598 | JC x_1134 -> h_JC x_1134
    2599 | JNC x_1135 -> h_JNC x_1135
    2600 | JB (x_1137, x_1136) -> h_JB x_1137 x_1136
    2601 | JNB (x_1139, x_1138) -> h_JNB x_1139 x_1138
    2602 | JBC (x_1141, x_1140) -> h_JBC x_1141 x_1140
    2603 | JZ x_1142 -> h_JZ x_1142
    2604 | JNZ x_1143 -> h_JNZ x_1143
    2605 | CJNE (x_1145, x_1144) -> h_CJNE x_1145 x_1144
    2606 | DJNZ (x_1147, x_1146) -> h_DJNZ x_1147 x_1146
    2607 | ANL x_1148 -> h_ANL x_1148
    2608 | ORL x_1149 -> h_ORL x_1149
    2609 | XRL x_1150 -> h_XRL x_1150
    2610 | CLR x_1151 -> h_CLR x_1151
    2611 | CPL x_1152 -> h_CPL x_1152
    2612 | RL x_1153 -> h_RL x_1153
    2613 | RLC x_1154 -> h_RLC x_1154
    2614 | RR x_1155 -> h_RR x_1155
    2615 | RRC x_1156 -> h_RRC x_1156
    2616 | SWAP x_1157 -> h_SWAP x_1157
    2617 | MOV x_1158 -> h_MOV x_1158
    2618 | MOVX x_1159 -> h_MOVX x_1159
    2619 | SETB x_1160 -> h_SETB x_1160
    2620 | PUSH x_1161 -> h_PUSH x_1161
    2621 | POP x_1162 -> h_POP x_1162
    2622 | XCH (x_1164, x_1163) -> h_XCH x_1164 x_1163
    2623 | XCHD (x_1166, x_1165) -> h_XCHD x_1166 x_1165
     2590| ADD (x_1213, x_1212) -> h_ADD x_1213 x_1212
     2591| ADDC (x_1215, x_1214) -> h_ADDC x_1215 x_1214
     2592| SUBB (x_1217, x_1216) -> h_SUBB x_1217 x_1216
     2593| INC x_1218 -> h_INC x_1218
     2594| DEC x_1219 -> h_DEC x_1219
     2595| MUL (x_1221, x_1220) -> h_MUL x_1221 x_1220
     2596| DIV (x_1223, x_1222) -> h_DIV x_1223 x_1222
     2597| DA x_1224 -> h_DA x_1224
     2598| JC x_1225 -> h_JC x_1225
     2599| JNC x_1226 -> h_JNC x_1226
     2600| JB (x_1228, x_1227) -> h_JB x_1228 x_1227
     2601| JNB (x_1230, x_1229) -> h_JNB x_1230 x_1229
     2602| JBC (x_1232, x_1231) -> h_JBC x_1232 x_1231
     2603| JZ x_1233 -> h_JZ x_1233
     2604| JNZ x_1234 -> h_JNZ x_1234
     2605| CJNE (x_1236, x_1235) -> h_CJNE x_1236 x_1235
     2606| DJNZ (x_1238, x_1237) -> h_DJNZ x_1238 x_1237
     2607| ANL x_1239 -> h_ANL x_1239
     2608| ORL x_1240 -> h_ORL x_1240
     2609| XRL x_1241 -> h_XRL x_1241
     2610| CLR x_1242 -> h_CLR x_1242
     2611| CPL x_1243 -> h_CPL x_1243
     2612| RL x_1244 -> h_RL x_1244
     2613| RLC x_1245 -> h_RLC x_1245
     2614| RR x_1246 -> h_RR x_1246
     2615| RRC x_1247 -> h_RRC x_1247
     2616| SWAP x_1248 -> h_SWAP x_1248
     2617| MOV x_1249 -> h_MOV x_1249
     2618| MOVX x_1250 -> h_MOVX x_1250
     2619| SETB x_1251 -> h_SETB x_1251
     2620| PUSH x_1252 -> h_PUSH x_1252
     2621| POP x_1253 -> h_POP x_1253
     2622| XCH (x_1255, x_1254) -> h_XCH x_1255 x_1254
     2623| XCHD (x_1257, x_1256) -> h_XCHD x_1257 x_1256
    26242624| RET -> h_RET
    26252625| RETI -> h_RETI
    26262626| NOP -> h_NOP
    2627 | JMP x_1167 -> h_JMP x_1167
     2627| JMP x_1258 -> h_JMP x_1258
    26282628
    26292629(** val preinstruction_rect_Type0 :
     
    26632663    'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **)
    26642664let 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
    2665 | ADD (x_1208, x_1207) -> h_ADD x_1208 x_1207
    2666 | ADDC (x_1210, x_1209) -> h_ADDC x_1210 x_1209
    2667 | SUBB (x_1212, x_1211) -> h_SUBB x_1212 x_1211
    2668 | INC x_1213 -> h_INC x_1213
    2669 | DEC x_1214 -> h_DEC x_1214
    2670 | MUL (x_1216, x_1215) -> h_MUL x_1216 x_1215
    2671 | DIV (x_1218, x_1217) -> h_DIV x_1218 x_1217
    2672 | DA x_1219 -> h_DA x_1219
    2673 | JC x_1220 -> h_JC x_1220
    2674 | JNC x_1221 -> h_JNC x_1221
    2675 | JB (x_1223, x_1222) -> h_JB x_1223 x_1222
    2676 | JNB (x_1225, x_1224) -> h_JNB x_1225 x_1224
    2677 | JBC (x_1227, x_1226) -> h_JBC x_1227 x_1226
    2678 | JZ x_1228 -> h_JZ x_1228
    2679 | JNZ x_1229 -> h_JNZ x_1229
    2680 | CJNE (x_1231, x_1230) -> h_CJNE x_1231 x_1230
    2681 | DJNZ (x_1233, x_1232) -> h_DJNZ x_1233 x_1232
    2682 | ANL x_1234 -> h_ANL x_1234
    2683 | ORL x_1235 -> h_ORL x_1235
    2684 | XRL x_1236 -> h_XRL x_1236
    2685 | CLR x_1237 -> h_CLR x_1237
    2686 | CPL x_1238 -> h_CPL x_1238
    2687 | RL x_1239 -> h_RL x_1239
    2688 | RLC x_1240 -> h_RLC x_1240
    2689 | RR x_1241 -> h_RR x_1241
    2690 | RRC x_1242 -> h_RRC x_1242
    2691 | SWAP x_1243 -> h_SWAP x_1243
    2692 | MOV x_1244 -> h_MOV x_1244
    2693 | MOVX x_1245 -> h_MOVX x_1245
    2694 | SETB x_1246 -> h_SETB x_1246
    2695 | PUSH x_1247 -> h_PUSH x_1247
    2696 | POP x_1248 -> h_POP x_1248
    2697 | XCH (x_1250, x_1249) -> h_XCH x_1250 x_1249
    2698 | XCHD (x_1252, x_1251) -> h_XCHD x_1252 x_1251
     2665| ADD (x_1299, x_1298) -> h_ADD x_1299 x_1298
     2666| ADDC (x_1301, x_1300) -> h_ADDC x_1301 x_1300
     2667| SUBB (x_1303, x_1302) -> h_SUBB x_1303 x_1302
     2668| INC x_1304 -> h_INC x_1304
     2669| DEC x_1305 -> h_DEC x_1305
     2670| MUL (x_1307, x_1306) -> h_MUL x_1307 x_1306
     2671| DIV (x_1309, x_1308) -> h_DIV x_1309 x_1308
     2672| DA x_1310 -> h_DA x_1310
     2673| JC x_1311 -> h_JC x_1311
     2674| JNC x_1312 -> h_JNC x_1312
     2675| JB (x_1314, x_1313) -> h_JB x_1314 x_1313
     2676| JNB (x_1316, x_1315) -> h_JNB x_1316 x_1315
     2677| JBC (x_1318, x_1317) -> h_JBC x_1318 x_1317
     2678| JZ x_1319 -> h_JZ x_1319
     2679| JNZ x_1320 -> h_JNZ x_1320
     2680| CJNE (x_1322, x_1321) -> h_CJNE x_1322 x_1321
     2681| DJNZ (x_1324, x_1323) -> h_DJNZ x_1324 x_1323
     2682| ANL x_1325 -> h_ANL x_1325
     2683| ORL x_1326 -> h_ORL x_1326
     2684| XRL x_1327 -> h_XRL x_1327
     2685| CLR x_1328 -> h_CLR x_1328
     2686| CPL x_1329 -> h_CPL x_1329
     2687| RL x_1330 -> h_RL x_1330
     2688| RLC x_1331 -> h_RLC x_1331
     2689| RR x_1332 -> h_RR x_1332
     2690| RRC x_1333 -> h_RRC x_1333
     2691| SWAP x_1334 -> h_SWAP x_1334
     2692| MOV x_1335 -> h_MOV x_1335
     2693| MOVX x_1336 -> h_MOVX x_1336
     2694| SETB x_1337 -> h_SETB x_1337
     2695| PUSH x_1338 -> h_PUSH x_1338
     2696| POP x_1339 -> h_POP x_1339
     2697| XCH (x_1341, x_1340) -> h_XCH x_1341 x_1340
     2698| XCHD (x_1343, x_1342) -> h_XCHD x_1343 x_1342
    26992699| RET -> h_RET
    27002700| RETI -> h_RETI
    27012701| NOP -> h_NOP
    2702 | JMP x_1253 -> h_JMP x_1253
     2702| JMP x_1344 -> h_JMP x_1344
    27032703
    27042704(** val preinstruction_inv_rect_Type4 :
     
    50835083     | JMP arg' ->
    50845084       eq_addressing_mode
    5085          (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,
     5085         (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Acc_dptr,
    50865086           Vector.VEmpty)) arg)
    5087          (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,
     5087         (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Acc_dptr,
    50885088           Vector.VEmpty)) arg'))
    50895089
     
    51045104    'a1 **)
    51055105let rec instruction_rect_Type4 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
    5106 | ACALL x_1825 -> h_ACALL x_1825
    5107 | LCALL x_1826 -> h_LCALL x_1826
    5108 | AJMP x_1827 -> h_AJMP x_1827
    5109 | LJMP x_1828 -> h_LJMP x_1828
    5110 | SJMP x_1829 -> h_SJMP x_1829
    5111 | MOVC (x_1831, x_1830) -> h_MOVC x_1831 x_1830
    5112 | RealInstruction x_1832 -> h_RealInstruction x_1832
     5106| ACALL x_1916 -> h_ACALL x_1916
     5107| LCALL x_1917 -> h_LCALL x_1917
     5108| AJMP x_1918 -> h_AJMP x_1918
     5109| LJMP x_1919 -> h_LJMP x_1919
     5110| SJMP x_1920 -> h_SJMP x_1920
     5111| MOVC (x_1922, x_1921) -> h_MOVC x_1922 x_1921
     5112| RealInstruction x_1923 -> h_RealInstruction x_1923
    51135113
    51145114(** val instruction_rect_Type5 :
     
    51195119    'a1 **)
    51205120let rec instruction_rect_Type5 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
    5121 | ACALL x_1841 -> h_ACALL x_1841
    5122 | LCALL x_1842 -> h_LCALL x_1842
    5123 | AJMP x_1843 -> h_AJMP x_1843
    5124 | LJMP x_1844 -> h_LJMP x_1844
    5125 | SJMP x_1845 -> h_SJMP x_1845
    5126 | MOVC (x_1847, x_1846) -> h_MOVC x_1847 x_1846
    5127 | RealInstruction x_1848 -> h_RealInstruction x_1848
     5121| ACALL x_1932 -> h_ACALL x_1932
     5122| LCALL x_1933 -> h_LCALL x_1933
     5123| AJMP x_1934 -> h_AJMP x_1934
     5124| LJMP x_1935 -> h_LJMP x_1935
     5125| SJMP x_1936 -> h_SJMP x_1936
     5126| MOVC (x_1938, x_1937) -> h_MOVC x_1938 x_1937
     5127| RealInstruction x_1939 -> h_RealInstruction x_1939
    51285128
    51295129(** val instruction_rect_Type3 :
     
    51345134    'a1 **)
    51355135let rec instruction_rect_Type3 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
    5136 | ACALL x_1857 -> h_ACALL x_1857
    5137 | LCALL x_1858 -> h_LCALL x_1858
    5138 | AJMP x_1859 -> h_AJMP x_1859
    5139 | LJMP x_1860 -> h_LJMP x_1860
    5140 | SJMP x_1861 -> h_SJMP x_1861
    5141 | MOVC (x_1863, x_1862) -> h_MOVC x_1863 x_1862
    5142 | RealInstruction x_1864 -> h_RealInstruction x_1864
     5136| ACALL x_1948 -> h_ACALL x_1948
     5137| LCALL x_1949 -> h_LCALL x_1949
     5138| AJMP x_1950 -> h_AJMP x_1950
     5139| LJMP x_1951 -> h_LJMP x_1951
     5140| SJMP x_1952 -> h_SJMP x_1952
     5141| MOVC (x_1954, x_1953) -> h_MOVC x_1954 x_1953
     5142| RealInstruction x_1955 -> h_RealInstruction x_1955
    51435143
    51445144(** val instruction_rect_Type2 :
     
    51495149    'a1 **)
    51505150let rec instruction_rect_Type2 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
    5151 | ACALL x_1873 -> h_ACALL x_1873
    5152 | LCALL x_1874 -> h_LCALL x_1874
    5153 | AJMP x_1875 -> h_AJMP x_1875
    5154 | LJMP x_1876 -> h_LJMP x_1876
    5155 | SJMP x_1877 -> h_SJMP x_1877
    5156 | MOVC (x_1879, x_1878) -> h_MOVC x_1879 x_1878
    5157 | RealInstruction x_1880 -> h_RealInstruction x_1880
     5151| ACALL x_1964 -> h_ACALL x_1964
     5152| LCALL x_1965 -> h_LCALL x_1965
     5153| AJMP x_1966 -> h_AJMP x_1966
     5154| LJMP x_1967 -> h_LJMP x_1967
     5155| SJMP x_1968 -> h_SJMP x_1968
     5156| MOVC (x_1970, x_1969) -> h_MOVC x_1970 x_1969
     5157| RealInstruction x_1971 -> h_RealInstruction x_1971
    51585158
    51595159(** val instruction_rect_Type1 :
     
    51645164    'a1 **)
    51655165let rec instruction_rect_Type1 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
    5166 | ACALL x_1889 -> h_ACALL x_1889
    5167 | LCALL x_1890 -> h_LCALL x_1890
    5168 | AJMP x_1891 -> h_AJMP x_1891
    5169 | LJMP x_1892 -> h_LJMP x_1892
    5170 | SJMP x_1893 -> h_SJMP x_1893
    5171 | MOVC (x_1895, x_1894) -> h_MOVC x_1895 x_1894
    5172 | RealInstruction x_1896 -> h_RealInstruction x_1896
     5166| ACALL x_1980 -> h_ACALL x_1980
     5167| LCALL x_1981 -> h_LCALL x_1981
     5168| AJMP x_1982 -> h_AJMP x_1982
     5169| LJMP x_1983 -> h_LJMP x_1983
     5170| SJMP x_1984 -> h_SJMP x_1984
     5171| MOVC (x_1986, x_1985) -> h_MOVC x_1986 x_1985
     5172| RealInstruction x_1987 -> h_RealInstruction x_1987
    51735173
    51745174(** val instruction_rect_Type0 :
     
    51795179    'a1 **)
    51805180let rec instruction_rect_Type0 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function
    5181 | ACALL x_1905 -> h_ACALL x_1905
    5182 | LCALL x_1906 -> h_LCALL x_1906
    5183 | AJMP x_1907 -> h_AJMP x_1907
    5184 | LJMP x_1908 -> h_LJMP x_1908
    5185 | SJMP x_1909 -> h_SJMP x_1909
    5186 | MOVC (x_1911, x_1910) -> h_MOVC x_1911 x_1910
    5187 | RealInstruction x_1912 -> h_RealInstruction x_1912
     5181| ACALL x_1996 -> h_ACALL x_1996
     5182| LCALL x_1997 -> h_LCALL x_1997
     5183| AJMP x_1998 -> h_AJMP x_1998
     5184| LJMP x_1999 -> h_LJMP x_1999
     5185| SJMP x_2000 -> h_SJMP x_2000
     5186| MOVC (x_2002, x_2001) -> h_MOVC x_2002 x_2001
     5187| RealInstruction x_2003 -> h_RealInstruction x_2003
    51885188
    51895189(** val instruction_inv_rect_Type4 :
     
    54645464| Jmp of identifier
    54655465| Jnz of subaddressing_mode * identifier * identifier
    5466 | MovSuccessor of subaddressing_mode * word_side * identifier
    54675466| Call of identifier
    5468 | Mov of subaddressing_mode * identifier
     5467| Mov of (subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5468         Types.sum * identifier * BitVector.word
    54695469
    54705470(** val pseudo_instruction_rect_Type4 :
    54715471    (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    54725472    (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
    5473     (subaddressing_mode -> identifier -> identifier -> 'a1) ->
    5474     (subaddressing_mode -> word_side -> identifier -> 'a1) -> (identifier ->
    5475     'a1) -> (subaddressing_mode -> identifier -> 'a1) -> pseudo_instruction
     5473    (subaddressing_mode -> identifier -> identifier -> 'a1) -> (identifier ->
     5474    'a1) -> ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5475    Types.sum -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction
    54765476    -> 'a1 **)
    5477 let rec pseudo_instruction_rect_Type4 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
    5478 | Instruction x_2078 -> h_Instruction x_2078
    5479 | Comment x_2079 -> h_Comment x_2079
    5480 | Cost x_2080 -> h_Cost x_2080
    5481 | Jmp x_2081 -> h_Jmp x_2081
    5482 | Jnz (x_2084, x_2083, x_2082) -> h_Jnz x_2084 x_2083 x_2082
    5483 | MovSuccessor (x_2087, x_2086, x_2085) ->
    5484   h_MovSuccessor x_2087 x_2086 x_2085
    5485 | Call x_2088 -> h_Call x_2088
    5486 | Mov (x_2090, x_2089) -> h_Mov x_2090 x_2089
    5487 
    5488 (** val pseudo_instruction_rect_Type5 :
    5489     (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5490     (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
    5491     (subaddressing_mode -> identifier -> identifier -> 'a1) ->
    5492     (subaddressing_mode -> word_side -> identifier -> 'a1) -> (identifier ->
    5493     'a1) -> (subaddressing_mode -> identifier -> 'a1) -> pseudo_instruction
    5494     -> 'a1 **)
    5495 let rec pseudo_instruction_rect_Type5 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
    5496 | Instruction x_2100 -> h_Instruction x_2100
    5497 | Comment x_2101 -> h_Comment x_2101
    5498 | Cost x_2102 -> h_Cost x_2102
    5499 | Jmp x_2103 -> h_Jmp x_2103
    5500 | Jnz (x_2106, x_2105, x_2104) -> h_Jnz x_2106 x_2105 x_2104
    5501 | MovSuccessor (x_2109, x_2108, x_2107) ->
    5502   h_MovSuccessor x_2109 x_2108 x_2107
    5503 | Call x_2110 -> h_Call x_2110
    5504 | Mov (x_2112, x_2111) -> h_Mov x_2112 x_2111
    5505 
    5506 (** val pseudo_instruction_rect_Type3 :
    5507     (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5508     (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
    5509     (subaddressing_mode -> identifier -> identifier -> 'a1) ->
    5510     (subaddressing_mode -> word_side -> identifier -> 'a1) -> (identifier ->
    5511     'a1) -> (subaddressing_mode -> identifier -> 'a1) -> pseudo_instruction
    5512     -> 'a1 **)
    5513 let rec pseudo_instruction_rect_Type3 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
    5514 | Instruction x_2122 -> h_Instruction x_2122
    5515 | Comment x_2123 -> h_Comment x_2123
    5516 | Cost x_2124 -> h_Cost x_2124
    5517 | Jmp x_2125 -> h_Jmp x_2125
    5518 | Jnz (x_2128, x_2127, x_2126) -> h_Jnz x_2128 x_2127 x_2126
    5519 | MovSuccessor (x_2131, x_2130, x_2129) ->
    5520   h_MovSuccessor x_2131 x_2130 x_2129
    5521 | Call x_2132 -> h_Call x_2132
    5522 | Mov (x_2134, x_2133) -> h_Mov x_2134 x_2133
    5523 
    5524 (** val pseudo_instruction_rect_Type2 :
    5525     (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5526     (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
    5527     (subaddressing_mode -> identifier -> identifier -> 'a1) ->
    5528     (subaddressing_mode -> word_side -> identifier -> 'a1) -> (identifier ->
    5529     'a1) -> (subaddressing_mode -> identifier -> 'a1) -> pseudo_instruction
    5530     -> 'a1 **)
    5531 let rec pseudo_instruction_rect_Type2 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
    5532 | Instruction x_2144 -> h_Instruction x_2144
    5533 | Comment x_2145 -> h_Comment x_2145
    5534 | Cost x_2146 -> h_Cost x_2146
    5535 | Jmp x_2147 -> h_Jmp x_2147
    5536 | Jnz (x_2150, x_2149, x_2148) -> h_Jnz x_2150 x_2149 x_2148
    5537 | MovSuccessor (x_2153, x_2152, x_2151) ->
    5538   h_MovSuccessor x_2153 x_2152 x_2151
    5539 | Call x_2154 -> h_Call x_2154
    5540 | Mov (x_2156, x_2155) -> h_Mov x_2156 x_2155
    5541 
    5542 (** val pseudo_instruction_rect_Type1 :
    5543     (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    5544     (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
    5545     (subaddressing_mode -> identifier -> identifier -> 'a1) ->
    5546     (subaddressing_mode -> word_side -> identifier -> 'a1) -> (identifier ->
    5547     'a1) -> (subaddressing_mode -> identifier -> 'a1) -> pseudo_instruction
    5548     -> 'a1 **)
    5549 let rec pseudo_instruction_rect_Type1 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
     5477let rec pseudo_instruction_rect_Type4 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_Call h_Mov = function
    55505478| Instruction x_2166 -> h_Instruction x_2166
    55515479| Comment x_2167 -> h_Comment x_2167
     
    55535481| Jmp x_2169 -> h_Jmp x_2169
    55545482| Jnz (x_2172, x_2171, x_2170) -> h_Jnz x_2172 x_2171 x_2170
    5555 | MovSuccessor (x_2175, x_2174, x_2173) ->
    5556   h_MovSuccessor x_2175 x_2174 x_2173
    5557 | Call x_2176 -> h_Call x_2176
    5558 | Mov (x_2178, x_2177) -> h_Mov x_2178 x_2177
     5483| Call x_2173 -> h_Call x_2173
     5484| Mov (x_2176, x_2175, x_2174) -> h_Mov x_2176 x_2175 x_2174
     5485
     5486(** val pseudo_instruction_rect_Type5 :
     5487    (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
     5488    (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
     5489    (subaddressing_mode -> identifier -> identifier -> 'a1) -> (identifier ->
     5490    'a1) -> ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5491    Types.sum -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction
     5492    -> 'a1 **)
     5493let rec pseudo_instruction_rect_Type5 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_Call h_Mov = function
     5494| Instruction x_2185 -> h_Instruction x_2185
     5495| Comment x_2186 -> h_Comment x_2186
     5496| Cost x_2187 -> h_Cost x_2187
     5497| Jmp x_2188 -> h_Jmp x_2188
     5498| Jnz (x_2191, x_2190, x_2189) -> h_Jnz x_2191 x_2190 x_2189
     5499| Call x_2192 -> h_Call x_2192
     5500| Mov (x_2195, x_2194, x_2193) -> h_Mov x_2195 x_2194 x_2193
     5501
     5502(** val pseudo_instruction_rect_Type3 :
     5503    (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
     5504    (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
     5505    (subaddressing_mode -> identifier -> identifier -> 'a1) -> (identifier ->
     5506    'a1) -> ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5507    Types.sum -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction
     5508    -> 'a1 **)
     5509let rec pseudo_instruction_rect_Type3 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_Call h_Mov = function
     5510| Instruction x_2204 -> h_Instruction x_2204
     5511| Comment x_2205 -> h_Comment x_2205
     5512| Cost x_2206 -> h_Cost x_2206
     5513| Jmp x_2207 -> h_Jmp x_2207
     5514| Jnz (x_2210, x_2209, x_2208) -> h_Jnz x_2210 x_2209 x_2208
     5515| Call x_2211 -> h_Call x_2211
     5516| Mov (x_2214, x_2213, x_2212) -> h_Mov x_2214 x_2213 x_2212
     5517
     5518(** val pseudo_instruction_rect_Type2 :
     5519    (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
     5520    (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
     5521    (subaddressing_mode -> identifier -> identifier -> 'a1) -> (identifier ->
     5522    'a1) -> ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5523    Types.sum -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction
     5524    -> 'a1 **)
     5525let rec pseudo_instruction_rect_Type2 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_Call h_Mov = function
     5526| Instruction x_2223 -> h_Instruction x_2223
     5527| Comment x_2224 -> h_Comment x_2224
     5528| Cost x_2225 -> h_Cost x_2225
     5529| Jmp x_2226 -> h_Jmp x_2226
     5530| Jnz (x_2229, x_2228, x_2227) -> h_Jnz x_2229 x_2228 x_2227
     5531| Call x_2230 -> h_Call x_2230
     5532| Mov (x_2233, x_2232, x_2231) -> h_Mov x_2233 x_2232 x_2231
     5533
     5534(** val pseudo_instruction_rect_Type1 :
     5535    (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
     5536    (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
     5537    (subaddressing_mode -> identifier -> identifier -> 'a1) -> (identifier ->
     5538    'a1) -> ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5539    Types.sum -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction
     5540    -> 'a1 **)
     5541let rec pseudo_instruction_rect_Type1 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_Call h_Mov = function
     5542| Instruction x_2242 -> h_Instruction x_2242
     5543| Comment x_2243 -> h_Comment x_2243
     5544| Cost x_2244 -> h_Cost x_2244
     5545| Jmp x_2245 -> h_Jmp x_2245
     5546| Jnz (x_2248, x_2247, x_2246) -> h_Jnz x_2248 x_2247 x_2246
     5547| Call x_2249 -> h_Call x_2249
     5548| Mov (x_2252, x_2251, x_2250) -> h_Mov x_2252 x_2251 x_2250
    55595549
    55605550(** val pseudo_instruction_rect_Type0 :
    55615551    (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    55625552    (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) ->
    5563     (subaddressing_mode -> identifier -> identifier -> 'a1) ->
    5564     (subaddressing_mode -> word_side -> identifier -> 'a1) -> (identifier ->
    5565     'a1) -> (subaddressing_mode -> identifier -> 'a1) -> pseudo_instruction
     5553    (subaddressing_mode -> identifier -> identifier -> 'a1) -> (identifier ->
     5554    'a1) -> ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5555    Types.sum -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction
    55665556    -> 'a1 **)
    5567 let rec pseudo_instruction_rect_Type0 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function
    5568 | Instruction x_2188 -> h_Instruction x_2188
    5569 | Comment x_2189 -> h_Comment x_2189
    5570 | Cost x_2190 -> h_Cost x_2190
    5571 | Jmp x_2191 -> h_Jmp x_2191
    5572 | Jnz (x_2194, x_2193, x_2192) -> h_Jnz x_2194 x_2193 x_2192
    5573 | MovSuccessor (x_2197, x_2196, x_2195) ->
    5574   h_MovSuccessor x_2197 x_2196 x_2195
    5575 | Call x_2198 -> h_Call x_2198
    5576 | Mov (x_2200, x_2199) -> h_Mov x_2200 x_2199
     5557let rec pseudo_instruction_rect_Type0 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_Call h_Mov = function
     5558| Instruction x_2261 -> h_Instruction x_2261
     5559| Comment x_2262 -> h_Comment x_2262
     5560| Cost x_2263 -> h_Cost x_2263
     5561| Jmp x_2264 -> h_Jmp x_2264
     5562| Jnz (x_2267, x_2266, x_2265) -> h_Jnz x_2267 x_2266 x_2265
     5563| Call x_2268 -> h_Call x_2268
     5564| Mov (x_2271, x_2270, x_2269) -> h_Mov x_2271 x_2270 x_2269
    55775565
    55785566(** val pseudo_instruction_inv_rect_Type4 :
     
    55805568    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    55815569    (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    5582     identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
    55835570    identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
    5584     (subaddressing_mode -> identifier -> __ -> 'a1) -> 'a1 **)
    5585 let pseudo_instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    5586   let hcut = pseudo_instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5571    ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5572    Types.sum -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1 **)
     5573let pseudo_instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 =
     5574  let hcut = pseudo_instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 hterm in
    55875575  hcut __
    55885576
     
    55915579    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    55925580    (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    5593     identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
    55945581    identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
    5595     (subaddressing_mode -> identifier -> __ -> 'a1) -> 'a1 **)
    5596 let pseudo_instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    5597   let hcut = pseudo_instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5582    ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5583    Types.sum -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1 **)
     5584let pseudo_instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 =
     5585  let hcut = pseudo_instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 hterm in
    55985586  hcut __
    55995587
     
    56025590    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    56035591    (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    5604     identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
    56055592    identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
    5606     (subaddressing_mode -> identifier -> __ -> 'a1) -> 'a1 **)
    5607 let pseudo_instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    5608   let hcut = pseudo_instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5593    ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5594    Types.sum -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1 **)
     5595let pseudo_instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 =
     5596  let hcut = pseudo_instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 hterm in
    56095597  hcut __
    56105598
     
    56135601    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    56145602    (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    5615     identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
    56165603    identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
    5617     (subaddressing_mode -> identifier -> __ -> 'a1) -> 'a1 **)
    5618 let pseudo_instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    5619   let hcut = pseudo_instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5604    ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5605    Types.sum -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1 **)
     5606let pseudo_instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 =
     5607  let hcut = pseudo_instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 hterm in
    56205608  hcut __
    56215609
     
    56245612    (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    56255613    (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    5626     identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side ->
    56275614    identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
    5628     (subaddressing_mode -> identifier -> __ -> 'a1) -> 'a1 **)
    5629 let pseudo_instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 =
    5630   let hcut = pseudo_instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 hterm in
     5615    ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     5616    Types.sum -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1 **)
     5617let pseudo_instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 =
     5618  let hcut = pseudo_instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 hterm in
    56315619  hcut __
    56325620
     
    56415629     | Jmp a0 -> Obj.magic (fun _ dH -> dH __)
    56425630     | Jnz (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
    5643      | MovSuccessor (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
    56445631     | Call a0 -> Obj.magic (fun _ dH -> dH __)
    5645      | Mov (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)) y
     5632     | Mov (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)) y
    56465633
    56475634(** val pseudo_instruction_jmdiscr :
     
    56555642     | Jmp a0 -> Obj.magic (fun _ dH -> dH __)
    56565643     | Jnz (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
    5657      | MovSuccessor (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)
    56585644     | Call a0 -> Obj.magic (fun _ dH -> dH __)
    5659      | Mov (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)) y
     5645     | Mov (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __)) y
    56605646
    56615647type labelled_instruction = pseudo_instruction LabelledObjects.labelled_obj
     
    57315717| Jmp x -> Bool.False
    57325718| Jnz (x, x0, x1) -> Bool.False
    5733 | MovSuccessor (x, x0, x1) -> Bool.False
    57345719| Call x -> Bool.False
    5735 | Mov (x, x0) -> Bool.False
     5720| Mov (x, x0, x1) -> Bool.False
    57365721
    57375722(** val is_jump : pseudo_instruction -> Bool.bool **)
     
    57425727| Jmp x -> Bool.True
    57435728| Jnz (x, x0, x1) -> Bool.False
    5744 | MovSuccessor (x, x0, x1) -> Bool.False
    57455729| Call x -> Bool.True
    5746 | Mov (x, x0) -> Bool.False
     5730| Mov (x, x0, x1) -> Bool.False
    57475731
    57485732(** val is_call : pseudo_instruction -> Bool.bool **)
     
    57535737| Jmp x -> Bool.False
    57545738| Jnz (x, x0, x1) -> Bool.False
    5755 | MovSuccessor (x, x0, x1) -> Bool.False
    57565739| Call x -> Bool.True
    5757 | Mov (x, x0) -> Bool.False
     5740| Mov (x, x0, x1) -> Bool.False
    57585741
    57595742(** val asm_cost_label :
     
    57675750  | Jmp x -> Types.None
    57685751  | Jnz (x, x0, x1) -> Types.None
    5769   | MovSuccessor (x, x0, x1) -> Types.None
    57705752  | Call x -> Types.None
    5771   | Mov (x, x0) -> Types.None
     5753  | Mov (x, x0, x1) -> Types.None
    57725754
    57735755(** val aDDRESS_WIDTH : Nat.nat **)
     
    57965778    Types.prod List.list -> identifier -> __ -> __ -> 'a1) ->
    57975779    pseudo_assembly_program -> 'a1 **)
    5798 let rec pseudo_assembly_program_rect_Type4 h_mk_pseudo_assembly_program x_2343 =
     5780let rec pseudo_assembly_program_rect_Type4 h_mk_pseudo_assembly_program x_2395 =
    57995781  let { preamble = preamble0; code = code0; renamed_symbols =
    5800     renamed_symbols0; final_label = final_label0 } = x_2343
     5782    renamed_symbols0; final_label = final_label0 } = x_2395
    58015783  in
    58025784  h_mk_pseudo_assembly_program preamble0 code0 __ renamed_symbols0
     
    58085790    Types.prod List.list -> identifier -> __ -> __ -> 'a1) ->
    58095791    pseudo_assembly_program -> 'a1 **)
    5810 let rec pseudo_assembly_program_rect_Type5 h_mk_pseudo_assembly_program x_2345 =
     5792let rec pseudo_assembly_program_rect_Type5 h_mk_pseudo_assembly_program x_2397 =
    58115793  let { preamble = preamble0; code = code0; renamed_symbols =
    5812     renamed_symbols0; final_label = final_label0 } = x_2345
     5794    renamed_symbols0; final_label = final_label0 } = x_2397
    58135795  in
    58145796  h_mk_pseudo_assembly_program preamble0 code0 __ renamed_symbols0
     
    58205802    Types.prod List.list -> identifier -> __ -> __ -> 'a1) ->
    58215803    pseudo_assembly_program -> 'a1 **)
    5822 let rec pseudo_assembly_program_rect_Type3 h_mk_pseudo_assembly_program x_2347 =
     5804let rec pseudo_assembly_program_rect_Type3 h_mk_pseudo_assembly_program x_2399 =
    58235805  let { preamble = preamble0; code = code0; renamed_symbols =
    5824     renamed_symbols0; final_label = final_label0 } = x_2347
     5806    renamed_symbols0; final_label = final_label0 } = x_2399
    58255807  in
    58265808  h_mk_pseudo_assembly_program preamble0 code0 __ renamed_symbols0
     
    58325814    Types.prod List.list -> identifier -> __ -> __ -> 'a1) ->
    58335815    pseudo_assembly_program -> 'a1 **)
    5834 let rec pseudo_assembly_program_rect_Type2 h_mk_pseudo_assembly_program x_2349 =
     5816let rec pseudo_assembly_program_rect_Type2 h_mk_pseudo_assembly_program x_2401 =
    58355817  let { preamble = preamble0; code = code0; renamed_symbols =
    5836     renamed_symbols0; final_label = final_label0 } = x_2349
     5818    renamed_symbols0; final_label = final_label0 } = x_2401
    58375819  in
    58385820  h_mk_pseudo_assembly_program preamble0 code0 __ renamed_symbols0
     
    58445826    Types.prod List.list -> identifier -> __ -> __ -> 'a1) ->
    58455827    pseudo_assembly_program -> 'a1 **)
    5846 let rec pseudo_assembly_program_rect_Type1 h_mk_pseudo_assembly_program x_2351 =
     5828let rec pseudo_assembly_program_rect_Type1 h_mk_pseudo_assembly_program x_2403 =
    58475829  let { preamble = preamble0; code = code0; renamed_symbols =
    5848     renamed_symbols0; final_label = final_label0 } = x_2351
     5830    renamed_symbols0; final_label = final_label0 } = x_2403
    58495831  in
    58505832  h_mk_pseudo_assembly_program preamble0 code0 __ renamed_symbols0
     
    58565838    Types.prod List.list -> identifier -> __ -> __ -> 'a1) ->
    58575839    pseudo_assembly_program -> 'a1 **)
    5858 let rec pseudo_assembly_program_rect_Type0 h_mk_pseudo_assembly_program x_2353 =
     5840let rec pseudo_assembly_program_rect_Type0 h_mk_pseudo_assembly_program x_2405 =
    58595841  let { preamble = preamble0; code = code0; renamed_symbols =
    5860     renamed_symbols0; final_label = final_label0 } = x_2353
     5842    renamed_symbols0; final_label = final_label0 } = x_2405
    58615843  in
    58625844  h_mk_pseudo_assembly_program preamble0 code0 __ renamed_symbols0
     
    59865968    costlabel_map -> symboltable_type -> BitVector.word -> __ -> 'a1) ->
    59875969    labelled_object_code -> 'a1 **)
    5988 let rec labelled_object_code_rect_Type4 h_mk_labelled_object_code x_2369 =
     5970let rec labelled_object_code_rect_Type4 h_mk_labelled_object_code x_2421 =
    59895971  let { oc = oc0; cm = cm0; costlabels = costlabels0; symboltable =
    5990     symboltable0; final_pc = final_pc0 } = x_2369
     5972    symboltable0; final_pc = final_pc0 } = x_2421
    59915973  in
    59925974  h_mk_labelled_object_code oc0 cm0 __ costlabels0 symboltable0 final_pc0 __
     
    59965978    costlabel_map -> symboltable_type -> BitVector.word -> __ -> 'a1) ->
    59975979    labelled_object_code -> 'a1 **)
    5998 let rec labelled_object_code_rect_Type5 h_mk_labelled_object_code x_2371 =
     5980let rec labelled_object_code_rect_Type5 h_mk_labelled_object_code x_2423 =
    59995981  let { oc = oc0; cm = cm0; costlabels = costlabels0; symboltable =
    6000     symboltable0; final_pc = final_pc0 } = x_2371
     5982    symboltable0; final_pc = final_pc0 } = x_2423
    60015983  in
    60025984  h_mk_labelled_object_code oc0 cm0 __ costlabels0 symboltable0 final_pc0 __
     
    60065988    costlabel_map -> symboltable_type -> BitVector.word -> __ -> 'a1) ->
    60075989    labelled_object_code -> 'a1 **)
    6008 let rec labelled_object_code_rect_Type3 h_mk_labelled_object_code x_2373 =
     5990let rec labelled_object_code_rect_Type3 h_mk_labelled_object_code x_2425 =
    60095991  let { oc = oc0; cm = cm0; costlabels = costlabels0; symboltable =
    6010     symboltable0; final_pc = final_pc0 } = x_2373
     5992    symboltable0; final_pc = final_pc0 } = x_2425
    60115993  in
    60125994  h_mk_labelled_object_code oc0 cm0 __ costlabels0 symboltable0 final_pc0 __
     
    60165998    costlabel_map -> symboltable_type -> BitVector.word -> __ -> 'a1) ->
    60175999    labelled_object_code -> 'a1 **)
    6018 let rec labelled_object_code_rect_Type2 h_mk_labelled_object_code x_2375 =
     6000let rec labelled_object_code_rect_Type2 h_mk_labelled_object_code x_2427 =
    60196001  let { oc = oc0; cm = cm0; costlabels = costlabels0; symboltable =
    6020     symboltable0; final_pc = final_pc0 } = x_2375
     6002    symboltable0; final_pc = final_pc0 } = x_2427
    60216003  in
    60226004  h_mk_labelled_object_code oc0 cm0 __ costlabels0 symboltable0 final_pc0 __
     
    60266008    costlabel_map -> symboltable_type -> BitVector.word -> __ -> 'a1) ->
    60276009    labelled_object_code -> 'a1 **)
    6028 let rec labelled_object_code_rect_Type1 h_mk_labelled_object_code x_2377 =
     6010let rec labelled_object_code_rect_Type1 h_mk_labelled_object_code x_2429 =
    60296011  let { oc = oc0; cm = cm0; costlabels = costlabels0; symboltable =
    6030     symboltable0; final_pc = final_pc0 } = x_2377
     6012    symboltable0; final_pc = final_pc0 } = x_2429
    60316013  in
    60326014  h_mk_labelled_object_code oc0 cm0 __ costlabels0 symboltable0 final_pc0 __
     
    60366018    costlabel_map -> symboltable_type -> BitVector.word -> __ -> 'a1) ->
    60376019    labelled_object_code -> 'a1 **)
    6038 let rec labelled_object_code_rect_Type0 h_mk_labelled_object_code x_2379 =
     6020let rec labelled_object_code_rect_Type0 h_mk_labelled_object_code x_2431 =
    60396021  let { oc = oc0; cm = cm0; costlabels = costlabels0; symboltable =
    6040     symboltable0; final_pc = final_pc0 } = x_2379
     6022    symboltable0; final_pc = final_pc0 } = x_2431
    60416023  in
    60426024  h_mk_labelled_object_code oc0 cm0 __ costlabels0 symboltable0 final_pc0 __
  • extracted/aSM.mli

    r2999 r3043  
    10881088| Jmp of identifier
    10891089| Jnz of subaddressing_mode * identifier * identifier
    1090 | MovSuccessor of subaddressing_mode * word_side * identifier
    10911090| Call of identifier
    1092 | Mov of subaddressing_mode * identifier
     1091| Mov of (subaddressing_mode, (subaddressing_mode, word_side) Types.prod)
     1092         Types.sum * identifier * BitVector.word
    10931093
    10941094val pseudo_instruction_rect_Type4 :
    10951095  (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    10961096  (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode
    1097   -> identifier -> identifier -> 'a1) -> (subaddressing_mode -> word_side ->
    1098   identifier -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode ->
    1099   identifier -> 'a1) -> pseudo_instruction -> 'a1
     1097  -> identifier -> identifier -> 'a1) -> (identifier -> 'a1) ->
     1098  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1099  -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction -> 'a1
    11001100
    11011101val pseudo_instruction_rect_Type5 :
    11021102  (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    11031103  (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode
    1104   -> identifier -> identifier -> 'a1) -> (subaddressing_mode -> word_side ->
    1105   identifier -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode ->
    1106   identifier -> 'a1) -> pseudo_instruction -> 'a1
     1104  -> identifier -> identifier -> 'a1) -> (identifier -> 'a1) ->
     1105  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1106  -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction -> 'a1
    11071107
    11081108val pseudo_instruction_rect_Type3 :
    11091109  (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    11101110  (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode
    1111   -> identifier -> identifier -> 'a1) -> (subaddressing_mode -> word_side ->
    1112   identifier -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode ->
    1113   identifier -> 'a1) -> pseudo_instruction -> 'a1
     1111  -> identifier -> identifier -> 'a1) -> (identifier -> 'a1) ->
     1112  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1113  -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction -> 'a1
    11141114
    11151115val pseudo_instruction_rect_Type2 :
    11161116  (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    11171117  (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode
    1118   -> identifier -> identifier -> 'a1) -> (subaddressing_mode -> word_side ->
    1119   identifier -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode ->
    1120   identifier -> 'a1) -> pseudo_instruction -> 'a1
     1118  -> identifier -> identifier -> 'a1) -> (identifier -> 'a1) ->
     1119  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1120  -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction -> 'a1
    11211121
    11221122val pseudo_instruction_rect_Type1 :
    11231123  (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    11241124  (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode
    1125   -> identifier -> identifier -> 'a1) -> (subaddressing_mode -> word_side ->
    1126   identifier -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode ->
    1127   identifier -> 'a1) -> pseudo_instruction -> 'a1
     1125  -> identifier -> identifier -> 'a1) -> (identifier -> 'a1) ->
     1126  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1127  -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction -> 'a1
    11281128
    11291129val pseudo_instruction_rect_Type0 :
    11301130  (identifier preinstruction -> 'a1) -> (String.string -> 'a1) ->
    11311131  (CostLabel.costlabel -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode
    1132   -> identifier -> identifier -> 'a1) -> (subaddressing_mode -> word_side ->
    1133   identifier -> 'a1) -> (identifier -> 'a1) -> (subaddressing_mode ->
    1134   identifier -> 'a1) -> pseudo_instruction -> 'a1
     1132  -> identifier -> identifier -> 'a1) -> (identifier -> 'a1) ->
     1133  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1134  -> identifier -> BitVector.word -> 'a1) -> pseudo_instruction -> 'a1
    11351135
    11361136val pseudo_instruction_inv_rect_Type4 :
     
    11381138  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    11391139  (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    1140   identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side -> identifier
    1141   -> __ -> 'a1) -> (identifier -> __ -> 'a1) -> (subaddressing_mode ->
    1142   identifier -> __ -> 'a1) -> 'a1
     1140  identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
     1141  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1142  -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1
    11431143
    11441144val pseudo_instruction_inv_rect_Type3 :
     
    11461146  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    11471147  (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    1148   identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side -> identifier
    1149   -> __ -> 'a1) -> (identifier -> __ -> 'a1) -> (subaddressing_mode ->
    1150   identifier -> __ -> 'a1) -> 'a1
     1148  identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
     1149  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1150  -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1
    11511151
    11521152val pseudo_instruction_inv_rect_Type2 :
     
    11541154  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    11551155  (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    1156   identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side -> identifier
    1157   -> __ -> 'a1) -> (identifier -> __ -> 'a1) -> (subaddressing_mode ->
    1158   identifier -> __ -> 'a1) -> 'a1
     1156  identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
     1157  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1158  -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1
    11591159
    11601160val pseudo_instruction_inv_rect_Type1 :
     
    11621162  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    11631163  (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    1164   identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side -> identifier
    1165   -> __ -> 'a1) -> (identifier -> __ -> 'a1) -> (subaddressing_mode ->
    1166   identifier -> __ -> 'a1) -> 'a1
     1164  identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
     1165  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1166  -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1
    11671167
    11681168val pseudo_instruction_inv_rect_Type0 :
     
    11701170  (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) ->
    11711171  (identifier -> __ -> 'a1) -> (subaddressing_mode -> identifier ->
    1172   identifier -> __ -> 'a1) -> (subaddressing_mode -> word_side -> identifier
    1173   -> __ -> 'a1) -> (identifier -> __ -> 'a1) -> (subaddressing_mode ->
    1174   identifier -> __ -> 'a1) -> 'a1
     1172  identifier -> __ -> 'a1) -> (identifier -> __ -> 'a1) ->
     1173  ((subaddressing_mode, (subaddressing_mode, word_side) Types.prod) Types.sum
     1174  -> identifier -> BitVector.word -> __ -> 'a1) -> 'a1
    11751175
    11761176val pseudo_instruction_discr : pseudo_instruction -> pseudo_instruction -> __
  • extracted/aSMCosts.ml

    r3029 r3043  
    502502   | Nat.S program_size' ->
    503503     (fun _ ->
    504        (let { Types.fst = eta83; Types.snd = ticks } =
     504       (let { Types.fst = eta168; Types.snd = ticks } =
    505505          Fetch.fetch prog.ASM.cm program_counter'
    506506        in
    507        let { Types.fst = instruction; Types.snd = program_counter'' } = eta83
     507       let { Types.fst = instruction; Types.snd = program_counter'' } =
     508         eta168
    508509       in
    509510       (fun _ ->
  • extracted/aST.ml

    r2997 r3043  
    418418    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    419419let rec typ_rect_Type4 h_ASTint h_ASTptr = function
    420 | ASTint (x_411, x_410) -> h_ASTint x_411 x_410
     420| ASTint (x_3662, x_3661) -> h_ASTint x_3662 x_3661
    421421| ASTptr -> h_ASTptr
    422422
     
    424424    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    425425let rec typ_rect_Type5 h_ASTint h_ASTptr = function
    426 | ASTint (x_416, x_415) -> h_ASTint x_416 x_415
     426| ASTint (x_3667, x_3666) -> h_ASTint x_3667 x_3666
    427427| ASTptr -> h_ASTptr
    428428
     
    430430    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    431431let rec typ_rect_Type3 h_ASTint h_ASTptr = function
    432 | ASTint (x_421, x_420) -> h_ASTint x_421 x_420
     432| ASTint (x_3672, x_3671) -> h_ASTint x_3672 x_3671
    433433| ASTptr -> h_ASTptr
    434434
     
    436436    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    437437let rec typ_rect_Type2 h_ASTint h_ASTptr = function
    438 | ASTint (x_426, x_425) -> h_ASTint x_426 x_425
     438| ASTint (x_3677, x_3676) -> h_ASTint x_3677 x_3676
    439439| ASTptr -> h_ASTptr
    440440
     
    442442    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    443443let rec typ_rect_Type1 h_ASTint h_ASTptr = function
    444 | ASTint (x_431, x_430) -> h_ASTint x_431 x_430
     444| ASTint (x_3682, x_3681) -> h_ASTint x_3682 x_3681
    445445| ASTptr -> h_ASTptr
    446446
     
    448448    (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **)
    449449let rec typ_rect_Type0 h_ASTint h_ASTptr = function
    450 | ASTint (x_436, x_435) -> h_ASTint x_436 x_435
     450| ASTint (x_3687, x_3686) -> h_ASTint x_3687 x_3686
    451451| ASTptr -> h_ASTptr
    452452
     
    877877(** val signature_rect_Type4 :
    878878    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    879 let rec signature_rect_Type4 h_mk_signature x_471 =
    880   let { sig_args = sig_args0; sig_res = sig_res0 } = x_471 in
     879let rec signature_rect_Type4 h_mk_signature x_3722 =
     880  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3722 in
    881881  h_mk_signature sig_args0 sig_res0
    882882
    883883(** val signature_rect_Type5 :
    884884    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    885 let rec signature_rect_Type5 h_mk_signature x_473 =
    886   let { sig_args = sig_args0; sig_res = sig_res0 } = x_473 in
     885let rec signature_rect_Type5 h_mk_signature x_3724 =
     886  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3724 in
    887887  h_mk_signature sig_args0 sig_res0
    888888
    889889(** val signature_rect_Type3 :
    890890    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    891 let rec signature_rect_Type3 h_mk_signature x_475 =
    892   let { sig_args = sig_args0; sig_res = sig_res0 } = x_475 in
     891let rec signature_rect_Type3 h_mk_signature x_3726 =
     892  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3726 in
    893893  h_mk_signature sig_args0 sig_res0
    894894
    895895(** val signature_rect_Type2 :
    896896    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    897 let rec signature_rect_Type2 h_mk_signature x_477 =
    898   let { sig_args = sig_args0; sig_res = sig_res0 } = x_477 in
     897let rec signature_rect_Type2 h_mk_signature x_3728 =
     898  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3728 in
    899899  h_mk_signature sig_args0 sig_res0
    900900
    901901(** val signature_rect_Type1 :
    902902    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    903 let rec signature_rect_Type1 h_mk_signature x_479 =
    904   let { sig_args = sig_args0; sig_res = sig_res0 } = x_479 in
     903let rec signature_rect_Type1 h_mk_signature x_3730 =
     904  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3730 in
    905905  h_mk_signature sig_args0 sig_res0
    906906
    907907(** val signature_rect_Type0 :
    908908    (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **)
    909 let rec signature_rect_Type0 h_mk_signature x_481 =
    910   let { sig_args = sig_args0; sig_res = sig_res0 } = x_481 in
     909let rec signature_rect_Type0 h_mk_signature x_3732 =
     910  let { sig_args = sig_args0; sig_res = sig_res0 } = x_3732 in
    911911  h_mk_signature sig_args0 sig_res0
    912912
     
    984984    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    985985let rec init_data_rect_Type4 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    986 | Init_int8 x_509 -> h_Init_int8 x_509
    987 | Init_int16 x_510 -> h_Init_int16 x_510
    988 | Init_int32 x_511 -> h_Init_int32 x_511
    989 | Init_space x_512 -> h_Init_space x_512
     986| Init_int8 x_3760 -> h_Init_int8 x_3760
     987| Init_int16 x_3761 -> h_Init_int16 x_3761
     988| Init_int32 x_3762 -> h_Init_int32 x_3762
     989| Init_space x_3763 -> h_Init_space x_3763
    990990| Init_null -> h_Init_null
    991 | Init_addrof (x_514, x_513) -> h_Init_addrof x_514 x_513
     991| Init_addrof (x_3765, x_3764) -> h_Init_addrof x_3765 x_3764
    992992
    993993(** val init_data_rect_Type5 :
     
    995995    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    996996let rec init_data_rect_Type5 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    997 | Init_int8 x_522 -> h_Init_int8 x_522
    998 | Init_int16 x_523 -> h_Init_int16 x_523
    999 | Init_int32 x_524 -> h_Init_int32 x_524
    1000 | Init_space x_525 -> h_Init_space x_525
     997| Init_int8 x_3773 -> h_Init_int8 x_3773
     998| Init_int16 x_3774 -> h_Init_int16 x_3774
     999| Init_int32 x_3775 -> h_Init_int32 x_3775
     1000| Init_space x_3776 -> h_Init_space x_3776
    10011001| Init_null -> h_Init_null
    1002 | Init_addrof (x_527, x_526) -> h_Init_addrof x_527 x_526
     1002| Init_addrof (x_3778, x_3777) -> h_Init_addrof x_3778 x_3777
    10031003
    10041004(** val init_data_rect_Type3 :
     
    10061006    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10071007let rec init_data_rect_Type3 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1008 | Init_int8 x_535 -> h_Init_int8 x_535
    1009 | Init_int16 x_536 -> h_Init_int16 x_536
    1010 | Init_int32 x_537 -> h_Init_int32 x_537
    1011 | Init_space x_538 -> h_Init_space x_538
     1008| Init_int8 x_3786 -> h_Init_int8 x_3786
     1009| Init_int16 x_3787 -> h_Init_int16 x_3787
     1010| Init_int32 x_3788 -> h_Init_int32 x_3788
     1011| Init_space x_3789 -> h_Init_space x_3789
    10121012| Init_null -> h_Init_null
    1013 | Init_addrof (x_540, x_539) -> h_Init_addrof x_540 x_539
     1013| Init_addrof (x_3791, x_3790) -> h_Init_addrof x_3791 x_3790
    10141014
    10151015(** val init_data_rect_Type2 :
     
    10171017    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10181018let rec init_data_rect_Type2 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1019 | Init_int8 x_548 -> h_Init_int8 x_548
    1020 | Init_int16 x_549 -> h_Init_int16 x_549
    1021 | Init_int32 x_550 -> h_Init_int32 x_550
    1022 | Init_space x_551 -> h_Init_space x_551
     1019| Init_int8 x_3799 -> h_Init_int8 x_3799
     1020| Init_int16 x_3800 -> h_Init_int16 x_3800
     1021| Init_int32 x_3801 -> h_Init_int32 x_3801
     1022| Init_space x_3802 -> h_Init_space x_3802
    10231023| Init_null -> h_Init_null
    1024 | Init_addrof (x_553, x_552) -> h_Init_addrof x_553 x_552
     1024| Init_addrof (x_3804, x_3803) -> h_Init_addrof x_3804 x_3803
    10251025
    10261026(** val init_data_rect_Type1 :
     
    10281028    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10291029let rec init_data_rect_Type1 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1030 | Init_int8 x_561 -> h_Init_int8 x_561
    1031 | Init_int16 x_562 -> h_Init_int16 x_562
    1032 | Init_int32 x_563 -> h_Init_int32 x_563
    1033 | Init_space x_564 -> h_Init_space x_564
     1030| Init_int8 x_3812 -> h_Init_int8 x_3812
     1031| Init_int16 x_3813 -> h_Init_int16 x_3813
     1032| Init_int32 x_3814 -> h_Init_int32 x_3814
     1033| Init_space x_3815 -> h_Init_space x_3815
    10341034| Init_null -> h_Init_null
    1035 | Init_addrof (x_566, x_565) -> h_Init_addrof x_566 x_565
     1035| Init_addrof (x_3817, x_3816) -> h_Init_addrof x_3817 x_3816
    10361036
    10371037(** val init_data_rect_Type0 :
     
    10391039    'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **)
    10401040let rec init_data_rect_Type0 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function
    1041 | Init_int8 x_574 -> h_Init_int8 x_574
    1042 | Init_int16 x_575 -> h_Init_int16 x_575
    1043 | Init_int32 x_576 -> h_Init_int32 x_576
    1044 | Init_space x_577 -> h_Init_space x_577
     1041| Init_int8 x_3825 -> h_Init_int8 x_3825
     1042| Init_int16 x_3826 -> h_Init_int16 x_3826
     1043| Init_int32 x_3827 -> h_Init_int32 x_3827
     1044| Init_space x_3828 -> h_Init_space x_3828
    10451045| Init_null -> h_Init_null
    1046 | Init_addrof (x_579, x_578) -> h_Init_addrof x_579 x_578
     1046| Init_addrof (x_3830, x_3829) -> h_Init_addrof x_3830 x_3829
    10471047
    10481048(** val init_data_inv_rect_Type4 :
     
    11111111    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11121112    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1113 let rec program_rect_Type4 h_mk_program x_666 =
     1113let rec program_rect_Type4 h_mk_program x_3917 =
    11141114  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1115     prog_main0 } = x_666
     1115    prog_main0 } = x_3917
    11161116  in
    11171117  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11201120    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11211121    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1122 let rec program_rect_Type5 h_mk_program x_668 =
     1122let rec program_rect_Type5 h_mk_program x_3919 =
    11231123  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1124     prog_main0 } = x_668
     1124    prog_main0 } = x_3919
    11251125  in
    11261126  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11291129    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11301130    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1131 let rec program_rect_Type3 h_mk_program x_670 =
     1131let rec program_rect_Type3 h_mk_program x_3921 =
    11321132  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1133     prog_main0 } = x_670
     1133    prog_main0 } = x_3921
    11341134  in
    11351135  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11381138    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11391139    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1140 let rec program_rect_Type2 h_mk_program x_672 =
     1140let rec program_rect_Type2 h_mk_program x_3923 =
    11411141  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1142     prog_main0 } = x_672
     1142    prog_main0 } = x_3923
    11431143  in
    11441144  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11471147    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11481148    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1149 let rec program_rect_Type1 h_mk_program x_674 =
     1149let rec program_rect_Type1 h_mk_program x_3925 =
    11501150  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1151     prog_main0 } = x_674
     1151    prog_main0 } = x_3925
    11521152  in
    11531153  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    11561156    (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1)
    11571157    Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **)
    1158 let rec program_rect_Type0 h_mk_program x_676 =
     1158let rec program_rect_Type0 h_mk_program x_3927 =
    11591159  let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main =
    1160     prog_main0 } = x_676
     1160    prog_main0 } = x_3927
    11611161  in
    11621162  h_mk_program prog_vars0 prog_funct0 prog_main0
     
    14771477(** val external_function_rect_Type4 :
    14781478    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1479 let rec external_function_rect_Type4 h_mk_external_function x_880 =
    1480   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_880 in
     1479let rec external_function_rect_Type4 h_mk_external_function x_4131 =
     1480  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_4131 in
    14811481  h_mk_external_function ef_id0 ef_sig0
    14821482
    14831483(** val external_function_rect_Type5 :
    14841484    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1485 let rec external_function_rect_Type5 h_mk_external_function x_882 =
    1486   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_882 in
     1485let rec external_function_rect_Type5 h_mk_external_function x_4133 =
     1486  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_4133 in
    14871487  h_mk_external_function ef_id0 ef_sig0
    14881488
    14891489(** val external_function_rect_Type3 :
    14901490    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1491 let rec external_function_rect_Type3 h_mk_external_function x_884 =
    1492   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_884 in
     1491let rec external_function_rect_Type3 h_mk_external_function x_4135 =
     1492  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_4135 in
    14931493  h_mk_external_function ef_id0 ef_sig0
    14941494
    14951495(** val external_function_rect_Type2 :
    14961496    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1497 let rec external_function_rect_Type2 h_mk_external_function x_886 =
    1498   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_886 in
     1497let rec external_function_rect_Type2 h_mk_external_function x_4137 =
     1498  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_4137 in
    14991499  h_mk_external_function ef_id0 ef_sig0
    15001500
    15011501(** val external_function_rect_Type1 :
    15021502    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1503 let rec external_function_rect_Type1 h_mk_external_function x_888 =
    1504   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_888 in
     1503let rec external_function_rect_Type1 h_mk_external_function x_4139 =
     1504  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_4139 in
    15051505  h_mk_external_function ef_id0 ef_sig0
    15061506
    15071507(** val external_function_rect_Type0 :
    15081508    (ident -> signature -> 'a1) -> external_function -> 'a1 **)
    1509 let rec external_function_rect_Type0 h_mk_external_function x_890 =
    1510   let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_890 in
     1509let rec external_function_rect_Type0 h_mk_external_function x_4141 =
     1510  let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_4141 in
    15111511  h_mk_external_function ef_id0 ef_sig0
    15121512
     
    15751575    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15761576let rec fundef_rect_Type4 h_Internal h_External = function
    1577 | Internal x_910 -> h_Internal x_910
    1578 | External x_911 -> h_External x_911
     1577| Internal x_4161 -> h_Internal x_4161
     1578| External x_4162 -> h_External x_4162
    15791579
    15801580(** val fundef_rect_Type5 :
    15811581    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15821582let rec fundef_rect_Type5 h_Internal h_External = function
    1583 | Internal x_915 -> h_Internal x_915
    1584 | External x_916 -> h_External x_916
     1583| Internal x_4166 -> h_Internal x_4166
     1584| External x_4167 -> h_External x_4167
    15851585
    15861586(** val fundef_rect_Type3 :
    15871587    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15881588let rec fundef_rect_Type3 h_Internal h_External = function
    1589 | Internal x_920 -> h_Internal x_920
    1590 | External x_921 -> h_External x_921
     1589| Internal x_4171 -> h_Internal x_4171
     1590| External x_4172 -> h_External x_4172
    15911591
    15921592(** val fundef_rect_Type2 :
    15931593    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    15941594let rec fundef_rect_Type2 h_Internal h_External = function
    1595 | Internal x_925 -> h_Internal x_925
    1596 | External x_926 -> h_External x_926
     1595| Internal x_4176 -> h_Internal x_4176
     1596| External x_4177 -> h_External x_4177
    15971597
    15981598(** val fundef_rect_Type1 :
    15991599    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    16001600let rec fundef_rect_Type1 h_Internal h_External = function
    1601 | Internal x_930 -> h_Internal x_930
    1602 | External x_931 -> h_External x_931
     1601| Internal x_4181 -> h_Internal x_4181
     1602| External x_4182 -> h_External x_4182
    16031603
    16041604(** val fundef_rect_Type0 :
    16051605    ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **)
    16061606let rec fundef_rect_Type0 h_Internal h_External = function
    1607 | Internal x_935 -> h_Internal x_935
    1608 | External x_936 -> h_External x_936
     1607| Internal x_4186 -> h_Internal x_4186
     1608| External x_4187 -> h_External x_4187
    16091609
    16101610(** val fundef_inv_rect_Type4 :
  • extracted/arithmetic.ml

    r3033 r3043  
    297297(** val fbs_diff_rect_Type4 :
    298298    (Nat.nat -> Nat.nat -> 'a1) -> Nat.nat -> fbs_diff -> 'a1 **)
    299 let rec fbs_diff_rect_Type4 h_fbs_diff' x_4 = function
     299let rec fbs_diff_rect_Type4 h_fbs_diff' x_1368 = function
    300300| Fbs_diff' (n, m) -> h_fbs_diff' n m
    301301
    302302(** val fbs_diff_rect_Type5 :
    303303    (Nat.nat -> Nat.nat -> 'a1) -> Nat.nat -> fbs_diff -> 'a1 **)
    304 let rec fbs_diff_rect_Type5 h_fbs_diff' x_7 = function
     304let rec fbs_diff_rect_Type5 h_fbs_diff' x_1371 = function
    305305| Fbs_diff' (n, m) -> h_fbs_diff' n m
    306306
    307307(** val fbs_diff_rect_Type3 :
    308308    (Nat.nat -> Nat.nat -> 'a1) -> Nat.nat -> fbs_diff -> 'a1 **)
    309 let rec fbs_diff_rect_Type3 h_fbs_diff' x_10 = function
     309let rec fbs_diff_rect_Type3 h_fbs_diff' x_1374 = function
    310310| Fbs_diff' (n, m) -> h_fbs_diff' n m
    311311
    312312(** val fbs_diff_rect_Type2 :
    313313    (Nat.nat -> Nat.nat -> 'a1) -> Nat.nat -> fbs_diff -> 'a1 **)
    314 let rec fbs_diff_rect_Type2 h_fbs_diff' x_13 = function
     314let rec fbs_diff_rect_Type2 h_fbs_diff' x_1377 = function
    315315| Fbs_diff' (n, m) -> h_fbs_diff' n m
    316316
    317317(** val fbs_diff_rect_Type1 :
    318318    (Nat.nat -> Nat.nat -> 'a1) -> Nat.nat -> fbs_diff -> 'a1 **)
    319 let rec fbs_diff_rect_Type1 h_fbs_diff' x_16 = function
     319let rec fbs_diff_rect_Type1 h_fbs_diff' x_1380 = function
    320320| Fbs_diff' (n, m) -> h_fbs_diff' n m
    321321
    322322(** val fbs_diff_rect_Type0 :
    323323    (Nat.nat -> Nat.nat -> 'a1) -> Nat.nat -> fbs_diff -> 'a1 **)
    324 let rec fbs_diff_rect_Type0 h_fbs_diff' x_19 = function
     324let rec fbs_diff_rect_Type0 h_fbs_diff' x_1383 = function
    325325| Fbs_diff' (n, m) -> h_fbs_diff' n m
    326326
  • extracted/assembly.ml

    r3034 r3043  
    26912691  ((ASM.LJMP (ASM.ADDR16 lookup_address2)), (List.Cons ((ASM.LJMP (ASM.ADDR16
    26922692  lookup_address1)), List.Nil)))))
    2693 | ASM.MovSuccessor (dst, ws, lbl) ->
    2694   let addr = lookup_labels lbl in
    2695   let { Types.fst = high; Types.snd = low } =
    2696     Vector.vsplit (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    2697       Nat.O)))))))) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    2698       Nat.O)))))))) addr
    2699   in
    2700   let v = ASM.DATA
    2701     (match ws with
    2702      | ASM.HIGH -> high
    2703      | ASM.LOW -> low)
    2704   in
    2705   (match ASM.subaddressing_modeel (Nat.S (Nat.S Nat.O)) (Vector.VCons ((Nat.S
    2706            (Nat.S Nat.O)), ASM.Acc_a, (Vector.VCons ((Nat.S Nat.O),
    2707            ASM.Direct, (Vector.VCons (Nat.O, ASM.Registr, Vector.VEmpty))))))
    2708            dst with
    2709    | ASM.DIRECT b1 ->
    2710      (fun _ -> List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl (Types.Inl
    2711        (Types.Inl (Types.Inr { Types.fst = (ASM.DIRECT b1); Types.snd =
    2712        v })))))), List.Nil))
    2713    | ASM.INDIRECT x -> (fun _ -> assert false (* absurd case *))
    2714    | ASM.EXT_INDIRECT x -> (fun _ -> assert false (* absurd case *))
    2715    | ASM.REGISTER r ->
    2716      (fun _ -> List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl (Types.Inl
    2717        (Types.Inl (Types.Inl (Types.Inr { Types.fst = (ASM.REGISTER r);
    2718        Types.snd = v }))))))), List.Nil))
    2719    | ASM.ACC_A ->
    2720      (fun _ -> List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl (Types.Inl
    2721        (Types.Inl (Types.Inl (Types.Inl { Types.fst = ASM.ACC_A; Types.snd =
    2722        v }))))))), List.Nil))
    2723    | ASM.ACC_B -> (fun _ -> assert false (* absurd case *))
    2724    | ASM.DPTR -> (fun _ -> assert false (* absurd case *))
    2725    | ASM.DATA x -> (fun _ -> assert false (* absurd case *))
    2726    | ASM.DATA16 x -> (fun _ -> assert false (* absurd case *))
    2727    | ASM.ACC_DPTR -> (fun _ -> assert false (* absurd case *))
    2728    | ASM.ACC_PC -> (fun _ -> assert false (* absurd case *))
    2729    | ASM.EXT_INDIRECT_DPTR -> (fun _ -> assert false (* absurd case *))
    2730    | ASM.INDIRECT_DPTR -> (fun _ -> assert false (* absurd case *))
    2731    | ASM.CARRY -> (fun _ -> assert false (* absurd case *))
    2732    | ASM.BIT_ADDR x -> (fun _ -> assert false (* absurd case *))
    2733    | ASM.N_BIT_ADDR x -> (fun _ -> assert false (* absurd case *))
    2734    | ASM.RELATIVE x -> (fun _ -> assert false (* absurd case *))
    2735    | ASM.ADDR11 x -> (fun _ -> assert false (* absurd case *))
    2736    | ASM.ADDR16 x -> (fun _ -> assert false (* absurd case *))) __
    27372693| ASM.Call call ->
    27382694  let pc_plus_jmp_length =
     
    27572713     let address = ASM.ADDR16 lookup_address in
    27582714     List.Cons ((ASM.LCALL address), List.Nil))
    2759 | ASM.Mov (d, trgt) ->
    2760   let address = ASM.DATA16 (lookup_datalabels trgt) in
    2761   List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl (Types.Inl (Types.Inr
    2762   { Types.fst = ASM.DPTR; Types.snd = address }))))), List.Nil)
     2715| ASM.Mov (d, trgt, off) ->
     2716  let addr =
     2717    (Arithmetic.add_16_with_carry (lookup_datalabels trgt) off Bool.False).Types.fst
     2718  in
     2719  (match d with
     2720   | Types.Inl x ->
     2721     let address = ASM.DATA16 addr in
     2722     List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl (Types.Inl
     2723     (Types.Inr { Types.fst = ASM.DPTR; Types.snd = address }))))), List.Nil)
     2724   | Types.Inr pr ->
     2725     let v = ASM.DATA
     2726       (match pr.Types.snd with
     2727        | ASM.HIGH ->
     2728          (Vector.vsplit (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     2729            (Nat.S Nat.O)))))))) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     2730            (Nat.S (Nat.S Nat.O)))))))) addr).Types.fst
     2731        | ASM.LOW ->
     2732          (Vector.vsplit (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     2733            (Nat.S Nat.O)))))))) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     2734            (Nat.S (Nat.S Nat.O)))))))) addr).Types.snd)
     2735     in
     2736     (match ASM.subaddressing_modeel (Nat.S (Nat.S Nat.O)) (Vector.VCons
     2737              ((Nat.S (Nat.S Nat.O)), ASM.Acc_a, (Vector.VCons ((Nat.S
     2738              Nat.O), ASM.Direct, (Vector.VCons (Nat.O, ASM.Registr,
     2739              Vector.VEmpty)))))) pr.Types.fst with
     2740      | ASM.DIRECT b1 ->
     2741        (fun _ -> List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl
     2742          (Types.Inl (Types.Inl (Types.Inr { Types.fst = (ASM.DIRECT b1);
     2743          Types.snd = v })))))), List.Nil))
     2744      | ASM.INDIRECT x -> (fun _ -> assert false (* absurd case *))
     2745      | ASM.EXT_INDIRECT x -> (fun _ -> assert false (* absurd case *))
     2746      | ASM.REGISTER r ->
     2747        (fun _ -> List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl
     2748          (Types.Inl (Types.Inl (Types.Inl (Types.Inr { Types.fst =
     2749          (ASM.REGISTER r); Types.snd = v }))))))), List.Nil))
     2750      | ASM.ACC_A ->
     2751        (fun _ -> List.Cons ((ASM.RealInstruction (ASM.MOV (Types.Inl
     2752          (Types.Inl (Types.Inl (Types.Inl (Types.Inl { Types.fst =
     2753          ASM.ACC_A; Types.snd = v }))))))), List.Nil))
     2754      | ASM.ACC_B -> (fun _ -> assert false (* absurd case *))
     2755      | ASM.DPTR -> (fun _ -> assert false (* absurd case *))
     2756      | ASM.DATA x -> (fun _ -> assert false (* absurd case *))
     2757      | ASM.DATA16 x -> (fun _ -> assert false (* absurd case *))
     2758      | ASM.ACC_DPTR -> (fun _ -> assert false (* absurd case *))
     2759      | ASM.ACC_PC -> (fun _ -> assert false (* absurd case *))
     2760      | ASM.EXT_INDIRECT_DPTR -> (fun _ -> assert false (* absurd case *))
     2761      | ASM.INDIRECT_DPTR -> (fun _ -> assert false (* absurd case *))
     2762      | ASM.CARRY -> (fun _ -> assert false (* absurd case *))
     2763      | ASM.BIT_ADDR x -> (fun _ -> assert false (* absurd case *))
     2764      | ASM.N_BIT_ADDR x -> (fun _ -> assert false (* absurd case *))
     2765      | ASM.RELATIVE x -> (fun _ -> assert false (* absurd case *))
     2766      | ASM.ADDR11 x -> (fun _ -> assert false (* absurd case *))
     2767      | ASM.ADDR16 x -> (fun _ -> assert false (* absurd case *))) __)
    27632768
    27642769(** val assembly_1_pseudoinstruction :
     
    27902795let assembly p sigma policy =
    27912796  (let { Types.fst = labels_to_ppc; Types.snd = ppc_to_costs } =
    2792      Fetch.create_label_cost_map (ASM.code p)
     2797     Fetch.create_label_cost_map p.ASM.code
    27932798   in
    27942799  (fun _ ->
    2795   let preamble = ASM.preamble p in
    2796   let instr_list = ASM.code p in
     2800  let preamble = p.ASM.preamble in
     2801  let instr_list = p.ASM.code in
    27972802  let datalabels = Status.construct_datalabels preamble in
    27982803  let lookup_labels = fun x ->
     
    28042809  let lookup_datalabels = fun x ->
    28052810    Identifiers.lookup_def PreIdentifiers.ASMTag datalabels x
    2806       (BitVector.zero (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    2807         (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    2808         Nat.O)))))))))))))))))
     2811      (lookup_labels x)
    28092812  in
    28102813  (let { Types.fst = next_pc; Types.snd = revcode } =
     
    28512854      symboltable) (BitVectorTrie.Stub (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    28522855    (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    2853     (Nat.S Nat.O))))))))))))))))) (ASM.renamed_symbols p)); ASM.final_pc =
    2854   (sigma (lookup_labels (ASM.final_label p))) })) __)) __
     2856    (Nat.S Nat.O))))))))))))))))) p.ASM.renamed_symbols); ASM.final_pc =
     2857  (sigma (lookup_labels p.ASM.final_label)) })) __)) __
    28552858
    28562859(** val ticks_of_instruction : ASM.instruction -> Nat.nat **)
     
    31573160     let ticks = ticks_of_instruction (ASM.RealInstruction ASM.NOP) in
    31583161     { Types.fst = ticks; Types.snd = ticks }
    3159    | ASM.JMP x -> assert false (* absurd case *))
     3162   | ASM.JMP x ->
     3163     { Types.fst = (Nat.S (Nat.S Nat.O)); Types.snd = (Nat.S (Nat.S Nat.O)) })
    31603164| ASM.Comment comment -> { Types.fst = Nat.O; Types.snd = Nat.O }
    31613165| ASM.Cost cost ->
     
    31913195        { Types.fst = (Nat.S (Nat.S Nat.O)); Types.snd = (Nat.S (Nat.S
    31923196          Nat.O)) }))
    3193 | ASM.Jnz (x, x0, x1) -> assert false (* absurd case *)
    3194 | ASM.MovSuccessor (x, x0, x1) -> assert false (* absurd case *)
     3197| ASM.Jnz (x, x0, x1) ->
     3198  { Types.fst = (Nat.S (Nat.S (Nat.S (Nat.S Nat.O)))); Types.snd = (Nat.S
     3199    (Nat.S (Nat.S (Nat.S Nat.O)))) }
    31953200| ASM.Call call ->
    31963201  let pc_plus_jmp_length =
     
    32133218   | Bool.False ->
    32143219     { Types.fst = (Nat.S (Nat.S Nat.O)); Types.snd = (Nat.S (Nat.S Nat.O)) })
    3215 | ASM.Mov (dptr, tgt) ->
    3216   { Types.fst = (Nat.S (Nat.S Nat.O)); Types.snd = (Nat.S (Nat.S Nat.O)) }
     3220| ASM.Mov (dst, lbl, off) ->
     3221  (match dst with
     3222   | Types.Inl x ->
     3223     { Types.fst = (Nat.S (Nat.S Nat.O)); Types.snd = (Nat.S (Nat.S Nat.O)) }
     3224   | Types.Inr pr ->
     3225     (match ASM.subaddressing_modeel (Nat.S (Nat.S Nat.O)) (Vector.VCons
     3226              ((Nat.S (Nat.S Nat.O)), ASM.Acc_a, (Vector.VCons ((Nat.S
     3227              Nat.O), ASM.Direct, (Vector.VCons (Nat.O, ASM.Registr,
     3228              Vector.VEmpty)))))) pr.Types.fst with
     3229      | ASM.DIRECT d ->
     3230        (fun _ -> { Types.fst = (Nat.S (Nat.S Nat.O)); Types.snd = (Nat.S
     3231          (Nat.S Nat.O)) })
     3232      | ASM.INDIRECT x -> (fun _ -> assert false (* absurd case *))
     3233      | ASM.EXT_INDIRECT x -> (fun _ -> assert false (* absurd case *))
     3234      | ASM.REGISTER r ->
     3235        (fun _ -> { Types.fst = (Nat.S Nat.O); Types.snd = (Nat.S Nat.O) })
     3236      | ASM.ACC_A ->
     3237        (fun _ -> { Types.fst = (Nat.S Nat.O); Types.snd = (Nat.S Nat.O) })
     3238      | ASM.ACC_B -> (fun _ -> assert false (* absurd case *))
     3239      | ASM.DPTR -> (fun _ -> assert false (* absurd case *))
     3240      | ASM.DATA x -> (fun _ -> assert false (* absurd case *))
     3241      | ASM.DATA16 x -> (fun _ -> assert false (* absurd case *))
     3242      | ASM.ACC_DPTR -> (fun _ -> assert false (* absurd case *))
     3243      | ASM.ACC_PC -> (fun _ -> assert false (* absurd case *))
     3244      | ASM.EXT_INDIRECT_DPTR -> (fun _ -> assert false (* absurd case *))
     3245      | ASM.INDIRECT_DPTR -> (fun _ -> assert false (* absurd case *))
     3246      | ASM.CARRY -> (fun _ -> assert false (* absurd case *))
     3247      | ASM.BIT_ADDR x -> (fun _ -> assert false (* absurd case *))
     3248      | ASM.N_BIT_ADDR x -> (fun _ -> assert false (* absurd case *))
     3249      | ASM.RELATIVE x -> (fun _ -> assert false (* absurd case *))
     3250      | ASM.ADDR11 x -> (fun _ -> assert false (* absurd case *))
     3251      | ASM.ADDR16 x -> (fun _ -> assert false (* absurd case *))) __)
    32173252
    32183253(** val ticks_of :
     
    32223257let ticks_of program sigma policy ppc =
    32233258  let { Types.fst = labels; Types.snd = costs } =
    3224     Fetch.create_label_cost_map (ASM.code program)
     3259    Fetch.create_label_cost_map program.ASM.code
    32253260  in
    32263261  let addr_of = fun id ->
     
    32313266  in
    32323267  let { Types.fst = fetched; Types.snd = new_ppc } =
    3233     ASM.fetch_pseudo_instruction (ASM.code program) ppc
     3268    ASM.fetch_pseudo_instruction program.ASM.code ppc
    32343269  in
    32353270  ticks_of0 program addr_of sigma policy ppc fetched
  • extracted/backEndOps.ml

    r3001 r3043  
    402402    -> (BitVector.bit -> op2 -> BitVector.byte -> BitVector.byte ->
    403403    (BitVector.byte, BitVector.bit) Types.prod) -> 'a1) -> eval -> 'a1 **)
    404 let rec eval_rect_Type4 h_mk_Eval x_3714 =
    405   let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_3714 in
     404let rec eval_rect_Type4 h_mk_Eval x_16364 =
     405  let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_16364 in
    406406  h_mk_Eval opaccs0 op4 op5
    407407
     
    411411    -> (BitVector.bit -> op2 -> BitVector.byte -> BitVector.byte ->
    412412    (BitVector.byte, BitVector.bit) Types.prod) -> 'a1) -> eval -> 'a1 **)
    413 let rec eval_rect_Type5 h_mk_Eval x_3716 =
    414   let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_3716 in
     413let rec eval_rect_Type5 h_mk_Eval x_16366 =
     414  let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_16366 in
    415415  h_mk_Eval opaccs0 op4 op5
    416416
     
    420420    -> (BitVector.bit -> op2 -> BitVector.byte -> BitVector.byte ->
    421421    (BitVector.byte, BitVector.bit) Types.prod) -> 'a1) -> eval -> 'a1 **)
    422 let rec eval_rect_Type3 h_mk_Eval x_3718 =
    423   let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_3718 in
     422let rec eval_rect_Type3 h_mk_Eval x_16368 =
     423  let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_16368 in
    424424  h_mk_Eval opaccs0 op4 op5
    425425
     
    429429    -> (BitVector.bit -> op2 -> BitVector.byte -> BitVector.byte ->
    430430    (BitVector.byte, BitVector.bit) Types.prod) -> 'a1) -> eval -> 'a1 **)
    431 let rec eval_rect_Type2 h_mk_Eval x_3720 =
    432   let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_3720 in
     431let rec eval_rect_Type2 h_mk_Eval x_16370 =
     432  let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_16370 in
    433433  h_mk_Eval opaccs0 op4 op5
    434434
     
    438438    -> (BitVector.bit -> op2 -> BitVector.byte -> BitVector.byte ->
    439439    (BitVector.byte, BitVector.bit) Types.prod) -> 'a1) -> eval -> 'a1 **)
    440 let rec eval_rect_Type1 h_mk_Eval x_3722 =
    441   let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_3722 in
     440let rec eval_rect_Type1 h_mk_Eval x_16372 =
     441  let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_16372 in
    442442  h_mk_Eval opaccs0 op4 op5
    443443
     
    447447    -> (BitVector.bit -> op2 -> BitVector.byte -> BitVector.byte ->
    448448    (BitVector.byte, BitVector.bit) Types.prod) -> 'a1) -> eval -> 'a1 **)
    449 let rec eval_rect_Type0 h_mk_Eval x_3724 =
    450   let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_3724 in
     449let rec eval_rect_Type0 h_mk_Eval x_16374 =
     450  let { opaccs = opaccs0; op0 = op4; op3 = op5 } = x_16374 in
    451451  h_mk_Eval opaccs0 op4 op5
    452452
     
    702702                     (Nat.S (Nat.S Nat.O)))))))) (Nat.S (Nat.S (Nat.S (Nat.S
    703703                     (Nat.S (Nat.S (Nat.S (Nat.S Nat.O))))))))
    704                      (Pointers.offv (Pointers.poff ptr))
     704                     (Pointers.offv ptr.Pointers.poff)
    705705                 in
    706706                 let { Types.fst = rslt; Types.snd = carry0 } =
     
    708708                 in
    709709                 let p0 = Nat.O in
    710                  let ptr' = { Pointers.pblock = (Pointers.pblock ptr);
     710                 let ptr' = { Pointers.pblock = ptr.Pointers.pblock;
    711711                   Pointers.poff =
    712712                   (Vector.append (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     
    729729              (match Bool.andb
    730730                       (Bool.andb (ByteValues.eq_add_or_sub is_add is_add')
    731                          (Pointers.eq_block (Pointers.pblock ptr)
    732                            (Pointers.pblock ptr')))
     731                         (Pointers.eq_block ptr.Pointers.pblock
     732                           ptr'.Pointers.pblock))
    733733                       (ByteValues.eq_bv_suffix (Nat.S (Nat.S (Nat.S (Nat.S
    734734                         (Nat.S (Nat.S (Nat.S (Nat.S Nat.O)))))))) (Nat.S
     
    736736                         Nat.O)))))))) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    737737                         (Nat.S (Nat.S (Nat.S Nat.O))))))))
    738                          (Pointers.offv (Pointers.poff ptr))
    739                          (Pointers.offv (Pointers.poff ptr'))) with
     738                         (Pointers.offv ptr.Pointers.poff)
     739                         (Pointers.offv ptr'.Pointers.poff)) with
    740740               | Bool.True ->
    741741                 Util.if_then_else_safe
     
    746746                       (Nat.S (Nat.S Nat.O)))))))) (Nat.S (Nat.S (Nat.S
    747747                       (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S Nat.O))))))))
    748                        (Pointers.offv (Pointers.poff ptr))
     748                       (Pointers.offv ptr.Pointers.poff)
    749749                   in
    750750                   let o1o1 = Vector.VCons ((Nat.S Nat.O), o1o0.Types.fst,
     
    757757                   in
    758758                   let part1 = Nat.S Nat.O in
    759                    let ptr'' = { Pointers.pblock = (Pointers.pblock ptr);
     759                   let ptr'' = { Pointers.pblock = ptr.Pointers.pblock;
    760760                     Pointers.poff =
    761761                     (Vector.vflatten (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S
     
    939939           | AST.XData ->
    940940             (match Bool.andb
    941                       (Pointers.eq_block (Pointers.pblock ptr1)
    942                         (Pointers.pblock ptr2))
     941                      (Pointers.eq_block ptr1.Pointers.pblock
     942                        ptr2.Pointers.pblock)
    943943                      (Nat.eqb (ByteValues.part_no p1)
    944944                        (ByteValues.part_no p2)) with
     
    951951                    let by1 =
    952952                      byte_at AST.size_pointer
    953                         (Pointers.offv (Pointers.poff ptr1))
     953                        (Pointers.offv ptr1.Pointers.poff)
    954954                        (ByteValues.part_no p1)
    955955                    in
    956956                    let by2 =
    957957                      byte_at AST.size_pointer
    958                         (Pointers.offv (Pointers.poff ptr2))
     958                        (Pointers.offv ptr2.Pointers.poff)
    959959                        (ByteValues.part_no p1)
    960960                    in
     
    10371037             let eq_at = fun p ptr1 ptr2 ->
    10381038               Bool.andb
    1039                  (Pointers.eq_block (Pointers.pblock ptr1)
    1040                    (Pointers.pblock ptr2))
     1039                 (Pointers.eq_block ptr1.Pointers.pblock
     1040                   ptr2.Pointers.pblock)
    10411041                 (BitVector.eq_bv (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    10421042                   (Nat.S (Nat.S Nat.O))))))))
    10431043                   (byte_at AST.size_pointer
    1044                      (Pointers.offv (Pointers.poff ptr1))
     1044                     (Pointers.offv ptr1.Pointers.poff)
    10451045                     (ByteValues.part_no p))
    10461046                   (byte_at AST.size_pointer
    1047                      (Pointers.offv (Pointers.poff ptr2))
     1047                     (Pointers.offv ptr2.Pointers.poff)
    10481048                     (ByteValues.part_no p)))
    10491049             in
  • extracted/bind_new.ml

    r2951 r3043  
    3535    ('a1, 'a2) bind_new -> 'a3 **)
    3636let rec bind_new_rect_Type4 h_bret h_bnew = function
    37 | Bret x_18232 -> h_bret x_18232
    38 | Bnew x_18234 ->
    39   h_bnew x_18234 (fun x_18233 ->
    40     bind_new_rect_Type4 h_bret h_bnew (x_18234 x_18233))
     37| Bret x_18260 -> h_bret x_18260
     38| Bnew x_18262 ->
     39  h_bnew x_18262 (fun x_18261 ->
     40    bind_new_rect_Type4 h_bret h_bnew (x_18262 x_18261))
    4141
    4242(** val bind_new_rect_Type3 :
     
    4444    ('a1, 'a2) bind_new -> 'a3 **)
    4545let rec bind_new_rect_Type3 h_bret h_bnew = function
    46 | Bret x_18244 -> h_bret x_18244
    47 | Bnew x_18246 ->
    48   h_bnew x_18246 (fun x_18245 ->
    49     bind_new_rect_Type3 h_bret h_bnew (x_18246 x_18245))
     46| Bret x_18272 -> h_bret x_18272
     47| Bnew x_18274 ->
     48  h_bnew x_18274 (fun x_18273 ->
     49    bind_new_rect_Type3 h_bret h_bnew (x_18274 x_18273))
    5050
    5151(** val bind_new_rect_Type2 :
     
    5353    ('a1, 'a2) bind_new -> 'a3 **)
    5454let rec bind_new_rect_Type2 h_bret h_bnew = function
    55 | Bret x_18250 -> h_bret x_18250
    56 | Bnew x_18252 ->
    57   h_bnew x_18252 (fun x_18251 ->
    58     bind_new_rect_Type2 h_bret h_bnew (x_18252 x_18251))
     55| Bret x_18278 -> h_bret x_18278
     56| Bnew x_18280 ->
     57  h_bnew x_18280 (fun x_18279 ->
     58    bind_new_rect_Type2 h_bret h_bnew (x_18280 x_18279))
    5959
    6060(** val bind_new_rect_Type1 :
     
    6262    ('a1, 'a2) bind_new -> 'a3 **)
    6363let rec bind_new_rect_Type1 h_bret h_bnew = function
    64 | Bret x_18256 -> h_bret x_18256
    65 | Bnew x_18258 ->
    66   h_bnew x_18258 (fun x_18257 ->
    67     bind_new_rect_Type1 h_bret h_bnew (x_18258 x_18257))
     64| Bret x_18284 -> h_bret x_18284
     65| Bnew x_18286 ->
     66  h_bnew x_18286 (fun x_18285 ->
     67    bind_new_rect_Type1 h_bret h_bnew (x_18286 x_18285))
    6868
    6969(** val bind_new_rect_Type0 :
     
    7171    ('a1, 'a2) bind_new -> 'a3 **)
    7272let rec bind_new_rect_Type0 h_bret h_bnew = function
    73 | Bret x_18262 -> h_bret x_18262
    74 | Bnew x_18264 ->
    75   h_bnew x_18264 (fun x_18263 ->
    76     bind_new_rect_Type0 h_bret h_bnew (x_18264 x_18263))
     73| Bret x_18290 -> h_bret x_18290
     74| Bnew x_18292 ->
     75  h_bnew x_18292 (fun x_18291 ->
     76    bind_new_rect_Type0 h_bret h_bnew (x_18292 x_18291))
    7777
    7878(** val bind_new_inv_rect_Type4 :
  • extracted/bitVectorTrie.ml

    r2951 r3043  
    4949    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    5050    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    51 let rec bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub x_14803 = function
    52 | Leaf x_14805 -> h_Leaf x_14805
    53 | Node (n, x_14807, x_14806) ->
    54   h_Node n x_14807 x_14806
    55     (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_14807)
    56     (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_14806)
     51let rec bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub x_14816 = function
     52| Leaf x_14818 -> h_Leaf x_14818
     53| Node (n, x_14820, x_14819) ->
     54  h_Node n x_14820 x_14819
     55    (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_14820)
     56    (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_14819)
    5757| Stub n -> h_Stub n
    5858
     
    6060    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    6161    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    62 let rec bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub x_14819 = function
    63 | Leaf x_14821 -> h_Leaf x_14821
    64 | Node (n, x_14823, x_14822) ->
    65   h_Node n x_14823 x_14822
    66     (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_14823)
    67     (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_14822)
     62let rec bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub x_14832 = function
     63| Leaf x_14834 -> h_Leaf x_14834
     64| Node (n, x_14836, x_14835) ->
     65  h_Node n x_14836 x_14835
     66    (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_14836)
     67    (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_14835)
    6868| Stub n -> h_Stub n
    6969
     
    7171    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    7272    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    73 let rec bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub x_14827 = function
    74 | Leaf x_14829 -> h_Leaf x_14829
    75 | Node (n, x_14831, x_14830) ->
    76   h_Node n x_14831 x_14830
    77     (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_14831)
    78     (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_14830)
     73let rec bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub x_14840 = function
     74| Leaf x_14842 -> h_Leaf x_14842
     75| Node (n, x_14844, x_14843) ->
     76  h_Node n x_14844 x_14843
     77    (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_14844)
     78    (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_14843)
    7979| Stub n -> h_Stub n
    8080
     
    8282    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    8383    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    84 let rec bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub x_14835 = function
    85 | Leaf x_14837 -> h_Leaf x_14837
    86 | Node (n, x_14839, x_14838) ->
    87   h_Node n x_14839 x_14838
    88     (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_14839)
    89     (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_14838)
     84let rec bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub x_14848 = function
     85| Leaf x_14850 -> h_Leaf x_14850
     86| Node (n, x_14852, x_14851) ->
     87  h_Node n x_14852 x_14851
     88    (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_14852)
     89    (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_14851)
    9090| Stub n -> h_Stub n
    9191
     
    9393    ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2
    9494    -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **)
    95 let rec bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub x_14843 = function
    96 | Leaf x_14845 -> h_Leaf x_14845
    97 | Node (n, x_14847, x_14846) ->
    98   h_Node n x_14847 x_14846
    99     (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_14847)
    100     (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_14846)
     95let rec bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub x_14856 = function
     96| Leaf x_14858 -> h_Leaf x_14858
     97| Node (n, x_14860, x_14859) ->
     98  h_Node n x_14860 x_14859
     99    (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_14860)
     100    (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_14859)
    101101| Stub n -> h_Stub n
    102102
  • extracted/byteValues.ml

    r3001 r3043  
    8989    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    9090    'a1 **)
    91 let rec program_counter_rect_Type4 h_mk_program_counter x_2980 =
    92   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_2980 in
     91let rec program_counter_rect_Type4 h_mk_program_counter x_6152 =
     92  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6152 in
    9393  h_mk_program_counter pc_block0 pc_offset0
    9494
     
    9696    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    9797    'a1 **)
    98 let rec program_counter_rect_Type5 h_mk_program_counter x_2982 =
    99   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_2982 in
     98let rec program_counter_rect_Type5 h_mk_program_counter x_6154 =
     99  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6154 in
    100100  h_mk_program_counter pc_block0 pc_offset0
    101101
     
    103103    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    104104    'a1 **)
    105 let rec program_counter_rect_Type3 h_mk_program_counter x_2984 =
    106   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_2984 in
     105let rec program_counter_rect_Type3 h_mk_program_counter x_6156 =
     106  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6156 in
    107107  h_mk_program_counter pc_block0 pc_offset0
    108108
     
    110110    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    111111    'a1 **)
    112 let rec program_counter_rect_Type2 h_mk_program_counter x_2986 =
    113   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_2986 in
     112let rec program_counter_rect_Type2 h_mk_program_counter x_6158 =
     113  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6158 in
    114114  h_mk_program_counter pc_block0 pc_offset0
    115115
     
    117117    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    118118    'a1 **)
    119 let rec program_counter_rect_Type1 h_mk_program_counter x_2988 =
    120   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_2988 in
     119let rec program_counter_rect_Type1 h_mk_program_counter x_6160 =
     120  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6160 in
    121121  h_mk_program_counter pc_block0 pc_offset0
    122122
     
    124124    (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter ->
    125125    'a1 **)
    126 let rec program_counter_rect_Type0 h_mk_program_counter x_2990 =
    127   let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_2990 in
     126let rec program_counter_rect_Type0 h_mk_program_counter x_6162 =
     127  let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6162 in
    128128  h_mk_program_counter pc_block0 pc_offset0
    129129
     
    215215
    216216(** val part_rect_Type4 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    217 let rec part_rect_Type4 h_mk_part x_3006 =
    218   let part_no = x_3006 in h_mk_part part_no __
     217let rec part_rect_Type4 h_mk_part x_6178 =
     218  let part_no = x_6178 in h_mk_part part_no __
    219219
    220220(** val part_rect_Type5 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    221 let rec part_rect_Type5 h_mk_part x_3008 =
    222   let part_no = x_3008 in h_mk_part part_no __
     221let rec part_rect_Type5 h_mk_part x_6180 =
     222  let part_no = x_6180 in h_mk_part part_no __
    223223
    224224(** val part_rect_Type3 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    225 let rec part_rect_Type3 h_mk_part x_3010 =
    226   let part_no = x_3010 in h_mk_part part_no __
     225let rec part_rect_Type3 h_mk_part x_6182 =
     226  let part_no = x_6182 in h_mk_part part_no __
    227227
    228228(** val part_rect_Type2 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    229 let rec part_rect_Type2 h_mk_part x_3012 =
    230   let part_no = x_3012 in h_mk_part part_no __
     229let rec part_rect_Type2 h_mk_part x_6184 =
     230  let part_no = x_6184 in h_mk_part part_no __
    231231
    232232(** val part_rect_Type1 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    233 let rec part_rect_Type1 h_mk_part x_3014 =
    234   let part_no = x_3014 in h_mk_part part_no __
     233let rec part_rect_Type1 h_mk_part x_6186 =
     234  let part_no = x_6186 in h_mk_part part_no __
    235235
    236236(** val part_rect_Type0 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **)
    237 let rec part_rect_Type0 h_mk_part x_3016 =
    238   let part_no = x_3016 in h_mk_part part_no __
     237let rec part_rect_Type0 h_mk_part x_6188 =
     238  let part_no = x_6188 in h_mk_part part_no __
    239239
    240240(** val part_no : part -> Nat.nat **)
     
    486486| BVundef -> h_BVundef
    487487| BVnonzero -> h_BVnonzero
    488 | BVXor (x_3050, x_3049, x_3048) -> h_BVXor x_3050 x_3049 x_3048
    489 | BVByte x_3051 -> h_BVByte x_3051
    490 | BVnull x_3052 -> h_BVnull x_3052
    491 | BVptr (x_3054, x_3053) -> h_BVptr x_3054 x_3053
    492 | BVpc (x_3056, x_3055) -> h_BVpc x_3056 x_3055
     488| BVXor (x_6222, x_6221, x_6220) -> h_BVXor x_6222 x_6221 x_6220
     489| BVByte x_6223 -> h_BVByte x_6223
     490| BVnull x_6224 -> h_BVnull x_6224
     491| BVptr (x_6226, x_6225) -> h_BVptr x_6226 x_6225
     492| BVpc (x_6228, x_6227) -> h_BVpc x_6228 x_6227
    493493
    494494(** val beval_rect_Type5 :
     
    500500| BVundef -> h_BVundef
    501501| BVnonzero -> h_BVnonzero
    502 | BVXor (x_3067, x_3066, x_3065) -> h_BVXor x_3067 x_3066 x_3065
    503 | BVByte x_3068 -> h_BVByte x_3068
    504 | BVnull x_3069 -> h_BVnull x_3069
    505 | BVptr (x_3071, x_3070) -> h_BVptr x_3071 x_3070
    506 | BVpc (x_3073, x_3072) -> h_BVpc x_3073 x_3072
     502| BVXor (x_6239, x_6238, x_6237) -> h_BVXor x_6239 x_6238 x_6237
     503| BVByte x_6240 -> h_BVByte x_6240
     504| BVnull x_6241 -> h_BVnull x_6241
     505| BVptr (x_6243, x_6242) -> h_BVptr x_6243 x_6242
     506| BVpc (x_6245, x_6244) -> h_BVpc x_6245 x_6244
    507507
    508508(** val beval_rect_Type3 :
     
    514514| BVundef -> h_BVundef
    515515| BVnonzero -> h_BVnonzero
    516 | BVXor (x_3084, x_3083, x_3082) -> h_BVXor x_3084 x_3083 x_3082
    517 | BVByte x_3085 -> h_BVByte x_3085
    518 | BVnull x_3086 -> h_BVnull x_3086
    519 | BVptr (x_3088, x_3087) -> h_BVptr x_3088 x_3087
    520 | BVpc (x_3090, x_3089) -> h_BVpc x_3090 x_3089
     516| BVXor (x_6256, x_6255, x_6254) -> h_BVXor x_6256 x_6255 x_6254
     517| BVByte x_6257 -> h_BVByte x_6257
     518| BVnull x_6258 -> h_BVnull x_6258
     519| BVptr (x_6260, x_6259) -> h_BVptr x_6260 x_6259
     520| BVpc (x_6262, x_6261) -> h_BVpc x_6262 x_6261
    521521
    522522(** val beval_rect_Type2 :
     
    528528| BVundef -> h_BVundef
    529529| BVnonzero -> h_BVnonzero
    530 | BVXor (x_3101, x_3100, x_3099) -> h_BVXor x_3101 x_3100 x_3099
    531 | BVByte x_3102 -> h_BVByte x_3102
    532 | BVnull x_3103 -> h_BVnull x_3103
    533 | BVptr (x_3105, x_3104) -> h_BVptr x_3105 x_3104
    534 | BVpc (x_3107, x_3106) -> h_BVpc x_3107 x_3106
     530| BVXor (x_6273, x_6272, x_6271) -> h_BVXor x_6273 x_6272 x_6271
     531| BVByte x_6274 -> h_BVByte x_6274
     532| BVnull x_6275 -> h_BVnull x_6275
     533| BVptr (x_6277, x_6276) -> h_BVptr x_6277 x_6276
     534| BVpc (x_6279, x_6278) -> h_BVpc x_6279 x_6278
    535535
    536536(** val beval_rect_Type1 :
     
    542542| BVundef -> h_BVundef
    543543| BVnonzero -> h_BVnonzero
    544 | BVXor (x_3118, x_3117, x_3116) -> h_BVXor x_3118 x_3117 x_3116
    545 | BVByte x_3119 -> h_BVByte x_3119
    546 | BVnull x_3120 -> h_BVnull x_3120
    547 | BVptr (x_3122, x_3121) -> h_BVptr x_3122 x_3121
    548 | BVpc (x_3124, x_3123) -> h_BVpc x_3124 x_3123
     544| BVXor (x_6290, x_6289, x_6288) -> h_BVXor x_6290 x_6289 x_6288
     545| BVByte x_6291 -> h_BVByte x_6291
     546| BVnull x_6292 -> h_BVnull x_6292
     547| BVptr (x_6294, x_6293) -> h_BVptr x_6294 x_6293
     548| BVpc (x_6296, x_6295) -> h_BVpc x_6296 x_6295
    549549
    550550(** val beval_rect_Type0 :
     
    556556| BVundef -> h_BVundef
    557557| BVnonzero -> h_BVnonzero
    558 | BVXor (x_3135, x_3134, x_3133) -> h_BVXor x_3135 x_3134 x_3133
    559 | BVByte x_3136 -> h_BVByte x_3136
    560 | BVnull x_3137 -> h_BVnull x_3137
    561 | BVptr (x_3139, x_3138) -> h_BVptr x_3139 x_3138
    562 | BVpc (x_3141, x_3140) -> h_BVpc x_3141 x_3140
     558| BVXor (x_6307, x_6306, x_6305) -> h_BVXor x_6307 x_6306 x_6305
     559| BVByte x_6308 -> h_BVByte x_6308
     560| BVnull x_6309 -> h_BVnull x_6309
     561| BVptr (x_6311, x_6310) -> h_BVptr x_6311 x_6310
     562| BVpc (x_6313, x_6312) -> h_BVpc x_6313 x_6312
    563563
    564564(** val beval_inv_rect_Type4 :
     
    685685                         (Bool.andb (Nat.eqb (part_no p1) Nat.O)
    686686                           (Nat.eqb (part_no p2) (Nat.S Nat.O)))
    687                          (Pointers.eq_block (Pointers.pblock ptr1)
    688                            (Pointers.pblock ptr2)))
     687                         (Pointers.eq_block ptr1.Pointers.pblock
     688                           ptr2.Pointers.pblock))
    689689                       (eq_bv_suffix (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    690690                         (Nat.S (Nat.S (Nat.S Nat.O)))))))) (Nat.S (Nat.S
     
    692692                         Nat.O)))))))) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    693693                         (Nat.S (Nat.S (Nat.S Nat.O))))))))
    694                          (Pointers.offv (Pointers.poff ptr1))
    695                          (Pointers.offv (Pointers.poff ptr2))) with
     694                         (Pointers.offv ptr1.Pointers.poff)
     695                         (Pointers.offv ptr2.Pointers.poff)) with
    696696               | Bool.True ->
    697697                 Obj.magic (Monad.m_return0 (Monad.max_def Errors.res0) ptr2)
     
    985985    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    986986let rec bebit_rect_Type4 h_BBbit h_BBundef h_BBptrcarry = function
    987 | BBbit x_3299 -> h_BBbit x_3299
     987| BBbit x_6471 -> h_BBbit x_6471
    988988| BBundef -> h_BBundef
    989 | BBptrcarry (x_3302, x_3301, p, x_3300) ->
    990   h_BBptrcarry x_3302 x_3301 p x_3300
     989| BBptrcarry (x_6474, x_6473, p, x_6472) ->
     990  h_BBptrcarry x_6474 x_6473 p x_6472
    991991
    992992(** val bebit_rect_Type5 :
     
    994994    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    995995let rec bebit_rect_Type5 h_BBbit h_BBundef h_BBptrcarry = function
    996 | BBbit x_3307 -> h_BBbit x_3307
     996| BBbit x_6479 -> h_BBbit x_6479
    997997| BBundef -> h_BBundef
    998 | BBptrcarry (x_3310, x_3309, p, x_3308) ->
    999   h_BBptrcarry x_3310 x_3309 p x_3308
     998| BBptrcarry (x_6482, x_6481, p, x_6480) ->
     999  h_BBptrcarry x_6482 x_6481 p x_6480
    10001000
    10011001(** val bebit_rect_Type3 :
     
    10031003    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    10041004let rec bebit_rect_Type3 h_BBbit h_BBundef h_BBptrcarry = function
    1005 | BBbit x_3315 -> h_BBbit x_3315
     1005| BBbit x_6487 -> h_BBbit x_6487
    10061006| BBundef -> h_BBundef
    1007 | BBptrcarry (x_3318, x_3317, p, x_3316) ->
    1008   h_BBptrcarry x_3318 x_3317 p x_3316
     1007| BBptrcarry (x_6490, x_6489, p, x_6488) ->
     1008  h_BBptrcarry x_6490 x_6489 p x_6488
    10091009
    10101010(** val bebit_rect_Type2 :
     
    10121012    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    10131013let rec bebit_rect_Type2 h_BBbit h_BBundef h_BBptrcarry = function
    1014 | BBbit x_3323 -> h_BBbit x_3323
     1014| BBbit x_6495 -> h_BBbit x_6495
    10151015| BBundef -> h_BBundef
    1016 | BBptrcarry (x_3326, x_3325, p, x_3324) ->
    1017   h_BBptrcarry x_3326 x_3325 p x_3324
     1016| BBptrcarry (x_6498, x_6497, p, x_6496) ->
     1017  h_BBptrcarry x_6498 x_6497 p x_6496
    10181018
    10191019(** val bebit_rect_Type1 :
     
    10211021    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    10221022let rec bebit_rect_Type1 h_BBbit h_BBundef h_BBptrcarry = function
    1023 | BBbit x_3331 -> h_BBbit x_3331
     1023| BBbit x_6503 -> h_BBbit x_6503
    10241024| BBundef -> h_BBundef
    1025 | BBptrcarry (x_3334, x_3333, p, x_3332) ->
    1026   h_BBptrcarry x_3334 x_3333 p x_3332
     1025| BBptrcarry (x_6506, x_6505, p, x_6504) ->
     1026  h_BBptrcarry x_6506 x_6505 p x_6504
    10271027
    10281028(** val bebit_rect_Type0 :
     
    10301030    BitVector.bitVector -> 'a1) -> bebit -> 'a1 **)
    10311031let rec bebit_rect_Type0 h_BBbit h_BBundef h_BBptrcarry = function
    1032 | BBbit x_3339 -> h_BBbit x_3339
     1032| BBbit x_6511 -> h_BBbit x_6511
    10331033| BBundef -> h_BBundef
    1034 | BBptrcarry (x_3342, x_3341, p, x_3340) ->
    1035   h_BBptrcarry x_3342 x_3341 p x_3340
     1034| BBptrcarry (x_6514, x_6513, p, x_6512) ->
     1035  h_BBptrcarry x_6514 x_6513 p x_6512
    10361036
    10371037(** val bebit_inv_rect_Type4 :
  • extracted/cexec.ml

    r3001 r3043  
    537537        | Values.Vptr ptr ->
    538538          Obj.magic (Errors.OK { Types.fst = { Types.fst =
    539             (Pointers.pblock ptr); Types.snd = (Pointers.poff ptr) };
    540             Types.snd = tr })))
     539            ptr.Pointers.pblock; Types.snd = ptr.Pointers.poff }; Types.snd =
     540            tr })))
    541541  | Csyntax.Eaddrof x ->
    542542    Errors.Error (Errors.msg ErrorMessages.BadLvalueTerm)
     
    11381138        (Obj.magic
    11391139          (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    1140             (Globalenvs.find_symbol ge (AST.prog_main p)))) (fun b ->
     1140            (Globalenvs.find_symbol ge p.AST.prog_main))) (fun b ->
    11411141        Monad.m_bind0 (Monad.max_def Errors.res0)
    11421142          (Obj.magic
    11431143            (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    11441144              (Globalenvs.find_funct_ptr ge b))) (fun f ->
    1145           Obj.magic (Errors.OK (Csem.Callstate ((AST.prog_main p), f,
    1146             List.Nil, Csem.Kstop, m0)))))))
     1145          Obj.magic (Errors.OK (Csem.Callstate (p.AST.prog_main, f, List.Nil,
     1146            Csem.Kstop, m0)))))))
    11471147
    11481148(** val is_final : Csem.state -> Integers.int Types.option **)
  • extracted/classifyOp.ml

    r3001 r3043  
    9696    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    9797    -> classify_add_cases -> 'a1 **)
    98 let rec classify_add_cases_rect_Type4 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_9258 x_9257 = function
     98let rec classify_add_cases_rect_Type4 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7441 x_7440 = function
    9999| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    100100| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    108108    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    109109    -> classify_add_cases -> 'a1 **)
    110 let rec classify_add_cases_rect_Type5 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_9265 x_9264 = function
     110let rec classify_add_cases_rect_Type5 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7448 x_7447 = function
    111111| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    112112| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    120120    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    121121    -> classify_add_cases -> 'a1 **)
    122 let rec classify_add_cases_rect_Type3 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_9272 x_9271 = function
     122let rec classify_add_cases_rect_Type3 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7455 x_7454 = function
    123123| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    124124| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    132132    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    133133    -> classify_add_cases -> 'a1 **)
    134 let rec classify_add_cases_rect_Type2 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_9279 x_9278 = function
     134let rec classify_add_cases_rect_Type2 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7462 x_7461 = function
    135135| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    136136| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    144144    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    145145    -> classify_add_cases -> 'a1 **)
    146 let rec classify_add_cases_rect_Type1 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_9286 x_9285 = function
     146let rec classify_add_cases_rect_Type1 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7469 x_7468 = function
    147147| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    148148| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    156156    (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0
    157157    -> classify_add_cases -> 'a1 **)
    158 let rec classify_add_cases_rect_Type0 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_9293 x_9292 = function
     158let rec classify_add_cases_rect_Type0 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7476 x_7475 = function
    159159| Add_case_ii (sz, sg) -> h_add_case_ii sz sg
    160160| Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg
     
    319319    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    320320    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    321 let rec classify_sub_cases_rect_Type4 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_9349 x_9348 = function
     321let rec classify_sub_cases_rect_Type4 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7532 x_7531 = function
    322322| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    323323| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    331331    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    332332    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    333 let rec classify_sub_cases_rect_Type5 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_9356 x_9355 = function
     333let rec classify_sub_cases_rect_Type5 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7539 x_7538 = function
    334334| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    335335| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    343343    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    344344    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    345 let rec classify_sub_cases_rect_Type3 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_9363 x_9362 = function
     345let rec classify_sub_cases_rect_Type3 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7546 x_7545 = function
    346346| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    347347| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    355355    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    356356    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    357 let rec classify_sub_cases_rect_Type2 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_9370 x_9369 = function
     357let rec classify_sub_cases_rect_Type2 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7553 x_7552 = function
    358358| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    359359| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    367367    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    368368    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    369 let rec classify_sub_cases_rect_Type1 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_9377 x_9376 = function
     369let rec classify_sub_cases_rect_Type1 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7560 x_7559 = function
    370370| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    371371| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    379379    'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 ->
    380380    Csyntax.type0 -> classify_sub_cases -> 'a1 **)
    381 let rec classify_sub_cases_rect_Type0 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_9384 x_9383 = function
     381let rec classify_sub_cases_rect_Type0 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7567 x_7566 = function
    382382| Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg
    383383| Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg
     
    519519    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    520520    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    521 let rec classify_aop_cases_rect_Type4 h_aop_case_ii h_aop_default x_9438 x_9437 = function
     521let rec classify_aop_cases_rect_Type4 h_aop_case_ii h_aop_default x_7621 x_7620 = function
    522522| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    523523| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    526526    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    527527    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    528 let rec classify_aop_cases_rect_Type5 h_aop_case_ii h_aop_default x_9443 x_9442 = function
     528let rec classify_aop_cases_rect_Type5 h_aop_case_ii h_aop_default x_7626 x_7625 = function
    529529| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    530530| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    533533    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    534534    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    535 let rec classify_aop_cases_rect_Type3 h_aop_case_ii h_aop_default x_9448 x_9447 = function
     535let rec classify_aop_cases_rect_Type3 h_aop_case_ii h_aop_default x_7631 x_7630 = function
    536536| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    537537| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    540540    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    541541    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    542 let rec classify_aop_cases_rect_Type2 h_aop_case_ii h_aop_default x_9453 x_9452 = function
     542let rec classify_aop_cases_rect_Type2 h_aop_case_ii h_aop_default x_7636 x_7635 = function
    543543| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    544544| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    547547    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    548548    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    549 let rec classify_aop_cases_rect_Type1 h_aop_case_ii h_aop_default x_9458 x_9457 = function
     549let rec classify_aop_cases_rect_Type1 h_aop_case_ii h_aop_default x_7641 x_7640 = function
    550550| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    551551| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    554554    (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0
    555555    -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **)
    556 let rec classify_aop_cases_rect_Type0 h_aop_case_ii h_aop_default x_9463 x_9462 = function
     556let rec classify_aop_cases_rect_Type0 h_aop_case_ii h_aop_default x_7646 x_7645 = function
    557557| Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg
    558558| Aop_default (ty, ty') -> h_aop_default ty ty'
     
    636636    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    637637    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    638 let rec classify_cmp_cases_rect_Type4 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_9504 x_9503 = function
     638let rec classify_cmp_cases_rect_Type4 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7687 x_7686 = function
    639639| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    640640| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    645645    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    646646    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    647 let rec classify_cmp_cases_rect_Type5 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_9510 x_9509 = function
     647let rec classify_cmp_cases_rect_Type5 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7693 x_7692 = function
    648648| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    649649| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    654654    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    655655    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    656 let rec classify_cmp_cases_rect_Type3 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_9516 x_9515 = function
     656let rec classify_cmp_cases_rect_Type3 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7699 x_7698 = function
    657657| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    658658| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    663663    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    664664    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    665 let rec classify_cmp_cases_rect_Type2 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_9522 x_9521 = function
     665let rec classify_cmp_cases_rect_Type2 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7705 x_7704 = function
    666666| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    667667| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    672672    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    673673    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    674 let rec classify_cmp_cases_rect_Type1 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_9528 x_9527 = function
     674let rec classify_cmp_cases_rect_Type1 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7711 x_7710 = function
    675675| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    676676| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    681681    Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) ->
    682682    Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **)
    683 let rec classify_cmp_cases_rect_Type0 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_9534 x_9533 = function
     683let rec classify_cmp_cases_rect_Type0 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7717 x_7716 = function
    684684| Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg
    685685| Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty
     
    780780    -> 'a1 **)
    781781let rec classify_fun_cases_rect_Type4 h_fun_case_f h_fun_default = function
    782 | Fun_case_f (x_9582, x_9581) -> h_fun_case_f x_9582 x_9581
     782| Fun_case_f (x_7765, x_7764) -> h_fun_case_f x_7765 x_7764
    783783| Fun_default -> h_fun_default
    784784
     
    787787    -> 'a1 **)
    788788let rec classify_fun_cases_rect_Type5 h_fun_case_f h_fun_default = function
    789 | Fun_case_f (x_9587, x_9586) -> h_fun_case_f x_9587 x_9586
     789| Fun_case_f (x_7770, x_7769) -> h_fun_case_f x_7770 x_7769
    790790| Fun_default -> h_fun_default
    791791
     
    794794    -> 'a1 **)
    795795let rec classify_fun_cases_rect_Type3 h_fun_case_f h_fun_default = function
    796 | Fun_case_f (x_9592, x_9591) -> h_fun_case_f x_9592 x_9591
     796| Fun_case_f (x_7775, x_7774) -> h_fun_case_f x_7775 x_7774
    797797| Fun_default -> h_fun_default
    798798
     
    801801    -> 'a1 **)
    802802let rec classify_fun_cases_rect_Type2 h_fun_case_f h_fun_default = function
    803 | Fun_case_f (x_9597, x_9596) -> h_fun_case_f x_9597 x_9596
     803| Fun_case_f (x_7780, x_7779) -> h_fun_case_f x_7780 x_7779
    804804| Fun_default -> h_fun_default
    805805
     
    808808    -> 'a1 **)
    809809let rec classify_fun_cases_rect_Type1 h_fun_case_f h_fun_default = function
    810 | Fun_case_f (x_9602, x_9601) -> h_fun_case_f x_9602 x_9601
     810| Fun_case_f (x_7785, x_7784) -> h_fun_case_f x_7785 x_7784
    811811| Fun_default -> h_fun_default
    812812
     
    815815    -> 'a1 **)
    816816let rec classify_fun_cases_rect_Type0 h_fun_case_f h_fun_default = function
    817 | Fun_case_f (x_9607, x_9606) -> h_fun_case_f x_9607 x_9606
     817| Fun_case_f (x_7790, x_7789) -> h_fun_case_f x_7790 x_7789
    818818| Fun_default -> h_fun_default
    819819
  • extracted/cminor_semantics.ml

    r3001 r3043  
    123123let rec cont_rect_Type4 h_Kend h_Kseq h_Kblock = function
    124124| Kend -> h_Kend
    125 | Kseq (x_16523, x_16522) ->
    126   h_Kseq x_16523 x_16522 (cont_rect_Type4 h_Kend h_Kseq h_Kblock x_16522)
    127 | Kblock x_16524 ->
    128   h_Kblock x_16524 (cont_rect_Type4 h_Kend h_Kseq h_Kblock x_16524)
     125| Kseq (x_218, x_217) ->
     126  h_Kseq x_218 x_217 (cont_rect_Type4 h_Kend h_Kseq h_Kblock x_217)
     127| Kblock x_219 ->
     128  h_Kblock x_219 (cont_rect_Type4 h_Kend h_Kseq h_Kblock x_219)
    129129
    130130(** val cont_rect_Type3 :
     
    133133let rec cont_rect_Type3 h_Kend h_Kseq h_Kblock = function
    134134| Kend -> h_Kend
    135 | Kseq (x_16537, x_16536) ->
    136   h_Kseq x_16537 x_16536 (cont_rect_Type3 h_Kend h_Kseq h_Kblock x_16536)
    137 | Kblock x_16538 ->
    138   h_Kblock x_16538 (cont_rect_Type3 h_Kend h_Kseq h_Kblock x_16538)
     135| Kseq (x_232, x_231) ->
     136  h_Kseq x_232 x_231 (cont_rect_Type3 h_Kend h_Kseq h_Kblock x_231)
     137| Kblock x_233 ->
     138  h_Kblock x_233 (cont_rect_Type3 h_Kend h_Kseq h_Kblock x_233)
    139139
    140140(** val cont_rect_Type2 :
     
    143143let rec cont_rect_Type2 h_Kend h_Kseq h_Kblock = function
    144144| Kend -> h_Kend
    145 | Kseq (x_16544, x_16543) ->
    146   h_Kseq x_16544 x_16543 (cont_rect_Type2 h_Kend h_Kseq h_Kblock x_16543)
    147 | Kblock x_16545 ->
    148   h_Kblock x_16545 (cont_rect_Type2 h_Kend h_Kseq h_Kblock x_16545)
     145| Kseq (x_239, x_238) ->
     146  h_Kseq x_239 x_238 (cont_rect_Type2 h_Kend h_Kseq h_Kblock x_238)
     147| Kblock x_240 ->
     148  h_Kblock x_240 (cont_rect_Type2 h_Kend h_Kseq h_Kblock x_240)
    149149
    150150(** val cont_rect_Type1 :
     
    153153let rec cont_rect_Type1 h_Kend h_Kseq h_Kblock = function
    154154| Kend -> h_Kend
    155 | Kseq (x_16551, x_16550) ->
    156   h_Kseq x_16551 x_16550 (cont_rect_Type1 h_Kend h_Kseq h_Kblock x_16550)
    157 | Kblock x_16552 ->
    158   h_Kblock x_16552 (cont_rect_Type1 h_Kend h_Kseq h_Kblock x_16552)
     155| Kseq (x_246, x_245) ->
     156  h_Kseq x_246 x_245 (cont_rect_Type1 h_Kend h_Kseq h_Kblock x_245)
     157| Kblock x_247 ->
     158  h_Kblock x_247 (cont_rect_Type1 h_Kend h_Kseq h_Kblock x_247)
    159159
    160160(** val cont_rect_Type0 :
     
    163163let rec cont_rect_Type0 h_Kend h_Kseq h_Kblock = function
    164164| Kend -> h_Kend
    165 | Kseq (x_16558, x_16557) ->
    166   h_Kseq x_16558 x_16557 (cont_rect_Type0 h_Kend h_Kseq h_Kblock x_16557)
    167 | Kblock x_16559 ->
    168   h_Kblock x_16559 (cont_rect_Type0 h_Kend h_Kseq h_Kblock x_16559)
     165| Kseq (x_253, x_252) ->
     166  h_Kseq x_253 x_252 (cont_rect_Type0 h_Kend h_Kseq h_Kblock x_252)
     167| Kblock x_254 ->
     168  h_Kblock x_254 (cont_rect_Type0 h_Kend h_Kseq h_Kblock x_254)
    169169
    170170(** val cont_inv_rect_Type4 :
     
    226226let rec stack_rect_Type4 h_SStop h_Scall = function
    227227| SStop -> h_SStop
    228 | Scall (dest, f, x_16618, en, k, x_16614) ->
    229   h_Scall dest f x_16618 en __ __ k __ x_16614
    230     (stack_rect_Type4 h_SStop h_Scall x_16614)
     228| Scall (dest, f, x_313, en, k, x_309) ->
     229  h_Scall dest f x_313 en __ __ k __ x_309
     230    (stack_rect_Type4 h_SStop h_Scall x_309)
    231231
    232232(** val stack_rect_Type3 :
     
    236236let rec stack_rect_Type3 h_SStop h_Scall = function
    237237| SStop -> h_SStop
    238 | Scall (dest, f, x_16634, en, k, x_16630) ->
    239   h_Scall dest f x_16634 en __ __ k __ x_16630
    240     (stack_rect_Type3 h_SStop h_Scall x_16630)
     238| Scall (dest, f, x_329, en, k, x_325) ->
     239  h_Scall dest f x_329 en __ __ k __ x_325
     240    (stack_rect_Type3 h_SStop h_Scall x_325)
    241241
    242242(** val stack_rect_Type2 :
     
    246246let rec stack_rect_Type2 h_SStop h_Scall = function
    247247| SStop -> h_SStop
    248 | Scall (dest, f, x_16642, en, k, x_16638) ->
    249   h_Scall dest f x_16642 en __ __ k __ x_16638
    250     (stack_rect_Type2 h_SStop h_Scall x_16638)
     248| Scall (dest, f, x_337, en, k, x_333) ->
     249  h_Scall dest f x_337 en __ __ k __ x_333
     250    (stack_rect_Type2 h_SStop h_Scall x_333)
    251251
    252252(** val stack_rect_Type1 :
     
    256256let rec stack_rect_Type1 h_SStop h_Scall = function
    257257| SStop -> h_SStop
    258 | Scall (dest, f, x_16650, en, k, x_16646) ->
    259   h_Scall dest f x_16650 en __ __ k __ x_16646
    260     (stack_rect_Type1 h_SStop h_Scall x_16646)
     258| Scall (dest, f, x_345, en, k, x_341) ->
     259  h_Scall dest f x_345 en __ __ k __ x_341
     260    (stack_rect_Type1 h_SStop h_Scall x_341)
    261261
    262262(** val stack_rect_Type0 :
     
    266266let rec stack_rect_Type0 h_SStop h_Scall = function
    267267| SStop -> h_SStop
    268 | Scall (dest, f, x_16658, en, k, x_16654) ->
    269   h_Scall dest f x_16658 en __ __ k __ x_16654
    270     (stack_rect_Type0 h_SStop h_Scall x_16654)
     268| Scall (dest, f, x_353, en, k, x_349) ->
     269  h_Scall dest f x_353 en __ __ k __ x_349
     270    (stack_rect_Type0 h_SStop h_Scall x_349)
    271271
    272272(** val stack_inv_rect_Type4 :
     
    706706                  (Obj.magic
    707707                    (trace_map_inv (fun e ->
    708                       let { Types.dpi1 = ty; Types.dpi2 = e1 } = e in
    709                       (fun _ -> eval_expr ge ty e1 en sp m)) args))
     708                      let { Types.dpi1 = ty; Types.dpi2 = e0 } = e in
     709                      (fun _ -> eval_expr ge ty e0 en sp m)) args))
    710710                  (fun tr' vargs ->
    711711                  Monad.m_return0 (Monad.max_def Errors.res0) { Types.fst =
     
    740740                 (GenMem.free m sp), st0)) }))
    741741         | Types.Some e ->
    742            let { Types.dpi1 = ty; Types.dpi2 = e1 } = e in
     742           let { Types.dpi1 = ty; Types.dpi2 = e0 } = e in
    743743           (fun _ ->
    744744           Obj.magic
    745745             (Monad.m_bind2 (Monad.max_def Errors.res0)
    746                (Obj.magic (eval_expr ge ty e1 en sp m)) (fun tr v ->
     746               (Obj.magic (eval_expr ge ty e0 en sp m)) (fun tr v ->
    747747               Monad.m_return0 (Monad.max_def Errors.res0) { Types.fst = tr;
    748748                 Types.snd = (Returnstate ((Types.Some v),
     
    786786         (Obj.magic
    787787           (IOMonad.err_to_io
    788              (IO.check_eventval_list args (AST.sig_args (AST.ef_sig fn)))))
     788             (IO.check_eventval_list args fn.AST.ef_sig.AST.sig_args)))
    789789         (fun evargs ->
    790790         Monad.m_bind0 (Monad.max_def IOMonad.iOMonad)
    791791           (Obj.magic
    792              (IO.do_io (AST.ef_id fn) evargs
    793                (AST.proj_sig_res (AST.ef_sig fn)))) (fun evres ->
     792             (IO.do_io fn.AST.ef_id evargs (AST.proj_sig_res fn.AST.ef_sig)))
     793           (fun evres ->
    794794           let res =
    795              match AST.sig_res (AST.ef_sig fn) with
     795             match fn.AST.ef_sig.AST.sig_res with
    796796             | Types.None -> Types.None
    797797             | Types.Some x0 ->
    798                Types.Some
    799                  (IO.mk_val (AST.proj_sig_res (AST.ef_sig fn)) evres)
     798               Types.Some (IO.mk_val (AST.proj_sig_res fn.AST.ef_sig) evres)
    800799           in
    801800           Monad.m_return0 (Monad.max_def IOMonad.iOMonad) { Types.fst =
    802              (Events.eextcall (AST.ef_id fn) evargs
    803                (IO.mk_eventval (AST.proj_sig_res (AST.ef_sig fn)) evres));
     801             (Events.eextcall fn.AST.ef_id evargs
     802               (IO.mk_eventval (AST.proj_sig_res fn.AST.ef_sig) evres));
    804803             Types.snd = (Returnstate (res, m, st0)) }))))
    805804| Returnstate (result, m, st0) ->
     
    884883        (Obj.magic
    885884          (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    886             (Globalenvs.find_symbol ge (AST.prog_main p)))) (fun b ->
     885            (Globalenvs.find_symbol ge p.AST.prog_main))) (fun b ->
    887886        Monad.m_bind0 (Monad.max_def Errors.res0)
    888887          (Obj.magic
    889888            (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    890889              (Globalenvs.find_funct_ptr ge b))) (fun f ->
    891           Obj.magic (Errors.OK (Callstate ((AST.prog_main p), f, List.Nil, m,
     890          Obj.magic (Errors.OK (Callstate (p.AST.prog_main, f, List.Nil, m,
    892891            SStop)))))))
    893892
     
    914913        (Obj.magic
    915914          (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    916             (Globalenvs.find_symbol ge (AST.prog_main p)))) (fun b ->
     915            (Globalenvs.find_symbol ge p.AST.prog_main))) (fun b ->
    917916        Monad.m_bind0 (Monad.max_def Errors.res0)
    918917          (Obj.magic
    919918            (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing)
    920919              (Globalenvs.find_funct_ptr ge b))) (fun f ->
    921           Obj.magic (Errors.OK (Callstate ((AST.prog_main p), f, List.Nil, m,
     920          Obj.magic (Errors.OK (Callstate (p.AST.prog_main, f, List.Nil, m,
    922921            SStop)))))))
    923922
  • extracted/cminor_syntax.ml

    r3001 r3043  
    113113    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    114114    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    115 let rec expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_7767 = function
    116 | Id (t, x_7769) -> h_Id t x_7769
    117 | Cst (t, x_7770) -> h_Cst t x_7770
    118 | Op1 (t, t', x_7772, x_7771) ->
    119   h_Op1 t t' x_7772 x_7771
    120     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7771)
    121 | Op2 (t1, t2, t', x_7775, x_7774, x_7773) ->
    122   h_Op2 t1 t2 t' x_7775 x_7774 x_7773
    123     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_7774)
    124     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_7773)
    125 | Mem (t, x_7776) ->
    126   h_Mem t x_7776
     115let rec expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13798 = function
     116| Id (t, x_13800) -> h_Id t x_13800
     117| Cst (t, x_13801) -> h_Cst t x_13801
     118| Op1 (t, t', x_13803, x_13802) ->
     119  h_Op1 t t' x_13803 x_13802
     120    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13802)
     121| Op2 (t1, t2, t', x_13806, x_13805, x_13804) ->
     122  h_Op2 t1 t2 t' x_13806 x_13805 x_13804
     123    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13805)
     124    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13804)
     125| Mem (t, x_13807) ->
     126  h_Mem t x_13807
    127127    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    128       x_7776)
    129 | Cond (sz, sg, t, x_7779, x_7778, x_7777) ->
    130   h_Cond sz sg t x_7779 x_7778 x_7777
     128      x_13807)
     129| Cond (sz, sg, t, x_13810, x_13809, x_13808) ->
     130  h_Cond sz sg t x_13810 x_13809 x_13808
    131131    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    132       (sz, sg)) x_7779)
    133     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7778)
    134     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7777)
    135 | Ecost (t, x_7781, x_7780) ->
    136   h_Ecost t x_7781 x_7780
    137     (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7780)
     132      (sz, sg)) x_13810)
     133    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13809)
     134    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13808)
     135| Ecost (t, x_13812, x_13811) ->
     136  h_Ecost t x_13812 x_13811
     137    (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13811)
    138138
    139139(** val expr_rect_Type3 :
     
    145145    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    146146    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    147 let rec expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_7811 = function
    148 | Id (t, x_7813) -> h_Id t x_7813
    149 | Cst (t, x_7814) -> h_Cst t x_7814
    150 | Op1 (t, t', x_7816, x_7815) ->
    151   h_Op1 t t' x_7816 x_7815
    152     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7815)
    153 | Op2 (t1, t2, t', x_7819, x_7818, x_7817) ->
    154   h_Op2 t1 t2 t' x_7819 x_7818 x_7817
    155     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_7818)
    156     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_7817)
    157 | Mem (t, x_7820) ->
    158   h_Mem t x_7820
     147let rec expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13842 = function
     148| Id (t, x_13844) -> h_Id t x_13844
     149| Cst (t, x_13845) -> h_Cst t x_13845
     150| Op1 (t, t', x_13847, x_13846) ->
     151  h_Op1 t t' x_13847 x_13846
     152    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13846)
     153| Op2 (t1, t2, t', x_13850, x_13849, x_13848) ->
     154  h_Op2 t1 t2 t' x_13850 x_13849 x_13848
     155    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13849)
     156    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13848)
     157| Mem (t, x_13851) ->
     158  h_Mem t x_13851
    159159    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    160       x_7820)
    161 | Cond (sz, sg, t, x_7823, x_7822, x_7821) ->
    162   h_Cond sz sg t x_7823 x_7822 x_7821
     160      x_13851)
     161| Cond (sz, sg, t, x_13854, x_13853, x_13852) ->
     162  h_Cond sz sg t x_13854 x_13853 x_13852
    163163    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    164       (sz, sg)) x_7823)
    165     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7822)
    166     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7821)
    167 | Ecost (t, x_7825, x_7824) ->
    168   h_Ecost t x_7825 x_7824
    169     (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7824)
     164      (sz, sg)) x_13854)
     165    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13853)
     166    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13852)
     167| Ecost (t, x_13856, x_13855) ->
     168  h_Ecost t x_13856 x_13855
     169    (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13855)
    170170
    171171(** val expr_rect_Type2 :
     
    177177    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    178178    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    179 let rec expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_7833 = function
    180 | Id (t, x_7835) -> h_Id t x_7835
    181 | Cst (t, x_7836) -> h_Cst t x_7836
    182 | Op1 (t, t', x_7838, x_7837) ->
    183   h_Op1 t t' x_7838 x_7837
    184     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7837)
    185 | Op2 (t1, t2, t', x_7841, x_7840, x_7839) ->
    186   h_Op2 t1 t2 t' x_7841 x_7840 x_7839
    187     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_7840)
    188     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_7839)
    189 | Mem (t, x_7842) ->
    190   h_Mem t x_7842
     179let rec expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13864 = function
     180| Id (t, x_13866) -> h_Id t x_13866
     181| Cst (t, x_13867) -> h_Cst t x_13867
     182| Op1 (t, t', x_13869, x_13868) ->
     183  h_Op1 t t' x_13869 x_13868
     184    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13868)
     185| Op2 (t1, t2, t', x_13872, x_13871, x_13870) ->
     186  h_Op2 t1 t2 t' x_13872 x_13871 x_13870
     187    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13871)
     188    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13870)
     189| Mem (t, x_13873) ->
     190  h_Mem t x_13873
    191191    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    192       x_7842)
    193 | Cond (sz, sg, t, x_7845, x_7844, x_7843) ->
    194   h_Cond sz sg t x_7845 x_7844 x_7843
     192      x_13873)
     193| Cond (sz, sg, t, x_13876, x_13875, x_13874) ->
     194  h_Cond sz sg t x_13876 x_13875 x_13874
    195195    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    196       (sz, sg)) x_7845)
    197     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7844)
    198     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7843)
    199 | Ecost (t, x_7847, x_7846) ->
    200   h_Ecost t x_7847 x_7846
    201     (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7846)
     196      (sz, sg)) x_13876)
     197    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13875)
     198    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13874)
     199| Ecost (t, x_13878, x_13877) ->
     200  h_Ecost t x_13878 x_13877
     201    (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13877)
    202202
    203203(** val expr_rect_Type1 :
     
    209209    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    210210    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    211 let rec expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_7855 = function
    212 | Id (t, x_7857) -> h_Id t x_7857
    213 | Cst (t, x_7858) -> h_Cst t x_7858
    214 | Op1 (t, t', x_7860, x_7859) ->
    215   h_Op1 t t' x_7860 x_7859
    216     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7859)
    217 | Op2 (t1, t2, t', x_7863, x_7862, x_7861) ->
    218   h_Op2 t1 t2 t' x_7863 x_7862 x_7861
    219     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_7862)
    220     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_7861)
    221 | Mem (t, x_7864) ->
    222   h_Mem t x_7864
     211let rec expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13886 = function
     212| Id (t, x_13888) -> h_Id t x_13888
     213| Cst (t, x_13889) -> h_Cst t x_13889
     214| Op1 (t, t', x_13891, x_13890) ->
     215  h_Op1 t t' x_13891 x_13890
     216    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13890)
     217| Op2 (t1, t2, t', x_13894, x_13893, x_13892) ->
     218  h_Op2 t1 t2 t' x_13894 x_13893 x_13892
     219    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13893)
     220    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13892)
     221| Mem (t, x_13895) ->
     222  h_Mem t x_13895
    223223    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    224       x_7864)
    225 | Cond (sz, sg, t, x_7867, x_7866, x_7865) ->
    226   h_Cond sz sg t x_7867 x_7866 x_7865
     224      x_13895)
     225| Cond (sz, sg, t, x_13898, x_13897, x_13896) ->
     226  h_Cond sz sg t x_13898 x_13897 x_13896
    227227    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    228       (sz, sg)) x_7867)
    229     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7866)
    230     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7865)
    231 | Ecost (t, x_7869, x_7868) ->
    232   h_Ecost t x_7869 x_7868
    233     (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7868)
     228      (sz, sg)) x_13898)
     229    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13897)
     230    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13896)
     231| Ecost (t, x_13900, x_13899) ->
     232  h_Ecost t x_13900 x_13899
     233    (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13899)
    234234
    235235(** val expr_rect_Type0 :
     
    241241    -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1
    242242    -> 'a1) -> AST.typ -> expr -> 'a1 **)
    243 let rec expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_7877 = function
    244 | Id (t, x_7879) -> h_Id t x_7879
    245 | Cst (t, x_7880) -> h_Cst t x_7880
    246 | Op1 (t, t', x_7882, x_7881) ->
    247   h_Op1 t t' x_7882 x_7881
    248     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7881)
    249 | Op2 (t1, t2, t', x_7885, x_7884, x_7883) ->
    250   h_Op2 t1 t2 t' x_7885 x_7884 x_7883
    251     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_7884)
    252     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_7883)
    253 | Mem (t, x_7886) ->
    254   h_Mem t x_7886
     243let rec expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13908 = function
     244| Id (t, x_13910) -> h_Id t x_13910
     245| Cst (t, x_13911) -> h_Cst t x_13911
     246| Op1 (t, t', x_13913, x_13912) ->
     247  h_Op1 t t' x_13913 x_13912
     248    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13912)
     249| Op2 (t1, t2, t', x_13916, x_13915, x_13914) ->
     250  h_Op2 t1 t2 t' x_13916 x_13915 x_13914
     251    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13915)
     252    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13914)
     253| Mem (t, x_13917) ->
     254  h_Mem t x_13917
    255255    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr
    256       x_7886)
    257 | Cond (sz, sg, t, x_7889, x_7888, x_7887) ->
    258   h_Cond sz sg t x_7889 x_7888 x_7887
     256      x_13917)
     257| Cond (sz, sg, t, x_13920, x_13919, x_13918) ->
     258  h_Cond sz sg t x_13920 x_13919 x_13918
    259259    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint
    260       (sz, sg)) x_7889)
    261     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7888)
    262     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7887)
    263 | Ecost (t, x_7891, x_7890) ->
    264   h_Ecost t x_7891 x_7890
    265     (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_7890)
     260      (sz, sg)) x_13920)
     261    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13919)
     262    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13918)
     263| Ecost (t, x_13922, x_13921) ->
     264  h_Ecost t x_13922 x_13921
     265    (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13921)
    266266
    267267(** val expr_inv_rect_Type4 :
     
    373373let 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
    374374| St_skip -> h_St_skip
    375 | St_assign (t, x_8062, x_8061) -> h_St_assign t x_8062 x_8061
    376 | St_store (t, x_8064, x_8063) -> h_St_store t x_8064 x_8063
    377 | St_call (x_8067, x_8066, x_8065) -> h_St_call x_8067 x_8066 x_8065
    378 | St_seq (x_8069, x_8068) ->
    379   h_St_seq x_8069 x_8068
     375| St_assign (t, x_14093, x_14092) -> h_St_assign t x_14093 x_14092
     376| St_store (t, x_14095, x_14094) -> h_St_store t x_14095 x_14094
     377| St_call (x_14098, x_14097, x_14096) -> h_St_call x_14098 x_14097 x_14096
     378| St_seq (x_14100, x_14099) ->
     379  h_St_seq x_14100 x_14099
    380380    (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_8069)
     381      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14100)
    382382    (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_8068)
    384 | St_ifthenelse (sz, sg, x_8072, x_8071, x_8070) ->
    385   h_St_ifthenelse sz sg x_8072 x_8071 x_8070
     383      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14099)
     384| St_ifthenelse (sz, sg, x_14103, x_14102, x_14101) ->
     385  h_St_ifthenelse sz sg x_14103 x_14102 x_14101
    386386    (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_8071)
     387      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14102)
    388388    (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_8070)
    390 | St_return x_8073 -> h_St_return x_8073
    391 | St_label (x_8075, x_8074) ->
    392   h_St_label x_8075 x_8074
     389      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14101)
     390| St_return x_14104 -> h_St_return x_14104
     391| St_label (x_14106, x_14105) ->
     392  h_St_label x_14106 x_14105
    393393    (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_8074)
    395 | St_goto x_8076 -> h_St_goto x_8076
    396 | St_cost (x_8078, x_8077) ->
    397   h_St_cost x_8078 x_8077
     394      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14105)
     395| St_goto x_14107 -> h_St_goto x_14107
     396| St_cost (x_14109, x_14108) ->
     397  h_St_cost x_14109 x_14108
    398398    (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_8077)
     399      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14108)
    400400
    401401(** val stmt_rect_Type3 :
     
    410410let 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
    411411| St_skip -> h_St_skip
    412 | St_assign (t, x_8120, x_8119) -> h_St_assign t x_8120 x_8119
    413 | St_store (t, x_8122, x_8121) -> h_St_store t x_8122 x_8121
    414 | St_call (x_8125, x_8124, x_8123) -> h_St_call x_8125 x_8124 x_8123
    415 | St_seq (x_8127, x_8126) ->
    416   h_St_seq x_8127 x_8126
     412| St_assign (t, x_14151, x_14150) -> h_St_assign t x_14151 x_14150
     413| St_store (t, x_14153, x_14152) -> h_St_store t x_14153 x_14152
     414| St_call (x_14156, x_14155, x_14154) -> h_St_call x_14156 x_14155 x_14154
     415| St_seq (x_14158, x_14157) ->
     416  h_St_seq x_14158 x_14157
    417417    (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_8127)
     418      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14158)
    419419    (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_8126)
    421 | St_ifthenelse (sz, sg, x_8130, x_8129, x_8128) ->
    422   h_St_ifthenelse sz sg x_8130 x_8129 x_8128
     420      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14157)
     421| St_ifthenelse (sz, sg, x_14161, x_14160, x_14159) ->
     422  h_St_ifthenelse sz sg x_14161 x_14160 x_14159
    423423    (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_8129)
     424      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14160)
    425425    (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_8128)
    427 | St_return x_8131 -> h_St_return x_8131
    428 | St_label (x_8133, x_8132) ->
    429   h_St_label x_8133 x_8132
     426      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14159)
     427| St_return x_14162 -> h_St_return x_14162
     428| St_label (x_14164, x_14163) ->
     429  h_St_label x_14164 x_14163
    430430    (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_8132)
    432 | St_goto x_8134 -> h_St_goto x_8134
    433 | St_cost (x_8136, x_8135) ->
    434   h_St_cost x_8136 x_8135
     431      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14163)
     432| St_goto x_14165 -> h_St_goto x_14165
     433| St_cost (x_14167, x_14166) ->
     434  h_St_cost x_14167 x_14166
    435435    (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_8135)
     436      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14166)
    437437
    438438(** val stmt_rect_Type2 :
     
    447447let 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
    448448| St_skip -> h_St_skip
    449 | St_assign (t, x_8149, x_8148) -> h_St_assign t x_8149 x_8148
    450 | St_store (t, x_8151, x_8150) -> h_St_store t x_8151 x_8150
    451 | St_call (x_8154, x_8153, x_8152) -> h_St_call x_8154 x_8153 x_8152
    452 | St_seq (x_8156, x_8155) ->
    453   h_St_seq x_8156 x_8155
     449| St_assign (t, x_14180, x_14179) -> h_St_assign t x_14180 x_14179
     450| St_store (t, x_14182, x_14181) -> h_St_store t x_14182 x_14181
     451| St_call (x_14185, x_14184, x_14183) -> h_St_call x_14185 x_14184 x_14183
     452| St_seq (x_14187, x_14186) ->
     453  h_St_seq x_14187 x_14186
    454454    (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_8156)
     455      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14187)
    456456    (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_8155)
    458 | St_ifthenelse (sz, sg, x_8159, x_8158, x_8157) ->
    459   h_St_ifthenelse sz sg x_8159 x_8158 x_8157
     457      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14186)
     458| St_ifthenelse (sz, sg, x_14190, x_14189, x_14188) ->
     459  h_St_ifthenelse sz sg x_14190 x_14189 x_14188
    460460    (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_8158)
     461      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14189)
    462462    (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_8157)
    464 | St_return x_8160 -> h_St_return x_8160
    465 | St_label (x_8162, x_8161) ->
    466   h_St_label x_8162 x_8161
     463      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14188)
     464| St_return x_14191 -> h_St_return x_14191
     465| St_label (x_14193, x_14192) ->
     466  h_St_label x_14193 x_14192
    467467    (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_8161)
    469 | St_goto x_8163 -> h_St_goto x_8163
    470 | St_cost (x_8165, x_8164) ->
    471   h_St_cost x_8165 x_8164
     468      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14192)
     469| St_goto x_14194 -> h_St_goto x_14194
     470| St_cost (x_14196, x_14195) ->
     471  h_St_cost x_14196 x_14195
    472472    (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_8164)
     473      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14195)
    474474
    475475(** val stmt_rect_Type1 :
     
    484484let 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
    485485| St_skip -> h_St_skip
    486 | St_assign (t, x_8178, x_8177) -> h_St_assign t x_8178 x_8177
    487 | St_store (t, x_8180, x_8179) -> h_St_store t x_8180 x_8179
    488 | St_call (x_8183, x_8182, x_8181) -> h_St_call x_8183 x_8182 x_8181
    489 | St_seq (x_8185, x_8184) ->
    490   h_St_seq x_8185 x_8184
     486| St_assign (t, x_14209, x_14208) -> h_St_assign t x_14209 x_14208
     487| St_store (t, x_14211, x_14210) -> h_St_store t x_14211 x_14210
     488| St_call (x_14214, x_14213, x_14212) -> h_St_call x_14214 x_14213 x_14212
     489| St_seq (x_14216, x_14215) ->
     490  h_St_seq x_14216 x_14215
    491491    (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_8185)
     492      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14216)
    493493    (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_8184)
    495 | St_ifthenelse (sz, sg, x_8188, x_8187, x_8186) ->
    496   h_St_ifthenelse sz sg x_8188 x_8187 x_8186
     494      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14215)
     495| St_ifthenelse (sz, sg, x_14219, x_14218, x_14217) ->
     496  h_St_ifthenelse sz sg x_14219 x_14218 x_14217
    497497    (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_8187)
     498      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14218)
    499499    (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_8186)
    501 | St_return x_8189 -> h_St_return x_8189
    502 | St_label (x_8191, x_8190) ->
    503   h_St_label x_8191 x_8190
     500      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14217)
     501| St_return x_14220 -> h_St_return x_14220
     502| St_label (x_14222, x_14221) ->
     503  h_St_label x_14222 x_14221
    504504    (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_8190)
    506 | St_goto x_8192 -> h_St_goto x_8192
    507 | St_cost (x_8194, x_8193) ->
    508   h_St_cost x_8194 x_8193
     505      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14221)
     506| St_goto x_14223 -> h_St_goto x_14223
     507| St_cost (x_14225, x_14224) ->
     508  h_St_cost x_14225 x_14224
    509509    (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_8193)
     510      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14224)
    511511
    512512(** val stmt_rect_Type0 :
     
    521521let 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
    522522| St_skip -> h_St_skip
    523 | St_assign (t, x_8207, x_8206) -> h_St_assign t x_8207 x_8206
    524 | St_store (t, x_8209, x_8208) -> h_St_store t x_8209 x_8208
    525 | St_call (x_8212, x_8211, x_8210) -> h_St_call x_8212 x_8211 x_8210
    526 | St_seq (x_8214, x_8213) ->
    527   h_St_seq x_8214 x_8213
     523| St_assign (t, x_14238, x_14237) -> h_St_assign t x_14238 x_14237
     524| St_store (t, x_14240, x_14239) -> h_St_store t x_14240 x_14239
     525| St_call (x_14243, x_14242, x_14241) -> h_St_call x_14243 x_14242 x_14241
     526| St_seq (x_14245, x_14244) ->
     527  h_St_seq x_14245 x_14244
    528528    (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_8214)
     529      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14245)
    530530    (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_8213)
    532 | St_ifthenelse (sz, sg, x_8217, x_8216, x_8215) ->
    533   h_St_ifthenelse sz sg x_8217 x_8216 x_8215
     531      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14244)
     532| St_ifthenelse (sz, sg, x_14248, x_14247, x_14246) ->
     533  h_St_ifthenelse sz sg x_14248 x_14247 x_14246
    534534    (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_8216)
     535      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14247)
    536536    (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_8215)
    538 | St_return x_8218 -> h_St_return x_8218
    539 | St_label (x_8220, x_8219) ->
    540   h_St_label x_8220 x_8219
     537      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14246)
     538| St_return x_14249 -> h_St_return x_14249
     539| St_label (x_14251, x_14250) ->
     540  h_St_label x_14251 x_14250
    541541    (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_8219)
    543 | St_goto x_8221 -> h_St_goto x_8221
    544 | St_cost (x_8223, x_8222) ->
    545   h_St_cost x_8223 x_8222
     542      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14250)
     543| St_goto x_14252 -> h_St_goto x_14252
     544| St_cost (x_14254, x_14253) ->
     545  h_St_cost x_14254 x_14253
    546546    (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_8222)
     547      h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14253)
    548548
    549549(** val stmt_inv_rect_Type4 :
     
    757757    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    758758    -> 'a1) -> internal_function -> 'a1 **)
    759 let rec internal_function_rect_Type4 h_mk_internal_function x_8518 =
     759let rec internal_function_rect_Type4 h_mk_internal_function x_14549 =
    760760  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    761     f_stacksize = f_stacksize0; f_body = f_body0 } = x_8518
     761    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14549
    762762  in
    763763  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    768768    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    769769    -> 'a1) -> internal_function -> 'a1 **)
    770 let rec internal_function_rect_Type5 h_mk_internal_function x_8520 =
     770let rec internal_function_rect_Type5 h_mk_internal_function x_14551 =
    771771  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    772     f_stacksize = f_stacksize0; f_body = f_body0 } = x_8520
     772    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14551
    773773  in
    774774  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    779779    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    780780    -> 'a1) -> internal_function -> 'a1 **)
    781 let rec internal_function_rect_Type3 h_mk_internal_function x_8522 =
     781let rec internal_function_rect_Type3 h_mk_internal_function x_14553 =
    782782  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    783     f_stacksize = f_stacksize0; f_body = f_body0 } = x_8522
     783    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14553
    784784  in
    785785  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    790790    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    791791    -> 'a1) -> internal_function -> 'a1 **)
    792 let rec internal_function_rect_Type2 h_mk_internal_function x_8524 =
     792let rec internal_function_rect_Type2 h_mk_internal_function x_14555 =
    793793  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    794     f_stacksize = f_stacksize0; f_body = f_body0 } = x_8524
     794    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14555
    795795  in
    796796  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    801801    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    802802    -> 'a1) -> internal_function -> 'a1 **)
    803 let rec internal_function_rect_Type1 h_mk_internal_function x_8526 =
     803let rec internal_function_rect_Type1 h_mk_internal_function x_14557 =
    804804  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    805     f_stacksize = f_stacksize0; f_body = f_body0 } = x_8526
     805    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14557
    806806  in
    807807  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
     
    812812    (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __
    813813    -> 'a1) -> internal_function -> 'a1 **)
    814 let rec internal_function_rect_Type0 h_mk_internal_function x_8528 =
     814let rec internal_function_rect_Type0 h_mk_internal_function x_14559 =
    815815  let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0;
    816     f_stacksize = f_stacksize0; f_body = f_body0 } = x_8528
     816    f_stacksize = f_stacksize0; f_body = f_body0 } = x_14559
    817817  in
    818818  h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0
  • extracted/compiler.ml

    r3019 r3043  
    457457      let p3 = ToRTLabs.cminor_to_rtlabs (Obj.magic p2) in
    458458      let i4 = Obj.magic observe Rtlabs_pass p3 in
    459       (match CostCheck.check_cost_program p3 with
    460        | Bool.True ->
    461          (match CostInj.check_program_cost_injectivity p3 with
    462           | Bool.True ->
    463             Monad.m_return0 (Monad.max_def Errors.res0) { Types.fst =
    464               { Types.fst = init_cost; Types.snd = p' }; Types.snd = p3 }
    465           | Bool.False ->
    466             Obj.magic (Errors.Error
    467               (Errors.msg ErrorMessages.RepeatedCostLabel0)))
    468        | Bool.False ->
    469          Obj.magic (Errors.Error (Errors.msg ErrorMessages.BadCostLabelling)))))
     459      Monad.m_bind0 (Monad.max_def Errors.res0)
     460        (Obj.magic (CostCheck.check_cost_program_prf p3)) (fun _ ->
     461        Monad.m_bind0 (Monad.max_def Errors.res0)
     462          (Obj.magic (CostInj.check_program_cost_injectivity_prf p3))
     463          (fun _ ->
     464          Monad.m_return0 (Monad.max_def Errors.res0) { Types.fst =
     465            { Types.fst = init_cost; Types.snd = p' }; Types.snd = p3 }))))
    470466
    471467open Uses
     
    473469(** val compute_fixpoint : Fixpoints.fixpoint_computer **)
    474470let compute_fixpoint = Compute_fixpoints.compute_fixpoint
    475  
     471
    476472(** val colour_graph : Interference.coloured_graph_computer **)
    477473let colour_graph = Compute_colouring.colour_graph
     
    561557open ASMCosts
    562558
     559(** val lift_out_of_sigma :
     560    'a2 -> ('a1 -> (__, __) Types.sum) -> ('a1 Types.sig0 -> 'a2) -> 'a1 ->
     561    'a2 **)
     562let lift_out_of_sigma dflt dec m a_sig =
     563  match dec a_sig with
     564  | Types.Inl _ -> m a_sig
     565  | Types.Inr _ -> dflt
     566
    563567(** val lift_cost_map_back_to_front :
    564     Csyntax.clight_program -> ASM.labelled_object_code ->
    565     StructuredTraces.as_cost_map -> Label.clight_cost_map **)
    566 let lift_cost_map_back_to_front clight oc k asm_cost_map =
    567   StructuredTraces.lift_sigma_map_id Nat.O
    568     (BitVectorTrie.strong_decidable_in_codomain
    569       (Identifiers.deq_identifier PreIdentifiers.CostTag) (Nat.S (Nat.S
    570       (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    571       (Nat.S (Nat.S (Nat.S (Nat.S Nat.O))))))))))))))))
    572       (Obj.magic oc.ASM.costlabels)) (Obj.magic k) (Obj.magic asm_cost_map)
     568    ASM.labelled_object_code -> StructuredTraces.as_cost_map ->
     569    Label.clight_cost_map **)
     570let lift_cost_map_back_to_front oc asm_cost_map =
     571  lift_out_of_sigma Nat.O
     572    (Obj.magic
     573      (BitVectorTrie.strong_decidable_in_codomain
     574        (Identifiers.deq_identifier PreIdentifiers.CostTag) (Nat.S (Nat.S
     575        (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     576        (Nat.S (Nat.S (Nat.S (Nat.S Nat.O))))))))))))))))
     577        (Obj.magic oc.ASM.costlabels))) asm_cost_map
    573578
    574579open UtilBranch
     
    739744          (Obj.magic (assembler observe p1)) (fun p2 ->
    740745          let k = ASMCostsSplit.aSM_cost_map p2 in
    741           let k' = lift_cost_map_back_to_front p' p2 k in
     746          let k' = lift_cost_map_back_to_front p2 k in
    742747          Monad.m_return0 (Monad.max_def Errors.res0)
    743748            { c_labelled_object_code = p2; c_stack_cost = stack_cost;
  • extracted/compiler.mli

    r3019 r3043  
    351351open ASMCosts
    352352
     353val lift_out_of_sigma :
     354  'a2 -> ('a1 -> (__, __) Types.sum) -> ('a1 Types.sig0 -> 'a2) -> 'a1 -> 'a2
     355
    353356val lift_cost_map_back_to_front :
    354   Csyntax.clight_program -> ASM.labelled_object_code ->
    355   StructuredTraces.as_cost_map -> Label.clight_cost_map
     357  ASM.labelled_object_code -> StructuredTraces.as_cost_map ->
     358  Label.clight_cost_map
    356359
    357360open UtilBranch
  • extracted/costCheck.ml

    r3001 r3043  
    216216    | AST.Internal fn0 ->
    217217      Bool.andb (check_well_cost_fn fn0) (check_sound_cost_fn fn0)
    218     | AST.External x -> Bool.True) (AST.prog_funct p)
    219 
     218    | AST.External x -> Bool.True) p.AST.prog_funct
     219
     220(** val check_cost_program_prf :
     221    RTLabs_syntax.rTLabs_program -> __ Errors.res **)
     222let check_cost_program_prf p =
     223  (match check_cost_program p with
     224   | Bool.True -> (fun _ -> Errors.OK __)
     225   | Bool.False ->
     226     (fun _ -> Errors.Error (Errors.msg ErrorMessages.BadCostLabelling))) __
     227
  • extracted/costCheck.mli

    r2773 r3043  
    134134val check_cost_program : RTLabs_syntax.rTLabs_program -> Bool.bool
    135135
     136val check_cost_program_prf : RTLabs_syntax.rTLabs_program -> __ Errors.res
     137
  • extracted/costInj.ml

    r3001 r3043  
    136136    match x.Types.snd with
    137137    | AST.Internal f -> check_fun_inj f
    138     | AST.External x0 -> Bool.True) (AST.prog_funct p)
     138    | AST.External x0 -> Bool.True) p.AST.prog_funct
    139139
     140(** val check_program_cost_injectivity_prf :
     141    RTLabs_syntax.rTLabs_program -> __ Errors.res **)
     142let check_program_cost_injectivity_prf p =
     143  (match check_program_cost_injectivity p with
     144   | Bool.True -> (fun _ -> Errors.OK __)
     145   | Bool.False ->
     146     (fun _ -> Errors.Error (Errors.msg ErrorMessages.BadCostLabelling))) __
     147
  • extracted/costInj.mli

    r2951 r3043  
    116116  RTLabs_syntax.rTLabs_program -> Bool.bool
    117117
     118val check_program_cost_injectivity_prf :
     119  RTLabs_syntax.rTLabs_program -> __ Errors.res
     120
  • extracted/csem.ml

    r3001 r3043  
    301301        | Values.Vnull -> Types.None
    302302        | Values.Vptr ptr2 ->
    303           (match Pointers.eq_block (Pointers.pblock ptr1)
    304                    (Pointers.pblock ptr2) with
     303          (match Pointers.eq_block ptr1.Pointers.pblock ptr2.Pointers.pblock with
    305304           | Bool.True ->
    306305             (match Nat.eqb (Csyntax.sizeof ty) Nat.O with
     
    323322                              (Nat.S (Nat.S (Nat.S (Nat.S
    324323                              Nat.O))))))))))))))))))))))))))))))))
    325                               (Pointers.poff ptr1) (Pointers.poff ptr2))
     324                              ptr1.Pointers.poff ptr2.Pointers.poff)
    326325                            (Integers.repr (Csyntax.sizeof ty)) with
    327326                    | Types.None -> Types.None
     
    627626                   (FrontEndMem.valid_pointer m ptr2) with
    628627           | Bool.True ->
    629              (match Pointers.eq_block (Pointers.pblock ptr1)
    630                       (Pointers.pblock ptr2) with
     628             (match Pointers.eq_block ptr1.Pointers.pblock
     629                      ptr2.Pointers.pblock with
    631630              | Bool.True ->
    632631                Types.Some
    633632                  (Values.of_bool
    634                     (Values.cmp_offset c (Pointers.poff ptr1)
    635                       (Pointers.poff ptr2)))
     633                    (Values.cmp_offset c ptr1.Pointers.poff
     634                      ptr2.Pointers.poff))
    636635              | Bool.False -> sem_cmp_mismatch c)
    637636           | Bool.False -> Types.None)))
     
    779778let rec cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    780779| Kstop -> h_Kstop
    781 | Kseq (x_11548, x_11547) ->
    782   h_Kseq x_11548 x_11547
     780| Kseq (x_8739, x_8738) ->
     781  h_Kseq x_8739 x_8738
    783782    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    784       h_Kswitch h_Kcall x_11547)
    785 | Kwhile (x_11551, x_11550, x_11549) ->
    786   h_Kwhile x_11551 x_11550 x_11549
     783      h_Kswitch h_Kcall x_8738)
     784| Kwhile (x_8742, x_8741, x_8740) ->
     785  h_Kwhile x_8742 x_8741 x_8740
    787786    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    788       h_Kswitch h_Kcall x_11549)
    789 | Kdowhile (x_11554, x_11553, x_11552) ->
    790   h_Kdowhile x_11554 x_11553 x_11552
     787      h_Kswitch h_Kcall x_8740)
     788| Kdowhile (x_8745, x_8744, x_8743) ->
     789  h_Kdowhile x_8745 x_8744 x_8743
    791790    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    792       h_Kswitch h_Kcall x_11552)
    793 | Kfor2 (x_11558, x_11557, x_11556, x_11555) ->
    794   h_Kfor2 x_11558 x_11557 x_11556 x_11555
     791      h_Kswitch h_Kcall x_8743)
     792| Kfor2 (x_8749, x_8748, x_8747, x_8746) ->
     793  h_Kfor2 x_8749 x_8748 x_8747 x_8746
    795794    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    796       h_Kswitch h_Kcall x_11555)
    797 | Kfor3 (x_11562, x_11561, x_11560, x_11559) ->
    798   h_Kfor3 x_11562 x_11561 x_11560 x_11559
     795      h_Kswitch h_Kcall x_8746)
     796| Kfor3 (x_8753, x_8752, x_8751, x_8750) ->
     797  h_Kfor3 x_8753 x_8752 x_8751 x_8750
    799798    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    800       h_Kswitch h_Kcall x_11559)
    801 | Kswitch x_11563 ->
    802   h_Kswitch x_11563
     799      h_Kswitch h_Kcall x_8750)
     800| Kswitch x_8754 ->
     801  h_Kswitch x_8754
    803802    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    804       h_Kswitch h_Kcall x_11563)
    805 | Kcall (x_11567, x_11566, x_11565, x_11564) ->
    806   h_Kcall x_11567 x_11566 x_11565 x_11564
     803      h_Kswitch h_Kcall x_8754)
     804| Kcall (x_8758, x_8757, x_8756, x_8755) ->
     805  h_Kcall x_8758 x_8757 x_8756 x_8755
    807806    (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    808       h_Kswitch h_Kcall x_11564)
     807      h_Kswitch h_Kcall x_8755)
    809808
    810809(** val cont_rect_Type3 :
     
    819818let rec cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    820819| Kstop -> h_Kstop
    821 | Kseq (x_11608, x_11607) ->
    822   h_Kseq x_11608 x_11607
     820| Kseq (x_8799, x_8798) ->
     821  h_Kseq x_8799 x_8798
    823822    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    824       h_Kswitch h_Kcall x_11607)
    825 | Kwhile (x_11611, x_11610, x_11609) ->
    826   h_Kwhile x_11611 x_11610 x_11609
     823      h_Kswitch h_Kcall x_8798)
     824| Kwhile (x_8802, x_8801, x_8800) ->
     825  h_Kwhile x_8802 x_8801 x_8800
    827826    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    828       h_Kswitch h_Kcall x_11609)
    829 | Kdowhile (x_11614, x_11613, x_11612) ->
    830   h_Kdowhile x_11614 x_11613 x_11612
     827      h_Kswitch h_Kcall x_8800)
     828| Kdowhile (x_8805, x_8804, x_8803) ->
     829  h_Kdowhile x_8805 x_8804 x_8803
    831830    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    832       h_Kswitch h_Kcall x_11612)
    833 | Kfor2 (x_11618, x_11617, x_11616, x_11615) ->
    834   h_Kfor2 x_11618 x_11617 x_11616 x_11615
     831      h_Kswitch h_Kcall x_8803)
     832| Kfor2 (x_8809, x_8808, x_8807, x_8806) ->
     833  h_Kfor2 x_8809 x_8808 x_8807 x_8806
    835834    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    836       h_Kswitch h_Kcall x_11615)
    837 | Kfor3 (x_11622, x_11621, x_11620, x_11619) ->
    838   h_Kfor3 x_11622 x_11621 x_11620 x_11619
     835      h_Kswitch h_Kcall x_8806)
     836| Kfor3 (x_8813, x_8812, x_8811, x_8810) ->
     837  h_Kfor3 x_8813 x_8812 x_8811 x_8810
    839838    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    840       h_Kswitch h_Kcall x_11619)
    841 | Kswitch x_11623 ->
    842   h_Kswitch x_11623
     839      h_Kswitch h_Kcall x_8810)
     840| Kswitch x_8814 ->
     841  h_Kswitch x_8814
    843842    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    844       h_Kswitch h_Kcall x_11623)
    845 | Kcall (x_11627, x_11626, x_11625, x_11624) ->
    846   h_Kcall x_11627 x_11626 x_11625 x_11624
     843      h_Kswitch h_Kcall x_8814)
     844| Kcall (x_8818, x_8817, x_8816, x_8815) ->
     845  h_Kcall x_8818 x_8817 x_8816 x_8815
    847846    (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    848       h_Kswitch h_Kcall x_11624)
     847      h_Kswitch h_Kcall x_8815)
    849848
    850849(** val cont_rect_Type2 :
     
    859858let rec cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    860859| Kstop -> h_Kstop
    861 | Kseq (x_11638, x_11637) ->
    862   h_Kseq x_11638 x_11637
     860| Kseq (x_8829, x_8828) ->
     861  h_Kseq x_8829 x_8828
    863862    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    864       h_Kswitch h_Kcall x_11637)
    865 | Kwhile (x_11641, x_11640, x_11639) ->
    866   h_Kwhile x_11641 x_11640 x_11639
     863      h_Kswitch h_Kcall x_8828)
     864| Kwhile (x_8832, x_8831, x_8830) ->
     865  h_Kwhile x_8832 x_8831 x_8830
    867866    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    868       h_Kswitch h_Kcall x_11639)
    869 | Kdowhile (x_11644, x_11643, x_11642) ->
    870   h_Kdowhile x_11644 x_11643 x_11642
     867      h_Kswitch h_Kcall x_8830)
     868| Kdowhile (x_8835, x_8834, x_8833) ->
     869  h_Kdowhile x_8835 x_8834 x_8833
    871870    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    872       h_Kswitch h_Kcall x_11642)
    873 | Kfor2 (x_11648, x_11647, x_11646, x_11645) ->
    874   h_Kfor2 x_11648 x_11647 x_11646 x_11645
     871      h_Kswitch h_Kcall x_8833)
     872| Kfor2 (x_8839, x_8838, x_8837, x_8836) ->
     873  h_Kfor2 x_8839 x_8838 x_8837 x_8836
    875874    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    876       h_Kswitch h_Kcall x_11645)
    877 | Kfor3 (x_11652, x_11651, x_11650, x_11649) ->
    878   h_Kfor3 x_11652 x_11651 x_11650 x_11649
     875      h_Kswitch h_Kcall x_8836)
     876| Kfor3 (x_8843, x_8842, x_8841, x_8840) ->
     877  h_Kfor3 x_8843 x_8842 x_8841 x_8840
    879878    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    880       h_Kswitch h_Kcall x_11649)
    881 | Kswitch x_11653 ->
    882   h_Kswitch x_11653
     879      h_Kswitch h_Kcall x_8840)
     880| Kswitch x_8844 ->
     881  h_Kswitch x_8844
    883882    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    884       h_Kswitch h_Kcall x_11653)
    885 | Kcall (x_11657, x_11656, x_11655, x_11654) ->
    886   h_Kcall x_11657 x_11656 x_11655 x_11654
     883      h_Kswitch h_Kcall x_8844)
     884| Kcall (x_8848, x_8847, x_8846, x_8845) ->
     885  h_Kcall x_8848 x_8847 x_8846 x_8845
    887886    (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    888       h_Kswitch h_Kcall x_11654)
     887      h_Kswitch h_Kcall x_8845)
    889888
    890889(** val cont_rect_Type1 :
     
    899898let rec cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    900899| Kstop -> h_Kstop
    901 | Kseq (x_11668, x_11667) ->
    902   h_Kseq x_11668 x_11667
     900| Kseq (x_8859, x_8858) ->
     901  h_Kseq x_8859 x_8858
    903902    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    904       h_Kswitch h_Kcall x_11667)
    905 | Kwhile (x_11671, x_11670, x_11669) ->
    906   h_Kwhile x_11671 x_11670 x_11669
     903      h_Kswitch h_Kcall x_8858)
     904| Kwhile (x_8862, x_8861, x_8860) ->
     905  h_Kwhile x_8862 x_8861 x_8860
    907906    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    908       h_Kswitch h_Kcall x_11669)
    909 | Kdowhile (x_11674, x_11673, x_11672) ->
    910   h_Kdowhile x_11674 x_11673 x_11672
     907      h_Kswitch h_Kcall x_8860)
     908| Kdowhile (x_8865, x_8864, x_8863) ->
     909  h_Kdowhile x_8865 x_8864 x_8863
    911910    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    912       h_Kswitch h_Kcall x_11672)
    913 | Kfor2 (x_11678, x_11677, x_11676, x_11675) ->
    914   h_Kfor2 x_11678 x_11677 x_11676 x_11675
     911      h_Kswitch h_Kcall x_8863)
     912| Kfor2 (x_8869, x_8868, x_8867, x_8866) ->
     913  h_Kfor2 x_8869 x_8868 x_8867 x_8866
    915914    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    916       h_Kswitch h_Kcall x_11675)
    917 | Kfor3 (x_11682, x_11681, x_11680, x_11679) ->
    918   h_Kfor3 x_11682 x_11681 x_11680 x_11679
     915      h_Kswitch h_Kcall x_8866)
     916| Kfor3 (x_8873, x_8872, x_8871, x_8870) ->
     917  h_Kfor3 x_8873 x_8872 x_8871 x_8870
    919918    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    920       h_Kswitch h_Kcall x_11679)
    921 | Kswitch x_11683 ->
    922   h_Kswitch x_11683
     919      h_Kswitch h_Kcall x_8870)
     920| Kswitch x_8874 ->
     921  h_Kswitch x_8874
    923922    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    924       h_Kswitch h_Kcall x_11683)
    925 | Kcall (x_11687, x_11686, x_11685, x_11684) ->
    926   h_Kcall x_11687 x_11686 x_11685 x_11684
     923      h_Kswitch h_Kcall x_8874)
     924| Kcall (x_8878, x_8877, x_8876, x_8875) ->
     925  h_Kcall x_8878 x_8877 x_8876 x_8875
    927926    (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    928       h_Kswitch h_Kcall x_11684)
     927      h_Kswitch h_Kcall x_8875)
    929928
    930929(** val cont_rect_Type0 :
     
    939938let rec cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function
    940939| Kstop -> h_Kstop
    941 | Kseq (x_11698, x_11697) ->
    942   h_Kseq x_11698 x_11697
     940| Kseq (x_8889, x_8888) ->
     941  h_Kseq x_8889 x_8888
    943942    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    944       h_Kswitch h_Kcall x_11697)
    945 | Kwhile (x_11701, x_11700, x_11699) ->
    946   h_Kwhile x_11701 x_11700 x_11699
     943      h_Kswitch h_Kcall x_8888)
     944| Kwhile (x_8892, x_8891, x_8890) ->
     945  h_Kwhile x_8892 x_8891 x_8890
    947946    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    948       h_Kswitch h_Kcall x_11699)
    949 | Kdowhile (x_11704, x_11703, x_11702) ->
    950   h_Kdowhile x_11704 x_11703 x_11702
     947      h_Kswitch h_Kcall x_8890)
     948| Kdowhile (x_8895, x_8894, x_8893) ->
     949  h_Kdowhile x_8895 x_8894 x_8893
    951950    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    952       h_Kswitch h_Kcall x_11702)
    953 | Kfor2 (x_11708, x_11707, x_11706, x_11705) ->
    954   h_Kfor2 x_11708 x_11707 x_11706 x_11705
     951      h_Kswitch h_Kcall x_8893)
     952| Kfor2 (x_8899, x_8898, x_8897, x_8896) ->
     953  h_Kfor2 x_8899 x_8898 x_8897 x_8896
    955954    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    956       h_Kswitch h_Kcall x_11705)
    957 | Kfor3 (x_11712, x_11711, x_11710, x_11709) ->
    958   h_Kfor3 x_11712 x_11711 x_11710 x_11709
     955      h_Kswitch h_Kcall x_8896)
     956| Kfor3 (x_8903, x_8902, x_8901, x_8900) ->
     957  h_Kfor3 x_8903 x_8902 x_8901 x_8900
    959958    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    960       h_Kswitch h_Kcall x_11709)
    961 | Kswitch x_11713 ->
    962   h_Kswitch x_11713
     959      h_Kswitch h_Kcall x_8900)
     960| Kswitch x_8904 ->
     961  h_Kswitch x_8904
    963962    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    964       h_Kswitch h_Kcall x_11713)
    965 | Kcall (x_11717, x_11716, x_11715, x_11714) ->
    966   h_Kcall x_11717 x_11716 x_11715 x_11714
     963      h_Kswitch h_Kcall x_8904)
     964| Kcall (x_8908, x_8907, x_8906, x_8905) ->
     965  h_Kcall x_8908 x_8907 x_8906 x_8905
    967966    (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3
    968       h_Kswitch h_Kcall x_11714)
     967      h_Kswitch h_Kcall x_8905)
    969968
    970969(** val cont_inv_rect_Type4 :
  • extracted/csyntax.ml

    r3001 r3043  
    12031203    (type0 -> (AST.ident, type0) Types.prod List.list -> (AST.ident, type0)
    12041204    Types.prod List.list -> statement -> 'a1) -> function0 -> 'a1 **)
    1205 let rec function_rect_Type4 h_mk_function x_9070 =
     1205let rec function_rect_Type4 h_mk_function x_4495 =
    12061206  let { fn_return = fn_return0; fn_params = fn_params0; fn_vars = fn_vars0;
    1207     fn_body = fn_body0 } = x_9070
     1207    fn_body = fn_body0 } = x_4495
    12081208  in
    12091209  h_mk_function fn_return0 fn_params0 fn_vars0 fn_body0
     
    12121212    (type0 -> (AST.ident, type0) Types.prod List.list -> (AST.ident, type0)
    12131213    Types.prod List.list -> statement -> 'a1) -> function0 -> 'a1 **)
    1214 let rec function_rect_Type5 h_mk_function x_9072 =
     1214let rec function_rect_Type5 h_mk_function x_4497 =
    12151215  let { fn_return = fn_return0; fn_params = fn_params0; fn_vars = fn_vars0;
    1216     fn_body = fn_body0 } = x_9072
     1216    fn_body = fn_body0 } = x_4497
    12171217  in
    12181218  h_mk_function fn_return0 fn_params0 fn_vars0 fn_body0
     
    12211221    (type0 -> (AST.ident, type0) Types.prod List.list -> (AST.ident, type0)
    12221222    Types.prod List.list -> statement -> 'a1) -> function0 -> 'a1 **)
    1223 let rec function_rect_Type3 h_mk_function x_9074 =
     1223let rec function_rect_Type3 h_mk_function x_4499 =
    12241224  let { fn_return = fn_return0; fn_params = fn_params0; fn_vars = fn_vars0;
    1225     fn_body = fn_body0 } = x_9074
     1225    fn_body = fn_body0 } = x_4499
    12261226  in
    12271227  h_mk_function fn_return0 fn_params0 fn_vars0 fn_body0
     
    12301230    (type0 -> (AST.ident, type0) Types.prod List.list -> (AST.ident, type0)
    12311231    Types.prod List.list -> statement -> 'a1) -> function0 -> 'a1 **)
    1232 let rec function_rect_Type2 h_mk_function x_9076 =
     1232let rec function_rect_Type2 h_mk_function x_4501 =
    12331233  let { fn_return = fn_return0; fn_params = fn_params0; fn_vars = fn_vars0;
    1234     fn_body = fn_body0 } = x_9076
     1234    fn_body = fn_body0 } = x_4501
    12351235  in
    12361236  h_mk_function fn_return0 fn_params0 fn_vars0 fn_body0
     
    12391239    (type0 -> (AST.ident, type0) Types.prod List.list -> (AST.ident, type0)
    12401240    Types.prod List.list -> statement -> 'a1) -> function0 -> 'a1 **)
    1241 let rec function_rect_Type1 h_mk_function x_9078 =
     1241let rec function_rect_Type1 h_mk_function x_4503 =
    12421242  let { fn_return = fn_return0; fn_params = fn_params0; fn_vars = fn_vars0;
    1243     fn_body = fn_body0 } = x_9078
     1243    fn_body = fn_body0 } = x_4503
    12441244  in
    12451245  h_mk_function fn_return0 fn_params0 fn_vars0 fn_body0
     
    12481248    (type0 -> (AST.ident, type0) Types.prod List.list -> (AST.ident, type0)
    12491249    Types.prod List.list -> statement -> 'a1) -> function0 -> 'a1 **)
    1250 let rec function_rect_Type0 h_mk_function x_9080 =
     1250let rec function_rect_Type0 h_mk_function x_4505 =
    12511251  let { fn_return = fn_return0; fn_params = fn_params0; fn_vars = fn_vars0;
    1252     fn_body = fn_body0 } = x_9080
     1252    fn_body = fn_body0 } = x_4505
    12531253  in
    12541254  h_mk_function fn_return0 fn_params0 fn_vars0 fn_body0
     
    13221322    clight_fundef -> 'a1 **)
    13231323let rec clight_fundef_rect_Type4 h_CL_Internal h_CL_External = function
    1324 | CL_Internal x_9102 -> h_CL_Internal x_9102
    1325 | CL_External (x_9105, x_9104, x_9103) -> h_CL_External x_9105 x_9104 x_9103
     1324| CL_Internal x_4527 -> h_CL_Internal x_4527
     1325| CL_External (x_4530, x_4529, x_4528) -> h_CL_External x_4530 x_4529 x_4528
    13261326
    13271327(** val clight_fundef_rect_Type5 :
     
    13291329    clight_fundef -> 'a1 **)
    13301330let rec clight_fundef_rect_Type5 h_CL_Internal h_CL_External = function
    1331 | CL_Internal x_9109 -> h_CL_Internal x_9109
    1332 | CL_External (x_9112, x_9111, x_9110) -> h_CL_External x_9112 x_9111 x_9110
     1331| CL_Internal x_4534 -> h_CL_Internal x_4534
     1332| CL_External (x_4537, x_4536, x_4535) -> h_CL_External x_4537 x_4536 x_4535
    13331333
    13341334(** val clight_fundef_rect_Type3 :
     
    13361336    clight_fundef -> 'a1 **)
    13371337let rec clight_fundef_rect_Type3 h_CL_Internal h_CL_External = function
    1338 | CL_Internal x_9116 -> h_CL_Internal x_9116
    1339 | CL_External (x_9119, x_9118, x_9117) -> h_CL_External x_9119 x_9118 x_9117
     1338| CL_Internal x_4541 -> h_CL_Internal x_4541
     1339| CL_External (x_4544, x_4543, x_4542) -> h_CL_External x_4544 x_4543 x_4542
    13401340
    13411341(** val clight_fundef_rect_Type2 :
     
    13431343    clight_fundef -> 'a1 **)
    13441344let rec clight_fundef_rect_Type2 h_CL_Internal h_CL_External = function
    1345 | CL_Internal x_9123 -> h_CL_Internal x_9123
    1346 | CL_External (x_9126, x_9125, x_9124) -> h_CL_External x_9126 x_9125 x_9124
     1345| CL_Internal x_4548 -> h_CL_Internal x_4548
     1346| CL_External (x_4551, x_4550, x_4549) -> h_CL_External x_4551 x_4550 x_4549
    13471347
    13481348(** val clight_fundef_rect_Type1 :
     
    13501350    clight_fundef -> 'a1 **)
    13511351let rec clight_fundef_rect_Type1 h_CL_Internal h_CL_External = function
    1352 | CL_Internal x_9130 -> h_CL_Internal x_9130
    1353 | CL_External (x_9133, x_9132, x_9131) -> h_CL_External x_9133 x_9132 x_9131
     1352| CL_Internal x_4555 -> h_CL_Internal x_4555
     1353| CL_External (x_4558, x_4557, x_4556) -> h_CL_External x_4558 x_4557 x_4556
    13541354
    13551355(** val clight_fundef_rect_Type0 :
     
    13571357    clight_fundef -> 'a1 **)
    13581358let rec clight_fundef_rect_Type0 h_CL_Internal h_CL_External = function
    1359 | CL_Internal x_9137 -> h_CL_Internal x_9137
    1360 | CL_External (x_9140, x_9139, x_9138) -> h_CL_External x_9140 x_9139 x_9138
     1359| CL_Internal x_4562 -> h_CL_Internal x_4562
     1360| CL_External (x_4565, x_4564, x_4563) -> h_CL_External x_4565 x_4564 x_4563
    13611361
    13621362(** val clight_fundef_inv_rect_Type4 :
     
    15321532(** val mode_rect_Type4 :
    15331533    (AST.typ -> 'a1) -> 'a1 -> (AST.typ -> 'a1) -> AST.typ -> mode -> 'a1 **)
    1534 let rec mode_rect_Type4 h_By_value h_By_reference h_By_nothing x_9190 = function
     1534let rec mode_rect_Type4 h_By_value h_By_reference h_By_nothing x_4615 = function
    15351535| By_value t -> h_By_value t
    15361536| By_reference -> h_By_reference
     
    15391539(** val mode_rect_Type5 :
    15401540    (AST.typ -> 'a1) -> 'a1 -> (AST.typ -> 'a1) -> AST.typ -> mode -> 'a1 **)
    1541 let rec mode_rect_Type5 h_By_value h_By_reference h_By_nothing x_9195 = function
     1541let rec mode_rect_Type5 h_By_value h_By_reference h_By_nothing x_4620 = function
    15421542| By_value t -> h_By_value t
    15431543| By_reference -> h_By_reference
     
    15461546(** val mode_rect_Type3 :
    15471547    (AST.typ -> 'a1) -> 'a1 -> (AST.typ -> 'a1) -> AST.typ -> mode -> 'a1 **)
    1548 let rec mode_rect_Type3 h_By_value h_By_reference h_By_nothing x_9200 = function
     1548let rec mode_rect_Type3 h_By_value h_By_reference h_By_nothing x_4625 = function
    15491549| By_value t -> h_By_value t
    15501550| By_reference -> h_By_reference
     
    15531553(** val mode_rect_Type2 :
    15541554    (AST.typ -> 'a1) -> 'a1 -> (AST.typ -> 'a1) -> AST.typ -> mode -> 'a1 **)
    1555 let rec mode_rect_Type2 h_By_value h_By_reference h_By_nothing x_9205 = function
     1555let rec mode_rect_Type2 h_By_value h_By_reference h_By_nothing x_4630 = function
    15561556| By_value t -> h_By_value t
    15571557| By_reference -> h_By_reference
     
    15601560(** val mode_rect_Type1 :
    15611561    (AST.typ -> 'a1) -> 'a1 -> (AST.typ -> 'a1) -> AST.typ -> mode -> 'a1 **)
    1562 let rec mode_rect_Type1 h_By_value h_By_reference h_By_nothing x_9210 = function
     1562let rec mode_rect_Type1 h_By_value h_By_reference h_By_nothing x_4635 = function
    15631563| By_value t -> h_By_value t
    15641564| By_reference -> h_By_reference
     
    15671567(** val mode_rect_Type0 :
    15681568    (AST.typ -> 'a1) -> 'a1 -> (AST.typ -> 'a1) -> AST.typ -> mode -> 'a1 **)
    1569 let rec mode_rect_Type0 h_By_value h_By_reference h_By_nothing x_9215 = function
     1569let rec mode_rect_Type0 h_By_value h_By_reference h_By_nothing x_4640 = function
    15701570| By_value t -> h_By_value t
    15711571| By_reference -> h_By_reference
     
    16301630
    16311631(** val signature_of_type : typelist -> type0 -> AST.signature **)
    1632 let signature_of_type args res0 =
     1632let signature_of_type args res =
    16331633  { AST.sig_args = (typlist_of_typelist args); AST.sig_res =
    1634     (opttyp_of_type res0) }
    1635 
    1636 (** val external_function0 :
     1634    (opttyp_of_type res) }
     1635
     1636(** val external_function :
    16371637    AST.ident -> typelist -> type0 -> AST.external_function **)
    1638 let external_function0 id targs tres =
     1638let external_function id targs tres =
    16391639  { AST.ef_id = id; AST.ef_sig = (signature_of_type targs tres) }
    16401640
  • extracted/csyntax.mli

    r3001 r3043  
    662662val signature_of_type : typelist -> type0 -> AST.signature
    663663
    664 val external_function0 :
     664val external_function :
    665665  AST.ident -> typelist -> type0 -> AST.external_function
    666666
  • extracted/division.ml

    r2827 r3043  
    2828let rec natp_rect_Type4 h_pzero h_ppos = function
    2929| Pzero -> h_pzero
    30 | Ppos x_4888 -> h_ppos x_4888
     30| Ppos x_4901 -> h_ppos x_4901
    3131
    3232(** val natp_rect_Type5 : 'a1 -> (Positive.pos -> 'a1) -> natp -> 'a1 **)
    3333let rec natp_rect_Type5 h_pzero h_ppos = function
    3434| Pzero -> h_pzero
    35 | Ppos x_4892 -> h_ppos x_4892
     35| Ppos x_4905 -> h_ppos x_4905
    3636
    3737(** val natp_rect_Type3 : 'a1 -> (Positive.pos -> 'a1) -> natp -> 'a1 **)
    3838let rec natp_rect_Type3 h_pzero h_ppos = function
    3939| Pzero -> h_pzero
    40 | Ppos x_4896 -> h_ppos x_4896
     40| Ppos x_4909 -> h_ppos x_4909
    4141
    4242(** val natp_rect_Type2 : 'a1 -> (Positive.pos -> 'a1) -> natp -> 'a1 **)
    4343let rec natp_rect_Type2 h_pzero h_ppos = function
    4444| Pzero -> h_pzero
    45 | Ppos x_4900 -> h_ppos x_4900
     45| Ppos x_4913 -> h_ppos x_4913
    4646
    4747(** val natp_rect_Type1 : 'a1 -> (Positive.pos -> 'a1) -> natp -> 'a1 **)
    4848let rec natp_rect_Type1 h_pzero h_ppos = function
    4949| Pzero -> h_pzero
    50 | Ppos x_4904 -> h_ppos x_4904
     50| Ppos x_4917 -> h_ppos x_4917
    5151
    5252(** val natp_rect_Type0 : 'a1 -> (Positive.pos -> 'a1) -> natp -> 'a1 **)
    5353let rec natp_rect_Type0 h_pzero h_ppos = function
    5454| Pzero -> h_pzero
    55 | Ppos x_4908 -> h_ppos x_4908
     55| Ppos x_4921 -> h_ppos x_4921
    5656
    5757(** val natp_inv_rect_Type4 :
  • extracted/eRTL.ml

    r3001 r3043  
    126126    (Registers.register -> 'a1) -> (I8051.register -> 'a1) -> move_dst -> 'a1 **)
    127127let rec move_dst_rect_Type4 h_PSD h_HDW = function
    128 | PSD x_5024 -> h_PSD x_5024
    129 | HDW x_5025 -> h_HDW x_5025
     128| PSD x_18555 -> h_PSD x_18555
     129| HDW x_18556 -> h_HDW x_18556
    130130
    131131(** val move_dst_rect_Type5 :
    132132    (Registers.register -> 'a1) -> (I8051.register -> 'a1) -> move_dst -> 'a1 **)
    133133let rec move_dst_rect_Type5 h_PSD h_HDW = function
    134 | PSD x_5029 -> h_PSD x_5029
    135 | HDW x_5030 -> h_HDW x_5030
     134| PSD x_18560 -> h_PSD x_18560
     135| HDW x_18561 -> h_HDW x_18561
    136136
    137137(** val move_dst_rect_Type3 :
    138138    (Registers.register -> 'a1) -> (I8051.register -> 'a1) -> move_dst -> 'a1 **)
    139139let rec move_dst_rect_Type3 h_PSD h_HDW = function
    140 | PSD x_5034 -> h_PSD x_5034
    141 | HDW x_5035 -> h_HDW x_5035
     140| PSD x_18565 -> h_PSD x_18565
     141| HDW x_18566 -> h_HDW x_18566
    142142
    143143(** val move_dst_rect_Type2 :
    144144    (Registers.register -> 'a1) -> (I8051.register -> 'a1) -> move_dst -> 'a1 **)
    145145let rec move_dst_rect_Type2 h_PSD h_HDW = function
    146 | PSD x_5039 -> h_PSD x_5039
    147 | HDW x_5040 -> h_HDW x_5040
     146| PSD x_18570 -> h_PSD x_18570
     147| HDW x_18571 -> h_HDW x_18571
    148148
    149149(** val move_dst_rect_Type1 :
    150150    (Registers.register -> 'a1) -> (I8051.register -> 'a1) -> move_dst -> 'a1 **)
    151151let rec move_dst_rect_Type1 h_PSD h_HDW = function
    152 | PSD x_5044 -> h_PSD x_5044
    153 | HDW x_5045 -> h_HDW x_5045
     152| PSD x_18575 -> h_PSD x_18575
     153| HDW x_18576 -> h_HDW x_18576
    154154
    155155(** val move_dst_rect_Type0 :
    156156    (Registers.register -> 'a1) -> (I8051.register -> 'a1) -> move_dst -> 'a1 **)
    157157let rec move_dst_rect_Type0 h_PSD h_HDW = function
    158 | PSD x_5049 -> h_PSD x_5049
    159 | HDW x_5050 -> h_HDW x_5050
     158| PSD x_18580 -> h_PSD x_18580
     159| HDW x_18581 -> h_HDW x_18581
    160160
    161161(** val move_dst_inv_rect_Type4 :
     
    352352| Ertl_new_frame -> h_ertl_new_frame
    353353| Ertl_del_frame -> h_ertl_del_frame
    354 | Ertl_frame_size x_5089 -> h_ertl_frame_size x_5089
     354| Ertl_frame_size x_18620 -> h_ertl_frame_size x_18620
    355355
    356356(** val ertl_seq_rect_Type5 :
     
    359359| Ertl_new_frame -> h_ertl_new_frame
    360360| Ertl_del_frame -> h_ertl_del_frame
    361 | Ertl_frame_size x_5094 -> h_ertl_frame_size x_5094
     361| Ertl_frame_size x_18625 -> h_ertl_frame_size x_18625
    362362
    363363(** val ertl_seq_rect_Type3 :
     
    366366| Ertl_new_frame -> h_ertl_new_frame
    367367| Ertl_del_frame -> h_ertl_del_frame
    368 | Ertl_frame_size x_5099 -> h_ertl_frame_size x_5099
     368| Ertl_frame_size x_18630 -> h_ertl_frame_size x_18630
    369369
    370370(** val ertl_seq_rect_Type2 :
     
    373373| Ertl_new_frame -> h_ertl_new_frame
    374374| Ertl_del_frame -> h_ertl_del_frame
    375 | Ertl_frame_size x_5104 -> h_ertl_frame_size x_5104
     375| Ertl_frame_size x_18635 -> h_ertl_frame_size x_18635
    376376
    377377(** val ertl_seq_rect_Type1 :
     
    380380| Ertl_new_frame -> h_ertl_new_frame
    381381| Ertl_del_frame -> h_ertl_del_frame
    382 | Ertl_frame_size x_5109 -> h_ertl_frame_size x_5109
     382| Ertl_frame_size x_18640 -> h_ertl_frame_size x_18640
    383383
    384384(** val ertl_seq_rect_Type0 :
     
    387387| Ertl_new_frame -> h_ertl_new_frame
    388388| Ertl_del_frame -> h_ertl_del_frame
    389 | Ertl_frame_size x_5114 -> h_ertl_frame_size x_5114
     389| Ertl_frame_size x_18645 -> h_ertl_frame_size x_18645
    390390
    391391(** val ertl_seq_inv_rect_Type4 :
     
    690690  in
    691691  let res0 =
    692     Joint.add_graph eRTL (AST.prog_var_names p.Joint.joint_prog) l1
     692    Joint.add_graph eRTL
     693      (Joint.prog_names (Joint.graph_params_to_params eRTL) p) l1
    693694      (Joint.Sequential ((Joint.COST_LABEL p.Joint.init_cost_label),
    694695      (Obj.magic l2))) res
    695696  in
    696697  let res1 =
    697     Joint.add_graph eRTL (AST.prog_var_names p.Joint.joint_prog) l2
     698    Joint.add_graph eRTL
     699      (Joint.prog_names (Joint.graph_params_to_params eRTL) p) l2
    698700      (Joint.Sequential ((Joint.CALL ((Types.Inl
    699       (AST.prog_main p.Joint.joint_prog)), (Obj.magic Nat.O),
     701      p.Joint.joint_prog.AST.prog_main), (Obj.magic Nat.O),
    700702      (Obj.magic Types.It))), (Obj.magic l3))) res0
    701703  in
    702704  let res2 =
    703     Joint.add_graph eRTL (AST.prog_var_names p.Joint.joint_prog) l3
     705    Joint.add_graph eRTL
     706      (Joint.prog_names (Joint.graph_params_to_params eRTL) p) l3
    704707      (Joint.Final (Joint.GOTO l3)) res1
    705708  in
  • extracted/eRTLToLTL.ml

    r3019 r3043  
    179179    arg_decision -> 'a1 **)
    180180let rec arg_decision_rect_Type4 h_arg_decision_colour h_arg_decision_spill h_arg_decision_imm = function
    181 | Arg_decision_colour x_106 -> h_arg_decision_colour x_106
    182 | Arg_decision_spill x_107 -> h_arg_decision_spill x_107
    183 | Arg_decision_imm x_108 -> h_arg_decision_imm x_108
     181| Arg_decision_colour x_9 -> h_arg_decision_colour x_9
     182| Arg_decision_spill x_10 -> h_arg_decision_spill x_10
     183| Arg_decision_imm x_11 -> h_arg_decision_imm x_11
    184184
    185185(** val arg_decision_rect_Type5 :
     
    187187    arg_decision -> 'a1 **)
    188188let rec arg_decision_rect_Type5 h_arg_decision_colour h_arg_decision_spill h_arg_decision_imm = function
    189 | Arg_decision_colour x_113 -> h_arg_decision_colour x_113
    190 | Arg_decision_spill x_114 -> h_arg_decision_spill x_114
    191 | Arg_decision_imm x_115 -> h_arg_decision_imm x_115
     189| Arg_decision_colour x_16 -> h_arg_decision_colour x_16
     190| Arg_decision_spill x_17 -> h_arg_decision_spill x_17
     191| Arg_decision_imm x_18 -> h_arg_decision_imm x_18
    192192
    193193(** val arg_decision_rect_Type3 :
     
    195195    arg_decision -> 'a1 **)
    196196let rec arg_decision_rect_Type3 h_arg_decision_colour h_arg_decision_spill h_arg_decision_imm = function
    197 | Arg_decision_colour x_120 -> h_arg_decision_colour x_120
    198 | Arg_decision_spill x_121 -> h_arg_decision_spill x_121
    199 | Arg_decision_imm x_122 -> h_arg_decision_imm x_122
     197| Arg_decision_colour x_23 -> h_arg_decision_colour x_23
     198| Arg_decision_spill x_24 -> h_arg_decision_spill x_24
     199| Arg_decision_imm x_25 -> h_arg_decision_imm x_25
    200200
    201201(** val arg_decision_rect_Type2 :
     
    203203    arg_decision -> 'a1 **)
    204204let rec arg_decision_rect_Type2 h_arg_decision_colour h_arg_decision_spill h_arg_decision_imm = function
    205 | Arg_decision_colour x_127 -> h_arg_decision_colour x_127
    206 | Arg_decision_spill x_128 -> h_arg_decision_spill x_128
    207 | Arg_decision_imm x_129 -> h_arg_decision_imm x_129
     205| Arg_decision_colour x_30 -> h_arg_decision_colour x_30
     206| Arg_decision_spill x_31 -> h_arg_decision_spill x_31
     207| Arg_decision_imm x_32 -> h_arg_decision_imm x_32
    208208
    209209(** val arg_decision_rect_Type1 :
     
    211211    arg_decision -> 'a1 **)
    212212let rec arg_decision_rect_Type1 h_arg_decision_colour h_arg_decision_spill h_arg_decision_imm = function
    213 | Arg_decision_colour x_134 -> h_arg_decision_colour x_134
    214 | Arg_decision_spill x_135 -> h_arg_decision_spill x_135
    215 | Arg_decision_imm x_136 -> h_arg_decision_imm x_136
     213| Arg_decision_colour x_37 -> h_arg_decision_colour x_37
     214| Arg_decision_spill x_38 -> h_arg_decision_spill x_38
     215| Arg_decision_imm x_39 -> h_arg_decision_imm x_39
    216216
    217217(** val arg_decision_rect_Type0 :
     
    219219    arg_decision -> 'a1 **)
    220220let rec arg_decision_rect_Type0 h_arg_decision_colour h_arg_decision_spill h_arg_decision_imm = function
    221 | Arg_decision_colour x_141 -> h_arg_decision_colour x_141
    222 | Arg_decision_spill x_142 -> h_arg_decision_spill x_142
    223 | Arg_decision_imm x_143 -> h_arg_decision_imm x_143
     221| Arg_decision_colour x_44 -> h_arg_decision_colour x_44
     222| Arg_decision_spill x_45 -> h_arg_decision_spill x_45
     223| Arg_decision_imm x_46 -> h_arg_decision_imm x_46
    224224
    225225(** val arg_decision_inv_rect_Type4 :
     
    768768
    769769(** val translate_address :
    770     __ List.list -> Nat.nat -> Bool.bool -> __ -> Interference.decision ->
    771     Interference.decision -> Joint.joint_seq List.list **)
    772 let translate_address globals localss carry_lives_after id addr1 addr2 =
     770    __ List.list -> Nat.nat -> Bool.bool -> __ -> BitVector.word ->
     771    Interference.decision -> Interference.decision -> Joint.joint_seq
     772    List.list **)
     773let translate_address globals localss carry_lives_after id off addr1 addr2 =
    773774  preserve_carry_bit (Obj.magic globals)
    774775    (Bool.andb carry_lives_after
    775776      (Bool.orb (is_spilled addr1) (is_spilled addr2))) (List.Cons
    776     ((Joint.ADDRESS ((Obj.magic id), (Obj.magic Types.It),
     777    ((Joint.ADDRESS ((Obj.magic id), off, (Obj.magic Types.It),
    777778    (Obj.magic Types.It))),
    778779    (List.append
     
    829830               (Obj.magic (Joint_LTL_LIN.HIGH_ADDRESS (Obj.magic l)))),
    830831               (List.Cons ((fun x0 -> Joint.PUSH (Obj.magic Types.It)),
    831                List.Nil))))))))); Types.snd = (fun x0 -> Joint.CALL
     832               (List.Cons ((fun x0 -> Joint.MOVE
     833               (Obj.magic (Joint_LTL_LIN.Int_to_acc (a, Joint.zero_byte)))),
     834               List.Nil))))))))))); Types.snd = (fun x0 -> Joint.CALL
    832835             ((Types.Inr { Types.fst = (Obj.magic Types.It); Types.snd =
    833836             (Obj.magic Types.It) }), n_args, (Obj.magic Types.It))) };
     
    871874                   (Obj.magic lookup_arg a0)) (List.Cons ((Joint.PUSH
    872875                 (Obj.magic a)), List.Nil)))
    873            | Joint.ADDRESS (lbl0, dpl, dph) ->
     876           | Joint.ADDRESS (lbl0, off, dpl, dph) ->
    874877             Blocks.ensure_step_block (Joint.graph_params_to_params LTL.lTL)
    875878               globals
    876879               (translate_address (Obj.magic globals) localss
    877                  carry_lives_after (Obj.magic lbl0) (Obj.magic lookup dpl)
    878                  (Obj.magic lookup dph))
     880                 carry_lives_after (Obj.magic lbl0) off
     881                 (Obj.magic lookup dpl) (Obj.magic lookup dph))
    879882           | Joint.OPACCS (op, dst1, dst2, arg1, arg2) ->
    880883             Blocks.ensure_step_block (Joint.graph_params_to_params LTL.lTL)
  • extracted/eRTLToLTL.mli

    r3019 r3043  
    348348
    349349val translate_address :
    350   __ List.list -> Nat.nat -> Bool.bool -> __ -> Interference.decision ->
    351   Interference.decision -> Joint.joint_seq List.list
     350  __ List.list -> Nat.nat -> Bool.bool -> __ -> BitVector.word ->
     351  Interference.decision -> Interference.decision -> Joint.joint_seq List.list
    352352
    353353val translate_step :
  • extracted/eRTL_printer.ml

    r2951 r3043  
    130130    pp prog
    131131    (Joint_printer.graph_code_iteration_params ERTL.eRTL
    132       (List.map (fun x -> x.Types.fst.Types.fst)
    133         prog.Joint.joint_prog.AST.prog_vars) pp)
     132      (Joint.prog_names (Joint.graph_params_to_params ERTL.eRTL) prog) pp)
    134133
  • extracted/errors.ml

    r2997 r3043  
    4343    PreIdentifiers.identifier -> 'a1) -> errcode -> 'a1 **)
    4444let rec errcode_rect_Type4 h_MSG h_CTX = function
    45 | MSG x_7 -> h_MSG x_7
    46 | CTX (tag, x_8) -> h_CTX tag x_8
     45| MSG x_3113 -> h_MSG x_3113
     46| CTX (tag, x_3114) -> h_CTX tag x_3114
    4747
    4848(** val errcode_rect_Type5 :
     
    5050    PreIdentifiers.identifier -> 'a1) -> errcode -> 'a1 **)
    5151let rec errcode_rect_Type5 h_MSG h_CTX = function
    52 | MSG x_12 -> h_MSG x_12
    53 | CTX (tag, x_13) -> h_CTX tag x_13
     52| MSG x_3118 -> h_MSG x_3118
     53| CTX (tag, x_3119) -> h_CTX tag x_3119
    5454
    5555(** val errcode_rect_Type3 :
     
    5757    PreIdentifiers.identifier -> 'a1) -> errcode -> 'a1 **)
    5858let rec errcode_rect_Type3 h_MSG h_CTX = function
    59 | MSG x_17 -> h_MSG x_17
    60 | CTX (tag, x_18) -> h_CTX tag x_18
     59| MSG x_3123 -> h_MSG x_3123
     60| CTX (tag, x_3124) -> h_CTX tag x_3124
    6161
    6262(** val errcode_rect_Type2 :
     
    6464    PreIdentifiers.identifier -> 'a1) -> errcode -> 'a1 **)
    6565let rec errcode_rect_Type2 h_MSG h_CTX = function
    66 | MSG x_22 -> h_MSG x_22
    67 | CTX (tag, x_23) -> h_CTX tag x_23
     66| MSG x_3128 -> h_MSG x_3128
     67| CTX (tag, x_3129) -> h_CTX tag x_3129
    6868
    6969(** val errcode_rect_Type1 :
     
    7171    PreIdentifiers.identifier -> 'a1) -> errcode -> 'a1 **)
    7272let rec errcode_rect_Type1 h_MSG h_CTX = function
    73 | MSG x_27 -> h_MSG x_27
    74 | CTX (tag, x_28) -> h_CTX tag x_28
     73| MSG x_3133 -> h_MSG x_3133
     74| CTX (tag, x_3134) -> h_CTX tag x_3134
    7575
    7676(** val errcode_rect_Type0 :
     
    7878    PreIdentifiers.identifier -> 'a1) -> errcode -> 'a1 **)
    7979let rec errcode_rect_Type0 h_MSG h_CTX = function
    80 | MSG x_32 -> h_MSG x_32
    81 | CTX (tag, x_33) -> h_CTX tag x_33
     80| MSG x_3138 -> h_MSG x_3138
     81| CTX (tag, x_3139) -> h_CTX tag x_3139
    8282
    8383(** val errcode_inv_rect_Type4 :
     
    143143    ('a1 -> 'a2) -> (errmsg -> 'a2) -> 'a1 res -> 'a2 **)
    144144let rec res_rect_Type4 h_OK h_Error = function
    145 | OK x_72 -> h_OK x_72
    146 | Error x_73 -> h_Error x_73
     145| OK x_3178 -> h_OK x_3178
     146| Error x_3179 -> h_Error x_3179
    147147
    148148(** val res_rect_Type5 :
    149149    ('a1 -> 'a2) -> (errmsg -> 'a2) -> 'a1 res -> 'a2 **)
    150150let rec res_rect_Type5 h_OK h_Error = function
    151 | OK x_77 -> h_OK x_77
    152 | Error x_78 -> h_Error x_78
     151| OK x_3183 -> h_OK x_3183
     152| Error x_3184 -> h_Error x_3184
    153153
    154154(** val res_rect_Type3 :
    155155    ('a1 -> 'a2) -> (errmsg -> 'a2) -> 'a1 res -> 'a2 **)
    156156let rec res_rect_Type3 h_OK h_Error = function
    157 | OK x_82 -> h_OK x_82
    158 | Error x_83 -> h_Error x_83
     157| OK x_3188 -> h_OK x_3188
     158| Error x_3189 -> h_Error x_3189
    159159
    160160(** val res_rect_Type2 :
    161161    ('a1 -> 'a2) -> (errmsg -> 'a2) -> 'a1 res -> 'a2 **)
    162162let rec res_rect_Type2 h_OK h_Error = function
    163 | OK x_87 -> h_OK x_87
    164 | Error x_88 -> h_Error x_88
     163| OK x_3193 -> h_OK x_3193
     164| Error x_3194 -> h_Error x_3194
    165165
    166166(** val res_rect_Type1 :
    167167    ('a1 -> 'a2) -> (errmsg -> 'a2) -> 'a1 res -> 'a2 **)
    168168let rec res_rect_Type1 h_OK h_Error = function
    169 | OK x_92 -> h_OK x_92
    170 | Error x_93 -> h_Error x_93
     169| OK x_3198 -> h_OK x_3198
     170| Error x_3199 -> h_Error x_3199
    171171
    172172(** val res_rect_Type0 :
    173173    ('a1 -> 'a2) -> (errmsg -> 'a2) -> 'a1 res -> 'a2 **)
    174174let rec res_rect_Type0 h_OK h_Error = function
    175 | OK x_97 -> h_OK x_97
    176 | Error x_98 -> h_Error x_98
     175| OK x_3203 -> h_OK x_3203
     176| Error x_3204 -> h_Error x_3204
    177177
    178178(** val res_inv_rect_Type4 :
  • extracted/events.ml

    r2997 r3043  
    8989    (AST.intsize -> AST.bvint -> 'a1) -> eventval -> 'a1 **)
    9090let rec eventval_rect_Type4 h_EVint = function
    91 | EVint (sz, x_4405) -> h_EVint sz x_4405
     91| EVint (sz, x_5537) -> h_EVint sz x_5537
    9292
    9393(** val eventval_rect_Type5 :
    9494    (AST.intsize -> AST.bvint -> 'a1) -> eventval -> 'a1 **)
    9595let rec eventval_rect_Type5 h_EVint = function
    96 | EVint (sz, x_4408) -> h_EVint sz x_4408
     96| EVint (sz, x_5540) -> h_EVint sz x_5540
    9797
    9898(** val eventval_rect_Type3 :
    9999    (AST.intsize -> AST.bvint -> 'a1) -> eventval -> 'a1 **)
    100100let rec eventval_rect_Type3 h_EVint = function
    101 | EVint (sz, x_4411) -> h_EVint sz x_4411
     101| EVint (sz, x_5543) -> h_EVint sz x_5543
    102102
    103103(** val eventval_rect_Type2 :
    104104    (AST.intsize -> AST.bvint -> 'a1) -> eventval -> 'a1 **)
    105105let rec eventval_rect_Type2 h_EVint = function
    106 | EVint (sz, x_4414) -> h_EVint sz x_4414
     106| EVint (sz, x_5546) -> h_EVint sz x_5546
    107107
    108108(** val eventval_rect_Type1 :
    109109    (AST.intsize -> AST.bvint -> 'a1) -> eventval -> 'a1 **)
    110110let rec eventval_rect_Type1 h_EVint = function
    111 | EVint (sz, x_4417) -> h_EVint sz x_4417
     111| EVint (sz, x_5549) -> h_EVint sz x_5549
    112112
    113113(** val eventval_rect_Type0 :
    114114    (AST.intsize -> AST.bvint -> 'a1) -> eventval -> 'a1 **)
    115115let rec eventval_rect_Type0 h_EVint = function
    116 | EVint (sz, x_4420) -> h_EVint sz x_4420
     116| EVint (sz, x_5552) -> h_EVint sz x_5552
    117117
    118118(** val eventval_inv_rect_Type4 :
     
    159159    eventval -> 'a1) -> event -> 'a1 **)
    160160let rec event_rect_Type4 h_EVcost h_EVextcall = function
    161 | EVcost x_4445 -> h_EVcost x_4445
     161| EVcost x_5577 -> h_EVcost x_5577
    162162| EVextcall (ev_name, ev_args, ev_res) -> h_EVextcall ev_name ev_args ev_res
    163163
     
    166166    eventval -> 'a1) -> event -> 'a1 **)
    167167let rec event_rect_Type5 h_EVcost h_EVextcall = function
    168 | EVcost x_4449 -> h_EVcost x_4449
     168| EVcost x_5581 -> h_EVcost x_5581
    169169| EVextcall (ev_name, ev_args, ev_res) -> h_EVextcall ev_name ev_args ev_res
    170170
     
    173173    eventval -> 'a1) -> event -> 'a1 **)
    174174let rec event_rect_Type3 h_EVcost h_EVextcall = function
    175 | EVcost x_4453 -> h_EVcost x_4453
     175| EVcost x_5585 -> h_EVcost x_5585
    176176| EVextcall (ev_name, ev_args, ev_res) -> h_EVextcall ev_name ev_args ev_res
    177177
     
    180180    eventval -> 'a1) -> event -> 'a1 **)
    181181let rec event_rect_Type2 h_EVcost h_EVextcall = function
    182 | EVcost x_4457 -> h_EVcost x_4457
     182| EVcost x_5589 -> h_EVcost x_5589
    183183| EVextcall (ev_name, ev_args, ev_res) -> h_EVextcall ev_name ev_args ev_res
    184184
     
    187187    eventval -> 'a1) -> event -> 'a1 **)
    188188let rec event_rect_Type1 h_EVcost h_EVextcall = function
    189 | EVcost x_4461 -> h_EVcost x_4461
     189| EVcost x_5593 -> h_EVcost x_5593
    190190| EVextcall (ev_name, ev_args, ev_res) -> h_EVextcall ev_name ev_args ev_res
    191191
     
    194194    eventval -> 'a1) -> event -> 'a1 **)
    195195let rec event_rect_Type0 h_EVcost h_EVextcall = function
    196 | EVcost x_4465 -> h_EVcost x_4465
     196| EVcost x_5597 -> h_EVcost x_5597
    197197| EVextcall (ev_name, ev_args, ev_res) -> h_EVextcall ev_name ev_args ev_res
    198198
  • extracted/fetch.ml

    r2999 r3043  
    9898  (Types.pi1
    9999    (FoldStuff.foldl_strong program (fun prefix x tl _ labels_costs_ppc ->
    100       (let { Types.fst = eta24592; Types.snd = ppc } =
     100      (let { Types.fst = eta19; Types.snd = ppc } =
    101101         Types.pi1 labels_costs_ppc
    102102       in
    103103      (fun _ ->
    104       (let { Types.fst = labels; Types.snd = costs } = eta24592 in
     104      (let { Types.fst = labels; Types.snd = costs } = eta19 in
    105105      (fun _ ->
    106106      (let { Types.fst = label; Types.snd = instr } = x in
     
    124124        | ASM.Jmp x0 -> costs
    125125        | ASM.Jnz (x0, x1, x2) -> costs
    126         | ASM.MovSuccessor (x0, x1, x2) -> costs
    127126        | ASM.Call x0 -> costs
    128         | ASM.Mov (x0, x1) -> costs
     127        | ASM.Mov (x0, x1, x2) -> costs
    129128      in
    130129      { Types.fst = { Types.fst = labels1; Types.snd = costs1 }; Types.snd =
     
    978977                        | Bool.True ->
    979978                          { Types.fst = { Types.fst = (ASM.RealInstruction
    980                             (ASM.JMP ASM.INDIRECT_DPTR)); Types.snd = pc };
     979                            (ASM.JMP ASM.ACC_DPTR)); Types.snd = pc };
    981980                            Types.snd = (Nat.S (Nat.S Nat.O)) }
    982981                        | Bool.False ->
  • extracted/fixpoints.ml

    r3001 r3043  
    8080    (__ -> __ -> (__ -> __ -> Bool.bool) -> (__ -> __ -> Bool.bool) -> (__ ->
    8181    Bool.bool) -> 'a1) -> property_lattice -> 'a1 **)
    82 let rec property_lattice_rect_Type4 h_mk_property_lattice x_5704 =
    83   let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
    84     l_is_maximal = l_is_maximal0 } = x_5704
     82let rec property_lattice_rect_Type4 h_mk_property_lattice x_18941 =
     83  let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
     84    l_is_maximal = l_is_maximal0 } = x_18941
    8585  in
    8686  h_mk_property_lattice __ l_bottom0 l_equal0 l_included0 l_is_maximal0
     
    8989    (__ -> __ -> (__ -> __ -> Bool.bool) -> (__ -> __ -> Bool.bool) -> (__ ->
    9090    Bool.bool) -> 'a1) -> property_lattice -> 'a1 **)
    91 let rec property_lattice_rect_Type5 h_mk_property_lattice x_5706 =
    92   let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
    93     l_is_maximal = l_is_maximal0 } = x_5706
     91let rec property_lattice_rect_Type5 h_mk_property_lattice x_18943 =
     92  let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
     93    l_is_maximal = l_is_maximal0 } = x_18943
    9494  in
    9595  h_mk_property_lattice __ l_bottom0 l_equal0 l_included0 l_is_maximal0
     
    9898    (__ -> __ -> (__ -> __ -> Bool.bool) -> (__ -> __ -> Bool.bool) -> (__ ->
    9999    Bool.bool) -> 'a1) -> property_lattice -> 'a1 **)
    100 let rec property_lattice_rect_Type3 h_mk_property_lattice x_5708 =
    101   let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
    102     l_is_maximal = l_is_maximal0 } = x_5708
     100let rec property_lattice_rect_Type3 h_mk_property_lattice x_18945 =
     101  let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
     102    l_is_maximal = l_is_maximal0 } = x_18945
    103103  in
    104104  h_mk_property_lattice __ l_bottom0 l_equal0 l_included0 l_is_maximal0
     
    107107    (__ -> __ -> (__ -> __ -> Bool.bool) -> (__ -> __ -> Bool.bool) -> (__ ->
    108108    Bool.bool) -> 'a1) -> property_lattice -> 'a1 **)
    109 let rec property_lattice_rect_Type2 h_mk_property_lattice x_5710 =
    110   let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
    111     l_is_maximal = l_is_maximal0 } = x_5710
     109let rec property_lattice_rect_Type2 h_mk_property_lattice x_18947 =
     110  let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
     111    l_is_maximal = l_is_maximal0 } = x_18947
    112112  in
    113113  h_mk_property_lattice __ l_bottom0 l_equal0 l_included0 l_is_maximal0
     
    116116    (__ -> __ -> (__ -> __ -> Bool.bool) -> (__ -> __ -> Bool.bool) -> (__ ->
    117117    Bool.bool) -> 'a1) -> property_lattice -> 'a1 **)
    118 let rec property_lattice_rect_Type1 h_mk_property_lattice x_5712 =
    119   let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
    120     l_is_maximal = l_is_maximal0 } = x_5712
     118let rec property_lattice_rect_Type1 h_mk_property_lattice x_18949 =
     119  let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
     120    l_is_maximal = l_is_maximal0 } = x_18949
    121121  in
    122122  h_mk_property_lattice __ l_bottom0 l_equal0 l_included0 l_is_maximal0
     
    125125    (__ -> __ -> (__ -> __ -> Bool.bool) -> (__ -> __ -> Bool.bool) -> (__ ->
    126126    Bool.bool) -> 'a1) -> property_lattice -> 'a1 **)
    127 let rec property_lattice_rect_Type0 h_mk_property_lattice x_5714 =
    128   let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
    129     l_is_maximal = l_is_maximal0 } = x_5714
     127let rec property_lattice_rect_Type0 h_mk_property_lattice x_18951 =
     128  let { l_bottom = l_bottom0; l_equal = l_equal0; l_included = l_included0;
     129    l_is_maximal = l_is_maximal0 } = x_18951
    130130  in
    131131  h_mk_property_lattice __ l_bottom0 l_equal0 l_included0 l_is_maximal0
     
    201201    property_lattice -> equations -> (valuation -> __ -> 'a1) -> fixpoint ->
    202202    'a1 **)
    203 let rec fixpoint_rect_Type4 latt eqs h_mk_fixpoint x_5735 =
    204   let fix_lfp = x_5735 in h_mk_fixpoint fix_lfp __
     203let rec fixpoint_rect_Type4 latt eqs h_mk_fixpoint x_18972 =
     204  let fix_lfp = x_18972 in h_mk_fixpoint fix_lfp __
    205205
    206206(** val fixpoint_rect_Type5 :
    207207    property_lattice -> equations -> (valuation -> __ -> 'a1) -> fixpoint ->
    208208    'a1 **)
    209 let rec fixpoint_rect_Type5 latt eqs h_mk_fixpoint x_5737 =
    210   let fix_lfp = x_5737 in h_mk_fixpoint fix_lfp __
     209let rec fixpoint_rect_Type5 latt eqs h_mk_fixpoint x_18974 =
     210  let fix_lfp = x_18974 in h_mk_fixpoint fix_lfp __
    211211
    212212(** val fixpoint_rect_Type3 :
    213213    property_lattice -> equations -> (valuation -> __ -> 'a1) -> fixpoint ->
    214214    'a1 **)
    215 let rec fixpoint_rect_Type3 latt eqs h_mk_fixpoint x_5739 =
    216   let fix_lfp = x_5739 in h_mk_fixpoint fix_lfp __
     215let rec fixpoint_rect_Type3 latt eqs h_mk_fixpoint x_18976 =
     216  let fix_lfp = x_18976 in h_mk_fixpoint fix_lfp __
    217217
    218218(** val fixpoint_rect_Type2 :
    219219    property_lattice -> equations -> (valuation -> __ -> 'a1) -> fixpoint ->
    220220    'a1 **)
    221 let rec fixpoint_rect_Type2 latt eqs h_mk_fixpoint x_5741 =
    222   let fix_lfp = x_5741 in h_mk_fixpoint fix_lfp __
     221let rec fixpoint_rect_Type2 latt eqs h_mk_fixpoint x_18978 =
     222  let fix_lfp = x_18978 in h_mk_fixpoint fix_lfp __
    223223
    224224(** val fixpoint_rect_Type1 :
    225225    property_lattice -> equations -> (valuation -> __ -> 'a1) -> fixpoint ->
    226226    'a1 **)
    227 let rec fixpoint_rect_Type1 latt eqs h_mk_fixpoint x_5743 =
    228   let fix_lfp = x_5743 in h_mk_fixpoint fix_lfp __
     227let rec fixpoint_rect_Type1 latt eqs h_mk_fixpoint x_18980 =
     228  let fix_lfp = x_18980 in h_mk_fixpoint fix_lfp __
    229229
    230230(** val fixpoint_rect_Type0 :
    231231    property_lattice -> equations -> (valuation -> __ -> 'a1) -> fixpoint ->
    232232    'a1 **)
    233 let rec fixpoint_rect_Type0 latt eqs h_mk_fixpoint x_5745 =
    234   let fix_lfp = x_5745 in h_mk_fixpoint fix_lfp __
     233let rec fixpoint_rect_Type0 latt eqs h_mk_fixpoint x_18982 =
     234  let fix_lfp = x_18982 in h_mk_fixpoint fix_lfp __
    235235
    236236(** val fix_lfp : property_lattice -> equations -> fixpoint -> valuation **)
  • extracted/fresh.ml

    r3001 r3043  
    108108(** val max_id_of_program : Csyntax.clight_program -> AST.ident **)
    109109let max_id_of_program p =
    110   max_id (max_id (max_id_of_functs (AST.prog_funct p)) (AST.prog_main p))
    111     (max_id_of_globvars (AST.prog_vars p))
     110  max_id (max_id (max_id_of_functs p.AST.prog_funct) p.AST.prog_main)
     111    (max_id_of_globvars p.AST.prog_vars)
    112112
    113113(** val universe_of_max : AST.ident -> Identifiers.universe **)
  • extracted/frontEndMem.ml

    r3001 r3043  
    154154  let off =
    155155    BitVectorZ.z_of_unsigned_bitvector Pointers.offset_size
    156       (Pointers.offv (Pointers.poff ptr))
     156      (Pointers.offv ptr.Pointers.poff)
    157157  in
    158158  Bool.andb
    159159    (Bool.andb
    160       (Z.zltb (Pointers.block_id (Pointers.pblock ptr)) m.GenMem.nextblock)
    161       (Z.zleb (GenMem.low_bound m (Pointers.pblock ptr)) off))
    162     (Z.zltb off (GenMem.high_bound m (Pointers.pblock ptr)))
     160      (Z.zltb (Pointers.block_id ptr.Pointers.pblock) m.GenMem.nextblock)
     161      (Z.zleb (GenMem.low_bound m ptr.Pointers.pblock) off))
     162    (Z.zltb off (GenMem.high_bound m ptr.Pointers.pblock))
    163163
  • extracted/frontEndOps.ml

    r3001 r3043  
    9999    (AST.intsize -> AST.signedness -> AST.bvint -> 'a1) -> (AST.ident ->
    100100    Nat.nat -> 'a1) -> (Nat.nat -> 'a1) -> AST.typ -> constant -> 'a1 **)
    101 let rec constant_rect_Type4 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_6050 = function
    102 | Ointconst (sz, sg, x_6052) -> h_Ointconst sz sg x_6052
    103 | Oaddrsymbol (x_6054, x_6053) -> h_Oaddrsymbol x_6054 x_6053
    104 | Oaddrstack x_6055 -> h_Oaddrstack x_6055
     101let rec constant_rect_Type4 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_13174 = function
     102| Ointconst (sz, sg, x_13176) -> h_Ointconst sz sg x_13176
     103| Oaddrsymbol (x_13178, x_13177) -> h_Oaddrsymbol x_13178 x_13177
     104| Oaddrstack x_13179 -> h_Oaddrstack x_13179
    105105
    106106(** val constant_rect_Type5 :
    107107    (AST.intsize -> AST.signedness -> AST.bvint -> 'a1) -> (AST.ident ->
    108108    Nat.nat -> 'a1) -> (Nat.nat -> 'a1) -> AST.typ -> constant -> 'a1 **)
    109 let rec constant_rect_Type5 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_6059 = function
    110 | Ointconst (sz, sg, x_6061) -> h_Ointconst sz sg x_6061
    111 | Oaddrsymbol (x_6063, x_6062) -> h_Oaddrsymbol x_6063 x_6062
    112 | Oaddrstack x_6064 -> h_Oaddrstack x_6064
     109let rec constant_rect_Type5 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_13183 = function
     110| Ointconst (sz, sg, x_13185) -> h_Ointconst sz sg x_13185
     111| Oaddrsymbol (x_13187, x_13186) -> h_Oaddrsymbol x_13187 x_13186
     112| Oaddrstack x_13188 -> h_Oaddrstack x_13188
    113113
    114114(** val constant_rect_Type3 :
    115115    (AST.intsize -> AST.signedness -> AST.bvint -> 'a1) -> (AST.ident ->
    116116    Nat.nat -> 'a1) -> (Nat.nat -> 'a1) -> AST.typ -> constant -> 'a1 **)
    117 let rec constant_rect_Type3 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_6068 = function
    118 | Ointconst (sz, sg, x_6070) -> h_Ointconst sz sg x_6070
    119 | Oaddrsymbol (x_6072, x_6071) -> h_Oaddrsymbol x_6072 x_6071
    120 | Oaddrstack x_6073 -> h_Oaddrstack x_6073
     117let rec constant_rect_Type3 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_13192 = function
     118| Ointconst (sz, sg, x_13194) -> h_Ointconst sz sg x_13194
     119| Oaddrsymbol (x_13196, x_13195) -> h_Oaddrsymbol x_13196 x_13195
     120| Oaddrstack x_13197 -> h_Oaddrstack x_13197
    121121
    122122(** val constant_rect_Type2 :
    123123    (AST.intsize -> AST.signedness -> AST.bvint -> 'a1) -> (AST.ident ->
    124124    Nat.nat -> 'a1) -> (Nat.nat -> 'a1) -> AST.typ -> constant -> 'a1 **)
    125 let rec constant_rect_Type2 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_6077 = function
    126 | Ointconst (sz, sg, x_6079) -> h_Ointconst sz sg x_6079
    127 | Oaddrsymbol (x_6081, x_6080) -> h_Oaddrsymbol x_6081 x_6080
    128 | Oaddrstack x_6082 -> h_Oaddrstack x_6082
     125let rec constant_rect_Type2 h_Ointconst h_Oaddrsymbol h_Oaddrstack x_13201 = function
     126| Ointconst (sz, sg, x_13203) -> h_Ointconst sz sg x_13203
     127| Oaddrsymbol (x_13205, x_13204) -> h_Oaddrsymbol x_13205 x_13204
     128| Oaddrstack x_13206 -> h_Oaddrstack x_13206
    129129