--- a/src/HOL/Tools/BNF/bnf_util.ML Mon Oct 06 13:33:36 2014 +0200
+++ b/src/HOL/Tools/BNF/bnf_util.ML Mon Oct 06 13:33:45 2014 +0200
@@ -67,6 +67,8 @@
'd list * 'e list * 'f list * 'g list * 'h list
val split_list9: ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i) list -> 'a list * 'b list *
'c list * 'd list * 'e list * 'f list * 'g list * 'h list * 'i list
+ val split_list10: ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h * 'i * 'j) list -> 'a list * 'b list *
+ 'c list * 'd list * 'e list * 'f list * 'g list * 'h list * 'i list * 'j list
val mk_TFreess: int list -> Proof.context -> typ list list * Proof.context
val mk_Freesss: string -> typ list list list -> Proof.context ->
@@ -323,6 +325,12 @@
in (x1 :: xs1, x2 :: xs2, x3 :: xs3, x4 :: xs4, x5 :: xs5, x6 :: xs6, x7 :: xs7, x8 :: xs8,
x9 :: xs9) end;
+fun split_list10 [] = ([], [], [], [], [], [], [], [], [], [])
+ | split_list10 ((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) :: xs) =
+ let val (xs1, xs2, xs3, xs4, xs5, xs6, xs7, xs8, xs9, xs10) = split_list10 xs;
+ in (x1 :: xs1, x2 :: xs2, x3 :: xs3, x4 :: xs4, x5 :: xs5, x6 :: xs6, x7 :: xs7, x8 :: xs8,
+ x9 :: xs9, x10 :: xs10) end;
+
val parse_type_arg_constrained =
Parse.type_ident -- Scan.option (@{keyword "::"} |-- Parse.!!! Parse.sort);