Semantics (Section 2.2) #
Models and Truth #
The syntactic measure used to define formula evaluation and program relations mutually.
Equations
- PDL.complexityOfQuery (PSum.inl val) = PDL.lengthOfFormula val.snd.snd
- PDL.complexityOfQuery (PSum.inr val) = PDL.lengthOfProgram val.snd.fst
Instances For
Truth of a PDL formula at a world in a Kripke model.
Equations
- PDL.evaluate x✝¹ x✝ PDL.Formula.bottom = False
- PDL.evaluate x✝¹ x✝ (PDL.Formula.atom_prop c) = x✝¹.val x✝ c
- PDL.evaluate x✝¹ x✝ φ.neg = ¬PDL.evaluate x✝¹ x✝ φ
- PDL.evaluate x✝¹ x✝ (φ.and ψ) = (PDL.evaluate x✝¹ x✝ φ ∧ PDL.evaluate x✝¹ x✝ ψ)
- PDL.evaluate x✝¹ x✝ (PDL.Formula.box α φ) = ∀ (v : W), PDL.relate x✝¹ α x✝ v → PDL.evaluate x✝¹ v φ
Instances For
The binary relation denoted by a PDL program in a Kripke model.
Equations
- PDL.relate x✝² (PDL.Program.atom_prog c) x✝¹ x✝ = x✝².Rel c x✝¹ x✝
- PDL.relate x✝² (α.sequence β) x✝¹ x✝ = ∃ (y : W), PDL.relate x✝² α x✝¹ y ∧ PDL.relate x✝² β y x✝
- PDL.relate x✝² (α.union β) x✝¹ x✝ = (PDL.relate x✝² α x✝¹ x✝ ∨ PDL.relate x✝² β x✝¹ x✝)
- PDL.relate x✝² α.star x✝¹ x✝ = Relation.ReflTransGen (PDL.relate x✝² α) x✝¹ x✝
- PDL.relate x✝² (PDL.Program.test φ) x✝¹ x✝ = (x✝¹ = x✝ ∧ PDL.evaluate x✝² x✝¹ φ)
Instances For
Evaluate a formula at a pointed Kripke model.
Equations
- PDL.evaluatePoint (M, w) x✝ = PDL.evaluate M w x✝
Instances For
Validity of a formula at every world of every Kripke model.
Equations
- PDL.tautology φ = ∀ (W : Type) (M : PDL.KripkeModel W) (w : W), PDL.evaluate M w φ
Instances For
Falsity of a formula at every world of every Kripke model.
Equations
- PDL.contradiction φ = ∀ (W : Type) (M : PDL.KripkeModel W) (w : W), ¬PDL.evaluate M w φ
Instances For
Satisfiability #
Types equipped with a notion of semantic satisfiability.
- satisfiable : α → Prop
Existence of a semantic model for an object.
Instances
Equations
- PDL.formHasSat = { satisfiable := fun (ϕ : PDL.Formula) => ∃ (W : Type) (M : PDL.KripkeModel W) (w : W), PDL.evaluate M w ϕ }
Equations
- PDL.setHasSat = { satisfiable := fun (X : Finset PDL.Formula) => ∃ (W : Type) (M : PDL.KripkeModel W) (w : W), ∀ φ ∈ X, PDL.evaluate M w φ }
Equations
- PDL.listHasSat = { satisfiable := fun (X : List PDL.Formula) => ∃ (W : Type) (M : PDL.KripkeModel W) (w : W), ∀ φ ∈ X, PDL.evaluate M w φ }
Semantic implication and vDash notation #
Semantic consequence between finite sets of formulas.
Equations
- PDL.semImpliesSets X Y = ∀ (W : Type) (M : PDL.KripkeModel W) (w : W), (∀ φ ∈ X, PDL.evaluate M w φ) → ∀ ψ ∈ Y, PDL.evaluate M w ψ
Instances For
Semantic consequence between lists of formulas.
Equations
- PDL.semImpliesLists X Y = ∀ (W : Type) (M : PDL.KripkeModel W) (w : W), (∀ φ ∈ X, PDL.evaluate M w φ) → ∀ ψ ∈ Y, PDL.evaluate M w ψ
Instances For
Agreement of two formulas at every pointed Kripke model.
Equations
- PDL.semEquiv φ ψ = ∀ (W : Type) (M : PDL.KripkeModel W) (w : W), PDL.evaluate M w φ ↔ PDL.evaluate M w ψ
Instances For
Agreement of two program relations in every Kripke model.
Equations
- PDL.relEquiv α β = ∀ (W : Type) (M : PDL.KripkeModel W) (v w : W), PDL.relate M α v w ↔ PDL.relate M β v w
Instances For
Equations
- PDL.modelCanSemImplyForm = { SemImplies := PDL.evaluatePoint }
Equations
- PDL.modelCanSemImplyList = { SemImplies := fun (x : PDL.KripkeModel W × W) (fs : List PDL.Formula) => match x with | (M, w) => ∀ f ∈ fs, PDL.evaluate M w f }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- PDL.setCanSemImplySet = { SemImplies := PDL.semImpliesLists }
Equations
- PDL.setCanSemImplyForm = { SemImplies := fun (X : List PDL.Formula) (ψ : PDL.Formula) => PDL.semImpliesLists X [ψ] }
Equations
- PDL.formCanSemImplySet = { SemImplies := fun (φ : PDL.Formula) (X : List PDL.Formula) => PDL.semImpliesLists [φ] X }
Equations
- PDL.formCanSemImplyForm = { SemImplies := fun (φ ψ : PDL.Formula) => PDL.semImpliesLists [φ] [ψ] }
Semantic satisfaction or consequence.
Equations
- PDL.«term_⊨_» = Lean.ParserDescr.trailingNode `PDL.«term_⊨_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊨ ") (Lean.ParserDescr.cat `term 41))
Instances For
Semantic equivalence of formulas.
Equations
- PDL.«term_≡_» = Lean.ParserDescr.trailingNode `PDL.«term_≡_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ ") (Lean.ParserDescr.cat `term 41))
Instances For
Semantic equivalence of program relations.
Equations
- PDL.«term_≡ᵣ_» = Lean.ParserDescr.trailingNode `PDL.«term_≡ᵣ_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ᵣ ") (Lean.ParserDescr.cat `term 41))
Instances For
Failure of semantic satisfaction or consequence.
Equations
- PDL.«term_⊭_» = Lean.ParserDescr.trailingNode `PDL.«term_⊭_» 40 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊭ ") (Lean.ParserDescr.cat `term 41))
Instances For
The Local Deduction Theorem.
Relational composition of a list of programs, with equality for the empty list.
Equations
- PDL.relateSeq M [] w v = (w = v)
- PDL.relateSeq M (α :: as) w v = ∃ (u : W), PDL.relate M α w u ∧ PDL.relateSeq M as u v
Instances For
Relating along Program.unions L means relating along one of the programs in L.
Semantic induction rule for the Kleene star operator.