src/HOL/Tools/Datatype/datatype_abs_proofs.ML
changeset 35625 9c818cab0dd0
parent 35410 1ea89d2a1bd4
child 38864 4abe644fcea5
equal deleted inserted replaced
35624:c4e29a0bb8c1 35625:9c818cab0dd0
   207         val insts = map (fn ((i, T), t) => absfree ("x" ^ (string_of_int i), T, t))
   207         val insts = map (fn ((i, T), t) => absfree ("x" ^ (string_of_int i), T, t))
   208           ((1 upto length recTs) ~~ recTs ~~ rec_unique_ts);
   208           ((1 upto length recTs) ~~ recTs ~~ rec_unique_ts);
   209         val induct' = cterm_instantiate ((map cert induct_Ps) ~~
   209         val induct' = cterm_instantiate ((map cert induct_Ps) ~~
   210           (map cert insts)) induct;
   210           (map cert insts)) induct;
   211         val (tac, _) = fold mk_unique_tac (descr' ~~ rec_elims ~~ recTs ~~ rec_result_Ts)
   211         val (tac, _) = fold mk_unique_tac (descr' ~~ rec_elims ~~ recTs ~~ rec_result_Ts)
   212            (((rtac induct' THEN_ALL_NEW ObjectLogic.atomize_prems_tac) 1
   212            (((rtac induct' THEN_ALL_NEW Object_Logic.atomize_prems_tac) 1
   213               THEN rewrite_goals_tac [mk_meta_eq @{thm choice_eq}], rec_intrs));
   213               THEN rewrite_goals_tac [mk_meta_eq @{thm choice_eq}], rec_intrs));
   214 
   214 
   215       in split_conj_thm (Skip_Proof.prove_global thy1 [] []
   215       in split_conj_thm (Skip_Proof.prove_global thy1 [] []
   216         (HOLogic.mk_Trueprop (mk_conj rec_unique_ts)) (K tac))
   216         (HOLogic.mk_Trueprop (mk_conj rec_unique_ts)) (K tac))
   217       end;
   217       end;