Documentation

Linglib.Theories.Semantics.Dynamic.Effects.State.DPL

DPL semantic type: relation between assignments.

⟦φ⟧(g, h) means: starting from assignment g, the formula φ can update to assignment h.

Equations
Instances For
    def Semantics.Dynamic.DPL.DPLRel.atom {E : Type u_1} (p : (E)Prop) :

    Atomic predicate in DPL: tests without changing assignment.

    Equations
    Instances For

      DPL conjunction: relation composition.

      ⟦φ ∧ ψ⟧(g, h) iff ∃k. ⟦φ⟧(g, k) ∧ ⟦ψ⟧(k, h)

      Equations
      Instances For

        DPL existential: random assignment then scope.

        ⟦∃x.φ⟧(g, h) iff ∃d. ⟦φ⟧(g[x↦d], h)

        Equations
        Instances For

          DPL negation: test without changing assignment.

          ⟦¬φ⟧(g, h) iff g = h ∧ ¬∃k. ⟦φ⟧(g, k)

          Note: this does not validate DNE.

          Equations
          Instances For

            DPL does not validate DNE for anaphora.

            ¬¬∃x.φ is not equivalent to ∃x.φ because negation resets the output assignment: neg(neg(exists_ x φ)) g h forces g = h (it's a test), while exists_ x φ can change the assignment to export a witness.

            Requires Nontrivial E (at least 2 elements): for Unit, all assignments are identical and DNE holds vacuously.

            theorem Semantics.Dynamic.DPL.scope_extension {E : Type u_1} (x : ) (φ ψ : DPLRel E) (_hfree : ∀ (g h : E) (d : E), ψ g h ψ (fun (n : ) => if n = x then d else g n) fun (n : ) => if n = x then d else h n) :

            Scope extension theorem: ∃x(φ ∧ ψ) ≡ (∃xφ) ∧ ψ when x not free in ψ.

            "Not free in ψ" means ψ is invariant under reassigning x in both input and output assignments. Under this condition, the existential can scope out past conjunction.

            TODO: Prove by extensionality and reordering existential quantifiers.