equal
deleted
inserted
replaced
63 val cong_attrs = @{attributes [cong]}; |
63 val cong_attrs = @{attributes [cong]}; |
64 val iff_attrs = @{attributes [iff]}; |
64 val iff_attrs = @{attributes [iff]}; |
65 val safe_elim_attrs = @{attributes [elim!]}; |
65 val safe_elim_attrs = @{attributes [elim!]}; |
66 val simp_attrs = @{attributes [simp]}; |
66 val simp_attrs = @{attributes [simp]}; |
67 |
67 |
68 val unique_disc_no_def = TrueI; (*arbitrary marker*) |
|
69 val alternate_disc_no_def = FalseE; (*arbitrary marker*) |
|
70 |
|
71 fun pad_list x n xs = xs @ replicate (n - length xs) x; |
68 fun pad_list x n xs = xs @ replicate (n - length xs) x; |
72 |
69 |
73 fun unflat_lookup eq ys zs = map (map (fn x => nth zs (find_index (curry eq x) ys))); |
70 fun unflat_lookup eq ys zs = map (map (fn x => nth zs (find_index (curry eq x) ys))); |
74 |
71 |
75 fun mk_half_pairss' _ ([], []) = [] |
72 fun mk_half_pairss' _ ([], []) = [] |
216 |
213 |
217 val uv_eq = mk_Trueprop_eq (u, v); |
214 val uv_eq = mk_Trueprop_eq (u, v); |
218 |
215 |
219 val exist_xs_u_eq_ctrs = |
216 val exist_xs_u_eq_ctrs = |
220 map2 (fn xctr => fn xs => list_exists_free xs (HOLogic.mk_eq (u, xctr))) xctrs xss; |
217 map2 (fn xctr => fn xs => list_exists_free xs (HOLogic.mk_eq (u, xctr))) xctrs xss; |
|
218 |
|
219 val unique_disc_no_def = TrueI; (*arbitrary marker*) |
|
220 val alternate_disc_no_def = FalseE; (*arbitrary marker*) |
221 |
221 |
222 fun alternate_disc_lhs get_udisc k = |
222 fun alternate_disc_lhs get_udisc k = |
223 HOLogic.mk_not |
223 HOLogic.mk_not |
224 (case nth disc_bindings (k - 1) of |
224 (case nth disc_bindings (k - 1) of |
225 NONE => nth exist_xs_u_eq_ctrs (k - 1) |
225 NONE => nth exist_xs_u_eq_ctrs (k - 1) |