src/HOL/Tools/function_package/fundef_core.ML
changeset 28965 1de908189869
parent 28083 103d9282a946
child 29265 5b4247055bd7
equal deleted inserted replaced
28963:f6d9e0e0b153 28965:1de908189869
   483           Abs ("x", domT, Const ("FunDef.THE_default", ranT --> (ranT --> boolT) --> ranT) $ (default $ Bound 0) $
   483           Abs ("x", domT, Const ("FunDef.THE_default", ranT --> (ranT --> boolT) --> ranT) $ (default $ Bound 0) $
   484                                 Abs ("y", ranT, G $ Bound 1 $ Bound 0))
   484                                 Abs ("y", ranT, G $ Bound 1 $ Bound 0))
   485               |> Syntax.check_term lthy
   485               |> Syntax.check_term lthy
   486 
   486 
   487       val ((f, (_, f_defthm)), lthy) =
   487       val ((f, (_, f_defthm)), lthy) =
   488         LocalTheory.define Thm.internalK ((Name.binding (function_name fname), mixfix), ((Name.binding fdefname, []), f_def)) lthy
   488         LocalTheory.define Thm.internalK ((Binding.name (function_name fname), mixfix), ((Binding.name fdefname, []), f_def)) lthy
   489     in
   489     in
   490       ((f, f_defthm), lthy)
   490       ((f, f_defthm), lthy)
   491     end
   491     end
   492 
   492 
   493 
   493 
   896 
   896 
   897       val ((R, RIntro_thmss, R_elim), lthy) =
   897       val ((R, RIntro_thmss, R_elim), lthy) =
   898           PROFILE "def_rel" (define_recursion_relation (rel_name defname) domT ranT fvar f abstract_qglrs clauses RCss) lthy
   898           PROFILE "def_rel" (define_recursion_relation (rel_name defname) domT ranT fvar f abstract_qglrs clauses RCss) lthy
   899 
   899 
   900       val (_, lthy) =
   900       val (_, lthy) =
   901           LocalTheory.abbrev Syntax.mode_default ((Name.binding (dom_name defname), NoSyn), mk_acc domT R) lthy
   901           LocalTheory.abbrev Syntax.mode_default ((Binding.name (dom_name defname), NoSyn), mk_acc domT R) lthy
   902 
   902 
   903       val newthy = ProofContext.theory_of lthy
   903       val newthy = ProofContext.theory_of lthy
   904       val clauses = map (transfer_clause_ctx newthy) clauses
   904       val clauses = map (transfer_clause_ctx newthy) clauses
   905 
   905 
   906       val cert = cterm_of (ProofContext.theory_of lthy)
   906       val cert = cterm_of (ProofContext.theory_of lthy)