Theory KanckosLethenNo2Possibilist

subsection‹Formal Study of Version No.2 of Gödel's Argument as 
  Reported by Kanckos and Lethen, 2019 cite"KanckosLethen19" (Fig.~11 in cite"C85")›

theory KanckosLethenNo2Possibilist imports
  HOML 
  MFilter 
  BaseDefs
begin  
text‹Axioms of Version No. 2 cite"KanckosLethen19".›
abbreviation delta (Δ) where "Δ A  λx.(ψ. ((A ψ)  (ψ x)))"
abbreviation N (𝒩) where "𝒩 φ  λx.((φ x))"

axiomatization where 
  Axiom1: "φ ψ.(((𝒫 φ)  ((x. ((φ x)  (ψ x)))))  (𝒫 ψ))" and ―‹The  can be omitted here; the proofs still work.› 
  Axiom2: "A .(((φ.((A φ)   (𝒫 φ)))  (𝒫 (Δ A))))" and  ―‹The  can be omitted here; the proofs still work.› 
  Axiom3: "φ.((𝒫 φ)  (𝒫 (𝒩 φ)))" and
  Axiom4: "φ.((𝒫 φ)  (¬(𝒫(φ))))" and
  ―‹Logic S5› 
  axB:  "φ.(φ  φ)" and axM: "φ.((φ)  φ)" and ax4:  "φ.((φ)  (φ))"

text‹Sahlqvist correspondences: they are better suited for proof automation.›
lemma axB': "x y. ¬(xry)  (yrx)" using axB by fastforce
lemma axM': "x. (xrx)" using axM by blast
lemma ax4': "x y z. (((xry)  (yrz))  (xrz))" using ax4 by auto 

text‹Proofs for all theorems for No.2 from cite"KanckosLethen19".›
theorem Theorem0: "φ ψ.((Q. ((Q φ)   (Q ψ)))   ((𝒫 φ)  (𝒫  φ)))" by auto ―‹not needed›
theorem Theorem1: "𝒫 𝒢"  unfolding G_def  using Axiom2 axM by blast
theorem Theorem2: "x. ((𝒢 x)(y. 𝒢 y))" by blast  ―‹not needed›
theorem Theorem3a: "𝒫 (λx. (y. 𝒢 y))"  by (metis (no_types, lifting) Axiom1 Theorem1) 
theorem Theorem3b: "(𝒫 (λx.((y. 𝒢 y))))" by (smt Axiom1 G_def Theorem3a  Axiom3 Theorem1 axB') 
theorem Theorem4: "x. ((𝒢 x)  ((𝒫 (λx.((y. 𝒢 y))))   ((y. 𝒢 y))))" using G_def by fastforce ―‹not needed›
theorem Theorem5: "x. ((𝒢 x)  ((y. 𝒢 y)))" by (smt (verit) G_def Theorem3a Theorem3b)  ―‹not needed›
theorem Theorem6: "((y. 𝒢 y)  ((y. 𝒢 y)))" by (smt G_def Theorem3a Theorem3b) 
theorem Theorem7: "(((y. 𝒢 y))  ((y. 𝒢 y)))" using Theorem6 axB' by blast
theorem Theorem8: "(y. 𝒢 y)" by (metis Axiom1 Axiom4 Theorem1 Theorem7 axB')
theorem Theorem9: "φ. ((𝒫 φ)  (x. φ x))" using Axiom1 Axiom4 axM' by metis

text‹Short proof of Theorem8; analogous to the one presented in Sec. 7 of Benzmüller 2020.›
theorem "(y. 𝒢 y)" ―‹Note: this version of the proof uses only axB'› and axM'›.›
proof -
  have L1: "(X.((𝒫 X)¬(X)))(𝒫(λx.(xx)))"  using Axiom1 Axiom3 axB' by blast  ―‹Use metis here if  is omitted in Axiom1 and Axiom 2›  
  have L2:  "¬(𝒫(λx.(xx)))" using Axiom1 Axiom4 by metis
  have L3: "¬(X.((𝒫 X)  ¬( X)))" using L1 L2 by blast 
  have T2: "𝒫 𝒢" by (smt Axiom1 Axiom2 G_def axM')
  have T3: "y. 𝒢 y" using L3 T2 by blast
  have T6: "(y. 𝒢 y)" by (simp add: T3)
  thus ?thesis by blast qed

theorem T5: "((y. 𝒢 y))  (y. 𝒢 y)" ―‹Obvious: If we can prove Theorem8, then we also have T5.›
proof -
  have L1: "(X.((𝒫 X)¬(X)))(𝒫(λx.(xx)))"  using Axiom1 Axiom3 axB' by blast  ―‹Use metis here if  is omitted in Axiom1 and Axiom 2›  
  have L2:  "¬(𝒫(λx.(xx)))" using Axiom1 Axiom4 by metis
  have L3: "¬(X.((𝒫 X)  ¬( X)))" using L1 L2 by blast 
  have T2: "𝒫 𝒢" by (smt Axiom1 Axiom2 G_def axM')
  have T3: "y. 𝒢 y" using L3 T2 by blast
  have T6: "(y. 𝒢 y)" by (simp add: T3)
  thus ?thesis by blast qed

text‹Another short proof of Theorem8.›
theorem "(y. 𝒢 y)"  ―‹Note: fewer assumptions used in some cases than in \cite{KanckosLethen19}.›
proof -
  have T1: "𝒫 𝒢"  unfolding G_def  using Axiom2 axM by blast
  have T3a: "𝒫 (λx. (y. 𝒢 y))" by (metis (no_types, lifting) Axiom1 T1)
  have T3b: "(𝒫 (λx.((y. 𝒢 y))))" by (smt Axiom1 G_def T3a  Axiom3 T1 axB') 
  have T6: "((y. 𝒢 y)  ((y. 𝒢 y)))" by (smt G_def T3a T3b) 
  have T7: "(((y. 𝒢 y))  ((y. 𝒢 y)))" using T6 axB' by blast
  thus ?thesis  by (smt Axiom1 Axiom4 T3b axB') qed

text‹Are the axioms of the simplified versions implied?›
text‹Actualist version of the axioms.›
lemma A1': "¬(𝒫(λx.(xx)))" using Theorem9 by blast
lemma A2': "X Y.(((𝒫 X)  ((XY)(XY)))  (𝒫 Y))" nitpick oops  ―‹Countermodel›
lemma A3:  "𝒵.((𝒫𝗈𝗌 𝒵)  (X.((X𝒵)  (𝒫 X))))" nitpick oops  ―‹Countermodel›

text‹Possibilist version of the axioms.›
abbreviation a (‹_p_›) where "XpY  z.((X z)  (Y z))"
abbreviation b (‹_p_›) where "XpY  (XpY)"
abbreviation d (‹_p_›) where "Xp𝒵  (u.((X u)  (Y.((𝒵 Y)  (Y u)))))"

lemma A1'P: "¬(𝒫(λx.(xx)))" using Theorem9 by blast
lemma A2'P: "X Y.(((𝒫 X)  ((XpY)(XpY)))  (𝒫 Y))" oops ―‹no answer, yet by sledgehammer and nitpick›
lemma A2'aP: "X Y.(((𝒫 X)  (XpY))  (𝒫 Y))" using Axiom1 axM' by metis
lemma A2'bP: "X Y.(((𝒫 X)  (XpY))  (𝒫 Y))" oops ―‹no answer, yet by sledgehammer and nitpick›
lemma A3P:  "𝒵.((𝒫𝗈𝗌 𝒵)  (X.((Xp𝒵)  (𝒫 X))))" 
  by (smt (verit, del_insts) Axiom1 Axiom2 axM') ―‹proof found›

text‹Are Axiom2 and A3 equivalent? Only when assuming Axiom1 and axiom M.›
lemma  "A .(((φ.((A φ)   (𝒫 φ)))  (𝒫 (Δ A))))  𝒵.((𝒫𝗈𝗌 𝒵)  (X.((Xp𝒵)  (𝒫 X))))"
  by (smt (verit, ccfv_threshold) Axiom1 axM') ―‹proof found›
end