Documentation

Linglib.Semantics.Dynamic.DPL

Dynamic Predicate Logic #

[GS91a]

The DPL substrate: meanings are relations between total assignments (DPLRel, the paper's Definition 2), truth is having an output (Definition 3), and closes a meaning to its test (Definition 17). Conjunction is relational composition and the existential is random reassignment — the two externally dynamic constants; negation, implication, disjunction, and the universal are tests. The paper's results about the system (scope extension, donkey equivalence, the restricted double-negation laws, interdefinability) are proved in Studies/GroenendijkStokhof1991.lean.

Main definitions #

def DPL.DPLRel (E : Type u_2) :
Type u_2

DPL semantic type (Definition 2): ⟦φ⟧ g h means that starting from input assignment g, the formula φ can update to output h.

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

    Atomic predicate (clauses 1–2): test the input without changing it.

    Equations
    Instances For
      def DPL.DPLRel.conj {E : Type u_1} (φ ψ : DPLRel E) :

      Conjunction (clause 4): relation composition — ⟦φ ∧ ψ⟧ g h iff ∃k, ⟦φ⟧ g k ∧ ⟦ψ⟧ k h.

      Equations
      • φ.conj ψ g h = ∃ (k : E), φ g k ψ k h
      Instances For
        def DPL.DPLRel.exists_ {E : Type u_1} (x : ) (φ : DPLRel E) :

        Existential quantification (clause 7): random assignment at x, then the scope — ⟦∃x φ⟧ g h iff ∃d, ⟦φ⟧ g[x↦d] h.

        Equations
        • DPL.DPLRel.exists_ x φ g h = ∃ (d : E), φ (fun (n : ) => if n = x then d else g n) h
        Instances For
          def DPL.DPLRel.neg {E : Type u_1} (φ : DPLRel E) :

          Negation (clause 3): the test that no output is reachable — ⟦¬φ⟧ g h iff g = h ∧ ¬∃k, ⟦φ⟧ g k. Not DNE-valid: see Studies/GroenendijkStokhof1991.lean.

          Equations
          • φ.neg g h = (g = h ¬∃ (k : E), φ g k)
          Instances For
            def DPL.DPLRel.impl {E : Type u_1} (φ ψ : DPLRel E) :

            Implication (clause 6): internally dynamic, externally static — every output of the antecedent can be extended by the consequent. The antecedent passes bindings to the consequent, giving its existentials universal force (donkey sentences).

            Equations
            • φ.impl ψ g h = (g = h ∀ (k : E), φ g k∃ (j : E), ψ k j)
            Instances For
              def DPL.DPLRel.disj {E : Type u_1} (φ ψ : DPLRel E) :

              Disjunction (clause 5): externally and internally static — no anaphoric relations across or out of the disjuncts.

              Equations
              • φ.disj ψ g h = (g = h ∃ (k : E), φ g k ψ g k)
              Instances For
                def DPL.DPLRel.forall_ {E : Type u_1} (x : ) (φ : DPLRel E) :

                Universal quantification (clause 8): a test — for every value at x, the scope can be processed. Externally static.

                Equations
                • DPL.DPLRel.forall_ x φ g h = (g = h ∀ (d : E), ∃ (m : E), φ (fun (n : ) => if n = x then d else g n) m)
                Instances For
                  def DPL.DPLRel.close {E : Type u_1} (φ : DPLRel E) :

                  Closure (Definition 17): ⟦♦φ⟧ g h iff g = h and φ can be successfully processed — the test with φ's truth conditions.

                  Equations
                  • φ.close g h = (g = h ∃ (k : E), φ g k)
                  Instances For

                    Semantic notions (Definitions 3, 6, 9) #

                    def DPL.DPLRel.trueAt {E : Type u_1} (φ : DPLRel E) (g : E) :

                    Truth (Definition 3): φ is true w.r.t. g iff it has an output.

                    Equations
                    • φ.trueAt g = ∃ (h : E), φ g h
                    Instances For
                      def DPL.DPLRel.satisfactionSet {E : Type u_1} (φ : DPLRel E) :
                      Set (E)

                      Satisfaction set (Definition 6): inputs from which φ succeeds.

                      Equations
                      Instances For
                        def DPL.DPLRel.productionSet {E : Type u_1} (φ : DPLRel E) :
                        Set (E)

                        Production set (Definition 9): possible outputs of φ.

                        Equations
                        Instances For

                          DPL as dynamic Ty2 #

                          DPL embeds directly into dynamic Ty2 at S = Assignment E: DPL assignments are Ty2 states, DPL relations are Update meanings, and each connective matches its spine combinator.

                          def DPL.dref {E : Type u_1} (n : ) :

                          DPL dref: projection function for variable n.

                          Equations
                          Instances For
                            @[reducible, inline]
                            abbrev DPL.extend {E : Type u_1} (g : Core.Assignment E) (n : ) (e : E) :

                            DPL extend is Function.update.

                            Equations
                            Instances For
                              theorem DPL.extend_at {E : Type u_1} (g : Core.Assignment E) (n : ) (e : E) :
                              dref n (extend g n e) = e
                              theorem DPL.extend_other {E : Type u_1} (g : Core.Assignment E) (n m : ) (e : E) (h : n m) :
                              dref m (extend g n e) = dref m g

                              A DPL relation is an Update over Assignment E.

                              Equations
                              Instances For

                                An Update is a DPL relation.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem DPL.toDRS_ofDRS {E : Type u_1} (φ : DPLRel E) :
                                  ofDRS (toDRS φ) = φ
                                  @[simp]
                                  theorem DPL.conj_eq_dseq {E : Type u_1} (φ ψ : DPLRel E) :
                                  toDRS (φ.conj ψ) = (toDRS φ).seq (toDRS ψ)
                                  theorem DPL.exists_eq {E : Type u_1} (x : ) (φ : DPLRel E) :
                                  toDRS (DPLRel.exists_ x φ) = fun (g h : Core.Assignment E) => ∃ (d : E), toDRS φ (extend g x d) h
                                  theorem DPL.impl_eq_test_dimpl {E : Type u_1} (φ ψ : DPLRel E) :

                                  DPL implication is the test of dynamic implication.

                                  theorem DPL.disj_eq_test_ddisj {E : Type u_1} (φ ψ : DPLRel E) :

                                  DPL disjunction is the test of dynamic disjunction.

                                  DPL closure is the test of existential closure.

                                  theorem DPL.trueAt_eq_closure {E : Type u_1} (φ : DPLRel E) (g : Core.Assignment E) :
                                  φ.trueAt g (toDRS φ).closure g

                                  DPL truth is existential closure.