src/HOL/Tools/datatype_abs_proofs.ML
changeset 10911 eb5721204b38
parent 10214 77349ed89f45
child 11435 bd1a7f53c11b
equal deleted inserted replaced
10910:058775a575db 10911:eb5721204b38
   236         val insts = map (fn ((i, T), t) => absfree ("x" ^ (string_of_int i), T, t))
   236         val insts = map (fn ((i, T), t) => absfree ("x" ^ (string_of_int i), T, t))
   237           ((1 upto length recTs) ~~ recTs ~~ rec_unique_ts);
   237           ((1 upto length recTs) ~~ recTs ~~ rec_unique_ts);
   238         val induct' = cterm_instantiate ((map cert induct_Ps) ~~
   238         val induct' = cterm_instantiate ((map cert induct_Ps) ~~
   239           (map cert insts)) induct;
   239           (map cert insts)) induct;
   240         val (tac, _) = foldl mk_unique_tac
   240         val (tac, _) = foldl mk_unique_tac
   241           ((rtac induct' 1, rec_intrs), descr' ~~ rec_elims ~~ recTs ~~ rec_result_Ts)
   241           (((rtac induct' THEN_ALL_NEW atomize_strip_tac) 1, rec_intrs),
       
   242             descr' ~~ rec_elims ~~ recTs ~~ rec_result_Ts);
   242 
   243 
   243       in split_conj_thm (prove_goalw_cterm []
   244       in split_conj_thm (prove_goalw_cterm []
   244         (cert (HOLogic.mk_Trueprop (mk_conj rec_unique_ts))) (K [tac]))
   245         (cert (HOLogic.mk_Trueprop (mk_conj rec_unique_ts))) (K [tac]))
   245       end;
   246       end;
   246 
   247