Documentation

Pdl.Substitution

Substitution and Helper Lemmas #

The lemmas here are mostly from Sections 2.1 and 2.2.

Single-step replacing #

def repl_in_F (x : ) (ψ : Formula) :

Replace atomic proposition x by ψ in a formula.

Equations
Instances For
    def repl_in_P (x : ) (ψ : Formula) :

    Replace atomic proposition x by ψ in a program.

    Equations
    Instances For
      theorem repl_in_Con {x : } {ψ : Formula} {l : List Formula} :
      repl_in_F x ψ (Con l) = Con (List.map (repl_in_F x ψ) l)
      @[simp]
      theorem repl_in_or {x : } {ψ φ1 φ2 : Formula} :
      repl_in_F x ψ (φ1φ2) = repl_in_F x ψ φ1repl_in_F x ψ φ2
      theorem repl_in_dis {x : } {ψ : Formula} {l : List Formula} :
      repl_in_F x ψ (dis l) = dis (List.map (repl_in_F x ψ) l)
      theorem repl_in_F_non_occ_eq {x : } {φ ρ : Formula} :
      Sum.inl xφ.vocrepl_in_F x ρ φ = φ
      theorem repl_in_P_non_occ_eq {x : } {α : Program} {ρ : Formula} :
      Sum.inl xα.vocrepl_in_P x ρ α = α
      def repl_in_model {W : Type} (x : ) (ψ : Formula) :

      Overwrite the valuation of x with the current value of ψ in a model.

      Equations
      • repl_in_model x ψ { val := V, Rel := R } = { val := fun (w : W) (c : ) => if (c == x) = true then ({ val := V, Rel := R }, w)ψ else V w c, Rel := R }
      Instances For
        theorem repl_in_model_sat_iff (x : ) (ψ φ : Formula) {W : Type} (M : KripkeModel W) (w : W) :
        (M, w)repl_in_F x ψ φ (repl_in_model x ψ M, w)φ
        theorem repl_in_model_rel_iff (x : ) (ψ : Formula) (α : Program) {W : Type} (M : KripkeModel W) (w v : W) :
        relate M (repl_in_P x ψ α) w v relate (repl_in_model x ψ M) α w v
        theorem repl_in_F_equiv {φ1 φ2 : Formula} (x : ) (ψ : Formula) :
        φ1φ2repl_in_F x ψ φ1repl_in_F x ψ φ2
        theorem repl_in_P_equiv {α1 α2 : Program} (x : ) (ψ : Formula) :
        α1≡ᵣα2repl_in_P x ψ α1≡ᵣrepl_in_P x ψ α2
        theorem repl_in_disMap {α : Type u_1} (x : ) (ρ : Formula) (L : List α) (p : αProp) (f : αFormula) [DecidablePred p] :
        repl_in_F x ρ (dis (List.map (fun ( : α) => if p then Formula.bottom else f ) L)) = dis (List.map (fun ( : α) => if p then Formula.bottom else repl_in_F x ρ (f )) L)

        Simultaneous Substitutions #

        @[reducible, inline]
        Equations
        Instances For

          Apply substitution σ to formula φ.

          Equations
          Instances For

            Apply substitution σ to program α.

            Equations
            Instances For

              Overwrite the valuation in M with the substitution σ.

              Equations
              • subst_in_model σ { val := V, Rel := R } = { val := fun (w : W) (c : ) => ({ val := V, Rel := R }, w)σ c, Rel := R }
              Instances For
                theorem substitutionLemma (σ : Substitution) (φ : Formula) {W : Type} (M : KripkeModel W) (w : W) :
                (M, w)subst_in_F σ φ (subst_in_model σ M, w)φ
                theorem substitutionLemmaRel (σ : Substitution) (α : Program) {W : Type} (M : KripkeModel W) (w v : W) :
                relate M (subst_in_P σ α) w v relate (subst_in_model σ M) α w v

                Semantic Equivalents #

                theorem equiv_con {φ1 φ2 : Formula} (h : φ1φ2) (ψ : Formula) :
                φ1ψφ2ψ

                A true instance of wrong_equiv_repl, here we replaced frm with a special case.