Theory NDHC
subsection‹ND to HC›
theory NDHC
imports ND HC
begin
text‹The fundamental difference between the two is that Natural Deduction updates its set of assumptions while Hilbert Calculus does not.
The Deduction Theorem @{thm Deduction_theorem} helps with this.›
theorem NDHC: "Γ ⊢ F ⟹ AX10 ∪ Γ ⊢⇩H F"
proof(induction rule: ND.induct)
case Ax thus ?case by(auto intro: HC.Ax)
next
case NotE thus ?case by (meson AX10.intros(9) HC.simps subsetCE sup_ge1)
next
case (NotI F Γ)
from HC_intros(11) have HC_NotI: "AX10 ∪ Γ ⊢⇩H A ❙→ ⊥ ⟹ AX10 ∪ Γ ⊢⇩H ❙¬ A" for A
using MP HC_mono by (metis sup_ge1)
from NotI show ?case using Deduction_theorem[where Γ="AX10 ∪ Γ"] HC_NotI by (metis AX100 Un_assoc Un_insert_right)
next
case (CC F Γ)
hence "AX10 ∪ Γ ⊢⇩H ❙¬ F ❙→ ⊥" using Deduction_theorem[where Γ="AX10 ∪ Γ"] by (metis AX100 Un_assoc Un_insert_right)
thus "AX10 ∪ Γ ⊢⇩H F" using AX10.intros(10) by (metis HC.simps UnCI)
next
case (AndE1 Γ F G) thus ?case by (meson AX10.intros(5) HC.simps UnCI)
next
case (AndE2 Γ F G) thus ?case by (meson AX10.intros(6) HC.simps UnCI)
next
case (AndI Γ F G) thus ?case by (meson HC_intros(10) HC_mono HC.simps sup_ge1)
next
case (OrE Γ F G H)
from ‹AX10 ∪ (F ▹ Γ) ⊢⇩H H› ‹AX10 ∪ (G ▹ Γ) ⊢⇩H H› have
"AX10 ∪ Γ ⊢⇩H F ❙→ H" "AX10 ∪ Γ ⊢⇩H G ❙→ H"
using Deduction_theorem[where Γ="AX10 ∪ Γ"] by (metis AX100 Un_assoc Un_insert_right)+
with HC_intros(7)[THEN HC_mono[OF _ sup_ge1]] MP
have "AX10 ∪ Γ ⊢⇩H (F ❙∨ G) ❙→ H" by metis
with MP ‹AX10 ∪ Γ ⊢⇩H F ❙∨ G› show ?case .
next
case (OrI1 Γ F G) thus ?case by (meson AX10.intros(2) HC.simps UnCI)
next
case (OrI2 Γ F G) thus ?case by (meson AX10.intros(3) HC.simps UnCI)
next
case (ImpE Γ F G)
from MP ‹AX10 ∪ Γ ⊢⇩H F› ‹AX10 ∪ Γ ⊢⇩H F ❙→ G› show ?case .
next
case (ImpI F Γ G) thus ?case using Deduction_theorem[where Γ="AX10 ∪ Γ"] by (metis AX100 Un_assoc Un_insert_right)
qed
end