Dynamic Semantics ↔ TTR: Truth-Conditional Equivalence #
@cite{cooper-2023} @cite{groenendijk-stokhof-1991} @cite{muskens-1996} @cite{sutton-2024}
CDRT (Dynamic/) and TTR (TypeTheoretic/) handle overlapping phenomena — discourse referents, donkey anaphora, cross-sentential binding — with no connection. This file proves they have the same truth conditions for a core fragment, and identifies where they diverge.
The correspondence #
| Dynamic (CDRT) | Type-Theoretic (TTR) | Classical |
|---|---|---|
DProp.ofStatic p | propT (p i) | p i |
DProp.new n; test P | Σ (x : E), P x | ∃ x, P x |
DProp.impl (new;P) Q | Π (x : E), P x → Q x | ∀ x, P x → Q x |
The first column is state-threading (assignments as side effects). The second is type-dependency (witnesses as structure). Both reduce to the same classical truth conditions (third column).
The divergence #
The systems agree on truth conditions but differ on anaphoric
potential. In CDRT, ¬¬(∃x.P(x)) has the same truth conditions as
∃x.P(x) but different discourse effects: the dref x is inaccessible
after double negation (negation resets the register). In TTR, anaphoric
potential is carried by type structure, not side effects.
CDRT introduces a dref with DProp.new n, then tests a property
on r(n). The truth condition is ∃ x, P x.
TTR represents the same thing as a Σ-type: (x : E) × P x, which
is inhabited iff ∃ x, P x. This is purify applied to a parametric
property with background E.
CDRT existential: introduce dref n, test P on r(n).
Equations
Instances For
TTR existential: Σ-type with entity witness.
This is purify ⟨E, λ e _ => propT (P e)⟩ a for any a,
but since the result doesn't depend on a, we state it directly.
Equations
- Comparisons.DynamicTTR.ttr_exists P = ((x : E) × Semantics.TypeTheoretic.propT (P x))
Instances For
Equivalence 1: CDRT dref introduction and TTR Σ-type have
the same truth conditions. Both reduce to ∃ x, P x.
Both reduce to classical ∃.
CDRT handles donkey anaphora via DProp.impl: the antecedent
introduces a dref, and the consequent refers back to it. The universal
force ("every farmer...every donkey") comes from impl's ∀ over
output registers.
TTR handles the same thing via universal purification (purifyUniv):
a Π-type that universally quantifies over all background witnesses.
Both reduce to ∀ x, P x → Q x.
CDRT donkey: impl(new n; test P, test Q).
"For every way of extending the register with a P-entity at n,
Q holds of that entity."
Equations
- One or more equations did not get rendered due to their size.
Instances For
TTR donkey: Π-type over witnesses.
"For every P-witness, Q holds." This is purifyUniv on the
parametric property with background {x : E // P x}.
Equations
- Comparisons.DynamicTTR.ttr_donkey P Q = ((x : E) → P x → Semantics.TypeTheoretic.propT (Q x))
Instances For
Equivalence 2: CDRT donkey implication and TTR Π-type have
the same truth conditions. Both reduce to ∀ x, P x → Q x.
Both reduce to classical ∀→.
"Every farmer who owns a donkey beats it."
CDRT: impl(new 0; farmer(r0); new 1; donkey(r1); owns(r0,r1), beats(r0, r1))
TTR: ∀ x, farmer x → ∀ y, donkey y → owns x y → beats x y (= purifyUniv on a two-layer parametric property)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Comparisons.DynamicTTR.ttr_full_donkey farmer donkey_ owns beats = ((x : E) → farmer x → (y : E) → donkey_ y → owns x y → Semantics.TypeTheoretic.propT (beats x y))
Instances For
Equivalence 3: The full donkey sentence has the same truth conditions in CDRT and TTR.
The TTR existential and donkey types are instances of purify
and purifyUniv from Quantification.lean. This makes the bridge
connect to the existing TTR infrastructure, not just raw Σ/Π.
The parametric property whose purification is ttr_exists P.
Background: the entity domain. Foreground: test P at the witness.
Equations
- Comparisons.DynamicTTR.ttr_exists_as_pppty P = { Bg := E, fg := fun (x x_1 : E) => Semantics.TypeTheoretic.propT (P x) }
Instances For
purify of the existential parametric property is definitionally
ttr_exists.
The parametric property whose universal purification is ttr_donkey.
Background: P-witnesses. Foreground: test Q at the witness.
Equations
- One or more equations did not get rendered due to their size.
Instances For
purifyUniv of the donkey parametric property is inhabited iff the donkey universal holds.
The systems agree on truth conditions but differ on discourse effect. CDRT tracks anaphoric potential via the output register: after processing φ, the output register determines what drefs are available for subsequent sentences.
new n; test Poutputs a register withnbound → dref availableneg (new n; test P)outputsiunchanged → dref lost
TTR tracks anaphoric potential via type structure: the Σ-type
(x : E) × P x makes x available as a projection, regardless of
how many negations wrap it.
This is the fundamental architectural difference: CDRT uses state for binding; TTR uses structure.
In CDRT, negation destroys anaphoric potential.
After ¬φ, the output register is unchanged from input —
any drefs introduced by φ are inaccessible. This is a general
property of DProp.neg, not specific to any particular φ.
Double negation preserves truth but not drefs.
¬¬(∃x.P(x)) has the same truth conditions as ∃x.P(x),
but the output register is the input register (no binding).
In TTR, there is no analogous destruction. The Σ-type (x : E) × P x
carries its witness structurally. The projection Sigma.fst is always
available, regardless of logical context.
CDRT donkey sentence is true on this model.
TTR donkey sentence is true on this model.
The two concrete results agree (by the equivalence theorem).