Documentation

Linglib.Theories.Semantics.Montague.Variables

@[reducible, inline]

Assignment function: maps variable indices to entities.

Unified with Core.Assignment — this is Nat → m.Entity. All variable-binding frameworks in the library (Montague, DRT, DPL, CDRT, cylindric algebra) share this canonical type, differing only in the entity parameter.

Equations
Instances For

    Modified assignment g[n↦x]. Delegates to Core.Assignment.update.

    Equations
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem Semantics.Montague.Variables.update_same {m : Model} (g : Assignment m) (n : ) (x : m.Entity) :
        g.update n x n = x
        @[simp]
        theorem Semantics.Montague.Variables.update_other {m : Model} (g : Assignment m) (n i : ) (x : m.Entity) (h : i n) :
        g.update n x i = g i
        theorem Semantics.Montague.Variables.update_update_same {m : Model} (g : Assignment m) (n : ) (x y : m.Entity) :
        (g.update n x).update n y = g.update n y
        theorem Semantics.Montague.Variables.update_update_comm {m : Model} (g : Assignment m) (n₁ n₂ : ) (x₁ x₂ : m.Entity) (h : n₁ n₂) :
        (g.update n₁ x₁).update n₂ x₂ = (g.update n₂ x₂).update n₁ x₁

        Denotation depending on assignment function.

        Equations
        Instances For

          Pronoun/variable denotation: ⟦xₙ⟧^g = g(n).

          Equations
          Instances For

            Lift constant denotation to assignment-relative form.

            Equations
            Instances For
              theorem Semantics.Montague.Variables.constDenot_independent {m : Model} {ty : Ty} (d : m.interpTy ty) (g₁ g₂ : Assignment m) :
              constDenot d g₁ = constDenot d g₂
              def Semantics.Montague.Variables.applyG {m : Model} {σ τ : Ty} (f : DenotG m (σ τ)) (x : DenotG m σ) :
              DenotG m τ

              Function application with assignments.

              Equations
              Instances For
                def Semantics.Montague.Variables.lambdaAbsG {m : Model} {τ : Ty} (n : ) (body : DenotG m τ) :
                DenotG m (Ty.e τ)

                Lambda abstraction with variable binding.

                Equations
                Instances For
                  theorem Semantics.Montague.Variables.lambdaAbsG_apply {m : Model} {τ : Ty} (n : ) (body : DenotG m τ) (arg : m.Entity) (g : Assignment m) :
                  lambdaAbsG n body g arg = body (g.update n arg)
                  theorem Semantics.Montague.Variables.lambdaAbsG_alpha {m : Model} {τ : Ty} (n₁ n₂ : ) (body : DenotG m τ) (g : Assignment m) (h_fresh : ∀ (g' : Assignment m) (x : m.Entity), body (g'.update n₁ x) = body (g'.update n₂ x)) :
                  lambdaAbsG n₁ body g = lambdaAbsG n₂ body g
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    Assignment-sensitive composition as an applicative functor #

                    @cite{charlow-2018} observes that constDenot (ρ) and applyG (⊛) form an applicative functor for the Reader type constructor G a := g → a (@cite{mcbride-paterson-2008}). These are not new operations — they are factored out of the standard @cite{heim-kratzer-1998} account. The four applicative functor laws hold definitionally.

                    Adding the join operation denotGJoin (μ) — which flattens doubly assignment-dependent meanings by feeding the same assignment twice — upgrades the structure to a monad (the Reader/Environment monad), enabling analyses of paycheck pronouns and binding reconstruction.

                    theorem Semantics.Montague.Variables.constDenot_applyG {m : Model} {σ τ : Ty} (f : m.interpTy (σ τ)) (x : m.interpTy σ) :

                    Homomorphism: ρ f ⊛ ρ x = ρ (f x).

                    Identity: ρ id ⊛ v = v.

                    theorem Semantics.Montague.Variables.applyG_constDenot_interchange {m : Model} {σ τ : Ty} (u : DenotG m (σ τ)) (y : m.interpTy σ) :
                    applyG u (constDenot y) = applyG (constDenot fun (f : m.interpTy (σ τ)) => f y) u

                    Interchange: u ⊛ ρ y = ρ (· y) ⊛ u.

                    theorem Semantics.Montague.Variables.applyG_composition {m : Model} {σ τ υ : Ty} (u : DenotG m (τ υ)) (v : DenotG m (σ τ)) (w : DenotG m σ) :
                    applyG (applyG (applyG (constDenot fun (f : m.interpTy (τ υ)) (g : m.interpTy (σ τ)) (x : m.interpTy σ) => f (g x)) u) v) w = applyG u (applyG v w)

                    Composition: ρ comp ⊛ u ⊛ v ⊛ w = u ⊛ (v ⊛ w).

                    Join (μ): flatten a doubly assignment-dependent meaning.

                    @cite{charlow-2018} §4.2: μ m := λg. m g g.

                    Enables higher-order variables: a pronoun anaphoric to an intension (type g → g → a) is flattened to a standard denotation (type g → a) by evaluating the retrieved intension at the current assignment.

                    Equations
                    Instances For
                      theorem Semantics.Montague.Variables.denotGJoin_const {m : Model} {A : Type} (d : Assignment mA) :
                      (denotGJoin fun (x : Assignment m) => d) = d

                      Left identity: μ (ρ d) = d.

                      theorem Semantics.Montague.Variables.denotGJoin_inner_const {m : Model} {A : Type} (d : Assignment mA) :
                      (denotGJoin fun (g x : Assignment m) => d g) = d

                      Right identity: μ (λg. ρ(d g)) = d.

                      Associativity: μ ∘ μ = μ ∘ fmap μ.

                      Assignments as a cylindric set algebra #

                      Heim & Kratzer's assignment functions satisfy the same algebraic axioms as DRT's dynamic assignments: predicates on assignments form a cylindric set algebra (@cite{henkin-monk-tarski-1971}). The operations:

                      This section develops these correspondences purely within the Montague Assignment type, without importing the dynamic semantics stack.

                      Existential closure at variable n: (∃n.φ)(g) = ∃x. φ(g[n↦x]).

                      This is cylindrification on Montague assignments (@cite{henkin-monk-tarski-1971}, @cite{heim-kratzer-1998} Ch. 5).

                      Equations
                      Instances For

                        Diagonal element: assignments where variables n and k agree. Dnk = {g : g(n) = g(k)}.

                        Equations
                        Instances For

                          C₁: Existential closure of False is False.

                          theorem Semantics.Montague.Variables.le_existsClosure {m : Model} (n : ) (φ : Assignment mProp) (g : Assignment m) :
                          φ gexistsClosure n φ g

                          C₂: φ implies its existential closure.

                          theorem Semantics.Montague.Variables.diag_refl {m : Model} (n : ) :
                          diag n n = fun (x : Assignment m) => True

                          C₅: Dnn = ⊤ (reflexivity of equality).

                          Pronoun resolution: setting variable κ to read from variable l.

                          When pronoun κ is bound by a binder at index l, the semantic effect is φ(g[κ↦g(l)]). This is the cylindric algebra's direct substitution σ^κ_l.

                          Equations
                          Instances For
                            theorem Semantics.Montague.Variables.resolve_eq_existsClosure_diag {m : Model} (κ l : ) (φ : Assignment mProp) (h : κ l) (g : Assignment m) :
                            resolve κ l φ g existsClosure κ (fun (g' : Assignment m) => diag κ l g' φ g') g

                            Substitution = resolution.

                            Algebraic substitution cκ(Dκl · φ) — cylindrification after constraining κ to equal l via the diagonal — computes the same predicate as direct pronoun resolution φ(g[κ↦g(l)]).

                            theorem Semantics.Montague.Variables.existsClosure_eq_exists_lambda {m : Model} (n : ) (body : DenotG m Ty.t) (g : Assignment m) :
                            existsClosure n (fun (g' : Assignment m) => body g' = true) g ∃ (x : m.Entity), lambdaAbsG n body g x = true

                            Lambda abstraction at n is the "integrand" of existential closure: ∃n.φ = ∃x. (λn.φ)(g)(x).

                            Montague ≡ Core.CylindricAlgebra #

                            The operations in this section — existsClosure, diag, resolve — are the same functions as cylindrify, diagonal, directSubst from Core.CylindricAlgebra. Both are defined via Core.Assignment.update. The identities are definitional (rfl).

                            Together with the DPL ↔ Cylindric Algebra bridge in DPL/Bridge.lean (which proves closure(∃x.φ) = cylindrify x (closure φ)), this establishes a three-way connection:

                              Montague (static)         DPL (dynamic)
                              existsClosure n φ         DPLRel.exists_ x φ
                                    │                         │
                                    │ rfl                     │ closure
                                    ▼                         ▼
                              Core.CylindricAlgebra.cylindrify n
                            

                            H&K's static binding and DPL's dynamic binding are both instances of cylindrification — they differ only in whether the output assignment is visible (DPL: relation g → h → Prop) or projected away (Montague: predicate g → Prop).

                            existsClosure IS cylindrify: H&K's existential closure is literally cylindrification on the assignment algebra.

                            diag IS diagonal: H&K's variable identity test is literally the cylindric algebra's diagonal element.

                            resolve IS directSubst: H&K's pronoun resolution is literally cylindric substitution.