38 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f -> 'g list * 'f |
38 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f -> 'g list * 'f |
39 val fold_map6: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h * 'g) -> |
39 val fold_map6: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h * 'g) -> |
40 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g -> 'h list * 'g |
40 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g -> 'h list * 'g |
41 val fold_map7: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i * 'h) -> |
41 val fold_map7: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i * 'h) -> |
42 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h -> 'i list * 'h |
42 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h -> 'i list * 'h |
|
43 val fold_map8: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j * 'i) -> |
|
44 'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h list -> 'i -> |
|
45 'j list * 'i |
43 val splice: 'a list -> 'a list -> 'a list |
46 val splice: 'a list -> 'a list -> 'a list |
44 val transpose: 'a list list -> 'a list list |
47 val transpose: 'a list list -> 'a list list |
45 val seq_conds: (bool -> 'a -> 'b) -> int -> int -> 'a list -> 'b list |
48 val seq_conds: (bool -> 'a -> 'b) -> int -> int -> 'a list -> 'b list |
46 val pad_list: 'a -> int -> 'a list -> 'a list |
49 val pad_list: 'a -> int -> 'a list -> 'a list |
47 |
50 |
271 val (x, acc') = f x1 x2 x3 x4 x5 x6 x7 acc; |
274 val (x, acc') = f x1 x2 x3 x4 x5 x6 x7 acc; |
272 val (xs, acc'') = fold_map7 f x1s x2s x3s x4s x5s x6s x7s acc'; |
275 val (xs, acc'') = fold_map7 f x1s x2s x3s x4s x5s x6s x7s acc'; |
273 in (x :: xs, acc'') end |
276 in (x :: xs, acc'') end |
274 | fold_map7 _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths; |
277 | fold_map7 _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths; |
275 |
278 |
|
279 fun fold_map7 _ [] [] [] [] [] [] [] acc = ([], acc) |
|
280 | fold_map7 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) acc = |
|
281 let |
|
282 val (x, acc') = f x1 x2 x3 x4 x5 x6 x7 acc; |
|
283 val (xs, acc'') = fold_map7 f x1s x2s x3s x4s x5s x6s x7s acc'; |
|
284 in (x :: xs, acc'') end |
|
285 | fold_map7 _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths; |
|
286 |
|
287 fun fold_map8 _ [] [] [] [] [] [] [] [] acc = ([], acc) |
|
288 | fold_map8 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s) |
|
289 acc = |
|
290 let |
|
291 val (x, acc') = f x1 x2 x3 x4 x5 x6 x7 x8 acc; |
|
292 val (xs, acc'') = fold_map8 f x1s x2s x3s x4s x5s x6s x7s x8s acc'; |
|
293 in (x :: xs, acc'') end |
|
294 | fold_map8 _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths; |
|
295 |
276 (*stolen from ~~/src/HOL/Tools/SMT/smt_utils.ML*) |
296 (*stolen from ~~/src/HOL/Tools/SMT/smt_utils.ML*) |
277 fun certify ctxt = Thm.cterm_of (Proof_Context.theory_of ctxt); |
297 fun certify ctxt = Thm.cterm_of (Proof_Context.theory_of ctxt); |
278 fun certifyT ctxt = Thm.ctyp_of (Proof_Context.theory_of ctxt); |
298 fun certifyT ctxt = Thm.ctyp_of (Proof_Context.theory_of ctxt); |
279 |
299 |
280 val parse_binding_colon = Parse.binding --| @{keyword ":"}; |
300 val parse_binding_colon = Parse.binding --| @{keyword ":"}; |