450 rewrite_goals_tac ctxt4 rec_preds_defs, |
450 rewrite_goals_tac ctxt4 rec_preds_defs, |
451 dresolve_tac ctxt4 [unfold RS iffD1] 1, |
451 dresolve_tac ctxt4 [unfold RS iffD1] 1, |
452 REPEAT (FIRSTGOAL (eresolve_tac ctxt4 rules1)), |
452 REPEAT (FIRSTGOAL (eresolve_tac ctxt4 rules1)), |
453 REPEAT (FIRSTGOAL (eresolve_tac ctxt4 rules2)), |
453 REPEAT (FIRSTGOAL (eresolve_tac ctxt4 rules2)), |
454 EVERY (map (fn prem => |
454 EVERY (map (fn prem => |
455 DEPTH_SOLVE_1 (ares_tac [rewrite_rule ctxt4 rec_preds_defs prem, conjI] 1)) |
455 DEPTH_SOLVE_1 (assume_tac ctxt4 1 ORELSE |
|
456 resolve_tac ctxt [rewrite_rule ctxt4 rec_preds_defs prem, conjI] 1)) |
456 (tl prems))]) |
457 (tl prems))]) |
457 |> singleton (Proof_Context.export ctxt'' ctxt'''), |
458 |> singleton (Proof_Context.export ctxt'' ctxt'''), |
458 map #2 c_intrs, length Ts) |
459 map #2 c_intrs, length Ts) |
459 end |
460 end |
460 |
461 |
744 some premise involves disjunction.*) |
745 some premise involves disjunction.*) |
745 REPEAT (FIRSTGOAL (eresolve_tac ctxt3 [conjE] ORELSE' bound_hyp_subst_tac ctxt3)), |
746 REPEAT (FIRSTGOAL (eresolve_tac ctxt3 [conjE] ORELSE' bound_hyp_subst_tac ctxt3)), |
746 REPEAT (FIRSTGOAL |
747 REPEAT (FIRSTGOAL |
747 (resolve_tac ctxt3 [conjI, impI] ORELSE' |
748 (resolve_tac ctxt3 [conjI, impI] ORELSE' |
748 (eresolve_tac ctxt3 [notE] THEN' assume_tac ctxt3))), |
749 (eresolve_tac ctxt3 [notE] THEN' assume_tac ctxt3))), |
749 EVERY (map (fn prem => DEPTH_SOLVE_1 (ares_tac [rewrite_rule ctxt3 |
750 EVERY (map (fn prem => |
750 (inductive_conj_def :: rec_preds_defs @ simp_thms2) prem, |
751 DEPTH_SOLVE_1 (assume_tac ctxt3 1 ORELSE |
751 conjI, refl] 1)) prems)]); |
752 resolve_tac ctxt3 |
|
753 [rewrite_rule ctxt3 (inductive_conj_def :: rec_preds_defs @ simp_thms2) prem, |
|
754 conjI, refl] 1)) prems)]); |
752 |
755 |
753 val lemma = Goal.prove_sorry ctxt'' [] [] |
756 val lemma = Goal.prove_sorry ctxt'' [] [] |
754 (Logic.mk_implies (ind_concl, mutual_ind_concl)) (fn {context = ctxt3, ...} => EVERY |
757 (Logic.mk_implies (ind_concl, mutual_ind_concl)) (fn {context = ctxt3, ...} => EVERY |
755 [rewrite_goals_tac ctxt3 rec_preds_defs, |
758 [rewrite_goals_tac ctxt3 rec_preds_defs, |
756 REPEAT (EVERY |
759 REPEAT (EVERY |