Theory Pure_I
theory Pure_I imports Pure begin
typedecl bool
judgment Trueprop :: ‹bool ⇒ prop› (‹_›)
axiomatization Imp (infixr ‹⟶› 3)
where Imp_I [intro]: ‹(p ⟹ q) ⟹ p ⟶ q›
and Imp_E [elim]: ‹p ⟶ q ⟹ p ⟹ q›
axiomatization Dis (infixr ‹∨› 4)
where Dis_E [elim]: ‹p ∨ q ⟹ (p ⟹ r) ⟹ (q ⟹ r) ⟹ r›
and Dis_I1 [intro]: ‹p ⟹ p ∨ q›
and Dis_I2 [intro]: ‹q ⟹ p ∨ q›
axiomatization Con (infixr ‹∧› 5)
where Con_I [intro]: ‹p ⟹ q ⟹ p ∧ q›
and Con_E1 [elim]: ‹p ∧ q ⟹ p›
and Con_E2 [elim]: ‹p ∧ q ⟹ q›
axiomatization Falsity (‹⊥›)
where Falsity_E [elim]: ‹⊥ ⟹ p›
definition Truth (‹⊤›) where ‹⊤ ≡ ⊥ ⟶ ⊥›
theorem Truth_I [intro]: ‹⊤›
unfolding Truth_def ..
definition Neg (‹¬ _› [6] 6) where ‹¬ p ≡ p ⟶ ⊥›
theorem Neg_I [intro]: ‹(p ⟹ ⊥) ⟹ ¬ p›
unfolding Neg_def ..
theorem Neg_E [elim]: ‹¬ p ⟹ p ⟹ q›
unfolding Neg_def
proof -
assume ‹p ⟶ ⊥› and ‹p›
then have ‹⊥› ..
then show ‹q› ..
qed
definition Iff (infixr ‹⟷› 3) where ‹p ⟷ q ≡ (p ⟶ q) ∧ (q ⟶ p)›
theorem Iff_I [intro]: ‹(p ⟹ q) ⟹ (q ⟹ p) ⟹ p ⟷ q›
unfolding Iff_def
proof -
assume ‹p ⟹ q› and ‹q ⟹ p›
from ‹p ⟹ q› have ‹p ⟶ q› ..
from ‹q ⟹ p› have ‹q ⟶ p› ..
from ‹p ⟶ q› and ‹q ⟶ p› show ‹(p ⟶ q) ∧ (q ⟶ p)› ..
qed
theorem Iff_E1 [elim]: ‹p ⟷ q ⟹ p ⟹ q›
unfolding Iff_def
proof -
assume ‹(p ⟶ q) ∧ (q ⟶ p)›
then have ‹p ⟶ q› ..
then show ‹p ⟹ q› ..
qed
theorem Iff_E2 [elim]: ‹p ⟷ q ⟹ q ⟹ p›
unfolding Iff_def
proof -
assume ‹(p ⟶ q) ∧ (q ⟶ p)›
then have ‹q ⟶ p› ..
then show ‹q ⟹ p› ..
qed
proposition ‹p ⟶ ¬ ¬ p›
proof
assume ‹p›
show ‹¬ ¬ p›
proof
assume ‹¬ p›
from ‹¬ p› and ‹p› show ‹⊥› ..
qed
qed
proposition ‹(p ⟶ q) ∧ ¬ q ⟶ ¬ p›
proof
assume ‹(p ⟶ q) ∧ ¬ q›
show ‹¬ p›
proof
assume ‹p›
from ‹(p ⟶ q) ∧ ¬ q› have ‹p ⟶ q› ..
from ‹p ⟶ q› and ‹p› have ‹q› ..
from ‹(p ⟶ q) ∧ ¬ q› have ‹¬ q› ..
from ‹¬ q› and ‹q› show ‹⊥› ..
qed
qed
proposition ‹(p ⟷ q) ⟷ q ⟷ p›
proof
assume ‹p ⟷ q›
show ‹q ⟷ p›
proof
from ‹p ⟷ q› show ‹q ⟹ p› ..
next
from ‹p ⟷ q› show ‹p ⟹ q› ..
qed
next
assume ‹q ⟷ p›
show ‹p ⟷ q›
proof
from ‹q ⟷ p› show ‹p ⟹ q› ..
next
from ‹q ⟷ p› show ‹q ⟹ p› ..
qed
qed
end