signature THY_DEPS = sig val thy_deps: Proof.context -> theory listoption * theory listoption ->
Graph_Display.entry list val thy_deps_cmd: Proof.context ->
(string * Position.T) listoption * (string * Position.T) listoption -> unit end;
structure Thy_Deps: THY_DEPS = struct
fun gen_thy_deps prep_thy ctxt bounds = let val (upper, lower) = apply2 ((Option.map o map) (prep_thy ctxt)) bounds; val rel = Context.subthy o swap; val pred =
(case upper of
SOME Bs => (fn thy => exists (fn B => rel (thy, B)) Bs)
| NONE => K true) andf
(case lower of
SOME Bs => (fn thy => exists (fn B => rel (B, thy)) Bs)
| NONE => K true); fun node thy =
((Context.theory_base_name thy, Graph_Display.content_node (Context.theory_base_name thy) []), map Context.theory_base_name (filter pred (Theory.parents_of thy))); inmap node (filter pred (Theory.nodes_of (Proof_Context.theory_of ctxt))) end;
val thy_deps =
gen_thy_deps (fn ctxt => fn thy => letval thy0 = Proof_Context.theory_of ctxt inif Context.subthy (thy, thy0) then thy elseraise THEORY ("Bad theory", [thy, thy0]) end);
val thy_deps_cmd = Graph_Display.display_graph oo gen_thy_deps (Theory.check {long = true});
end;
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
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 ist noch experimentell.