diff --git a/thys/Public_Announcement_Logic/PAL.thy b/thys/Public_Announcement_Logic/PAL.thy --- a/thys/Public_Announcement_Logic/PAL.thy +++ b/thys/Public_Announcement_Logic/PAL.thy @@ -1,734 +1,734 @@ (* File: PAL.thy Author: Asta Halkjær From This work is a formalization of public announcement logic with countably many agents. It includes proofs of soundness and completeness for a variant of the axiom system PA + DIST! + NEC!. The completeness proof builds on the Epistemic Logic theory. *) theory PAL imports "Epistemic_Logic.Epistemic_Logic" begin section \Syntax\ datatype 'i pfm = FF ("\<^bold>\\<^sub>!") | Pro' id ("Pro\<^sub>!") | Dis \'i pfm\ \'i pfm\ (infixr "\<^bold>\\<^sub>!" 30) | Con \'i pfm\ \'i pfm\ (infixr "\<^bold>\\<^sub>!" 35) | Imp \'i pfm\ \'i pfm\ (infixr "\<^bold>\\<^sub>!" 25) | K' 'i \'i pfm\ (\K\<^sub>!\) | Ann \'i pfm\ \'i pfm\ (\[_]\<^sub>! _\ [50, 50] 50) abbreviation PIff :: \'i pfm \ 'i pfm \ 'i pfm\ (infixr \\<^bold>\\<^sub>!\ 25) where \p \<^bold>\\<^sub>! q \ (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! p)\ abbreviation PNeg (\\<^bold>\\<^sub>! _\ [40] 40) where \\<^bold>\\<^sub>! p \ p \<^bold>\\<^sub>! \<^bold>\\<^sub>!\ abbreviation PL (\L\<^sub>!\) where \L\<^sub>! i p \ (\<^bold>\\<^sub>! (K\<^sub>! i (\<^bold>\\<^sub>! p)))\ section \Semantics\ fun psemantics :: \('i, 'w) kripke \ 'w \ 'i pfm \ bool\ ("_, _ \\<^sub>! _" [50, 50] 50) and restrict :: \('i, 'w) kripke \ 'i pfm \ ('i, 'w) kripke\ where \(M, w \\<^sub>! \<^bold>\\<^sub>!) = False\ | \(M, w \\<^sub>! Pro\<^sub>! x) = \ M w x\ | \(M, w \\<^sub>! (p \<^bold>\\<^sub>! q)) = ((M, w \\<^sub>! p) \ (M, w \\<^sub>! q))\ | \(M, w \\<^sub>! (p \<^bold>\\<^sub>! q)) = ((M, w \\<^sub>! p) \ (M, w \\<^sub>! q))\ | \(M, w \\<^sub>! (p \<^bold>\\<^sub>! q)) = ((M, w \\<^sub>! p) \ (M, w \\<^sub>! q))\ | \(M, w \\<^sub>! K\<^sub>! i p) = (\v \ \ M \ \ M i w. M, v \\<^sub>! p)\ | \(M, w \\<^sub>! [r]\<^sub>! p) = ((M, w \\<^sub>! r) \ (restrict M r, w \\<^sub>! p))\ | \restrict M p = Kripke {w. w \ \ M \ M, w \\<^sub>! p} (\ M) (\ M)\ primrec static :: \'i pfm \ bool\ where \static \<^bold>\\<^sub>! = True\ | \static (Pro\<^sub>! _) = True\ | \static (p \<^bold>\\<^sub>! q) = (static p \ static q)\ | \static (p \<^bold>\\<^sub>! q) = (static p \ static q)\ | \static (p \<^bold>\\<^sub>! q) = (static p \ static q)\ | \static (K\<^sub>! i p) = static p\ | \static ([r]\<^sub>! p) = False\ primrec lower :: \'i pfm \ 'i fm\ where \lower \<^bold>\\<^sub>! = \<^bold>\\ | \lower (Pro\<^sub>! x) = Pro x\ | \lower (p \<^bold>\\<^sub>! q) = (lower p \<^bold>\ lower q)\ | \lower (p \<^bold>\\<^sub>! q) = (lower p \<^bold>\ lower q)\ | \lower (p \<^bold>\\<^sub>! q) = (lower p \<^bold>\ lower q)\ | \lower (K\<^sub>! i p) = K i (lower p)\ | \lower ([r]\<^sub>! p) = undefined\ primrec lift :: \'i fm \ 'i pfm\ where \lift \<^bold>\ = \<^bold>\\<^sub>!\ | \lift (Pro x) = Pro\<^sub>! x\ | \lift (p \<^bold>\ q) = (lift p \<^bold>\\<^sub>! lift q)\ | \lift (p \<^bold>\ q) = (lift p \<^bold>\\<^sub>! lift q)\ | \lift (p \<^bold>\ q) = (lift p \<^bold>\\<^sub>! lift q)\ | \lift (K i p) = K\<^sub>! i (lift p)\ lemma lower_semantics: assumes \static p\ shows \(M, w \ lower p) \ (M, w \\<^sub>! p)\ using assms by (induct p arbitrary: w) simp_all lemma lift_semantics: \(M, w \ p) \ (M, w \\<^sub>! lift p)\ by (induct p arbitrary: w) simp_all lemma lower_lift: \lower (lift p) = p\ by (induct p) simp_all lemma lift_lower: \static p \ lift (lower p) = p\ by (induct p) simp_all section \Soundness of Reduction\ primrec reduce' :: \'i pfm \ 'i pfm \ 'i pfm\ where \reduce' r \<^bold>\\<^sub>! = (r \<^bold>\\<^sub>! \<^bold>\\<^sub>!)\ | \reduce' r (Pro\<^sub>! x) = (r \<^bold>\\<^sub>! Pro\<^sub>! x)\ | \reduce' r (p \<^bold>\\<^sub>! q) = (reduce' r p \<^bold>\\<^sub>! reduce' r q)\ | \reduce' r (p \<^bold>\\<^sub>! q) = (reduce' r p \<^bold>\\<^sub>! reduce' r q)\ | \reduce' r (p \<^bold>\\<^sub>! q) = (reduce' r p \<^bold>\\<^sub>! reduce' r q)\ | \reduce' r (K\<^sub>! i p) = (r \<^bold>\\<^sub>! K\<^sub>! i (reduce' r p))\ | \reduce' r ([p]\<^sub>! q) = undefined\ primrec reduce :: \'i pfm \ 'i pfm\ where \reduce \<^bold>\\<^sub>! = \<^bold>\\<^sub>!\ | \reduce (Pro\<^sub>! x) = Pro\<^sub>! x\ | \reduce (p \<^bold>\\<^sub>! q) = (reduce p \<^bold>\\<^sub>! reduce q)\ | \reduce (p \<^bold>\\<^sub>! q) = (reduce p \<^bold>\\<^sub>! reduce q)\ | \reduce (p \<^bold>\\<^sub>! q) = (reduce p \<^bold>\\<^sub>! reduce q)\ | \reduce (K\<^sub>! i p) = K\<^sub>! i (reduce p)\ | \reduce ([r]\<^sub>! p) = reduce' (reduce r) (reduce p)\ lemma static_reduce': \static p \ static r \ static (reduce' r p)\ by (induct p) simp_all lemma static_reduce: \static (reduce p)\ by (induct p) (simp_all add: static_reduce') lemma reduce'_semantics: assumes \static q\ shows \((M, w \\<^sub>! [p]\<^sub>! (q))) = (M, w \\<^sub>! reduce' p q)\ using assms by (induct q arbitrary: w) auto lemma reduce_semantics: \(M, w \\<^sub>! p) = (M, w \\<^sub>! reduce p)\ proof (induct p arbitrary: M w) case (Ann p q) then show ?case using reduce'_semantics static_reduce by fastforce qed simp_all section \Proof System\ primrec peval :: \(id \ bool) \ ('i pfm \ bool) \ 'i pfm \ bool\ where \peval _ _ \<^bold>\\<^sub>! = False\ | \peval g _ (Pro\<^sub>! x) = g x\ | \peval g h (p \<^bold>\\<^sub>! q) = (peval g h p \ peval g h q)\ | \peval g h (p \<^bold>\\<^sub>! q) = (peval g h p \ peval g h q)\ | \peval g h (p \<^bold>\\<^sub>! q) = (peval g h p \ peval g h q)\ | \peval _ h (K\<^sub>! i p) = h (K\<^sub>! i p)\ | \peval _ h ([r]\<^sub>! p) = h ([r]\<^sub>! p)\ abbreviation \ptautology p \ \g h. peval g h p\ -inductive PAK :: \('i pfm \ bool) \ 'i pfm \ bool\ ("_ \\<^sub>! _" [50, 50] 50) +inductive PAK :: \('i pfm \ bool) \ 'i pfm \ bool\ ("_ \\<^sub>! _" [20, 20] 20) for A :: \'i pfm \ bool\ where PA1: \ptautology p \ A \\<^sub>! p\ - | PA2: \A \\<^sub>! (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i q)\ + | PA2: \A \\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i q\ | PAx: \A p \ A \\<^sub>! p\ - | PR1: \A \\<^sub>! p \ A \\<^sub>! (p \<^bold>\\<^sub>! q) \ A \\<^sub>! q\ + | PR1: \A \\<^sub>! p \ A \\<^sub>! p \<^bold>\\<^sub>! q \ A \\<^sub>! q\ | PR2: \A \\<^sub>! p \ A \\<^sub>! K\<^sub>! i p\ - | PFF: \A \\<^sub>! ([r]\<^sub>! \<^bold>\\<^sub>! \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! \<^bold>\\<^sub>!))\ - | PPro: \A \\<^sub>! ([r]\<^sub>! Pro\<^sub>! x \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! Pro\<^sub>! x))\ - | PDis: \A \\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q)\ - | PCon: \A \\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q)\ - | PImp: \A \\<^sub>! (([r]\<^sub>! (p \<^bold>\\<^sub>! q)) \<^bold>\\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q))\ - | PK: \A \\<^sub>! (([r]\<^sub>! K\<^sub>! i p) \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! K\<^sub>! i ([r]\<^sub>! p)))\ + | PFF: \A \\<^sub>! [r]\<^sub>! \<^bold>\\<^sub>! \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! \<^bold>\\<^sub>!)\ + | PPro: \A \\<^sub>! [r]\<^sub>! Pro\<^sub>! x \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! Pro\<^sub>! x)\ + | PDis: \A \\<^sub>! [r]\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q\ + | PCon: \A \\<^sub>! [r]\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q\ + | PImp: \A \\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q)) \<^bold>\\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q)\ + | PK: \A \\<^sub>! ([r]\<^sub>! K\<^sub>! i p) \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! K\<^sub>! i ([r]\<^sub>! p))\ | PAnn: \A \\<^sub>! p \ A \\<^sub>! [r]\<^sub>! p\ lemma eval_peval: \eval h (g o lift) p = peval h g (lift p)\ by (induct p) simp_all lemma tautology_ptautology: \tautology p \ ptautology (lift p)\ using eval_peval by blast lemma peval_eval: assumes \static p\ shows \eval h g (lower p) = peval h (g o lower) p\ using assms by (induct p) simp_all lemma ptautology_tautology: assumes \static p\ shows \ptautology p \ tautology (lower p)\ using assms peval_eval by blast theorem AK_PAK: \A o lift \ p \ A \\<^sub>! lift p\ by (induct p rule: AK.induct) (auto intro: PAK.intros(1-5) simp: tautology_ptautology) abbreviation validP :: \(('i :: countable, 'i fm set) kripke \ bool) \ 'i pfm \ bool\ (\valid\<^sub>!\) where \valid\<^sub>! P p \ \M. \w \ \ M. P M \ M, w \\<^sub>! p\ theorem static_completeness: - assumes \static p\ \valid\<^sub>! P p\ \valid P (lower p) \ A o lift \ lower p\ + assumes \static p\ and \valid\<^sub>! P p\ + and \valid P (lower p) \ A o lift \ lower p\ shows \A \\<^sub>! p\ proof - have \valid P (lower p)\ using assms by (simp add: lower_semantics) then have \A o lift \ lower p\ using assms(3) by fast then have \A \\<^sub>! lift (lower p)\ using AK_PAK by fast then show ?thesis using assms(1) lift_lower by metis qed corollary static_completeness\<^sub>P\<^sub>K: assumes \static p\ \valid\<^sub>! (\_. True) p\ shows \A \\<^sub>! p\ using assms static_completeness[where P=\\_. True\] completeness\<^sub>K by metis section \Soundness\ lemma peval_semantics: \peval (val w) (\q. Kripke W val r, w \\<^sub>! q) p = (Kripke W val r, w \\<^sub>! p)\ by (induct p) simp_all lemma ptautology: assumes \ptautology p\ shows \M, w \\<^sub>! p\ proof - from assms have \peval (g w) (\q. Kripke W g r, w \\<^sub>! q) p\ for W g r by simp then have \Kripke W g r, w \\<^sub>! p\ for W g r using peval_semantics by fast then show \M, w \\<^sub>! p\ by (metis kripke.collapse) qed theorem soundness: - fixes M :: \('i, 'w) kripke\ assumes - \\(M :: ('i, 'w) kripke) p w. A p \ P M \ w \ \ M \ M, w \\<^sub>! p\ - \\(M :: ('i, 'w) kripke) p. P M \ P (restrict M p)\ + \\M p w. A p \ P M \ w \ \ M \ M, w \\<^sub>! p\ + \\M p. P M \ P (restrict M p)\ shows \A \\<^sub>! p \ P M \ w \ \ M \ M, w \\<^sub>! p\ proof (induct p arbitrary: M w rule: PAK.induct) case (PAnn p r) moreover have \P (restrict M r)\ using PAnn(3) assms(2) by simp ultimately show ?case by simp qed (simp_all add: assms ptautology) corollary \(\_. False) \\<^sub>! p \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where P=\\_. True\] by metis section \Completeness\ lemma ConE: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! q)\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! q\ shows \A \\<^sub>! p\ \A \\<^sub>! q\ using assms by (metis PA1 PR1 peval.simps(4-5))+ lemma Iff_Dis: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! p')\ \A \\<^sub>! (q \<^bold>\\<^sub>! q')\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! p'\ \A \\<^sub>! q \<^bold>\\<^sub>! q'\ shows \A \\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q'))\ proof - - have \A \\<^sub>! ((p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! q') \<^bold>\\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q')))\ + have \A \\<^sub>! (p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! q') \<^bold>\\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q'))\ by (simp add: PA1) then show ?thesis using assms PR1 by blast qed lemma Iff_Con: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! p')\ \A \\<^sub>! (q \<^bold>\\<^sub>! q')\ - shows \A \\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q'))\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! p'\ \A \\<^sub>! q \<^bold>\\<^sub>! q'\ + shows \A \\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q')\ proof - - have \A \\<^sub>! ((p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! q') \<^bold>\\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q')))\ + have \A \\<^sub>! (p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! q') \<^bold>\\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q'))\ by (simp add: PA1) then show ?thesis using assms PR1 by blast qed lemma Iff_Imp: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! p')\ \A \\<^sub>! (q \<^bold>\\<^sub>! q')\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! p'\ \A \\<^sub>! q \<^bold>\\<^sub>! q'\ shows \A \\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q'))\ proof - - have \A \\<^sub>! ((p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! q') \<^bold>\\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q')))\ + have \A \\<^sub>! (p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! q') \<^bold>\\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q'))\ by (simp add: PA1) then show ?thesis using assms PR1 by blast qed -lemma Iff_sym: \(A \\<^sub>! (p \<^bold>\\<^sub>! q)) = (A \\<^sub>! (q \<^bold>\\<^sub>! p))\ +lemma Iff_sym: \(A \\<^sub>! p \<^bold>\\<^sub>! q) = (A \\<^sub>! q \<^bold>\\<^sub>! p)\ proof - - have \A \\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! p))\ + have \A \\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (q \<^bold>\\<^sub>! p)\ by (simp add: PA1) then show ?thesis using PR1 ConE by blast qed lemma Iff_Iff: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! p')\ \A \\<^sub>! (p \<^bold>\\<^sub>! q)\ - shows \A \\<^sub>! (p' \<^bold>\\<^sub>! q)\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! p'\ \A \\<^sub>! p \<^bold>\\<^sub>! q\ + shows \A \\<^sub>! p' \<^bold>\\<^sub>! q\ proof - have \ptautology ((p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q))\ by (metis peval.simps(4-5)) - with PA1 have \A \\<^sub>! ((p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q))\ . + with PA1 have \A \\<^sub>! (p \<^bold>\\<^sub>! p') \<^bold>\\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! (p' \<^bold>\\<^sub>! q)\ . then show ?thesis using assms PR1 by blast qed -lemma K'_A2': \A \\<^sub>! (K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i q)\ +lemma K'_A2': \A \\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i q\ proof - - have \A \\<^sub>! (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i q)\ + have \A \\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i q\ using PA2 by fast - moreover have \A \\<^sub>! ((P \<^bold>\\<^sub>! Q \<^bold>\\<^sub>! R) \<^bold>\\<^sub>! (Q \<^bold>\\<^sub>! P \<^bold>\\<^sub>! R))\ for P Q R + moreover have \A \\<^sub>! (P \<^bold>\\<^sub>! Q \<^bold>\\<^sub>! R) \<^bold>\\<^sub>! (Q \<^bold>\\<^sub>! P \<^bold>\\<^sub>! R)\ for P Q R by (simp add: PA1) ultimately show ?thesis using PR1 by fast qed lemma K'_map: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! q)\ - shows \A \\<^sub>! (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i q)\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! q\ + shows \A \\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i q\ proof - - note \A \\<^sub>! (p \<^bold>\\<^sub>! q)\ + note \A \\<^sub>! p \<^bold>\\<^sub>! q\ then have \A \\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q)\ using PR2 by fast - moreover have \A \\<^sub>! (K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i q)\ + moreover have \A \\<^sub>! K\<^sub>! i (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i q\ using K'_A2' by fast ultimately show ?thesis using PR1 by fast qed lemma ConI: assumes \A \\<^sub>! p\ \A \\<^sub>! q\ - shows \A \\<^sub>! (p \<^bold>\\<^sub>! q)\ + shows \A \\<^sub>! p \<^bold>\\<^sub>! q\ proof - - have \A \\<^sub>! (p \<^bold>\\<^sub>! q \<^bold>\\<^sub>! p \<^bold>\\<^sub>! q)\ + have \A \\<^sub>! p \<^bold>\\<^sub>! q \<^bold>\\<^sub>! p \<^bold>\\<^sub>! q\ by (simp add: PA1) then show ?thesis using assms PR1 by blast qed lemma Iff_wk: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! q)\ - shows \A \\<^sub>! ((r \<^bold>\\<^sub>! p) \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! q))\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! q\ + shows \A \\<^sub>! (r \<^bold>\\<^sub>! p) \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! q)\ proof - - have \A \\<^sub>! ((p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! ((r \<^bold>\\<^sub>! p) \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! q)))\ + have \A \\<^sub>! (p \<^bold>\\<^sub>! q) \<^bold>\\<^sub>! ((r \<^bold>\\<^sub>! p) \<^bold>\\<^sub>! (r \<^bold>\\<^sub>! q))\ by (simp add: PA1) then show ?thesis using assms PR1 by blast qed lemma Iff_reduce': assumes \static p\ - shows \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! reduce' r p)\ + shows \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! reduce' r p\ using assms proof (induct p rule: pfm.induct) case FF then show ?case by (simp add: PFF) next case (Pro' x) then show ?case by (simp add: PPro) next case (Dis p q) - then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! reduce' r (p \<^bold>\\<^sub>! q))\ - using Iff_Dis by force - moreover have \A \\<^sub>! (([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q)))\ + then have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! reduce' r (p \<^bold>\\<^sub>! q)\ + using Iff_Dis by fastforce + moreover have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q))\ using PDis Iff_sym by fastforce ultimately show ?case using PA1 PR1 Iff_Iff by blast next case (Con p q) - then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! reduce' r (p \<^bold>\\<^sub>! q))\ - using Iff_Con by force - moreover have \A \\<^sub>! (([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q)))\ + then have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! reduce' r (p \<^bold>\\<^sub>! q)\ + using Iff_Con by fastforce + moreover have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q))\ using PCon Iff_sym by fastforce ultimately show ?case using PA1 PR1 Iff_Iff by blast next case (Imp p q) - then have \A \\<^sub>! (([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! reduce' r (p \<^bold>\\<^sub>! q))\ - using Iff_Imp by force - moreover have \A \\<^sub>! (([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q)))\ + then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! reduce' r (p \<^bold>\\<^sub>! q)\ + using Iff_Imp by fastforce + moreover have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r]\<^sub>! (p \<^bold>\\<^sub>! q))\ using PImp Iff_sym by fastforce ultimately show ?case using PA1 PR1 Iff_Iff by blast next case (K' i p) - then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! reduce' r p)\ + then have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! reduce' r p\ by simp - then have \A \\<^sub>! (K\<^sub>! i ([r]\<^sub>! p) \<^bold>\\<^sub>! K\<^sub>! i (reduce' r p))\ + then have \A \\<^sub>! K\<^sub>! i ([r]\<^sub>! p) \<^bold>\\<^sub>! K\<^sub>! i (reduce' r p)\ using K'_map ConE ConI by metis - moreover have \A \\<^sub>! ([r]\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! r \<^bold>\\<^sub>! K\<^sub>! i ([r]\<^sub>! p))\ + moreover have \A \\<^sub>! [r]\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! r \<^bold>\\<^sub>! K\<^sub>! i ([r]\<^sub>! p)\ using PK . - ultimately have \A \\<^sub>! ([r]\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! r \<^bold>\\<^sub>! K\<^sub>! i (reduce' r p))\ + ultimately have \A \\<^sub>! [r]\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! r \<^bold>\\<^sub>! K\<^sub>! i (reduce' r p)\ by (meson Iff_Iff Iff_sym Iff_wk) then show ?case by simp next case (Ann r p) then show ?case by simp qed lemma Iff_Ann1: - assumes r: \A \\<^sub>! (r \<^bold>\\<^sub>! r')\ and \static p\ - shows \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! p)\ + assumes r: \A \\<^sub>! r \<^bold>\\<^sub>! r'\ and \static p\ + shows \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! p\ using assms(2-) proof (induct p) case FF - have \A \\<^sub>! ((r \<^bold>\\<^sub>! r') \<^bold>\\<^sub>! ((r \<^bold>\\<^sub>! \<^bold>\\<^sub>!) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! \<^bold>\\<^sub>!)))\ + have \A \\<^sub>! (r \<^bold>\\<^sub>! r') \<^bold>\\<^sub>! ((r \<^bold>\\<^sub>! \<^bold>\\<^sub>!) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! \<^bold>\\<^sub>!))\ by (auto intro: PA1) - then have \A \\<^sub>! ((r \<^bold>\\<^sub>! \<^bold>\\<^sub>!) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! \<^bold>\\<^sub>!))\ + then have \A \\<^sub>! (r \<^bold>\\<^sub>! \<^bold>\\<^sub>!) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! \<^bold>\\<^sub>!)\ using r PR1 by blast then show ?case by (meson PFF Iff_Iff Iff_sym) next case (Pro' x) - have \A \\<^sub>! ((r \<^bold>\\<^sub>! r') \<^bold>\\<^sub>! ((r \<^bold>\\<^sub>! Pro\<^sub>! x) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! Pro\<^sub>! x)))\ + have \A \\<^sub>! (r \<^bold>\\<^sub>! r') \<^bold>\\<^sub>! ((r \<^bold>\\<^sub>! Pro\<^sub>! x) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! Pro\<^sub>! x))\ by (auto intro: PA1) - then have \A \\<^sub>! ((r \<^bold>\\<^sub>! Pro\<^sub>! x) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! Pro\<^sub>! x))\ + then have \A \\<^sub>! (r \<^bold>\\<^sub>! Pro\<^sub>! x) \<^bold>\\<^sub>! (r' \<^bold>\\<^sub>! Pro\<^sub>! x)\ using r PR1 by blast then show ?case by (meson PPro Iff_Iff Iff_sym) next case (Dis p q) - then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! [r']\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! q)\ + then have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! [r']\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! q\ by (simp add: Iff_Dis) then show ?case by (meson PDis Iff_Iff Iff_sym) next case (Con p q) - then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! [r']\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! q)\ + then have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q \<^bold>\\<^sub>! [r']\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! q\ by (simp add: Iff_Con) then show ?case by (meson PCon Iff_Iff Iff_sym) next case (Imp p q) - then have \A \\<^sub>! (([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r']\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! q))\ + then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! q) \<^bold>\\<^sub>! ([r']\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! q)\ by (simp add: Iff_Imp) then show ?case by (meson PImp Iff_Iff Iff_sym) next case (K' i p) - then have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! p)\ + then have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r']\<^sub>! p\ by simp - then have \A \\<^sub>! (K\<^sub>! i ([r]\<^sub>! p) \<^bold>\\<^sub>! K\<^sub>! i ([r']\<^sub>! p))\ + then have \A \\<^sub>! K\<^sub>! i ([r]\<^sub>! p) \<^bold>\\<^sub>! K\<^sub>! i ([r']\<^sub>! p)\ using K'_map ConE ConI by metis then show ?case by (meson Iff_Iff Iff_Imp Iff_sym PK r) next case (Ann s p) then show ?case by simp qed lemma Iff_Ann2: - assumes \A \\<^sub>! (p \<^bold>\\<^sub>! p')\ - shows \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! p')\ + assumes \A \\<^sub>! p \<^bold>\\<^sub>! p'\ + shows \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! [r]\<^sub>! p'\ using assms PAnn ConE ConI PImp PR1 by metis -lemma Iff_reduce: \A \\<^sub>! (p \<^bold>\\<^sub>! reduce p)\ +lemma Iff_reduce: \A \\<^sub>! p \<^bold>\\<^sub>! reduce p\ proof (induct p) case (Dis p q) then show ?case by (simp add: Iff_Dis) next case (Con p q) then show ?case by (simp add: Iff_Con) next case (Imp p q) then show ?case by (simp add: Iff_Imp) next case (K' i p) have - \A \\<^sub>! (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (reduce p))\ - \A \\<^sub>! (K\<^sub>! i (reduce p) \<^bold>\\<^sub>! K\<^sub>! i p)\ + \A \\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (reduce p)\ + \A \\<^sub>! K\<^sub>! i (reduce p) \<^bold>\\<^sub>! K\<^sub>! i p\ using K' K'_map ConE by fast+ - then have \A \\<^sub>! (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (reduce p))\ + then have \A \\<^sub>! K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (reduce p)\ using ConI by blast then show ?case by simp next case (Ann r p) - have \A \\<^sub>! ([reduce r]\<^sub>! reduce p \<^bold>\\<^sub>! reduce' (reduce r) (reduce p))\ + have \A \\<^sub>! [reduce r]\<^sub>! reduce p \<^bold>\\<^sub>! reduce' (reduce r) (reduce p)\ using Iff_reduce' static_reduce by blast - moreover have \A \\<^sub>! ([r]\<^sub>! reduce p \<^bold>\\<^sub>! [reduce r]\<^sub>! reduce p)\ + moreover have \A \\<^sub>! [r]\<^sub>! reduce p \<^bold>\\<^sub>! [reduce r]\<^sub>! reduce p\ using Ann(1) Iff_Ann1 static_reduce by blast - ultimately have \A \\<^sub>! ([r]\<^sub>! reduce p \<^bold>\\<^sub>! reduce' (reduce r) (reduce p))\ + ultimately have \A \\<^sub>! [r]\<^sub>! reduce p \<^bold>\\<^sub>! reduce' (reduce r) (reduce p)\ using Iff_Iff Iff_sym by blast - moreover have \A \\<^sub>! ([r]\<^sub>! reduce p \<^bold>\\<^sub>! [r]\<^sub>! p)\ + moreover have \A \\<^sub>! [r]\<^sub>! reduce p \<^bold>\\<^sub>! [r]\<^sub>! p\ by (meson Ann(2) static_reduce Iff_Ann2 Iff_sym) - ultimately have \A \\<^sub>! ([r]\<^sub>! p \<^bold>\\<^sub>! reduce' (reduce r) (reduce p))\ + ultimately have \A \\<^sub>! [r]\<^sub>! p \<^bold>\\<^sub>! reduce' (reduce r) (reduce p)\ using Iff_Iff by blast then show ?case by simp qed (simp_all add: PA1) theorem completeness\<^sub>P: - assumes \valid\<^sub>! P p\ \valid P (lower (reduce p)) \ A o lift \ lower (reduce p)\ + assumes \valid\<^sub>! P p\ and \valid P (lower (reduce p)) \ A o lift \ lower (reduce p)\ shows \A \\<^sub>! p\ proof - have \valid\<^sub>! P (reduce p)\ using assms(1) reduce_semantics by fast moreover have \static (reduce p)\ using static_reduce by fast ultimately have \A \\<^sub>! reduce p\ using static_completeness assms(2) by blast moreover have \A \\<^sub>! (p \<^bold>\\<^sub>! reduce p)\ using Iff_reduce by blast ultimately show ?thesis using ConE(2) PR1 by blast qed corollary completeness\<^sub>P\<^sub>K: assumes \valid\<^sub>! (\_. True) p\ shows \A \\<^sub>! p\ using assms completeness\<^sub>P[where P=\\_. True\] completeness\<^sub>K by metis -section \System PK\ +section \System PAL + K\ -abbreviation SystemPK :: \'i pfm \ bool\ ("\\<^sub>!\<^sub>K _" [50] 50) where +abbreviation SystemPK :: \'i pfm \ bool\ (\\\<^sub>!\<^sub>K _\ [20] 20) where \\\<^sub>!\<^sub>K p \ (\_. False) \\<^sub>! p\ lemma soundness\<^sub>P\<^sub>K: \\\<^sub>!\<^sub>K p \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where P=\\_. True\] by metis abbreviation validPK (\valid\<^sub>!\<^sub>K\) where \valid\<^sub>!\<^sub>K \ valid\<^sub>! (\_. True)\ corollary assumes \valid\<^sub>!\<^sub>K p\ shows \\\<^sub>!\<^sub>K p\ using completeness\<^sub>P\<^sub>K assms . -theorem main\<^sub>P\<^sub>K: \valid\<^sub>!\<^sub>K p \ \\<^sub>!\<^sub>K p\ +theorem main\<^sub>P\<^sub>K: \valid\<^sub>!\<^sub>K p = (\\<^sub>!\<^sub>K p)\ using soundness\<^sub>P\<^sub>K completeness\<^sub>P\<^sub>K by fast corollary assumes \valid\<^sub>!\<^sub>K p\ and \w \ \ M\ shows \M, w \\<^sub>! p\ using assms soundness\<^sub>P\<^sub>K completeness\<^sub>P\<^sub>K by metis -section \System PT\ +section \System PAL + T\ -text \Also known as System M\ +text \Also known as System PAL + M\ inductive AxPT :: \'i pfm \ bool\ where \AxPT (K\<^sub>! i p \<^bold>\\<^sub>! p)\ -abbreviation SystemPT :: \'i pfm \ bool\ ("\\<^sub>!\<^sub>T _" [50] 50) where +abbreviation SystemPT :: \'i pfm \ bool\ (\\\<^sub>!\<^sub>T _\ [20] 20) where \\\<^sub>!\<^sub>T p \ AxPT \\<^sub>! p\ lemma soundness_AxPT: \AxPT p \ reflexive M \ w \ \ M \ M, w \\<^sub>! p\ unfolding reflexive_def by (induct p rule: AxPT.induct) simp lemma reflexive_restrict: \reflexive M \ reflexive (restrict M p)\ unfolding reflexive_def by simp lemma soundness\<^sub>P\<^sub>T: \\\<^sub>!\<^sub>T p \ reflexive M \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where A=AxPT and P=reflexive] soundness_AxPT reflexive_restrict by fastforce lemma AxT_AxPT: \AxT = AxPT o lift\ unfolding comp_apply using lower_lift by (metis AxPT.simps AxT.simps lift.simps(5-6) lower.simps(5-6)) abbreviation validPT (\valid\<^sub>!\<^sub>T\) where \valid\<^sub>!\<^sub>T \ valid\<^sub>! reflexive\ lemma completeness\<^sub>P\<^sub>T: assumes \valid\<^sub>!\<^sub>T p\ shows \\\<^sub>!\<^sub>T p\ using assms completeness\<^sub>P[where p=p] completeness\<^sub>T AxT_AxPT by metis -theorem main\<^sub>P\<^sub>T: \valid\<^sub>!\<^sub>T p \ \\<^sub>!\<^sub>T p\ +theorem main\<^sub>P\<^sub>T: \valid\<^sub>!\<^sub>T p \ (\\<^sub>!\<^sub>T p)\ using soundness\<^sub>P\<^sub>T completeness\<^sub>P\<^sub>T by fast corollary assumes \reflexive M\ \w \ \ M\ shows \valid\<^sub>!\<^sub>T p \ M, w \\<^sub>! p\ using assms soundness\<^sub>P\<^sub>T completeness\<^sub>P\<^sub>T by fast section \System PKB\ inductive AxPB :: \'i pfm \ bool\ where \AxPB (p \<^bold>\\<^sub>! K\<^sub>! i (L\<^sub>! i p))\ -abbreviation SystemPKB :: \'i pfm \ bool\ ("\\<^sub>!\<^sub>K\<^sub>B _" [50] 50) where +abbreviation SystemPKB :: \'i pfm \ bool\ (\\\<^sub>!\<^sub>K\<^sub>B _\ [20] 20) where \\\<^sub>!\<^sub>K\<^sub>B p \ AxPB \\<^sub>! p\ lemma soundness_AxPB: \AxPB p \ symmetric M \ w \ \ M \ M, w \\<^sub>! p\ unfolding symmetric_def by (induct p rule: AxPB.induct) auto lemma symmetric_restrict: \symmetric M \ symmetric (restrict M p)\ unfolding symmetric_def by simp lemma soundness\<^sub>P\<^sub>K\<^sub>B: \\\<^sub>!\<^sub>K\<^sub>B p \ symmetric M \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where A=AxPB and P=symmetric] soundness_AxPB symmetric_restrict by fastforce lemma AxB_AxPB: \AxB = AxPB o lift\ proof fix p :: \'i fm\ show \AxB p = (AxPB \ lift) p\ unfolding comp_apply using lower_lift by (smt (verit, best) AxB.simps AxPB.simps lift.simps(1, 5-6) lower.simps(5-6)) qed abbreviation validPKB (\valid\<^sub>!\<^sub>K\<^sub>B\) where \valid\<^sub>!\<^sub>K\<^sub>B \ valid\<^sub>! symmetric\ lemma completeness\<^sub>P\<^sub>K\<^sub>B: assumes \valid\<^sub>!\<^sub>K\<^sub>B p\ shows \\\<^sub>!\<^sub>K\<^sub>B p\ using assms completeness\<^sub>P[where p=p] completeness\<^sub>K\<^sub>B AxB_AxPB by metis -theorem main\<^sub>P\<^sub>K\<^sub>B: \valid\<^sub>!\<^sub>K\<^sub>B p \ \\<^sub>!\<^sub>K\<^sub>B p\ +theorem main\<^sub>P\<^sub>K\<^sub>B: \valid\<^sub>!\<^sub>K\<^sub>B p \ (\\<^sub>!\<^sub>K\<^sub>B p)\ using soundness\<^sub>P\<^sub>K\<^sub>B completeness\<^sub>P\<^sub>K\<^sub>B by fast corollary assumes \symmetric M\ \w \ \ M\ shows \valid\<^sub>!\<^sub>K\<^sub>B p \ M, w \\<^sub>! p\ using assms soundness\<^sub>P\<^sub>K\<^sub>B completeness\<^sub>P\<^sub>K\<^sub>B by fast section \System PK4\ inductive AxP4 :: \'i pfm \ bool\ where \AxP4 (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (K\<^sub>! i p))\ -abbreviation SystemPK4 :: \'i pfm \ bool\ ("\\<^sub>!\<^sub>K\<^sub>4 _" [50] 50) where +abbreviation SystemPK4 :: \'i pfm \ bool\ (\\\<^sub>!\<^sub>K\<^sub>4 _\ [20] 20) where \\\<^sub>!\<^sub>K\<^sub>4 p \ AxP4 \\<^sub>! p\ lemma pos_introspection: assumes \transitive M\ \w \ \ M\ shows \M, w \\<^sub>! (K\<^sub>! i p \<^bold>\\<^sub>! K\<^sub>! i (K\<^sub>! i p))\ proof - { assume \M, w \\<^sub>! K\<^sub>! i p\ then have \\v \ \ M \ \ M i w. M, v \\<^sub>! p\ by simp then have \\v \ \ M \ \ M i w. \u \ \ M \ \ M i v. M, u \\<^sub>! p\ using \transitive M\ \w \ \ M\ unfolding transitive_def by blast then have \\v \ \ M \ \ M i w. M, v \\<^sub>! K\<^sub>! i p\ by simp then have \M, w \\<^sub>! K\<^sub>! i (K\<^sub>! i p)\ by simp } then show ?thesis by fastforce qed lemma soundness_AxP4: \AxP4 p \ transitive M \ w \ \ M \ M, w \\<^sub>! p\ by (induct p rule: AxP4.induct) (metis pos_introspection) lemma transitive_restrict: \transitive M \ transitive (restrict M p)\ unfolding transitive_def by (metis (no_types, lifting) kripke.exhaust_sel kripke.inject mem_Collect_eq restrict.elims) lemma soundness\<^sub>P\<^sub>K\<^sub>4: \\\<^sub>!\<^sub>K\<^sub>4 p \ transitive M \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where A=AxP4 and P=transitive] soundness_AxP4 transitive_restrict by fastforce lemma Ax4_AxP4: \Ax4 = AxP4 o lift\ proof fix p :: \'i fm\ show \Ax4 p = (AxP4 \ lift) p\ unfolding comp_apply using lower_lift by (smt (verit, best) Ax4.simps AxP4.simps lift.simps(1, 5-6) lower.simps(5-6)) qed abbreviation validPK4 (\valid\<^sub>!\<^sub>K\<^sub>4\) where \valid\<^sub>!\<^sub>K\<^sub>4 \ valid\<^sub>! transitive\ lemma completeness\<^sub>P\<^sub>K\<^sub>4: assumes \valid\<^sub>!\<^sub>K\<^sub>4 p\ shows \\\<^sub>!\<^sub>K\<^sub>4 p\ using assms completeness\<^sub>P[where p=p] completeness\<^sub>K\<^sub>4 Ax4_AxP4 by metis -theorem main\<^sub>P\<^sub>K\<^sub>4: \valid\<^sub>!\<^sub>K\<^sub>4 p \ \\<^sub>!\<^sub>K\<^sub>4 p\ +theorem main\<^sub>P\<^sub>K\<^sub>4: \valid\<^sub>!\<^sub>K\<^sub>4 p \ (\\<^sub>!\<^sub>K\<^sub>4 p)\ using soundness\<^sub>P\<^sub>K\<^sub>4 completeness\<^sub>P\<^sub>K\<^sub>4 by fast corollary assumes \transitive M\ \w \ \ M\ shows \valid\<^sub>!\<^sub>K\<^sub>4 p \ M, w \\<^sub>! p\ using assms soundness\<^sub>P\<^sub>K\<^sub>4 completeness\<^sub>P\<^sub>K\<^sub>4 by fast section \System PS4\ -abbreviation SystemPS4 :: \'i pfm \ bool\ ("\\<^sub>!\<^sub>S\<^sub>4 _" [50] 50) where +abbreviation SystemPS4 :: \'i pfm \ bool\ (\\\<^sub>!\<^sub>S\<^sub>4 _\ [20] 20) where \\\<^sub>!\<^sub>S\<^sub>4 p \ AxPT \ AxP4 \\<^sub>! p\ lemma soundness_AxPT4: \(AxPT \ AxP4) p \ refltrans M \ w \ \ M \ M, w \\<^sub>! p\ using soundness_AxPT soundness_AxP4 by fast lemma refltrans_restrict: \refltrans M \ refltrans (restrict M p)\ using reflexive_restrict transitive_restrict by blast lemma soundness\<^sub>P\<^sub>S\<^sub>4: \\\<^sub>!\<^sub>S\<^sub>4 p \ reflexive M \ transitive M \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where A=\AxPT \ AxP4\ and P=refltrans] soundness_AxPT4 refltrans_restrict by fastforce lemma AxT4_AxPT4: \(AxT \ Ax4) = (AxPT \ AxP4) o lift\ using AxT_AxPT Ax4_AxP4 unfolding comp_apply by metis abbreviation validPS4 (\valid\<^sub>!\<^sub>S\<^sub>4\) where \valid\<^sub>!\<^sub>S\<^sub>4 \ valid\<^sub>! refltrans\ lemma completeness\<^sub>P\<^sub>S\<^sub>4: assumes \valid\<^sub>!\<^sub>S\<^sub>4 p\ shows \\\<^sub>!\<^sub>S\<^sub>4 p\ using assms completeness\<^sub>P[where P=refltrans and p=p] completeness\<^sub>S\<^sub>4 AxT4_AxPT4 by (metis (mono_tags, lifting)) -theorem main\<^sub>P\<^sub>S\<^sub>4: \valid\<^sub>!\<^sub>S\<^sub>4 p \ \\<^sub>!\<^sub>S\<^sub>4 p\ +theorem main\<^sub>P\<^sub>S\<^sub>4: \valid\<^sub>!\<^sub>S\<^sub>4 p \ (\\<^sub>!\<^sub>S\<^sub>4 p)\ using soundness\<^sub>P\<^sub>S\<^sub>4 completeness\<^sub>P\<^sub>S\<^sub>4 by fast corollary assumes \reflexive M\ \transitive M\ \w \ \ M\ shows \valid\<^sub>!\<^sub>S\<^sub>4 p \ M, w \\<^sub>! p\ using assms soundness\<^sub>P\<^sub>S\<^sub>4 completeness\<^sub>P\<^sub>S\<^sub>4 by fast section \System PS5\ -abbreviation SystemPS5 :: \'i pfm \ bool\ ("\\<^sub>!\<^sub>S\<^sub>5 _" [50] 50) where +abbreviation SystemPS5 :: \'i pfm \ bool\ (\\\<^sub>!\<^sub>S\<^sub>5 _\ [20] 20) where \\\<^sub>!\<^sub>S\<^sub>5 p \ AxPT \ AxPB \ AxP4 \\<^sub>! p\ abbreviation AxPTB4 :: \'i pfm \ bool\ where \AxPTB4 \ AxPT \ AxPB \ AxP4\ lemma soundness_AxPTB4: \AxPTB4 p \ equivalence M \ w \ \ M \ M, w \\<^sub>! p\ using soundness_AxPT soundness_AxPB soundness_AxP4 by fast lemma equivalence_restrict: \equivalence M \ equivalence (restrict M p)\ using reflexive_restrict symmetric_restrict transitive_restrict by blast lemma soundness\<^sub>P\<^sub>S\<^sub>5: \\\<^sub>!\<^sub>S\<^sub>5 p \ equivalence M \ w \ \ M \ M, w \\<^sub>! p\ using soundness[where A=AxPTB4 and P=equivalence and M=M and w=w] soundness_AxPTB4 equivalence_restrict by fast lemma AxTB4_AxPTB4: \AxTB4 = AxPTB4 o lift\ using AxT_AxPT AxB_AxPB Ax4_AxP4 unfolding comp_apply by metis abbreviation validPS5 (\valid\<^sub>!\<^sub>S\<^sub>5\) where \valid\<^sub>!\<^sub>S\<^sub>5 \ valid\<^sub>! equivalence\ lemma completeness\<^sub>P\<^sub>S\<^sub>5: assumes \valid\<^sub>!\<^sub>S\<^sub>5 p\ shows \\\<^sub>!\<^sub>S\<^sub>5 p\ using assms completeness\<^sub>P[where P=equivalence and p=p] completeness\<^sub>S\<^sub>5 AxTB4_AxPTB4 by (metis (mono_tags, lifting)) -theorem main\<^sub>P\<^sub>S\<^sub>5: \valid\<^sub>!\<^sub>S\<^sub>5 p \ \\<^sub>!\<^sub>S\<^sub>5 p\ +theorem main\<^sub>P\<^sub>S\<^sub>5: \valid\<^sub>!\<^sub>S\<^sub>5 p \ (\\<^sub>!\<^sub>S\<^sub>5 p)\ using soundness\<^sub>P\<^sub>S\<^sub>5 completeness\<^sub>P\<^sub>S\<^sub>5 by fast corollary assumes \reflexive M\ \symmetric M\ \transitive M\ \w \ \ M\ shows \valid\<^sub>!\<^sub>S\<^sub>5 p \ M, w \\<^sub>! p\ using assms soundness\<^sub>P\<^sub>S\<^sub>5 completeness\<^sub>P\<^sub>S\<^sub>5 by fast end