val udomT = \<^typ>\<open>udom\<close> val deflT = \<^typ>\<open>udom defl\<close> fun emb_const T = \<^Const>\<open>emb T\<close> fun prj_const T = \<^Const>\<open>prj T\<close> fun defl_const T = \<^Const>\<open>defl T\<close> fun liftemb_const T = \<^Const>\<open>liftemb T\<close> fun liftprj_const T = \<^Const>\<open>liftprj T\<close> fun liftdefl_const T = \<^Const>\<open>liftdefl T\<close>
fun mk_u_map t = let val (T, U) = dest_cfunT (fastype_of t) val u_map_const = \<^Const>\<open>u_map T U\<close> in
mk_capply (u_map_const, t) end
val rep_info =
{ emb_def = emb_def, prj_def = prj_def, defl_def = defl_def,
liftemb_def = liftemb_def, liftprj_def = liftprj_def,
liftdefl_def = liftdefl_def, DEFL = DEFL_thm } in
((info, cpo_info, pcpo_info, rep_info), thy) end handle ERROR msg =>
cat_error msg ("The error(s) above occurred in domaindef " ^ Binding.print tname)
fun add_domaindef typ defl opt_bindings thy =
gen_add_domaindef Syntax.check_term typ defl opt_bindings thy
fun domaindef_cmd ((b, raw_args, mx), A, morphs) thy = let val ctxt = Proof_Context.init_global thy val args = map (apsnd (Typedecl.read_constraint ctxt)) raw_args in snd (gen_add_domaindef Syntax.read_term (b, args, mx) A morphs thy) end
(** outer syntax **)
val _ =
Outer_Syntax.command \<^command_keyword>\<open>domaindef\<close> "HOLCF definition of domains from deflations"
((Parse.type_args_constrained -- Parse.binding) --
Parse.opt_mixfix -- (\<^keyword>\<open>=\<close> |-- Parse.term) --
Scan.option
(\<^keyword>\<open>morphisms\<close> |-- Parse.!!! (Parse.binding -- Parse.binding)) >>
(fn (((((args, t)), mx), A), morphs) =>
Toplevel.theory (domaindef_cmd ((t, args, mx), A, SOME (Typedef.make_morphisms t morphs)))));
end
¤ Dauer der Verarbeitung: 0.11 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.