Theory HCSC
section‹Proof Transformation›
text‹This is organized as a ring closure›
subsection‹HC to SC›
theory HCSC
imports HC SC_Cut
begin
lemma extended_AxE[intro!]: "F, Γ ⇒ F, Δ" by (intro extended_Ax) (simp add: add.commute inter_add_right2)
theorem HCSC: "AX10 ∪ set_mset Γ ⊢⇩H F ⟹ Γ ⇒ {#F#}"
proof(induction rule: HC.induct)
case (Ax F) thus ?case proof
note SCp.intros(3-)[intro!]
text‹Essentially, we need to prove all the axioms of Hibert Calculus in Sequent Calculus.›
have A: "Γ ⇒ {#F ❙→ (F ❙∨ G)#}" for F G by blast
have B: "Γ ⇒ {#G ❙→ (F ❙∨ G)#}" for G F by blast
have C: "Γ ⇒ {#(F ❙→ H) ❙→ ((G ❙→ H) ❙→ ((F ❙∨ G) ❙→ H))#}" for F H G by blast
have D: "Γ ⇒ {#(F ❙∧ G) ❙→ F#}" for F G by blast
have E: "Γ ⇒ {#(F ❙∧ G) ❙→ G#}" for F G by blast
have F: "Γ ⇒ {#F ❙→ (G ❙→ (F ❙∧ G))#}" for F G by blast
have G: "Γ ⇒ {#(F ❙→ ⊥) ❙→ ❙¬ F#}" for F by blast
have H: "Γ ⇒ {#❙¬ F ❙→ (F ❙→ ⊥)#}" for F by blast
have I: "Γ ⇒ {#(❙¬ F ❙→ ⊥) ❙→ F#}" for F by blast
have K: "Γ ⇒ {#F ❙→ (G ❙→ F)#}" for F G by blast
have L: "Γ ⇒ {#(F ❙→ (G ❙→ H)) ❙→ ((F ❙→ G) ❙→ (F ❙→ H))#}" for F G H by blast
have J: "F ∈ AX0 ⟹ Γ ⇒ {#F#}" for F by(induction rule: AX0.induct; intro K L)
assume "F ∈ AX10" thus ?thesis by(induction rule: AX10.induct; intro A B C D E F G H I J)
next
assume "F ∈ set_mset Γ" thus ?thesis by(intro extended_Ax) simp
qed
next
case (MP F G)
from MP have IH: "Γ ⇒ {#F#}" "Γ ⇒ {#F ❙→ G#}" by blast+
with ImpR_inv[where Δ=‹{#}›, simplified] have "F,Γ ⇒ {#G#}" by auto
moreover from IH(1) weakenR have "Γ ⇒ F, {#G#}" by blast
ultimately show "Γ ⇒ {#G#}" using cut[where F=F] by simp
qed
end