theory Tacticals imports Main begin
text ‹ REPEAT›
lemma "[ P⟶ Q; Q⟶ R; R⟶ S; P] ==> S"
apply (drule mp, assumption)
apply (drule mp, assumption)
apply (drule mp, assumption)
apply (assumption)
done
lemma "[ P⟶ Q; Q⟶ R; R⟶ S; P] ==> S"
by (drule mp, assumption)+
text ‹ ORELSE with REPEAT›
lemma "[ Q⟶ R; P⟶ Q; x<5⟶ P; Suc x < 5] ==> R"
by (drule mp, (assumption|arith))+
text ‹ exercise: what's going on here?›
lemma "[ P∧ Q⟶ R; P⟶ Q; P] ==> R"
by (drule mp, (intro conjI)?, assumption+)+
text ‹ defer and prefer›
lemma "hard ∧ (P ∨ ~P) ∧ (Q⟶ Q)"
apply (intro conjI) 🍋 ‹ @{subgoals[display,indent=0,margin=65]}›
defer 1 🍋 ‹ @{subgoals[display,indent=0,margin=65]}›
apply blast+ 🍋 ‹ @{subgoals[display,indent=0,margin=65]}›
oops
lemma "ok1 ∧ ok2 ∧ doubtful"
apply (intro conjI) 🍋 ‹ @{subgoals[display,indent=0,margin=65]}›
prefer 3 🍋 ‹ @{subgoals[display,indent=0,margin=65]}›
oops
lemma "bigsubgoal1 ∧ bigsubgoal2 ∧ bigsubgoal3 ∧ bigsubgoal4 ∧ bigsubgoal5 ∧ bigsubgoal6"
apply (intro conjI) 🍋 ‹ @{subgoals[display,indent=0,margin=65]}›
txt ‹ @{subgoals[display,indent=0,margin=65]}
A total of 6 subgoals...
›
oops
(*needed??*)
lemma "(P∨ Q) ∧ (R∨ S) ==> PP"
apply (elim conjE disjE)
oops
lemma "((P∨ Q) ∧ R) ∧ (Q ∧ (P∨ S)) ==> PP"
apply (elim conjE)
oops
lemma "((P∨ Q) ∧ R) ∧ (Q ∧ (P∨ S)) ==> PP"
apply (erule conjE)+
oops
end
Messung V0.5 in Prozent C=76 H=72 G=73
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-04-29)
¤
*© Formatika GbR, Deutschland