src/HOL/Tools/Predicate_Compile/predicate_compile_pred.ML
changeset 58963 26bf09b95dda
parent 56239 17df7145a871
child 59498 50b60f501b05
equal deleted inserted replaced
58960:4bee6d8c1500 58963:26bf09b95dda
   169           let
   169           let
   170             val tac = Simplifier.simp_tac (put_simpset HOL_basic_ss ctxt' addsimps [th]) 1
   170             val tac = Simplifier.simp_tac (put_simpset HOL_basic_ss ctxt' addsimps [th]) 1
   171               THEN EVERY1 (select_disj (length disjuncts) (index + 1)) 
   171               THEN EVERY1 (select_disj (length disjuncts) (index + 1)) 
   172               THEN (EVERY (map (fn y =>
   172               THEN (EVERY (map (fn y =>
   173                 rtac (Drule.cterm_instantiate [(x, cterm_of thy (Free y))] @{thm exI}) 1) ps))
   173                 rtac (Drule.cterm_instantiate [(x, cterm_of thy (Free y))] @{thm exI}) 1) ps))
   174               THEN REPEAT_DETERM (rtac @{thm conjI} 1 THEN atac 1)
   174               THEN REPEAT_DETERM (rtac @{thm conjI} 1 THEN assume_tac ctxt' 1)
   175               THEN TRY (atac 1)
   175               THEN TRY (assume_tac ctxt' 1)
   176           in
   176           in
   177             Goal.prove ctxt' (map fst ps) [] introrule (fn _ => tac)
   177             Goal.prove ctxt' (map fst ps) [] introrule (fn _ => tac)
   178           end
   178           end
   179       in
   179       in
   180         map_index prove_introrule (map mk_introrule disjuncts)
   180         map_index prove_introrule (map mk_introrule disjuncts)