Documentation

Linglib.Theories.Semantics.Dynamic.CDRT.Basic

@[reducible, inline]

CDRT state: a register/assignment function.

Muskens names them "registers" but the type is Core.Assignment E; this alias preserves Muskens's vocabulary while sharing the simp set (Assignment.update_at, update_ne, update_overwrite, update_self) with H&K composition, DPL, Charlow continuations, and Spector's plural substrate.

Equations
Instances For

    Dynamic proposition: relates input and output states.

    ⟦φ⟧ : Register E → Register E → Prop

    Equations
    Instances For

      Static proposition (for embedding classical logic).

      Equations
      Instances For

        Embed a static proposition as a dynamic one (test).

        ⟦p⟧(i, o) iff i = o ∧ p(i)

        Equations
        Instances For
          def Semantics.Dynamic.CDRT.DProp.seq {E : Type u_1} (φ ψ : DProp E) :

          Dynamic conjunction: relational composition.

          ⟦φ; ψ⟧(i, o) iff ∃k. ⟦φ⟧(i, k) ∧ ⟦ψ⟧(k, o)

          Equations
          Instances For
            def Semantics.Dynamic.CDRT.«term_;;_» :
            Lean.TrailingParserDescr
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def Semantics.Dynamic.CDRT.DProp.new {E : Type u_1} (n : ) :

              New discourse referent introduction.

              [new n] extends the register at position n with an arbitrary value.

              Equations
              Instances For

                Dynamic negation: test for failure.

                ⟦¬φ⟧(i, o) iff i = o ∧ ¬∃k. ⟦φ⟧(i, k)

                Equations
                Instances For
                  def Semantics.Dynamic.CDRT.DProp.impl {E : Type u_1} (φ ψ : DProp E) :

                  Dynamic implication: if φ succeeds, ψ must succeed.

                  ⟦φ → ψ⟧(i, o) iff i = o ∧ ∀k. (⟦φ⟧(i, k) → ∃m. ⟦ψ⟧(k, m))

                  Equations
                  Instances For
                    def Semantics.Dynamic.CDRT.DProp.ddisj {E : Type u_1} (φ ψ : DProp E) :

                    Dynamic disjunction: φ or ψ.

                    ⟦φ or ψ⟧(i, o) iff i = o ∧ (∃k. ⟦φ⟧(i, k) ∨ ⟦ψ⟧(i, k))

                    Disjunction is a test: it checks whether either disjunct is satisfiable without changing state. Corresponds to SEM2 (@cite{muskens-1996}, p. 148).

                    Equations
                    Instances For
                      @[reducible, inline]

                      Entity type: individuals.

                      Equations
                      Instances For

                        Generalized quantifier type.

                        Equations
                        Instances For
                          def Semantics.Dynamic.CDRT.indefinite {E : Type u_1} (n : ) (p q : EDProp E) :

                          Indefinite "a/an": introduces dref and applies predicate.

                          ⟦a⟧ = λP.λQ. new n; P(rn); Q(rn)

                          where rn is the register lookup at n.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            def Semantics.Dynamic.CDRT.pronoun {E : Type u_1} (n : ) :
                            Register EE

                            Pronoun: lookup register value.

                            ⟦heₙ⟧ = rn (returns the value at register n)

                            Equations
                            Instances For

                              A dynamic proposition is TRUE at state i if it can transition somewhere.

                              Equations
                              Instances For

                                Dynamic entailment: φ entails ψ if ψ is true after φ.

                                Equations
                                Instances For
                                  theorem Semantics.Dynamic.CDRT.DProp.neg_output {E : Type u_1} {φ : DProp E} {i o : Register E} (h : φ.neg i o) :
                                  o = i

                                  The output of a negated DProp always equals the input register.

                                  theorem Semantics.Dynamic.CDRT.DProp.impl_true_at {E : Type u_1} (φ ψ : DProp E) (i : Register E) :
                                  (φ.impl ψ).true_at i ∀ (k : Register E), φ i kψ.true_at k

                                  DProp.impl is true at i iff every antecedent extension satisfies the consequent.

                                  theorem Semantics.Dynamic.CDRT.DProp.ofStatic_true_at {E : Type u_1} (p : SProp E) (i : Register E) :
                                  (ofStatic p).true_at i p i

                                  A static DProp is true at i iff its static content holds.

                                  CDRT-as-Dynamic-Ty2 #

                                  CDRT's Register E = Nat → E is the same type as @cite{muskens-1996}'s state space S in Dynamic Ty2 with discourse referents Dref S E = S → E. Drefs in CDRT are register-lookups; DProp E and DRS (Register E) are the same type, so the embedding is a pair of identity functions.

                                  def Semantics.Dynamic.CDRT.dref {E : Type u_1} (n : ) :

                                  CDRT register lookup as a Dynamic Ty2 dref.

                                  Equations
                                  Instances For

                                    DProp E IS a DRS over Register E.

                                    Equations
                                    Instances For