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