source: extracted/joint_printer.ml @ 2854

Last change on this file since 2854 was 2854, checked in by sacerdot, 7 years ago

Pretty printing of the LTL program.

File size: 51.1 KB
Line 
1open Preamble
2
3open String
4
5open Sets
6
7open Listb
8
9open LabelledObjects
10
11open BitVectorTrie
12
13open Graphs
14
15open I8051
16
17open Order
18
19open Registers
20
21open CostLabel
22
23open Hide
24
25open Proper
26
27open PositiveMap
28
29open Deqsets
30
31open ErrorMessages
32
33open PreIdentifiers
34
35open Errors
36
37open Extralib
38
39open Lists
40
41open Identifiers
42
43open Integers
44
45open AST
46
47open Division
48
49open Exp
50
51open Arithmetic
52
53open Setoids
54
55open Monad
56
57open Option
58
59open Extranat
60
61open Vector
62
63open Div_and_mod
64
65open Jmeq
66
67open Russell
68
69open List
70
71open Util
72
73open FoldStuff
74
75open BitVector
76
77open Types
78
79open Bool
80
81open Relations
82
83open Nat
84
85open Hints_declaration
86
87open Core_notation
88
89open Pts
90
91open Logic
92
93open Positive
94
95open Z
96
97open BitVectorZ
98
99open Pointers
100
101open ByteValues
102
103open BackEndOps
104
105open Joint
106
107type keyword =
108| KwCOMMENT
109| KwMOVE
110| KwPOP
111| KwPUSH
112| KwADDRESS
113| KwOPACCS
114| KwOP1
115| KwOP2
116| KwCLEAR_CARRY
117| KwSET_CARRY
118| KwLOAD
119| KwSTORE
120| KwCOST_LABEL
121| KwCOND
122| KwCALL
123| KwGOTO
124| KwRETURN
125| KwTAILCALL
126| KwFCOND
127
128(** val keyword_rect_Type4 :
129    'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1
130    -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> keyword -> 'a1 **)
131let rec keyword_rect_Type4 h_kwCOMMENT h_kwMOVE h_kwPOP h_kwPUSH h_kwADDRESS h_kwOPACCS h_kwOP1 h_kwOP2 h_kwCLEAR_CARRY h_kwSET_CARRY h_kwLOAD h_kwSTORE h_kwCOST_LABEL h_kwCOND h_kwCALL h_kwGOTO h_kwRETURN h_kwTAILCALL h_kwFCOND = function
132| KwCOMMENT -> h_kwCOMMENT
133| KwMOVE -> h_kwMOVE
134| KwPOP -> h_kwPOP
135| KwPUSH -> h_kwPUSH
136| KwADDRESS -> h_kwADDRESS
137| KwOPACCS -> h_kwOPACCS
138| KwOP1 -> h_kwOP1
139| KwOP2 -> h_kwOP2
140| KwCLEAR_CARRY -> h_kwCLEAR_CARRY
141| KwSET_CARRY -> h_kwSET_CARRY
142| KwLOAD -> h_kwLOAD
143| KwSTORE -> h_kwSTORE
144| KwCOST_LABEL -> h_kwCOST_LABEL
145| KwCOND -> h_kwCOND
146| KwCALL -> h_kwCALL
147| KwGOTO -> h_kwGOTO
148| KwRETURN -> h_kwRETURN
149| KwTAILCALL -> h_kwTAILCALL
150| KwFCOND -> h_kwFCOND
151
152(** val keyword_rect_Type5 :
153    'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1
154    -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> keyword -> 'a1 **)
155let rec keyword_rect_Type5 h_kwCOMMENT h_kwMOVE h_kwPOP h_kwPUSH h_kwADDRESS h_kwOPACCS h_kwOP1 h_kwOP2 h_kwCLEAR_CARRY h_kwSET_CARRY h_kwLOAD h_kwSTORE h_kwCOST_LABEL h_kwCOND h_kwCALL h_kwGOTO h_kwRETURN h_kwTAILCALL h_kwFCOND = function
156| KwCOMMENT -> h_kwCOMMENT
157| KwMOVE -> h_kwMOVE
158| KwPOP -> h_kwPOP
159| KwPUSH -> h_kwPUSH
160| KwADDRESS -> h_kwADDRESS
161| KwOPACCS -> h_kwOPACCS
162| KwOP1 -> h_kwOP1
163| KwOP2 -> h_kwOP2
164| KwCLEAR_CARRY -> h_kwCLEAR_CARRY
165| KwSET_CARRY -> h_kwSET_CARRY
166| KwLOAD -> h_kwLOAD
167| KwSTORE -> h_kwSTORE
168| KwCOST_LABEL -> h_kwCOST_LABEL
169| KwCOND -> h_kwCOND
170| KwCALL -> h_kwCALL
171| KwGOTO -> h_kwGOTO
172| KwRETURN -> h_kwRETURN
173| KwTAILCALL -> h_kwTAILCALL
174| KwFCOND -> h_kwFCOND
175
176(** val keyword_rect_Type3 :
177    'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1
178    -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> keyword -> 'a1 **)
179let rec keyword_rect_Type3 h_kwCOMMENT h_kwMOVE h_kwPOP h_kwPUSH h_kwADDRESS h_kwOPACCS h_kwOP1 h_kwOP2 h_kwCLEAR_CARRY h_kwSET_CARRY h_kwLOAD h_kwSTORE h_kwCOST_LABEL h_kwCOND h_kwCALL h_kwGOTO h_kwRETURN h_kwTAILCALL h_kwFCOND = function
180| KwCOMMENT -> h_kwCOMMENT
181| KwMOVE -> h_kwMOVE
182| KwPOP -> h_kwPOP
183| KwPUSH -> h_kwPUSH
184| KwADDRESS -> h_kwADDRESS
185| KwOPACCS -> h_kwOPACCS
186| KwOP1 -> h_kwOP1
187| KwOP2 -> h_kwOP2
188| KwCLEAR_CARRY -> h_kwCLEAR_CARRY
189| KwSET_CARRY -> h_kwSET_CARRY
190| KwLOAD -> h_kwLOAD
191| KwSTORE -> h_kwSTORE
192| KwCOST_LABEL -> h_kwCOST_LABEL
193| KwCOND -> h_kwCOND
194| KwCALL -> h_kwCALL
195| KwGOTO -> h_kwGOTO
196| KwRETURN -> h_kwRETURN
197| KwTAILCALL -> h_kwTAILCALL
198| KwFCOND -> h_kwFCOND
199
200(** val keyword_rect_Type2 :
201    'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1
202    -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> keyword -> 'a1 **)
203let rec keyword_rect_Type2 h_kwCOMMENT h_kwMOVE h_kwPOP h_kwPUSH h_kwADDRESS h_kwOPACCS h_kwOP1 h_kwOP2 h_kwCLEAR_CARRY h_kwSET_CARRY h_kwLOAD h_kwSTORE h_kwCOST_LABEL h_kwCOND h_kwCALL h_kwGOTO h_kwRETURN h_kwTAILCALL h_kwFCOND = function
204| KwCOMMENT -> h_kwCOMMENT
205| KwMOVE -> h_kwMOVE
206| KwPOP -> h_kwPOP
207| KwPUSH -> h_kwPUSH
208| KwADDRESS -> h_kwADDRESS
209| KwOPACCS -> h_kwOPACCS
210| KwOP1 -> h_kwOP1
211| KwOP2 -> h_kwOP2
212| KwCLEAR_CARRY -> h_kwCLEAR_CARRY
213| KwSET_CARRY -> h_kwSET_CARRY
214| KwLOAD -> h_kwLOAD
215| KwSTORE -> h_kwSTORE
216| KwCOST_LABEL -> h_kwCOST_LABEL
217| KwCOND -> h_kwCOND
218| KwCALL -> h_kwCALL
219| KwGOTO -> h_kwGOTO
220| KwRETURN -> h_kwRETURN
221| KwTAILCALL -> h_kwTAILCALL
222| KwFCOND -> h_kwFCOND
223
224(** val keyword_rect_Type1 :
225    'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1
226    -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> keyword -> 'a1 **)
227let rec keyword_rect_Type1 h_kwCOMMENT h_kwMOVE h_kwPOP h_kwPUSH h_kwADDRESS h_kwOPACCS h_kwOP1 h_kwOP2 h_kwCLEAR_CARRY h_kwSET_CARRY h_kwLOAD h_kwSTORE h_kwCOST_LABEL h_kwCOND h_kwCALL h_kwGOTO h_kwRETURN h_kwTAILCALL h_kwFCOND = function
228| KwCOMMENT -> h_kwCOMMENT
229| KwMOVE -> h_kwMOVE
230| KwPOP -> h_kwPOP
231| KwPUSH -> h_kwPUSH
232| KwADDRESS -> h_kwADDRESS
233| KwOPACCS -> h_kwOPACCS
234| KwOP1 -> h_kwOP1
235| KwOP2 -> h_kwOP2
236| KwCLEAR_CARRY -> h_kwCLEAR_CARRY
237| KwSET_CARRY -> h_kwSET_CARRY
238| KwLOAD -> h_kwLOAD
239| KwSTORE -> h_kwSTORE
240| KwCOST_LABEL -> h_kwCOST_LABEL
241| KwCOND -> h_kwCOND
242| KwCALL -> h_kwCALL
243| KwGOTO -> h_kwGOTO
244| KwRETURN -> h_kwRETURN
245| KwTAILCALL -> h_kwTAILCALL
246| KwFCOND -> h_kwFCOND
247
248(** val keyword_rect_Type0 :
249    'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1
250    -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> keyword -> 'a1 **)
251let rec keyword_rect_Type0 h_kwCOMMENT h_kwMOVE h_kwPOP h_kwPUSH h_kwADDRESS h_kwOPACCS h_kwOP1 h_kwOP2 h_kwCLEAR_CARRY h_kwSET_CARRY h_kwLOAD h_kwSTORE h_kwCOST_LABEL h_kwCOND h_kwCALL h_kwGOTO h_kwRETURN h_kwTAILCALL h_kwFCOND = function
252| KwCOMMENT -> h_kwCOMMENT
253| KwMOVE -> h_kwMOVE
254| KwPOP -> h_kwPOP
255| KwPUSH -> h_kwPUSH
256| KwADDRESS -> h_kwADDRESS
257| KwOPACCS -> h_kwOPACCS
258| KwOP1 -> h_kwOP1
259| KwOP2 -> h_kwOP2
260| KwCLEAR_CARRY -> h_kwCLEAR_CARRY
261| KwSET_CARRY -> h_kwSET_CARRY
262| KwLOAD -> h_kwLOAD
263| KwSTORE -> h_kwSTORE
264| KwCOST_LABEL -> h_kwCOST_LABEL
265| KwCOND -> h_kwCOND
266| KwCALL -> h_kwCALL
267| KwGOTO -> h_kwGOTO
268| KwRETURN -> h_kwRETURN
269| KwTAILCALL -> h_kwTAILCALL
270| KwFCOND -> h_kwFCOND
271
272(** val keyword_inv_rect_Type4 :
273    keyword -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
274    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
275    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
276    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
277    -> 'a1) -> 'a1 **)
278let keyword_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 =
279  let hcut =
280    keyword_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
281      h17 h18 h19 hterm
282  in
283  hcut __
284
285(** val keyword_inv_rect_Type3 :
286    keyword -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
287    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
288    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
289    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
290    -> 'a1) -> 'a1 **)
291let keyword_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 =
292  let hcut =
293    keyword_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
294      h17 h18 h19 hterm
295  in
296  hcut __
297
298(** val keyword_inv_rect_Type2 :
299    keyword -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
300    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
301    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
302    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
303    -> 'a1) -> 'a1 **)
304let keyword_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 =
305  let hcut =
306    keyword_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
307      h17 h18 h19 hterm
308  in
309  hcut __
310
311(** val keyword_inv_rect_Type1 :
312    keyword -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
313    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
314    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
315    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
316    -> 'a1) -> 'a1 **)
317let keyword_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 =
318  let hcut =
319    keyword_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
320      h17 h18 h19 hterm
321  in
322  hcut __
323
324(** val keyword_inv_rect_Type0 :
325    keyword -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
326    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
327    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
328    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
329    -> 'a1) -> 'a1 **)
330let keyword_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 =
331  let hcut =
332    keyword_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
333      h17 h18 h19 hterm
334  in
335  hcut __
336
337(** val keyword_discr : keyword -> keyword -> __ **)
338let keyword_discr x y =
339  Logic.eq_rect_Type2 x
340    (match x with
341     | KwCOMMENT -> Obj.magic (fun _ dH -> dH)
342     | KwMOVE -> Obj.magic (fun _ dH -> dH)
343     | KwPOP -> Obj.magic (fun _ dH -> dH)
344     | KwPUSH -> Obj.magic (fun _ dH -> dH)
345     | KwADDRESS -> Obj.magic (fun _ dH -> dH)
346     | KwOPACCS -> Obj.magic (fun _ dH -> dH)
347     | KwOP1 -> Obj.magic (fun _ dH -> dH)
348     | KwOP2 -> Obj.magic (fun _ dH -> dH)
349     | KwCLEAR_CARRY -> Obj.magic (fun _ dH -> dH)
350     | KwSET_CARRY -> Obj.magic (fun _ dH -> dH)
351     | KwLOAD -> Obj.magic (fun _ dH -> dH)
352     | KwSTORE -> Obj.magic (fun _ dH -> dH)
353     | KwCOST_LABEL -> Obj.magic (fun _ dH -> dH)
354     | KwCOND -> Obj.magic (fun _ dH -> dH)
355     | KwCALL -> Obj.magic (fun _ dH -> dH)
356     | KwGOTO -> Obj.magic (fun _ dH -> dH)
357     | KwRETURN -> Obj.magic (fun _ dH -> dH)
358     | KwTAILCALL -> Obj.magic (fun _ dH -> dH)
359     | KwFCOND -> Obj.magic (fun _ dH -> dH)) y
360
361(** val keyword_jmdiscr : keyword -> keyword -> __ **)
362let keyword_jmdiscr x y =
363  Logic.eq_rect_Type2 x
364    (match x with
365     | KwCOMMENT -> Obj.magic (fun _ dH -> dH)
366     | KwMOVE -> Obj.magic (fun _ dH -> dH)
367     | KwPOP -> Obj.magic (fun _ dH -> dH)
368     | KwPUSH -> Obj.magic (fun _ dH -> dH)
369     | KwADDRESS -> Obj.magic (fun _ dH -> dH)
370     | KwOPACCS -> Obj.magic (fun _ dH -> dH)
371     | KwOP1 -> Obj.magic (fun _ dH -> dH)
372     | KwOP2 -> Obj.magic (fun _ dH -> dH)
373     | KwCLEAR_CARRY -> Obj.magic (fun _ dH -> dH)
374     | KwSET_CARRY -> Obj.magic (fun _ dH -> dH)
375     | KwLOAD -> Obj.magic (fun _ dH -> dH)
376     | KwSTORE -> Obj.magic (fun _ dH -> dH)
377     | KwCOST_LABEL -> Obj.magic (fun _ dH -> dH)
378     | KwCOND -> Obj.magic (fun _ dH -> dH)
379     | KwCALL -> Obj.magic (fun _ dH -> dH)
380     | KwGOTO -> Obj.magic (fun _ dH -> dH)
381     | KwRETURN -> Obj.magic (fun _ dH -> dH)
382     | KwTAILCALL -> Obj.magic (fun _ dH -> dH)
383     | KwFCOND -> Obj.magic (fun _ dH -> dH)) y
384
385type 'string printing_pass_independent_params = { print_String : (String.string
386                                                                 -> 'string);
387                                                  print_keyword : (keyword ->
388                                                                  'string);
389                                                  print_concat : ('string ->
390                                                                 'string ->
391                                                                 'string);
392                                                  print_newline : 'string;
393                                                  print_empty : 'string;
394                                                  print_ident : (AST.ident ->
395                                                                'string);
396                                                  print_costlabel : (CostLabel.costlabel
397                                                                    ->
398                                                                    'string);
399                                                  print_label : (Graphs.label
400                                                                -> 'string);
401                                                  print_OpAccs : (BackEndOps.opAccs
402                                                                 -> 'string);
403                                                  print_Op1 : (BackEndOps.op1
404                                                              -> 'string);
405                                                  print_Op2 : (BackEndOps.op2
406                                                              -> 'string) }
407
408(** val printing_pass_independent_params_rect_Type4 :
409    ((String.string -> 'a1) -> (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1
410    -> 'a1 -> (AST.ident -> 'a1) -> (CostLabel.costlabel -> 'a1) ->
411    (Graphs.label -> 'a1) -> (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 ->
412    'a1) -> (BackEndOps.op2 -> 'a1) -> 'a2) -> 'a1
413    printing_pass_independent_params -> 'a2 **)
414let rec printing_pass_independent_params_rect_Type4 h_mk_printing_pass_independent_params x_263 =
415  let { print_String = print_String0; print_keyword = print_keyword0;
416    print_concat = print_concat0; print_newline = print_newline0;
417    print_empty = print_empty0; print_ident = print_ident0; print_costlabel =
418    print_costlabel0; print_label = print_label0; print_OpAccs =
419    print_OpAccs0; print_Op1 = print_Op3; print_Op2 = print_Op4 } = x_263
420  in
421  h_mk_printing_pass_independent_params print_String0 print_keyword0
422    print_concat0 print_newline0 print_empty0 print_ident0 print_costlabel0
423    print_label0 print_OpAccs0 print_Op3 print_Op4
424
425(** val printing_pass_independent_params_rect_Type5 :
426    ((String.string -> 'a1) -> (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1
427    -> 'a1 -> (AST.ident -> 'a1) -> (CostLabel.costlabel -> 'a1) ->
428    (Graphs.label -> 'a1) -> (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 ->
429    'a1) -> (BackEndOps.op2 -> 'a1) -> 'a2) -> 'a1
430    printing_pass_independent_params -> 'a2 **)
431let rec printing_pass_independent_params_rect_Type5 h_mk_printing_pass_independent_params x_265 =
432  let { print_String = print_String0; print_keyword = print_keyword0;
433    print_concat = print_concat0; print_newline = print_newline0;
434    print_empty = print_empty0; print_ident = print_ident0; print_costlabel =
435    print_costlabel0; print_label = print_label0; print_OpAccs =
436    print_OpAccs0; print_Op1 = print_Op3; print_Op2 = print_Op4 } = x_265
437  in
438  h_mk_printing_pass_independent_params print_String0 print_keyword0
439    print_concat0 print_newline0 print_empty0 print_ident0 print_costlabel0
440    print_label0 print_OpAccs0 print_Op3 print_Op4
441
442(** val printing_pass_independent_params_rect_Type3 :
443    ((String.string -> 'a1) -> (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1
444    -> 'a1 -> (AST.ident -> 'a1) -> (CostLabel.costlabel -> 'a1) ->
445    (Graphs.label -> 'a1) -> (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 ->
446    'a1) -> (BackEndOps.op2 -> 'a1) -> 'a2) -> 'a1
447    printing_pass_independent_params -> 'a2 **)
448let rec printing_pass_independent_params_rect_Type3 h_mk_printing_pass_independent_params x_267 =
449  let { print_String = print_String0; print_keyword = print_keyword0;
450    print_concat = print_concat0; print_newline = print_newline0;
451    print_empty = print_empty0; print_ident = print_ident0; print_costlabel =
452    print_costlabel0; print_label = print_label0; print_OpAccs =
453    print_OpAccs0; print_Op1 = print_Op3; print_Op2 = print_Op4 } = x_267
454  in
455  h_mk_printing_pass_independent_params print_String0 print_keyword0
456    print_concat0 print_newline0 print_empty0 print_ident0 print_costlabel0
457    print_label0 print_OpAccs0 print_Op3 print_Op4
458
459(** val printing_pass_independent_params_rect_Type2 :
460    ((String.string -> 'a1) -> (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1
461    -> 'a1 -> (AST.ident -> 'a1) -> (CostLabel.costlabel -> 'a1) ->
462    (Graphs.label -> 'a1) -> (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 ->
463    'a1) -> (BackEndOps.op2 -> 'a1) -> 'a2) -> 'a1
464    printing_pass_independent_params -> 'a2 **)
465let rec printing_pass_independent_params_rect_Type2 h_mk_printing_pass_independent_params x_269 =
466  let { print_String = print_String0; print_keyword = print_keyword0;
467    print_concat = print_concat0; print_newline = print_newline0;
468    print_empty = print_empty0; print_ident = print_ident0; print_costlabel =
469    print_costlabel0; print_label = print_label0; print_OpAccs =
470    print_OpAccs0; print_Op1 = print_Op3; print_Op2 = print_Op4 } = x_269
471  in
472  h_mk_printing_pass_independent_params print_String0 print_keyword0
473    print_concat0 print_newline0 print_empty0 print_ident0 print_costlabel0
474    print_label0 print_OpAccs0 print_Op3 print_Op4
475
476(** val printing_pass_independent_params_rect_Type1 :
477    ((String.string -> 'a1) -> (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1
478    -> 'a1 -> (AST.ident -> 'a1) -> (CostLabel.costlabel -> 'a1) ->
479    (Graphs.label -> 'a1) -> (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 ->
480    'a1) -> (BackEndOps.op2 -> 'a1) -> 'a2) -> 'a1
481    printing_pass_independent_params -> 'a2 **)
482let rec printing_pass_independent_params_rect_Type1 h_mk_printing_pass_independent_params x_271 =
483  let { print_String = print_String0; print_keyword = print_keyword0;
484    print_concat = print_concat0; print_newline = print_newline0;
485    print_empty = print_empty0; print_ident = print_ident0; print_costlabel =
486    print_costlabel0; print_label = print_label0; print_OpAccs =
487    print_OpAccs0; print_Op1 = print_Op3; print_Op2 = print_Op4 } = x_271
488  in
489  h_mk_printing_pass_independent_params print_String0 print_keyword0
490    print_concat0 print_newline0 print_empty0 print_ident0 print_costlabel0
491    print_label0 print_OpAccs0 print_Op3 print_Op4
492
493(** val printing_pass_independent_params_rect_Type0 :
494    ((String.string -> 'a1) -> (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1
495    -> 'a1 -> (AST.ident -> 'a1) -> (CostLabel.costlabel -> 'a1) ->
496    (Graphs.label -> 'a1) -> (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 ->
497    'a1) -> (BackEndOps.op2 -> 'a1) -> 'a2) -> 'a1
498    printing_pass_independent_params -> 'a2 **)
499let rec printing_pass_independent_params_rect_Type0 h_mk_printing_pass_independent_params x_273 =
500  let { print_String = print_String0; print_keyword = print_keyword0;
501    print_concat = print_concat0; print_newline = print_newline0;
502    print_empty = print_empty0; print_ident = print_ident0; print_costlabel =
503    print_costlabel0; print_label = print_label0; print_OpAccs =
504    print_OpAccs0; print_Op1 = print_Op3; print_Op2 = print_Op4 } = x_273
505  in
506  h_mk_printing_pass_independent_params print_String0 print_keyword0
507    print_concat0 print_newline0 print_empty0 print_ident0 print_costlabel0
508    print_label0 print_OpAccs0 print_Op3 print_Op4
509
510(** val print_String :
511    'a1 printing_pass_independent_params -> String.string -> 'a1 **)
512let rec print_String xxx =
513  xxx.print_String
514
515(** val print_keyword :
516    'a1 printing_pass_independent_params -> keyword -> 'a1 **)
517let rec print_keyword xxx =
518  xxx.print_keyword
519
520(** val print_concat :
521    'a1 printing_pass_independent_params -> 'a1 -> 'a1 -> 'a1 **)
522let rec print_concat xxx =
523  xxx.print_concat
524
525(** val print_newline : 'a1 printing_pass_independent_params -> 'a1 **)
526let rec print_newline xxx =
527  xxx.print_newline
528
529(** val print_empty : 'a1 printing_pass_independent_params -> 'a1 **)
530let rec print_empty xxx =
531  xxx.print_empty
532
533(** val print_ident :
534    'a1 printing_pass_independent_params -> AST.ident -> 'a1 **)
535let rec print_ident xxx =
536  xxx.print_ident
537
538(** val print_costlabel :
539    'a1 printing_pass_independent_params -> CostLabel.costlabel -> 'a1 **)
540let rec print_costlabel xxx =
541  xxx.print_costlabel
542
543(** val print_label :
544    'a1 printing_pass_independent_params -> Graphs.label -> 'a1 **)
545let rec print_label xxx =
546  xxx.print_label
547
548(** val print_OpAccs :
549    'a1 printing_pass_independent_params -> BackEndOps.opAccs -> 'a1 **)
550let rec print_OpAccs xxx =
551  xxx.print_OpAccs
552
553(** val print_Op1 :
554    'a1 printing_pass_independent_params -> BackEndOps.op1 -> 'a1 **)
555let rec print_Op1 xxx =
556  xxx.print_Op1
557
558(** val print_Op2 :
559    'a1 printing_pass_independent_params -> BackEndOps.op2 -> 'a1 **)
560let rec print_Op2 xxx =
561  xxx.print_Op2
562
563(** val printing_pass_independent_params_inv_rect_Type4 :
564    'a1 printing_pass_independent_params -> ((String.string -> 'a1) ->
565    (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> (AST.ident ->
566    'a1) -> (CostLabel.costlabel -> 'a1) -> (Graphs.label -> 'a1) ->
567    (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 -> 'a1) -> (BackEndOps.op2
568    -> 'a1) -> __ -> 'a2) -> 'a2 **)
569let printing_pass_independent_params_inv_rect_Type4 hterm h1 =
570  let hcut = printing_pass_independent_params_rect_Type4 h1 hterm in hcut __
571
572(** val printing_pass_independent_params_inv_rect_Type3 :
573    'a1 printing_pass_independent_params -> ((String.string -> 'a1) ->
574    (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> (AST.ident ->
575    'a1) -> (CostLabel.costlabel -> 'a1) -> (Graphs.label -> 'a1) ->
576    (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 -> 'a1) -> (BackEndOps.op2
577    -> 'a1) -> __ -> 'a2) -> 'a2 **)
578let printing_pass_independent_params_inv_rect_Type3 hterm h1 =
579  let hcut = printing_pass_independent_params_rect_Type3 h1 hterm in hcut __
580
581(** val printing_pass_independent_params_inv_rect_Type2 :
582    'a1 printing_pass_independent_params -> ((String.string -> 'a1) ->
583    (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> (AST.ident ->
584    'a1) -> (CostLabel.costlabel -> 'a1) -> (Graphs.label -> 'a1) ->
585    (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 -> 'a1) -> (BackEndOps.op2
586    -> 'a1) -> __ -> 'a2) -> 'a2 **)
587let printing_pass_independent_params_inv_rect_Type2 hterm h1 =
588  let hcut = printing_pass_independent_params_rect_Type2 h1 hterm in hcut __
589
590(** val printing_pass_independent_params_inv_rect_Type1 :
591    'a1 printing_pass_independent_params -> ((String.string -> 'a1) ->
592    (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> (AST.ident ->
593    'a1) -> (CostLabel.costlabel -> 'a1) -> (Graphs.label -> 'a1) ->
594    (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 -> 'a1) -> (BackEndOps.op2
595    -> 'a1) -> __ -> 'a2) -> 'a2 **)
596let printing_pass_independent_params_inv_rect_Type1 hterm h1 =
597  let hcut = printing_pass_independent_params_rect_Type1 h1 hterm in hcut __
598
599(** val printing_pass_independent_params_inv_rect_Type0 :
600    'a1 printing_pass_independent_params -> ((String.string -> 'a1) ->
601    (keyword -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> (AST.ident ->
602    'a1) -> (CostLabel.costlabel -> 'a1) -> (Graphs.label -> 'a1) ->
603    (BackEndOps.opAccs -> 'a1) -> (BackEndOps.op1 -> 'a1) -> (BackEndOps.op2
604    -> 'a1) -> __ -> 'a2) -> 'a2 **)
605let printing_pass_independent_params_inv_rect_Type0 hterm h1 =
606  let hcut = printing_pass_independent_params_rect_Type0 h1 hterm in hcut __
607
608(** val printing_pass_independent_params_jmdiscr :
609    'a1 printing_pass_independent_params -> 'a1
610    printing_pass_independent_params -> __ **)
611let printing_pass_independent_params_jmdiscr x y =
612  Logic.eq_rect_Type2 x
613    (let { print_String = a0; print_keyword = a10; print_concat = a2;
614       print_newline = a3; print_empty = a4; print_ident = a5;
615       print_costlabel = a6; print_label = a7; print_OpAccs = a8; print_Op1 =
616       a9; print_Op2 = a100 } = x
617     in
618    Obj.magic (fun _ dH -> dH __ __ __ __ __ __ __ __ __ __ __)) y
619
620type 'string printing_params = { print_pass_ind : 'string
621                                                  printing_pass_independent_params;
622                                 print_acc_a_reg : (__ -> 'string);
623                                 print_acc_b_reg : (__ -> 'string);
624                                 print_acc_a_arg : (__ -> 'string);
625                                 print_acc_b_arg : (__ -> 'string);
626                                 print_dpl_reg : (__ -> 'string);
627                                 print_dph_reg : (__ -> 'string);
628                                 print_dpl_arg : (__ -> 'string);
629                                 print_dph_arg : (__ -> 'string);
630                                 print_snd_arg : (__ -> 'string);
631                                 print_pair_move : (__ -> 'string);
632                                 print_call_args : (__ -> 'string);
633                                 print_call_dest : (__ -> 'string);
634                                 print_ext_seq : (__ -> 'string) }
635
636(** val printing_params_rect_Type4 :
637    Joint.unserialized_params -> ('a1 printing_pass_independent_params -> (__
638    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
639    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
640    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> 'a2) -> 'a1
641    printing_params -> 'a2 **)
642let rec printing_params_rect_Type4 p h_mk_printing_params x_299 =
643  let { print_pass_ind = print_pass_ind0; print_acc_a_reg = print_acc_a_reg0;
644    print_acc_b_reg = print_acc_b_reg0; print_acc_a_arg = print_acc_a_arg0;
645    print_acc_b_arg = print_acc_b_arg0; print_dpl_reg = print_dpl_reg0;
646    print_dph_reg = print_dph_reg0; print_dpl_arg = print_dpl_arg0;
647    print_dph_arg = print_dph_arg0; print_snd_arg = print_snd_arg0;
648    print_pair_move = print_pair_move0; print_call_args = print_call_args0;
649    print_call_dest = print_call_dest0; print_ext_seq = print_ext_seq0 } =
650    x_299
651  in
652  h_mk_printing_params print_pass_ind0 print_acc_a_reg0 print_acc_b_reg0
653    print_acc_a_arg0 print_acc_b_arg0 print_dpl_reg0 print_dph_reg0
654    print_dpl_arg0 print_dph_arg0 print_snd_arg0 print_pair_move0
655    print_call_args0 print_call_dest0 print_ext_seq0
656
657(** val printing_params_rect_Type5 :
658    Joint.unserialized_params -> ('a1 printing_pass_independent_params -> (__
659    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
660    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
661    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> 'a2) -> 'a1
662    printing_params -> 'a2 **)
663let rec printing_params_rect_Type5 p h_mk_printing_params x_301 =
664  let { print_pass_ind = print_pass_ind0; print_acc_a_reg = print_acc_a_reg0;
665    print_acc_b_reg = print_acc_b_reg0; print_acc_a_arg = print_acc_a_arg0;
666    print_acc_b_arg = print_acc_b_arg0; print_dpl_reg = print_dpl_reg0;
667    print_dph_reg = print_dph_reg0; print_dpl_arg = print_dpl_arg0;
668    print_dph_arg = print_dph_arg0; print_snd_arg = print_snd_arg0;
669    print_pair_move = print_pair_move0; print_call_args = print_call_args0;
670    print_call_dest = print_call_dest0; print_ext_seq = print_ext_seq0 } =
671    x_301
672  in
673  h_mk_printing_params print_pass_ind0 print_acc_a_reg0 print_acc_b_reg0
674    print_acc_a_arg0 print_acc_b_arg0 print_dpl_reg0 print_dph_reg0
675    print_dpl_arg0 print_dph_arg0 print_snd_arg0 print_pair_move0
676    print_call_args0 print_call_dest0 print_ext_seq0
677
678(** val printing_params_rect_Type3 :
679    Joint.unserialized_params -> ('a1 printing_pass_independent_params -> (__
680    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
681    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
682    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> 'a2) -> 'a1
683    printing_params -> 'a2 **)
684let rec printing_params_rect_Type3 p h_mk_printing_params x_303 =
685  let { print_pass_ind = print_pass_ind0; print_acc_a_reg = print_acc_a_reg0;
686    print_acc_b_reg = print_acc_b_reg0; print_acc_a_arg = print_acc_a_arg0;
687    print_acc_b_arg = print_acc_b_arg0; print_dpl_reg = print_dpl_reg0;
688    print_dph_reg = print_dph_reg0; print_dpl_arg = print_dpl_arg0;
689    print_dph_arg = print_dph_arg0; print_snd_arg = print_snd_arg0;
690    print_pair_move = print_pair_move0; print_call_args = print_call_args0;
691    print_call_dest = print_call_dest0; print_ext_seq = print_ext_seq0 } =
692    x_303
693  in
694  h_mk_printing_params print_pass_ind0 print_acc_a_reg0 print_acc_b_reg0
695    print_acc_a_arg0 print_acc_b_arg0 print_dpl_reg0 print_dph_reg0
696    print_dpl_arg0 print_dph_arg0 print_snd_arg0 print_pair_move0
697    print_call_args0 print_call_dest0 print_ext_seq0
698
699(** val printing_params_rect_Type2 :
700    Joint.unserialized_params -> ('a1 printing_pass_independent_params -> (__
701    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
702    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
703    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> 'a2) -> 'a1
704    printing_params -> 'a2 **)
705let rec printing_params_rect_Type2 p h_mk_printing_params x_305 =
706  let { print_pass_ind = print_pass_ind0; print_acc_a_reg = print_acc_a_reg0;
707    print_acc_b_reg = print_acc_b_reg0; print_acc_a_arg = print_acc_a_arg0;
708    print_acc_b_arg = print_acc_b_arg0; print_dpl_reg = print_dpl_reg0;
709    print_dph_reg = print_dph_reg0; print_dpl_arg = print_dpl_arg0;
710    print_dph_arg = print_dph_arg0; print_snd_arg = print_snd_arg0;
711    print_pair_move = print_pair_move0; print_call_args = print_call_args0;
712    print_call_dest = print_call_dest0; print_ext_seq = print_ext_seq0 } =
713    x_305
714  in
715  h_mk_printing_params print_pass_ind0 print_acc_a_reg0 print_acc_b_reg0
716    print_acc_a_arg0 print_acc_b_arg0 print_dpl_reg0 print_dph_reg0
717    print_dpl_arg0 print_dph_arg0 print_snd_arg0 print_pair_move0
718    print_call_args0 print_call_dest0 print_ext_seq0
719
720(** val printing_params_rect_Type1 :
721    Joint.unserialized_params -> ('a1 printing_pass_independent_params -> (__
722    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
723    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
724    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> 'a2) -> 'a1
725    printing_params -> 'a2 **)
726let rec printing_params_rect_Type1 p h_mk_printing_params x_307 =
727  let { print_pass_ind = print_pass_ind0; print_acc_a_reg = print_acc_a_reg0;
728    print_acc_b_reg = print_acc_b_reg0; print_acc_a_arg = print_acc_a_arg0;
729    print_acc_b_arg = print_acc_b_arg0; print_dpl_reg = print_dpl_reg0;
730    print_dph_reg = print_dph_reg0; print_dpl_arg = print_dpl_arg0;
731    print_dph_arg = print_dph_arg0; print_snd_arg = print_snd_arg0;
732    print_pair_move = print_pair_move0; print_call_args = print_call_args0;
733    print_call_dest = print_call_dest0; print_ext_seq = print_ext_seq0 } =
734    x_307
735  in
736  h_mk_printing_params print_pass_ind0 print_acc_a_reg0 print_acc_b_reg0
737    print_acc_a_arg0 print_acc_b_arg0 print_dpl_reg0 print_dph_reg0
738    print_dpl_arg0 print_dph_arg0 print_snd_arg0 print_pair_move0
739    print_call_args0 print_call_dest0 print_ext_seq0
740
741(** val printing_params_rect_Type0 :
742    Joint.unserialized_params -> ('a1 printing_pass_independent_params -> (__
743    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
744    (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1)
745    -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> 'a2) -> 'a1
746    printing_params -> 'a2 **)
747let rec printing_params_rect_Type0 p h_mk_printing_params x_309 =
748  let { print_pass_ind = print_pass_ind0; print_acc_a_reg = print_acc_a_reg0;
749    print_acc_b_reg = print_acc_b_reg0; print_acc_a_arg = print_acc_a_arg0;
750    print_acc_b_arg = print_acc_b_arg0; print_dpl_reg = print_dpl_reg0;
751    print_dph_reg = print_dph_reg0; print_dpl_arg = print_dpl_arg0;
752    print_dph_arg = print_dph_arg0; print_snd_arg = print_snd_arg0;
753    print_pair_move = print_pair_move0; print_call_args = print_call_args0;
754    print_call_dest = print_call_dest0; print_ext_seq = print_ext_seq0 } =
755    x_309
756  in
757  h_mk_printing_params print_pass_ind0 print_acc_a_reg0 print_acc_b_reg0
758    print_acc_a_arg0 print_acc_b_arg0 print_dpl_reg0 print_dph_reg0
759    print_dpl_arg0 print_dph_arg0 print_snd_arg0 print_pair_move0
760    print_call_args0 print_call_dest0 print_ext_seq0
761
762(** val print_pass_ind :
763    Joint.unserialized_params -> 'a1 printing_params -> 'a1
764    printing_pass_independent_params **)
765let rec print_pass_ind p xxx =
766  xxx.print_pass_ind
767
768(** val print_acc_a_reg :
769    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
770let rec print_acc_a_reg p xxx =
771  xxx.print_acc_a_reg
772
773(** val print_acc_b_reg :
774    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
775let rec print_acc_b_reg p xxx =
776  xxx.print_acc_b_reg
777
778(** val print_acc_a_arg :
779    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
780let rec print_acc_a_arg p xxx =
781  xxx.print_acc_a_arg
782
783(** val print_acc_b_arg :
784    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
785let rec print_acc_b_arg p xxx =
786  xxx.print_acc_b_arg
787
788(** val print_dpl_reg :
789    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
790let rec print_dpl_reg p xxx =
791  xxx.print_dpl_reg
792
793(** val print_dph_reg :
794    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
795let rec print_dph_reg p xxx =
796  xxx.print_dph_reg
797
798(** val print_dpl_arg :
799    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
800let rec print_dpl_arg p xxx =
801  xxx.print_dpl_arg
802
803(** val print_dph_arg :
804    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
805let rec print_dph_arg p xxx =
806  xxx.print_dph_arg
807
808(** val print_snd_arg :
809    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
810let rec print_snd_arg p xxx =
811  xxx.print_snd_arg
812
813(** val print_pair_move :
814    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
815let rec print_pair_move p xxx =
816  xxx.print_pair_move
817
818(** val print_call_args :
819    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
820let rec print_call_args p xxx =
821  xxx.print_call_args
822
823(** val print_call_dest :
824    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
825let rec print_call_dest p xxx =
826  xxx.print_call_dest
827
828(** val print_ext_seq :
829    Joint.unserialized_params -> 'a1 printing_params -> __ -> 'a1 **)
830let rec print_ext_seq p xxx =
831  xxx.print_ext_seq
832
833(** val printing_params_inv_rect_Type4 :
834    Joint.unserialized_params -> 'a1 printing_params -> ('a1
835    printing_pass_independent_params -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
836    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
837    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
838    (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
839let printing_params_inv_rect_Type4 x2 hterm h1 =
840  let hcut = printing_params_rect_Type4 x2 h1 hterm in hcut __
841
842(** val printing_params_inv_rect_Type3 :
843    Joint.unserialized_params -> 'a1 printing_params -> ('a1
844    printing_pass_independent_params -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
845    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
846    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
847    (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
848let printing_params_inv_rect_Type3 x2 hterm h1 =
849  let hcut = printing_params_rect_Type3 x2 h1 hterm in hcut __
850
851(** val printing_params_inv_rect_Type2 :
852    Joint.unserialized_params -> 'a1 printing_params -> ('a1
853    printing_pass_independent_params -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
854    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
855    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
856    (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
857let printing_params_inv_rect_Type2 x2 hterm h1 =
858  let hcut = printing_params_rect_Type2 x2 h1 hterm in hcut __
859
860(** val printing_params_inv_rect_Type1 :
861    Joint.unserialized_params -> 'a1 printing_params -> ('a1
862    printing_pass_independent_params -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
863    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
864    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
865    (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
866let printing_params_inv_rect_Type1 x2 hterm h1 =
867  let hcut = printing_params_rect_Type1 x2 h1 hterm in hcut __
868
869(** val printing_params_inv_rect_Type0 :
870    Joint.unserialized_params -> 'a1 printing_params -> ('a1
871    printing_pass_independent_params -> (__ -> 'a1) -> (__ -> 'a1) -> (__ ->
872    'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__
873    -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) ->
874    (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
875let printing_params_inv_rect_Type0 x2 hterm h1 =
876  let hcut = printing_params_rect_Type0 x2 h1 hterm in hcut __
877
878(** val printing_params_jmdiscr :
879    Joint.unserialized_params -> 'a1 printing_params -> 'a1 printing_params
880    -> __ **)
881let printing_params_jmdiscr a2 x y =
882  Logic.eq_rect_Type2 x
883    (let { print_pass_ind = a0; print_acc_a_reg = a10; print_acc_b_reg = a20;
884       print_acc_a_arg = a3; print_acc_b_arg = a4; print_dpl_reg = a5;
885       print_dph_reg = a6; print_dpl_arg = a7; print_dph_arg = a8;
886       print_snd_arg = a9; print_pair_move = a100; print_call_args = a11;
887       print_call_dest = a12; print_ext_seq = a13 } = x
888     in
889    Obj.magic (fun _ dH -> dH __ __ __ __ __ __ __ __ __ __ __ __ __ __)) y
890
891(** val dpi1__o__print_pass_ind__o__inject :
892    Joint.unserialized_params -> ('a1 printing_params, 'a2) Types.dPair ->
893    'a1 printing_pass_independent_params Types.sig0 **)
894let dpi1__o__print_pass_ind__o__inject x1 x4 =
895  x4.Types.dpi1.print_pass_ind
896
897(** val eject__o__print_pass_ind__o__inject :
898    Joint.unserialized_params -> 'a1 printing_params Types.sig0 -> 'a1
899    printing_pass_independent_params Types.sig0 **)
900let eject__o__print_pass_ind__o__inject x1 x4 =
901  (Types.pi1 x4).print_pass_ind
902
903(** val print_pass_ind__o__inject :
904    Joint.unserialized_params -> 'a1 printing_params -> 'a1
905    printing_pass_independent_params Types.sig0 **)
906let print_pass_ind__o__inject x1 x3 =
907  x3.print_pass_ind
908
909(** val dpi1__o__print_pass_ind :
910    Joint.unserialized_params -> ('a1 printing_params, 'a2) Types.dPair ->
911    'a1 printing_pass_independent_params **)
912let dpi1__o__print_pass_ind x1 x3 =
913  x3.Types.dpi1.print_pass_ind
914
915(** val eject__o__print_pass_ind :
916    Joint.unserialized_params -> 'a1 printing_params Types.sig0 -> 'a1
917    printing_pass_independent_params **)
918let eject__o__print_pass_ind x1 x3 =
919  (Types.pi1 x3).print_pass_ind
920
921type 'string code_iteration_params = { fold_code : (__ -> (__ ->
922                                                   Joint.joint_statement ->
923                                                   __ -> __) -> __ -> __ ->
924                                                   __);
925                                       print_succ : (__ -> 'string);
926                                       print_code_point : (__ -> 'string) }
927
928(** val code_iteration_params_rect_Type4 :
929    Joint.params -> AST.ident List.list -> ((__ -> (__ ->
930    Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ -> 'a1) ->
931    (__ -> 'a1) -> 'a2) -> 'a1 code_iteration_params -> 'a2 **)
932let rec code_iteration_params_rect_Type4 p globals h_mk_code_iteration_params x_338 =
933  let { fold_code = fold_code0; print_succ = print_succ0; print_code_point =
934    print_code_point0 } = x_338
935  in
936  h_mk_code_iteration_params fold_code0 print_succ0 print_code_point0
937
938(** val code_iteration_params_rect_Type5 :
939    Joint.params -> AST.ident List.list -> ((__ -> (__ ->
940    Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ -> 'a1) ->
941    (__ -> 'a1) -> 'a2) -> 'a1 code_iteration_params -> 'a2 **)
942let rec code_iteration_params_rect_Type5 p globals h_mk_code_iteration_params x_340 =
943  let { fold_code = fold_code0; print_succ = print_succ0; print_code_point =
944    print_code_point0 } = x_340
945  in
946  h_mk_code_iteration_params fold_code0 print_succ0 print_code_point0
947
948(** val code_iteration_params_rect_Type3 :
949    Joint.params -> AST.ident List.list -> ((__ -> (__ ->
950    Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ -> 'a1) ->
951    (__ -> 'a1) -> 'a2) -> 'a1 code_iteration_params -> 'a2 **)
952let rec code_iteration_params_rect_Type3 p globals h_mk_code_iteration_params x_342 =
953  let { fold_code = fold_code0; print_succ = print_succ0; print_code_point =
954    print_code_point0 } = x_342
955  in
956  h_mk_code_iteration_params fold_code0 print_succ0 print_code_point0
957
958(** val code_iteration_params_rect_Type2 :
959    Joint.params -> AST.ident List.list -> ((__ -> (__ ->
960    Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ -> 'a1) ->
961    (__ -> 'a1) -> 'a2) -> 'a1 code_iteration_params -> 'a2 **)
962let rec code_iteration_params_rect_Type2 p globals h_mk_code_iteration_params x_344 =
963  let { fold_code = fold_code0; print_succ = print_succ0; print_code_point =
964    print_code_point0 } = x_344
965  in
966  h_mk_code_iteration_params fold_code0 print_succ0 print_code_point0
967
968(** val code_iteration_params_rect_Type1 :
969    Joint.params -> AST.ident List.list -> ((__ -> (__ ->
970    Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ -> 'a1) ->
971    (__ -> 'a1) -> 'a2) -> 'a1 code_iteration_params -> 'a2 **)
972let rec code_iteration_params_rect_Type1 p globals h_mk_code_iteration_params x_346 =
973  let { fold_code = fold_code0; print_succ = print_succ0; print_code_point =
974    print_code_point0 } = x_346
975  in
976  h_mk_code_iteration_params fold_code0 print_succ0 print_code_point0
977
978(** val code_iteration_params_rect_Type0 :
979    Joint.params -> AST.ident List.list -> ((__ -> (__ ->
980    Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ -> 'a1) ->
981    (__ -> 'a1) -> 'a2) -> 'a1 code_iteration_params -> 'a2 **)
982let rec code_iteration_params_rect_Type0 p globals h_mk_code_iteration_params x_348 =
983  let { fold_code = fold_code0; print_succ = print_succ0; print_code_point =
984    print_code_point0 } = x_348
985  in
986  h_mk_code_iteration_params fold_code0 print_succ0 print_code_point0
987
988(** val fold_code0 :
989    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> (__
990    -> Joint.joint_statement -> 'a2 -> 'a2) -> __ -> 'a2 -> 'a2 **)
991let rec fold_code0 p globals xxx x_364 x_365 x_366 =
992  (let { fold_code = yyy; print_succ = x; print_code_point = x0 } = xxx in
993  Obj.magic yyy) __ x_364 x_365 x_366
994
995(** val print_succ :
996    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> __ ->
997    'a1 **)
998let rec print_succ p globals xxx =
999  xxx.print_succ
1000
1001(** val print_code_point :
1002    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> __ ->
1003    'a1 **)
1004let rec print_code_point p globals xxx =
1005  xxx.print_code_point
1006
1007(** val code_iteration_params_inv_rect_Type4 :
1008    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> ((__
1009    -> (__ -> Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ ->
1010    'a1) -> (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
1011let code_iteration_params_inv_rect_Type4 x2 x3 hterm h1 =
1012  let hcut = code_iteration_params_rect_Type4 x2 x3 h1 hterm in hcut __
1013
1014(** val code_iteration_params_inv_rect_Type3 :
1015    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> ((__
1016    -> (__ -> Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ ->
1017    'a1) -> (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
1018let code_iteration_params_inv_rect_Type3 x2 x3 hterm h1 =
1019  let hcut = code_iteration_params_rect_Type3 x2 x3 h1 hterm in hcut __
1020
1021(** val code_iteration_params_inv_rect_Type2 :
1022    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> ((__
1023    -> (__ -> Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ ->
1024    'a1) -> (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
1025let code_iteration_params_inv_rect_Type2 x2 x3 hterm h1 =
1026  let hcut = code_iteration_params_rect_Type2 x2 x3 h1 hterm in hcut __
1027
1028(** val code_iteration_params_inv_rect_Type1 :
1029    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> ((__
1030    -> (__ -> Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ ->
1031    'a1) -> (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
1032let code_iteration_params_inv_rect_Type1 x2 x3 hterm h1 =
1033  let hcut = code_iteration_params_rect_Type1 x2 x3 h1 hterm in hcut __
1034
1035(** val code_iteration_params_inv_rect_Type0 :
1036    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> ((__
1037    -> (__ -> Joint.joint_statement -> __ -> __) -> __ -> __ -> __) -> (__ ->
1038    'a1) -> (__ -> 'a1) -> __ -> 'a2) -> 'a2 **)
1039let code_iteration_params_inv_rect_Type0 x2 x3 hterm h1 =
1040  let hcut = code_iteration_params_rect_Type0 x2 x3 h1 hterm in hcut __
1041
1042(** val code_iteration_params_jmdiscr :
1043    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> 'a1
1044    code_iteration_params -> __ **)
1045let code_iteration_params_jmdiscr a2 a3 x y =
1046  Logic.eq_rect_Type2 x
1047    (let { fold_code = a0; print_succ = a10; print_code_point = a20 } = x in
1048    Obj.magic (fun _ dH -> dH __ __ __)) y
1049
1050(** val graph_code_iteration_params :
1051    Joint.graph_params -> AST.ident List.list -> 'a1 printing_params -> 'a1
1052    code_iteration_params **)
1053let graph_code_iteration_params gp globals pp =
1054  { fold_code = (fun _ f ->
1055    Obj.magic (Graphs.graph_fold (fun n -> Obj.magic f n))); print_succ =
1056    (Obj.magic pp.print_pass_ind.print_label); print_code_point =
1057    (Obj.magic pp.print_pass_ind.print_label) }
1058
1059(** val print_list :
1060    'a1 printing_pass_independent_params -> 'a1 List.list -> 'a1 **)
1061let print_list pp =
1062  List.foldr pp.print_concat pp.print_empty
1063
1064(** val print_joint_seq :
1065    Joint.unserialized_params -> AST.ident List.list -> 'a1 printing_params
1066    -> Joint.joint_seq -> 'a1 **)
1067let print_joint_seq p globals pp = function
1068| Joint.COMMENT str ->
1069  print_list pp.print_pass_ind (List.Cons
1070    ((pp.print_pass_ind.print_keyword KwCOMMENT), (List.Cons
1071    ((pp.print_pass_ind.print_String str), List.Nil))))
1072| Joint.MOVE pm ->
1073  print_list pp.print_pass_ind (List.Cons
1074    ((pp.print_pass_ind.print_keyword KwMOVE), (List.Cons
1075    ((pp.print_pair_move pm), List.Nil))))
1076| Joint.POP arg ->
1077  print_list pp.print_pass_ind (List.Cons
1078    ((pp.print_pass_ind.print_keyword KwPOP), (List.Cons
1079    ((pp.print_acc_a_reg arg), List.Nil))))
1080| Joint.PUSH arg ->
1081  print_list pp.print_pass_ind (List.Cons
1082    ((pp.print_pass_ind.print_keyword KwPUSH), (List.Cons
1083    ((pp.print_acc_a_arg arg), List.Nil))))
1084| Joint.ADDRESS (i, arg1, arg2) ->
1085  print_list pp.print_pass_ind (List.Cons
1086    ((pp.print_pass_ind.print_keyword KwADDRESS), (List.Cons
1087    ((pp.print_pass_ind.print_ident i), (List.Cons ((pp.print_dpl_reg arg1),
1088    (List.Cons ((pp.print_dph_reg arg2), List.Nil))))))))
1089| Joint.OPACCS (opa, arg1, arg2, arg3, arg4) ->
1090  print_list pp.print_pass_ind (List.Cons
1091    ((pp.print_pass_ind.print_keyword KwOPACCS), (List.Cons
1092    ((pp.print_pass_ind.print_OpAccs opa), (List.Cons
1093    ((pp.print_acc_a_reg arg1), (List.Cons ((pp.print_acc_b_reg arg2),
1094    (List.Cons ((pp.print_acc_a_arg arg3), (List.Cons
1095    ((pp.print_acc_b_arg arg4), List.Nil))))))))))))
1096| Joint.OP1 (op1, arg1, arg2) ->
1097  print_list pp.print_pass_ind (List.Cons
1098    ((pp.print_pass_ind.print_keyword KwOP1), (List.Cons
1099    ((pp.print_pass_ind.print_Op1 op1), (List.Cons
1100    ((pp.print_acc_a_reg arg1), (List.Cons ((pp.print_acc_a_reg arg2),
1101    List.Nil))))))))
1102| Joint.OP2 (op2, arg1, arg2, arg3) ->
1103  print_list pp.print_pass_ind (List.Cons
1104    ((pp.print_pass_ind.print_keyword KwOP2), (List.Cons
1105    ((pp.print_pass_ind.print_Op2 op2), (List.Cons
1106    ((pp.print_acc_a_reg arg1), (List.Cons ((pp.print_acc_a_arg arg2),
1107    (List.Cons ((pp.print_snd_arg arg3), List.Nil))))))))))
1108| Joint.CLEAR_CARRY -> pp.print_pass_ind.print_keyword KwCLEAR_CARRY
1109| Joint.SET_CARRY -> pp.print_pass_ind.print_keyword KwSET_CARRY
1110| Joint.LOAD (arg1, arg2, arg3) ->
1111  print_list pp.print_pass_ind (List.Cons
1112    ((pp.print_pass_ind.print_keyword KwLOAD), (List.Cons
1113    ((pp.print_acc_a_reg arg1), (List.Cons ((pp.print_dpl_arg arg2),
1114    (List.Cons ((pp.print_dph_arg arg3), List.Nil))))))))
1115| Joint.STORE (arg1, arg2, arg3) ->
1116  print_list pp.print_pass_ind (List.Cons
1117    ((pp.print_pass_ind.print_keyword KwSTORE), (List.Cons
1118    ((pp.print_dpl_arg arg1), (List.Cons ((pp.print_dph_arg arg2), (List.Cons
1119    ((pp.print_acc_a_arg arg3), List.Nil))))))))
1120| Joint.Extension_seq ext -> pp.print_ext_seq ext
1121
1122(** val print_joint_step :
1123    Joint.unserialized_params -> AST.ident List.list -> 'a1 printing_params
1124    -> Joint.joint_step -> 'a1 **)
1125let print_joint_step p globals pp = function
1126| Joint.COST_LABEL arg ->
1127  print_list pp.print_pass_ind (List.Cons
1128    ((pp.print_pass_ind.print_keyword KwCOST_LABEL), (List.Cons
1129    ((pp.print_pass_ind.print_costlabel arg), List.Nil))))
1130| Joint.CALL (arg1, arg2, arg3) ->
1131  print_list pp.print_pass_ind (List.Cons
1132    ((pp.print_pass_ind.print_keyword KwCALL), (List.Cons
1133    ((match arg1 with
1134      | Types.Inl id -> pp.print_pass_ind.print_ident id
1135      | Types.Inr arg11_arg12 ->
1136        pp.print_pass_ind.print_concat
1137          (pp.print_dpl_arg arg11_arg12.Types.fst)
1138          (pp.print_dph_arg arg11_arg12.Types.snd)), (List.Cons
1139    ((pp.print_call_args arg2), (List.Cons ((pp.print_call_dest arg3),
1140    List.Nil))))))))
1141| Joint.COND (arg1, arg2) ->
1142  print_list pp.print_pass_ind (List.Cons
1143    ((pp.print_pass_ind.print_keyword KwCOND), (List.Cons
1144    ((pp.print_acc_a_reg arg1), (List.Cons
1145    ((pp.print_pass_ind.print_label arg2), List.Nil))))))
1146| Joint.Step_seq seq -> print_joint_seq p globals pp seq
1147
1148(** val print_joint_fin_step :
1149    Joint.unserialized_params -> 'a1 printing_params -> Joint.joint_fin_step
1150    -> 'a1 **)
1151let print_joint_fin_step p pp = function
1152| Joint.GOTO l ->
1153  print_list pp.print_pass_ind (List.Cons
1154    ((pp.print_pass_ind.print_keyword KwGOTO), (List.Cons
1155    ((pp.print_pass_ind.print_label l), List.Nil))))
1156| Joint.RETURN -> pp.print_pass_ind.print_keyword KwRETURN
1157| Joint.TAILCALL (arg1, arg2) ->
1158  print_list pp.print_pass_ind (List.Cons
1159    ((pp.print_pass_ind.print_keyword KwTAILCALL), (List.Cons
1160    ((match arg1 with
1161      | Types.Inl id -> pp.print_pass_ind.print_ident id
1162      | Types.Inr arg11_arg12 ->
1163        pp.print_pass_ind.print_concat
1164          (pp.print_dpl_arg arg11_arg12.Types.fst)
1165          (pp.print_dph_arg arg11_arg12.Types.snd)), (List.Cons
1166    ((pp.print_call_args arg2), List.Nil))))))
1167
1168(** val print_joint_statement :
1169    Joint.params -> AST.ident List.list -> 'a1 printing_params -> 'a1
1170    code_iteration_params -> Joint.joint_statement -> 'a1 **)
1171let print_joint_statement p globals pp cip = function
1172| Joint.Sequential (js, arg1) ->
1173  pp.print_pass_ind.print_concat
1174    (print_joint_step (Joint.stmt_pars__o__uns_pars__o__u_pars p) globals pp
1175      js) (cip.print_succ arg1)
1176| Joint.Final fin ->
1177  print_joint_fin_step (Joint.stmt_pars__o__uns_pars__o__u_pars p) pp fin
1178| Joint.FCOND (arg1, arg2, arg3) ->
1179  print_list pp.print_pass_ind (List.Cons
1180    ((pp.print_pass_ind.print_keyword KwFCOND), (List.Cons
1181    ((pp.print_acc_a_reg arg1), (List.Cons
1182    ((pp.print_pass_ind.print_label arg2), (List.Cons
1183    ((pp.print_pass_ind.print_label arg3), List.Nil))))))))
1184
1185(** val print_joint_internal_function :
1186    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> 'a1
1187    printing_params -> Joint.joint_internal_function -> 'a1 **)
1188let print_joint_internal_function p globals cip pp f =
1189  fold_code0 p globals cip (fun cp stmt acc ->
1190    print_list pp.print_pass_ind (List.Cons ((cip.print_code_point cp),
1191      (List.Cons ((print_joint_statement p globals pp cip stmt), (List.Cons
1192      (pp.print_pass_ind.print_newline, (List.Cons (acc, List.Nil)))))))))
1193    f.Joint.joint_if_code pp.print_pass_ind.print_empty
1194
1195(** val print_joint_function :
1196    Joint.params -> AST.ident List.list -> 'a1 code_iteration_params -> 'a1
1197    printing_params -> Joint.joint_function -> 'a1 **)
1198let print_joint_function p globals cip pp = function
1199| AST.Internal f0 ->
1200  print_joint_internal_function p globals cip pp (Types.pi1 f0)
1201| AST.External f0 -> pp.print_pass_ind.print_empty
1202
1203(** val print_joint_program :
1204    Joint.params -> 'a1 printing_params -> Joint.joint_program -> 'a1
1205    code_iteration_params -> 'a1 **)
1206let print_joint_program p pp prog cip =
1207  List.foldr (fun f ->
1208    pp.print_pass_ind.print_concat
1209      (print_joint_function p
1210        (List.map (fun x -> x.Types.fst.Types.fst) prog.AST.prog_vars) cip pp
1211        f.Types.snd)) pp.print_pass_ind.print_empty prog.AST.prog_funct
1212
Note: See TracBrowser for help on using the repository browser.