src/HOL/Tools/inductive.ML
changeset 59499 14095f771781
parent 59498 50b60f501b05
child 59532 82ab8168d940
equal deleted inserted replaced
59498:50b60f501b05 59499:14095f771781
   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