Documentation

LeanPool.PDL.Semantics

Semantics (Section 2.2) #

Models and Truth #

structure PDL.KripkeModel (W : Type) :

Kripke Models, also known as Labelled Transition Systems

  • val : W → ℕ → Prop

    The truth assignment for atomic propositions at each world.

  • Rel : ℕ → W → W → Prop

    The accessibility relation for each atomic program.

Instances For
    def PDL.complexityOfQuery {W : Type} :
    (_ : KripkeModel W) ×' (_ : W) ×' Formula ⊕' (_ : KripkeModel W) ×' (_ : Program) ×' (_ : W) ×' W → ℕ

    The syntactic measure used to define formula evaluation and program relations mutually.

    Equations
    Instances For
      def PDL.evaluate {W : Type} :
      KripkeModel W → W → Formula → Prop

      Truth of a PDL formula at a world in a Kripke model.

      Equations
      Instances For
        def PDL.relate {W : Type} :
        KripkeModel W → Program → W → W → Prop

        The binary relation denoted by a PDL program in a Kripke model.

        Equations
        Instances For
          theorem PDL.evalDis {W : Type} {M : KripkeModel W} {f g : Formula} {w : W} :
          evaluate M w (f.or g) ↔ evaluate M w f ∨ evaluate M w g

          Evaluate a formula at a pointed Kripke model.

          Equations
          Instances For

            Validity of a formula at every world of every Kripke model.

            Equations
            Instances For

              Falsity of a formula at every world of every Kripke model.

              Equations
              Instances For

                Satisfiability #

                class PDL.HasSat (α : Type) :

                Types equipped with a notion of semantic satisfiability.

                • satisfiable : α → Prop

                  Existence of a semantic model for an object.

                Instances
                  @[instance_reducible]
                  Equations
                  @[instance_reducible]
                  Equations
                  @[instance_reducible]
                  Equations

                  Satisfiability of a list only depends on which formulas are in it.

                  Semantic implication and vDash notation #

                  Semantic consequence between finite sets of formulas.

                  Equations
                  Instances For

                    Semantic consequence between lists of formulas.

                    Equations
                    Instances For
                      def PDL.semEquiv (φ ψ : Formula) :

                      Agreement of two formulas at every pointed Kripke model.

                      Equations
                      Instances For
                        def PDL.relEquiv (α β : Program) :

                        Agreement of two program relations in every Kripke model.

                        Equations
                        Instances For
                          theorem PDL.subsetSat {W : Type} {M : KripkeModel W} {w : W} {X Y : List Formula} :
                          (∀ φ ∈ X, evaluate M w φ) → Y ⊆ X → ∀ φ ∈ Y, evaluate M w φ
                          class PDL.vDash (α β : Type) :

                          An overloaded semantic satisfaction or consequence relation.

                          • SemImplies : α → β → Prop

                            The semantic relation for the two specified types.

                          Instances
                            @[instance_reducible]
                            Equations
                            @[instance_reducible]
                            Equations
                            @[instance_reducible]
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[instance_reducible]
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[instance_reducible]
                            Equations
                            @[instance_reducible]
                            Equations
                            @[instance_reducible]
                            Equations
                            @[instance_reducible]
                            Equations

                            Semantic satisfaction or consequence.

                            Equations
                            Instances For

                              Semantic equivalence of formulas.

                              Equations
                              Instances For

                                Semantic equivalence of program relations.

                                Equations
                                Instances For

                                  Failure of semantic satisfaction or consequence.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem PDL.deduction (X : List Formula) (ψ φ : Formula) :

                                    The Local Deduction Theorem.

                                    theorem PDL.equivSat {W : Type} (φ ψ : Formula) {M : KripkeModel W} {w : W} :
                                    theorem PDL.equiv_iff (φ ψ : Formula) (φ_eq_ψ : semEquiv φ ψ) {W : Type} {M : KripkeModel W} {w : W} :
                                    theorem PDL.relate_steps_append {W✝ : Type} {M : KripkeModel W✝} {as bs : List Program} (x z : W✝) :
                                    relate M (Program.steps (as ++ bs)) x z ↔ ∃ (y : W✝), relate M (Program.steps as) x y ∧ relate M (Program.steps bs) y z
                                    theorem PDL.rel_steps_last {W✝ : Type} {M : KripkeModel W✝} {a : Program} {as : List Program} (v w : W✝) :
                                    relate M (Program.steps (as ++ [a])) v w ↔ ∃ (mid : W✝), relate M (Program.steps as) v mid ∧ relate M a mid w
                                    def PDL.relateSeq {W : Type} (M : KripkeModel W) (δ : List Program) (w v : W) :

                                    Relational composition of a list of programs, with equality for the empty list.

                                    Equations
                                    Instances For
                                      @[simp]
                                      theorem PDL.relateSeq_nil {W : Type} {M : KripkeModel W} {w v : W} :
                                      relateSeq M [] w v ↔ w = v
                                      @[simp]
                                      theorem PDL.relateSeq_singleton {W : Type} {M : KripkeModel W} {α : Program} {w v : W} :
                                      relateSeq M [α] w v ↔ relate M α w v
                                      theorem PDL.relateSeq_cons {W : Type} {M : KripkeModel W} {d : Program} {δ : List Program} {w v : W} :
                                      relateSeq M (d :: δ) w v ↔ ∃ (u : W), relate M d w u ∧ relateSeq M δ u v
                                      theorem PDL.relateSeq_append {W : Type} {M : KripkeModel W} {l1 l2 : List Program} {w v : W} :
                                      relateSeq M (l1 ++ l2) w v ↔ ∃ (u : W), relateSeq M l1 w u ∧ relateSeq M l2 u v
                                      theorem PDL.relate_steps_iff_relateSeq {W : Type} (M : KripkeModel W) (δ : List Program) (w v : W) :
                                      relate M (Program.steps δ) w v ↔ relateSeq M δ w v
                                      theorem PDL.relateSeq_iff_exists_Vector {W : Type} (M : KripkeModel W) (δ : List Program) (w v : W) :
                                      relateSeq M δ w v ↔ ∃ (ws : List.Vector W δ.length.succ), w = ws.head ∧ v = ws.last ∧ ∀ (i : Fin δ.length), relate M (δ.get i) (ws.get i.castSucc) (ws.get i.succ)
                                      theorem PDL.relate_unions {W : Type} {M : KripkeModel W} (L : List Program) (v u : W) :
                                      relate M (Program.unions L) v u ↔ ∃ a ∈ L, relate M a v u

                                      Relating along Program.unions L means relating along one of the programs in L.

                                      theorem PDL.evalBoxes {W✝ : Type} {M : KripkeModel W✝} {w : W✝} (δ : List Program) (φ : Formula) :
                                      evaluate M w (Formula.boxes δ φ) ↔ ∀ (v : W✝), relateSeq M δ w v → evaluate M v φ
                                      @[simp]
                                      theorem PDL.evaluate_unload_box {W✝ : Type} {M : KripkeModel W✝} {w : W✝} {α : Program} {af : AnyFormula} :
                                      evaluate M w (LoadFormula.box α af).unload ↔ ∀ (v : W✝), relate M α w v → vDash.SemImplies (M, v) af
                                      theorem PDL.stepToStar {φ : Formula} {α : Program} {ψ : Formula} :

                                      Semantic induction rule for the Kleene star operator.