Variable Binding and Assignment Functions #
Framework-neutral infrastructure for interpreting expressions with free variables,
built on Intensional.Denot.
Main definitions #
Assignment(fromCore/Logic/Assignment.lean) instantiated atEfor entity pronouns andWfor situation pronouns; theg[n ↦ x]notation forFunction.updateis declared hereDenotG— assignment-relative denotationsapplyG,lambdaAbsG,constDenot— composition with assignments- Applicative functor laws ([Cha18])
- Cylindric algebra bridge ([HMT71])
Heim-Kratzer assignment-modification notation: g[n ↦ x] is
Function.update g n x. The Function.update_* lemmas (update_self,
update_of_ne, update_idem, update_comm, update_eq_self) are the
update laws.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Denotation depending on assignment function.
Equations
- Intensional.Variables.DenotG E W ty = (Core.Assignment E → Intensional.Denot E W ty)
Instances For
Pronoun/variable denotation: ⟦xₙ⟧^g = g(n).
Equations
- Intensional.Variables.interpPronoun n g = g n
Instances For
Lift constant denotation to assignment-relative form.
Equations
- Intensional.Variables.constDenot d x✝ = d
Instances For
Function application with assignments.
Equations
- Intensional.Variables.applyG f x g = f g (x g)
Instances For
Lambda abstraction with variable binding.
Equations
- Intensional.Variables.lambdaAbsG n body g x = body (Function.update g n x)
Instances For
Assignment-sensitive composition as an applicative functor #
[Cha18] observes that constDenot (ρ) and applyG (⊛)
form an applicative functor for the Reader type constructor G a := g → a
([McBP08]). The four applicative functor laws hold
definitionally.
Homomorphism: ρ f ⊛ ρ x = ρ (f x).
Identity: ρ id ⊛ v = v.
Interchange: u ⊛ ρ y = ρ (· y) ⊛ u.
Join (μ): flatten a doubly assignment-dependent meaning.
[Cha18] §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
- Intensional.Variables.denotGJoin ho g = ho g g
Instances For
Left identity: μ (ρ d) = d.
Right identity: μ (λg. ρ(d g)) = d.
Associativity: μ ∘ μ = μ ∘ fmap μ.
Assignments as a cylindric set algebra #
[HK98] assignment functions satisfy the same algebraic axioms as DRT's dynamic assignments: predicates on assignments form a cylindric set algebra ([HMT71]).
Existential closure at variable n:
(∃n.φ)(g) = ∃x. φ(g[n↦x]).
Equations
- Intensional.Variables.existsClosure n φ g = ∃ (x : E), φ (Function.update g n x)
Instances For
Diagonal element: assignments where variables n and k agree.
Equations
- Intensional.Variables.diag n k g = (g n = g k)
Instances For
C₁: Existential closure of False is False.
C₂: φ implies its existential closure.
C₅: Dnn = ⊤ (reflexivity of equality).
Pronoun resolution: setting variable κ to read from variable l.
Equations
- Intensional.Variables.resolve κ l φ g = φ (Function.update g κ (g l))
Instances For
Substitution = resolution.
Lambda abstraction at n is the "integrand" of existential closure.
Situation pronouns as the type-level dual of entity pronouns #
Hanink (2018, 2021), Bondarenko (2022, 2023) and the broader post-Schwarz literature on situational vs anaphoric definites argue that a situation argument can be a bound variable (a "situation pronoun"), not just a free parameter handed to an interpretation function.
Type-theoretically this is the dual of entity binding under Ty.intens:
where entity pronouns are interpreted relative to Assignment E := ℕ → E,
situation pronouns are interpreted relative to SitAssignment W := ℕ → W.
Both reuse Core.Assignment at different instantiations, so mathlib's
Function.update lemmas apply to both.
Situation assignment: maps situation-pronoun indices to frame indices.
Reuses Assignment at type W.
Equations
Instances For
Situation-pronoun denotation: ⟦sₙ⟧^{gs} = gs(n). Parallels interpPronoun.
Equations
- Intensional.Variables.interpSitPronoun n gs = gs n
Instances For
Bi-assignment-relative denotation: depends on both an entity assignment and a situation assignment. Used by any module that interprets expressions containing both entity pronouns and situation pronouns (definites, attitude reports, modal scope, world-variable binding).
Equations
- Intensional.Variables.DenotGS E W ty = (Core.Assignment E → Intensional.Variables.SitAssignment W → Intensional.Denot E W ty)
Instances For
Lift a pure entity-assignment-relative denotation to bi-assignment form (ignores the situation assignment).
Equations
- Intensional.Variables.DenotGS.ofDenotG d g x✝ = d g
Instances For
Lift a constant denotation to bi-assignment form (ignores both assignments).
Equations
- Intensional.Variables.DenotGS.const d x✝¹ x✝ = d
Instances For
Bi-assignment lift of a pure constant is the same as DenotG-lift of a
constant — the two const paths agree.