Unified Tense Pronoun Architecture #
[Abu97] [Hei94a] [Kra98a] [Par73] [vS09] [Ogi89]
[Par73]'s insight: a tense morpheme is a temporal pronoun — a variable with a temporal constraint and a binding mode (indexical/anaphoric/bound). The constraint-as-presupposition formulation follows [Hei94a] (commenting on [Abu97]) and [Kra98a]. This single concept projects onto five representations of temporal reference in the codebase:
- Priorean operators (PAST/PRES/FUT):
Core.Order.holds constraint - Reichenbach frames (S, P, R, E):
TensePronoun.toFrame - Referential variables:
TensePronoun.resolve - Kaplan indexicals (rigid to speech time):
mode =.indexical - Attitude binding (zero tense, [Ogi89]):
mode =.bound
The existing ad-hoc bridge theorems (referential_past_decomposition,
temporallyBound_gives_simultaneous, indexical_tense_matches_opNow,
ogihara_bound_tense_simultaneous) become trivial projections from this
unified type.
Implementation notes #
The shared tense-pronoun substrate (TensePronoun, …) the Tense/
and Attitudes/ theories build on. A tense constraint is a Finset Ordering
comparison category (Core.Order); the temporal primitives it imports
(Reichenbach/Relation/WorldTimeIndex) stay in Core/.
SOTParameter #
Sequence of Tenses (SOT) parameter.
Languages differ in how embedded tense interacts with matrix tense:
- SOT languages (English): Embedded tense is relative to matrix
- Non-SOT languages (Japanese): Embedded tense is absolute
- relative : SOTParameter
- absolute : SOTParameter
Instances For
Equations
- Tense.instDecidableEqSOTParameter x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Tense.instReprSOTParameter = { reprPrec := Tense.instReprSOTParameter.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
TenseInterpretation #
Tense interpretation modes. Tenses parallel pronouns: indexical (deictic), anaphoric (discourse-bound), and bound variable (zero tense).
This is an alias for Intensional.ReferentialMode.ReferentialMode,
which captures Partee's insight that the same three-way classification
applies to both pronouns and tenses.
Instances For
Temporal assignment functions are the temporal instantiation of
Core.Assignment (Assignment Time = ℕ → Time). All update laws are mathlib's Function.update lemmas.
Temporal assignment function: maps variable indices to times.
The temporal analogue of H&K's Assignment (ℕ → Entity).
Equations
- Tense.TemporalAssignment Time = Core.Assignment Time
Instances For
Modified temporal assignment g[n ↦ t]. Specializes Function.update.
Equations
- Tense.updateTemporal g n t = Function.update g n t
Instances For
Temporal variable denotation: ⟦tₙ⟧^g = g(n).
Equations
- Tense.interpTense n g = g n
Instances For
Temporal lambda abstraction: bind a time variable.
Partee's bound tense: "Whenever Mary phones, Sam is asleep" — present tense bound by "whenever", just as "Every farmer beats his donkey" has "his" bound by "every farmer".
Equations
- Tense.temporalLambdaAbs n body g t = body (Function.update g n t)
Instances For
Project a situation assignment to a temporal assignment. This is the formal bridge between situation semantics and tense semantics: the temporal coordinate of each situation is extracted.
Equations
- Tense.situationToTemporal g n = (g n).time
Instances For
Temporal interpretation via situation assignment commutes with
time projection: interpTense n (π g) = (g n).time.
Zero tense: a bound tense variable contributes no independent temporal constraint. When an attitude verb binds it, the variable receives the matrix event time. This is the SOT mechanism: the "past" morphology on the embedded verb is agreement, not a semantic tense.
SitProp (Prop-valued) #
Type of situation-level propositions (Prop-valued, for proof-level temporal reasoning).
A temporal predicate takes a situation and returns a truth value.
This is what tense operators modify. Re-exported by
Semantics/Attitudes/SituationDependent.lean and
Semantics/Tense/Compositional.lean for downstream use.
Equations
- Tense.SitProp W Time = (Intensional.WorldTimeIndex W Time → Prop)
Instances For
[Abu97]'s unified tense denotation.
A tense morpheme introduces a temporal variable with:
- A variable index in the temporal assignment
- A presupposed temporal constraint (past/present/future)
- A binding mode (indexical, anaphoric, or bound)
This unifies five views of tense:
- Priorean:
Core.Order.holds constraint(temporal ordering) - Reichenbach:
resolve g= R, perspective time = P - Referential:
resolve g = interpTense varIndex g - Kaplan indexical:
mode =.indexical→ rigid to speech time - Attitude binding:
mode =.bound→ zero tense
- varIndex : ℕ
- constraint : Finset Ordering
- mode : TenseInterpretation
- evalTimeIndex : ℕ
Index of the evaluation time variable in the temporal assignment. Default 0 = speech time slot. Under embedding, attitude verbs update this index to point at the matrix event time. [Kle16]: modals can also shift the eval time index.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Resolve: look up the temporal variable.
Equations
- tp.resolve g = Tense.interpTense tp.varIndex g
Instances For
Presupposition: the constraint applied to the resolved time.
Equations
- tp.presupposition resolvedTime perspectiveTime = Core.Order.holds tp.constraint resolvedTime perspectiveTime
Instances For
Construct the Reichenbach frame. R = g(varIndex), P = perspectiveTime.
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
TensePronoun Bridge Theorems #
Resolve the evaluation time from the assignment. In root clauses (evalTimeIndex = 0, g(0) = speech time), this is speech time. Under embedding, the attitude verb updates the assignment so that g(evalTimeIndex) = matrix event time.
Equations
- tp.evalTime g = Tense.interpTense tp.evalTimeIndex g
Instances For
Full presupposition: the tense constraint checked against the resolved evaluation time (not just a bare perspective time parameter). This makes the eval time compositionally determined rather than stipulated.
Equations
- tp.fullPresupposition g = Core.Order.holds tp.constraint (tp.resolve g) (tp.evalTime g)
Instances For
When evalTimeIndex = 0 and g(0) = speechTime, the evaluation time is speech time. This is the root-clause default: tense is checked against speech time.
Updating the eval time index gives Von Stechow's perspective shift: the embedded tense is now checked against a different time (the matrix event time). This is how attitude verbs "transmit" their event time.
Resolving a bound tense under binding yields the binder time.
A present-constraint bound tense under binding gives R = P (simultaneous).
The hPres hypothesis constrains the theorem to present tenses; the
frame equality follows from hBind alone (R = resolve = perspTime).
Double-access: present-under-past requires the complement to hold at BOTH speech time (indexical rigidity) AND matrix event time (attitude accessibility).
Equations
- Tense.doubleAccess p speechTime matrixEventTime = (p speechTime ∧ p matrixEventTime)
Instances For
An indexical present tense presupposes resolution to speech time.
Phonological overtness of a referential expression ([Kra98a] §3).
Applies uniformly to pronouns and tenses: English has zero tense under SOT (bound present surfaces as ∅); Japanese has zero pronouns in subject position (locally bound by Agr). Persian has zero pronouns but NOT zero tense (tense is in C, outside the local agreement domain).
The distribution of overt vs. zero is governed by locality of agreement: a referential expression that is locally bound by an agreeing head surfaces as zero.
Instances For
Equations
- Tense.instDecidableEqOvertness x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Tense.instReprOvertness.repr Tense.Overtness.overt prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Tense.Overtness.overt")).group prec✝
- Tense.instReprOvertness.repr Tense.Overtness.zero prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Tense.Overtness.zero")).group prec✝
Instances For
Equations
- Tense.instReprOvertness = { reprPrec := Tense.instReprOvertness.repr }
Equations
- Tense.instInhabitedOvertness = { default := Tense.instInhabitedOvertness.default }
Kratzer's locality generalization (1998, formula 26):
A referential expression that is locally bound by an agreeing head surfaces as zero. Free (indexical or anaphoric) expressions surface as overt. This unifies:
- Reflexives = locally bound entity pronouns → zero/reduced
- Simultaneous tense = locally bound temporal pronoun → zero under SOT
- Japanese subject pro = locally bound by Agr → zero
- Persian pronouns = locally bound by Agr → zero, but tense is NOT local to Agr (tense is in C) → overt
Equations
Instances For
Free (indexical or anaphoric) expressions are always overt.
Bound expressions in a local domain are zero.
Bound expressions outside the local domain remain overt. This is the Persian case: tense is bound but not in a local agreement domain (tense is in C, Agr is in Infl).
The key bridge showing that [Abu97]'s De Bruijn temporal indexing is already
tower-style depth access. TensePronoun.evalTimeIndex is a depth-relative index
into the tower: when the temporal assignment encodes tower time coordinates
(g k = (tower.contextAt k).time), interpTense agrees with AccessPattern.resolve.
tensePronounAccessPattern— convertsTensePronoun.evalTimeIndexto anAccessPatternwithdepth :=.relative tp.evalTimeIndextense_tower_bridge— whengencodes tower time coordinates,interpTenseagrees withAccessPattern.resolvetense_root_bridge— root clause:evalTimeIndex = 0means origin timevon_stechow_tower— pushing a temporal shift = Von Stechow's perspective shift
Convert a TensePronoun's eval-time index to an AccessPattern that reads
the time coordinate at the corresponding tower depth.
evalTimeIndex = 0 → origin (speech-act context time)
evalTimeIndex = k → depth k (the k-th embedding's time)
This makes explicit the observation that Abusch's variable indices ARE tower depth indices for the temporal coordinate.
Equations
- Tense.tensePronounAccessPattern tp = { depth := Semantics.Context.DepthSpec.relative tp.evalTimeIndex, project := Semantics.Context.KContext.time }
Instances For
A temporal assignment that faithfully represents a tower: g k returns
the time coordinate at tower depth k. This is the bridge condition
connecting the variable-assignment world to the tower world.
Equations
- Tense.towerFaithful g t = ∀ (k : ℕ), g k = (t.contextAt k).time
Instances For
When the temporal assignment encodes tower time coordinates,
interpTense at the eval-time index agrees with resolving
the tensePronounAccessPattern against the tower.
This is the central result: Abusch's De Bruijn indexing IS tower-depth access for the temporal coordinate.
In a root tower (no shifts), evalTimeIndex = 0 accesses the origin time.
This is the root-clause default: tense is checked against speech time.
Combined with evalTime_root_is_speech, this shows that root-clause
temporal evaluation is origin access — exactly Kaplan's thesis for time.
The access pattern for a root-clause tense pronoun (evalTimeIndex = 0) resolves to depth 0, which is the origin.
[vS09]'s perspective shift — the attitude verb transmits
its event time to the embedded clause — corresponds to pushing a
temporalShift onto the tower.
Concretely: the updated assignment at the tower depth yields the new time.
Under faithful encoding, layers below the push point are preserved.
Pushing a temporal shift assigns newTime to the new depth in
the extended tower, mirroring von_stechow_tower on the assignment side.