src/HOL/Tools/Quotient/quotient_tacs.ML
changeset 58963 26bf09b95dda
parent 58956 a816aa3ff391
child 59498 50b60f501b05
equal deleted inserted replaced
58960:4bee6d8c1500 58963:26bf09b95dda
   394     (* merge with previous tactic *)
   394     (* merge with previous tactic *)
   395     Cong_Tac.cong_tac ctxt @{thm cong} THEN'
   395     Cong_Tac.cong_tac ctxt @{thm cong} THEN'
   396                  RANGE [quot_true_tac ctxt (fst o dest_comb), quot_true_tac ctxt (snd o dest_comb)],
   396                  RANGE [quot_true_tac ctxt (fst o dest_comb), quot_true_tac ctxt (snd o dest_comb)],
   397 
   397 
   398     (* resolving with R x y assumptions *)
   398     (* resolving with R x y assumptions *)
   399     atac,
   399     assume_tac ctxt,
   400 
   400 
   401     (* (op =) (%x...) (%y...) ----> (op =) (...) (...) *)
   401     (* (op =) (%x...) (%y...) ----> (op =) (...) (...) *)
   402     rtac @{thm ext} THEN' quot_true_tac ctxt unlam,
   402     rtac @{thm ext} THEN' quot_true_tac ctxt unlam,
   403 
   403 
   404     (* reflexivity of the basic relations *)
   404     (* reflexivity of the basic relations *)
   558       val vrs = Term.add_frees concl []
   558       val vrs = Term.add_frees concl []
   559       val cvrs = map (cterm_of thy o Free) vrs
   559       val cvrs = map (cterm_of thy o Free) vrs
   560       val concl' = apply_under_Trueprop (all_list vrs) concl
   560       val concl' = apply_under_Trueprop (all_list vrs) concl
   561       val goal = Logic.mk_implies (concl', concl)
   561       val goal = Logic.mk_implies (concl', concl)
   562       val rule = Goal.prove ctxt [] [] goal
   562       val rule = Goal.prove ctxt [] [] goal
   563         (K (EVERY1 [inst_spec_tac (rev cvrs), atac]))
   563         (K (EVERY1 [inst_spec_tac (rev cvrs), assume_tac ctxt]))
   564     in
   564     in
   565       rtac rule i
   565       rtac rule i
   566     end)
   566     end)
   567 
   567 
   568 
   568