Documentation

Linglib.Theories.Semantics.Dynamic.DPL.Basic

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.

            DPL implication: internally dynamic, externally static.

            ⟦φ → ψ⟧(g, h) iff g = h and every output of φ from g can be extended by ψ. Implication passes on bindings from its antecedent to its consequent (internally dynamic), but the implication as a whole is a test (externally static). This gives existential quantifiers in the antecedent universal force — the key to donkey sentences.

            Equations
            Instances For

              DPL disjunction: externally and internally static.

              ⟦φ ∨ ψ⟧(g, h) iff g = h and at least one disjunct can be successfully processed from g. No anaphoric relations are possible between or across disjuncts.

              Equations
              Instances For

                DPL universal quantification: a test.

                ⟦∀x.φ⟧(g, h) iff g = h and for every value d at position x, φ can be successfully processed. Like negation, implication, and disjunction, the universal quantifier is externally static.

                Equations
                Instances For

                  DPL closure (the ◇ operator, Definition 17).

                  ⟦◇φ⟧(g, h) iff g = h and φ can be successfully processed from g. Closure turns any formula into a test with the same truth conditions.

                  Equations
                  Instances For
                    def Semantics.Dynamic.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
                    Instances For

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

                      Equations
                      Instances For

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

                        Equations
                        Instances For

                          The connectives , , ∀x are interdefinable from ¬, , ∃x. This is the standard classical interdefinability — but crucially, the reverse does not hold in DPL: and ∃x cannot be defined from , , ∀x because the latter are all externally static.

                          theorem Semantics.Dynamic.DPL.impl_interdefinable {E : Type u_1} (φ ψ : DPLRel E) :
                          φ.impl ψ = (φ.conj ψ.neg).neg

                          φ → ψ ≈ ¬(φ ∧ ¬ψ) — implication from conjunction and negation.

                          theorem Semantics.Dynamic.DPL.disj_interdefinable {E : Type u_1} (φ ψ : DPLRel E) :
                          φ.disj ψ = (φ.neg.conj ψ.neg).neg

                          φ ∨ ψ ≈ ¬(¬φ ∧ ¬ψ) — disjunction from conjunction and negation.

                          ∀x.φ ≈ ¬∃x.¬φ — universal from existential and negation.

                          ¬∃xφ ≈ ∀x¬φ — negation commutes with quantifier switch.

                          This follows from the fact that negation turns anything into a test.

                          theorem Semantics.Dynamic.DPL.donkey_equivalence {E : Type u_1} (x : ) (φ ψ : DPLRel E) :

                          The donkey equivalence: ∃xφ → ψ ≈ ∀x[φ → ψ]

                          The central theorem of @cite{groenendijk-stokhof-1991}: an existential quantifier in the antecedent of an implication has universal force. This is what makes donkey sentences compositional — "if a farmer owns a donkey, he beats it" gets the universal reading from the dynamic semantics of implication alone, without stipulating wide-scope ∀.

                          Conjunction is not commutative in DPL.

                          ∃xPx ∧ Qx and Qx ∧ ∃xPx differ because in the first, ∃x binds x in Qx (left-to-right binding), while in the second, Qx uses x's current value before ∃x reassigns it.

                          Requires Nontrivial E so that reassignment can change the value.

                          theorem Semantics.Dynamic.DPL.close_eq_neg_neg {E : Type u_1} (φ : DPLRel E) :
                          φ.close = φ.neg.neg

                          ◇φ ≈ ¬¬φ — closure is double negation (s-equivalence).

                          theorem Semantics.Dynamic.DPL.impl_isTest {E : Type u_1} (φ ψ : DPLRel E) (g h : E) (h_impl : φ.impl ψ g h) :
                          g = h

                          Implication is a test: ⟦φ → ψ⟧(g, h) implies g = h.

                          theorem Semantics.Dynamic.DPL.disj_isTest {E : Type u_1} (φ ψ : DPLRel E) (g h : E) (h_disj : φ.disj ψ g h) :
                          g = h

                          Disjunction is a test.

                          theorem Semantics.Dynamic.DPL.forall_isTest {E : Type u_1} (x : ) (φ : DPLRel E) (g h : E) (h_fa : DPLRel.forall_ x φ g h) :
                          g = h

                          Universal quantification is a test.