fun mk_intro ctxt thm = let val thm' = thm RS @{thm verit_Pure_trans} val n = Thm.nprems_of thm' in
thm'
|> rotate_prems (n - 1)
|> Local_Defs.unfold ctxt (single @{thm conj_imp_eq_imp_imp})
|> single end;
fun process_mk_ide ((rf, thm), ins) ctxt = let val _ = ins |> map #1 |> has_duplicates op= |> not orelse error error_msg val thm' = thm
|> singleton (Attrib.eval_thms ctxt)
|> Local_Defs.meta_rewrite_rule ctxt; val t = Thm.concl_of thm' val _ = t |> can Logic.dest_equals orelse error error_msg val _ = (t |> Logic.dest_equals |> #1 |> type_of |> body_type) = \<^typ>\<open>bool\<close>
orelse error error_msg in fold folder_mk_rule (map (fn x => (x, (rf, thm'))) ins) ctxt end;
val _ =
Outer_Syntax.local_theory
\<^command_keyword>\<open>mk_ide\<close> "synthesis of the intro/dest/elim rules"
(mk_ide_parser >> process_mk_ide);
end;
Messung V0.5 in Prozent
¤ 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.0Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
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.