937 val (u', used'') = free_dummy_patterns u used'; |
937 val (u', used'') = free_dummy_patterns u used'; |
938 in (t' $ u', used'') end |
938 in (t' $ u', used'') end |
939 | free_dummy_patterns a used = (a, used); |
939 | free_dummy_patterns a used = (a, used); |
940 |
940 |
941 fun replace_dummy Ts (Const ("dummy_pattern", T)) i = |
941 fun replace_dummy Ts (Const ("dummy_pattern", T)) i = |
942 (list_comb (Var (("_dummy_", i), Ts ---> T), map Bound (0 upto length Ts - 1)), i + 1) |
942 (list_comb (Var (("_dummy_", i), Ts ---> T), map_range Bound (length Ts)), i + 1) |
943 | replace_dummy Ts (Abs (x, T, t)) i = |
943 | replace_dummy Ts (Abs (x, T, t)) i = |
944 let val (t', i') = replace_dummy (T :: Ts) t i |
944 let val (t', i') = replace_dummy (T :: Ts) t i |
945 in (Abs (x, T, t'), i') end |
945 in (Abs (x, T, t'), i') end |
946 | replace_dummy Ts (t $ u) i = |
946 | replace_dummy Ts (t $ u) i = |
947 let |
947 let |