99 open Hints_declaration
127 (** val bindNewP : Monad.monadPred **)
131 (** val split_on_last :
132 'a1 List.list -> ('a1 List.list, 'a1) Types.prod Types.option **)
133 let split_on_last x =
134 List.foldr (fun el acc ->
136 | Types.None -> Types.Some { Types.fst = List.Nil; Types.snd = el }
138 Types.Some { Types.fst = (List.Cons (el, pr.Types.fst)); Types.snd =
139 pr.Types.snd }) Types.None x
142 (((__ -> Joint.joint_seq) List.list, __ -> Joint.joint_step) Types.prod,
143 Joint.joint_seq List.list) Types.prod
145 type fin_block = (Joint.joint_seq List.list, Joint.joint_fin_step) Types.prod
147 type bind_step_block = (Registers.register, step_block) Bind_new.bind_new
149 type bind_fin_block = (Registers.register, fin_block) Bind_new.bind_new
152 (Registers.register, Joint.joint_seq List.list) Bind_new.bind_new
154 (** val add_dummy_variance : 'a2 List.list -> ('a1 -> 'a2) List.list **)
155 let add_dummy_variance x =
156 List.map (fun x0 x1 -> x0) x
158 (** val ensure_step_block :
159 Joint.params -> AST.ident List.list -> Joint.joint_seq List.list ->
161 let ensure_step_block p g = function
163 { Types.fst = { Types.fst = List.Nil; Types.snd = (fun x -> Joint.Step_seq
164 (Joint.nOOP (Joint.stmt_pars__o__uns_pars__o__u_pars p) g)) };
165 Types.snd = List.Nil }
166 | List.Cons (hd, tl) ->
167 { Types.fst = { Types.fst = List.Nil; Types.snd = (fun x -> Joint.Step_seq
168 hd) }; Types.snd = tl }
170 (** val map_eval : ('a1 -> 'a2) List.list -> 'a1 -> 'a2 List.list **)
172 List.map (fun f -> f x) l