src/HOL/Tools/typedef_package.ML
changeset 21434 944f80576be0
parent 21359 072e83a0b5bb
child 21565 bd28361f4c5b
equal deleted inserted replaced
21433:89104dca628e 21434:944f80576be0
   259 fun gen_typedef prep_term ((def, name), typ, set, opt_morphs) thy =
   259 fun gen_typedef prep_term ((def, name), typ, set, opt_morphs) thy =
   260   let
   260   let
   261     val (_, goal, goal_pat, typedef_result) =
   261     val (_, goal, goal_pat, typedef_result) =
   262       prepare_typedef prep_term def name typ set opt_morphs thy;
   262       prepare_typedef prep_term def name typ set opt_morphs thy;
   263     fun after_qed [[th]] = ProofContext.theory (snd o typedef_result th);
   263     fun after_qed [[th]] = ProofContext.theory (snd o typedef_result th);
   264   in
   264   in Proof.theorem_i NONE after_qed [[(goal, [goal_pat])]] (ProofContext.init thy) end;
   265     ProofContext.init thy
       
   266     |> Proof.theorem_i PureThy.internalK NONE after_qed [[(goal, [goal_pat])]]
       
   267   end;
       
   268 
   265 
   269 in
   266 in
   270 
   267 
   271 val typedef = gen_typedef ProofContext.read_term;
   268 val typedef = gen_typedef ProofContext.read_term;
   272 val typedef_i = gen_typedef ProofContext.cert_term;
   269 val typedef_i = gen_typedef ProofContext.cert_term;