# HG changeset patch # User haftmann # Date 1309554426 -7200 # Node ID 63654984ba5437b4cb4e27dd1f5e76b4825d2061 # Parent 5967e25c74664072a409405241e0389d7c33d427 centralized deletion of equations for constructors; corrected misunderstanding what `old functions` are supposed to be diff -r 5967e25c7466 -r 63654984ba54 src/Pure/Isar/code.ML --- a/src/Pure/Isar/code.ML Fri Jul 01 22:48:05 2011 +0200 +++ b/src/Pure/Isar/code.ML Fri Jul 01 23:07:06 2011 +0200 @@ -1197,9 +1197,10 @@ case these (Symtab.lookup ((the_types o the_exec) thy) tyco) of (_, (_, Constructors (cos, _))) :: _ => (map fst cos, NONE) | (_, (_, Abstractor ((co, _), (proj, _)))) :: _ => ([co], SOME proj) - | [] => ([], NONE) - val outdated_funs = case some_old_proj - of NONE => old_constrs + | [] => ([], NONE); + val outdated_funs1 = (map fst o fst o constructors_of o snd) vs_spec; + val outdated_funs2 = case some_old_proj + of NONE => [] | SOME old_proj => Symtab.fold (fn (c, ((_, spec), _)) => if member (op =) (the_list (associated_abstype spec)) tyco @@ -1211,7 +1212,7 @@ then insert (op =) c else I) cases []) cases; in thy - |> fold del_eqns outdated_funs + |> fold del_eqns (outdated_funs1 @ outdated_funs2) |> map_exec_purge ((map_typs o Symtab.map_default (tyco, [])) (cons (serial (), vs_spec)) #> (map_cases o apfst) drop_outdated_cases) @@ -1231,7 +1232,6 @@ val (tyco, (vs, cos)) = constrset_of_consts thy constrs; in thy - |> fold (del_eqns o fst) constrs |> register_type (tyco, (vs, Constructors (cos, []))) |> Datatype_Interpretation.data (tyco, serial ()) end; @@ -1251,7 +1251,6 @@ error_thm (check_abstype_cert thy) proto_thm; in thy - |> del_eqns abs |> register_type (tyco, (vs, Abstractor (abs_ty, (rep, cert)))) |> change_fun_spec false rep ((K o Proj) (map_types Logic.varifyT_global (mk_proj tyco vs ty abs rep), tyco))