structure Data = Generic_Data
( type T = simpset Name_Space.table; val empty: T = Name_Space.empty_table "named-simpset"; val merge : T * T -> T = Name_Space.join_tables (K merge_ss);
);
val content = Name_Space.get o Data.get
val get = content o Context.Proof;
val get_all = Data.get o Context.Proof
fun put name ctxt = put_simpset (get ctxt name) ctxt
funmap name f context =
(content context name; Data.map (Name_Space.map_table_entry name f) context);
fun map_ctxt name f context = map name (simpset_map (Context.proof_of context) f) context
(* maintain content *)
fun clear name = map_ctxt name clear_simpset;
fun add_simp name thm = map_ctxt name (Simplifier.add_simp thm) fun del_simp name thm = map_ctxt name (Simplifier.del_simp thm)
fun add_cong name thm = map_ctxt name (Simplifier.add_cong thm) fun del_cong name thm = map_ctxt name (Simplifier.del_cong thm)
fun add_split name thm = map_ctxt name (Splitter.add_split thm) fun del_split name thm = map_ctxt name (Splitter.del_split thm)
val add_attr = Thm.declaration_attribute o add_simp; val del_attr = Thm.declaration_attribute o del_simp;
val add_cong_attr = Thm.declaration_attribute o add_cong; val del_cong_attr = Thm.declaration_attribute o del_cong;
val add_split_attr = Thm.declaration_attribute o add_split; val del_split_attr = Thm.declaration_attribute o del_split;
(* check *)
fun check ctxt = letval context = Context.Proof ctxt in Name_Space.check context (Data.get context) #> #1end
(* declaration *)
fun new_entry binding init = let fun decl _ context = let val sstab = Data.get context val ss = the_default (Simplifier.clear_simpset (Context.proof_of context) |> simpset_of) init val (_,sstab) = Name_Space.define context true (binding,ss) sstab in Data.put sstab context end
in
Local_Theory.declaration {syntax=false, pervasive=true, pos = \<^here>} decl end
fun declare binding init lthy = let val lthy' = lthy |> new_entry binding init in (lthy') end;
fun declare_cmd binding init_src lthy = let val init = Option.map (get lthy o check lthy) init_src in
declare binding init lthy end
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.13Bemerkung:
(vorverarbeitet am 2026-10-01)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.