Theory PMLinHOL_faithfulness
section‹Automated faithfulness proofs\label{sec:faithfulness}›
theory PMLinHOL_faithfulness
imports PMLinHOL_deep PMLinHOL_shallow PMLinHOL_shallow_minimal
begin
primrec DpToShMax ("⦇_⦈") where "⦇φ⇧d⦈= φ⇧s" | "⦇¬⇧d φ⦈ = ¬⇧s ⦇φ⦈" | "⦇φ ⊃⇧d ψ⦈ = ⦇φ⦈ ⊃⇧s ⦇ψ⦈" | "⦇□⇧d φ⦈ = □⇧s ⦇φ⦈"
primrec DpToShMin ("⟦_⟧") where "⟦φ⇧d⟧= φ⇧m" | "⟦¬⇧d φ⟧ = ¬⇧m ⟦φ⟧" | "⟦φ ⊃⇧d ψ⟧ = ⟦φ⟧ ⊃⇧m ⟦ψ⟧" | "⟦□⇧d φ⟧ = □⇧m ⟦φ⟧"
theorem Faithful1a: "∀W R V. ∀w:W. ⟨W,R,V⟩,w ⊨⇧d φ ⟷ ⟨W,R,V⟩,w ⊨⇧s ⦇φ⦈" apply induct by auto
theorem Faithful1b: "⊨⇧d φ ⟷ ⊨⇧s ⦇φ⦈" using Faithful1a by auto
theorem Faithful2: "∀w. ⟨(λx::𝗐. True),R,V⟩,w ⊨⇧d φ ⟷ w ⊨⇧m ⟦φ⟧" apply induct by auto
theorem Faithful3: "∀w. ⟨(λx::𝗐. True),R,V⟩,w ⊨⇧s ⦇φ⦈ ⟷ w ⊨⇧m ⟦φ⟧" apply induct by auto
lemma Sound1: "⊨⇧m ψ ⟶ (∃φ. ψ=⟦φ⟧ ∧ ⊨⇧d φ)" oops
lemma Sound2: "⊨⇧m ψ ⟶ (∃φ. ψ=⟦φ⟧ ∧ ⊨⇧m ⟦φ⟧)" oops
end