src/HOL/BNF/Tools/bnf_util.ML
changeset 54900 136fe16e726a
parent 54841 af71b753c459
child 54921 862c36b6e57c
equal deleted inserted replaced
54899:7a01387c47d5 54900:136fe16e726a
    28     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h list ->
    28     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h list ->
    29     'i list -> 'j list -> 'k list -> 'l list -> 'm list
    29     'i list -> 'j list -> 'k list -> 'l list -> 'm list
    30   val map13: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm -> 'n) ->
    30   val map13: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm -> 'n) ->
    31     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h list ->
    31     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h list ->
    32     'i list -> 'j list -> 'k list -> 'l list -> 'm list -> 'n list
    32     'i list -> 'j list -> 'k list -> 'l list -> 'm list -> 'n list
       
    33   val map14:
       
    34     ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm -> 'n -> 'o) ->
       
    35     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list -> 'h list ->
       
    36     'i list -> 'j list -> 'k list -> 'l list -> 'm list -> 'n list -> 'o list
    33   val fold_map4: ('a -> 'b -> 'c -> 'd -> 'e -> 'f * 'e) ->
    37   val fold_map4: ('a -> 'b -> 'c -> 'd -> 'e -> 'f * 'e) ->
    34     'a list -> 'b list -> 'c list -> 'd list -> 'e -> 'f list * 'e
    38     'a list -> 'b list -> 'c list -> 'd list -> 'e -> 'f list * 'e
    35   val fold_map5: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g * 'f) ->
    39   val fold_map5: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g * 'f) ->
    36     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f -> 'g list * 'f
    40     'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f -> 'g list * 'f
    37   val fold_map6: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h * 'g) ->
    41   val fold_map6: ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h * 'g) ->
   164   | map8 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s) =
   168   | map8 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s) =
   165     f x1 x2 x3 x4 x5 x6 x7 x8 :: map8 f x1s x2s x3s x4s x5s x6s x7s x8s
   169     f x1 x2 x3 x4 x5 x6 x7 x8 :: map8 f x1s x2s x3s x4s x5s x6s x7s x8s
   166   | map8 _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   170   | map8 _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   167 
   171 
   168 fun map9 _ [] [] [] [] [] [] [] [] [] = []
   172 fun map9 _ [] [] [] [] [] [] [] [] [] = []
   169   | map9 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s)
   173   | map9 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s)
   170       (x6::x6s) (x7::x7s) (x8::x8s) (x9::x9s) =
   174       (x9::x9s) =
   171     f x1 x2 x3 x4 x5 x6 x7 x8 x9 :: map9 f x1s x2s x3s x4s x5s x6s x7s x8s x9s
   175     f x1 x2 x3 x4 x5 x6 x7 x8 x9 :: map9 f x1s x2s x3s x4s x5s x6s x7s x8s x9s
   172   | map9 _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   176   | map9 _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   173 
   177 
   174 fun map10 _ [] [] [] [] [] [] [] [] [] [] = []
   178 fun map10 _ [] [] [] [] [] [] [] [] [] [] = []
   175   | map10 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s)
   179   | map10 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s)
   176       (x6::x6s) (x7::x7s) (x8::x8s) (x9::x9s) (x10::x10s) =
   180       (x9::x9s) (x10::x10s) =
   177     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 :: map10 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s
   181     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 :: map10 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s
   178   | map10 _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   182   | map10 _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   179 
   183 
   180 fun map11 _ [] [] [] [] [] [] [] [] [] [] [] = []
   184 fun map11 _ [] [] [] [] [] [] [] [] [] [] [] = []
   181   | map11 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s)
   185   | map11 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s)
   182       (x6::x6s) (x7::x7s) (x8::x8s) (x9::x9s) (x10::x10s) (x11::x11s) =
   186       (x9::x9s) (x10::x10s) (x11::x11s) =
   183     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 :: map11 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s
   187     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 :: map11 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s
   184   | map11 _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   188   | map11 _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   185 
   189 
   186 fun map12 _ [] [] [] [] [] [] [] [] [] [] [] [] = []
   190 fun map12 _ [] [] [] [] [] [] [] [] [] [] [] [] = []
   187   | map12 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s)
   191   | map12 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s)
   188       (x6::x6s) (x7::x7s) (x8::x8s) (x9::x9s) (x10::x10s) (x11::x11s) (x12::x12s) =
   192       (x9::x9s) (x10::x10s) (x11::x11s) (x12::x12s) =
   189     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 ::
   193     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 ::
   190       map12 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s x12s
   194       map12 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s x12s
   191   | map12 _ _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   195   | map12 _ _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   192 
   196 
   193 fun map13 _ [] [] [] [] [] [] [] [] [] [] [] [] [] = []
   197 fun map13 _ [] [] [] [] [] [] [] [] [] [] [] [] [] = []
   194   | map13 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s)
   198   | map13 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s)
   195       (x6::x6s) (x7::x7s) (x8::x8s) (x9::x9s) (x10::x10s) (x11::x11s) (x12::x12s) (x13::x13s) =
   199       (x9::x9s) (x10::x10s) (x11::x11s) (x12::x12s) (x13::x13s) =
   196     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 ::
   200     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 ::
   197       map13 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s x12s x13s
   201       map13 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s x12s x13s
   198   | map13 _ _ _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   202   | map13 _ _ _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
       
   203 
       
   204 fun map14 _ [] [] [] [] [] [] [] [] [] [] [] [] [] [] = []
       
   205   | map14 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) (x5::x5s) (x6::x6s) (x7::x7s) (x8::x8s)
       
   206       (x9::x9s) (x10::x10s) (x11::x11s) (x12::x12s) (x13::x13s) (x14::x14s) =
       
   207     f x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 ::
       
   208       map14 f x1s x2s x3s x4s x5s x6s x7s x8s x9s x10s x11s x12s x13s x14s
       
   209   | map14 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = raise ListPair.UnequalLengths;
   199 
   210 
   200 fun fold_map4 _ [] [] [] [] acc = ([], acc)
   211 fun fold_map4 _ [] [] [] [] acc = ([], acc)
   201   | fold_map4 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) acc =
   212   | fold_map4 f (x1::x1s) (x2::x2s) (x3::x3s) (x4::x4s) acc =
   202     let
   213     let
   203       val (x, acc') = f x1 x2 x3 x4 acc;
   214       val (x, acc') = f x1 x2 x3 x4 acc;