Unified Tense Pronoun Architecture #
@cite{abusch-1997} @cite{heim-kratzer-1998} @cite{kratzer-1998} @cite{partee-1973} @cite{von-stechow-2009} @cite{ogihara-1989}
@cite{abusch-1997}'s insight: a tense morpheme is a temporal pronoun — a variable with a presupposed temporal constraint (Prior, reinterpreted) and a binding mode (indexical/anaphoric/bound). This single concept projects onto five representations of temporal reference in the codebase:
- Priorean operators (PAST/PRES/FUT):
constraint.constrains - Reichenbach frames (S, P, R, E):
TensePronoun.toFrame - Referential variables:
TensePronoun.resolve - Kaplan indexicals (rigid to speech time):
mode =.indexical - Attitude binding (zero tense, @cite{ogihara-1989}):
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.
Architecture #
This module lives in Core/ because both Theories/Semantics.Montague/Sentence/Tense/
and Theories/Semantics.Intensional/Attitude/ need the shared infrastructure
(GramTense, SOTParameter, TemporalAssignment, etc.) without a cross-tree
import.
Grammatical tense: a temporal relation imposed by tense morphology.
Following the Reichenbach/Klein tradition:
- PAST: reference time before speech time
- PRESENT: reference time overlaps speech time
- FUTURE: reference time after speech time
Instances For
Equations
- Core.Tense.instReprGramTense = { reprPrec := Core.Tense.instReprGramTense.repr }
Equations
- One or more equations did not get rendered due to their size.
- Core.Tense.instReprGramTense.repr Core.Tense.GramTense.past prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Tense.GramTense.past")).group prec✝
Instances For
Equations
- Core.Tense.instBEqGramTense.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
Convert tense to its corresponding temporal relation
Equations
Instances For
The inverse relation (for "backwards" reference)
Equations
Instances For
The temporal constraint imposed by a grammatical tense. Past: ref < perspective. Present: ref = perspective. Future: ref > perspective. This is the core ordering that Priorean operators assert and Abusch's tense pronouns presuppose.
Equations
- Core.Tense.GramTense.past.constrains refTime perspTime = (refTime < perspTime)
- Core.Tense.GramTense.present.constrains refTime perspTime = (refTime = perspTime)
- Core.Tense.GramTense.future.constrains refTime perspTime = (refTime > perspTime)
Instances For
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
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Core.Tense.instBEqSOTParameter.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Tense interpretation modes. Tenses parallel pronouns: indexical (deictic), anaphoric (discourse-bound), and bound variable (zero tense).
This is an alias for Core.ReferentialMode.ReferentialMode,
which captures Partee's insight that the same three-way classification
applies to both pronouns and tenses.
Instances For
Bound (zero) tense is the SOT mechanism: it must be locally bound, yielding the simultaneous reading without a deletion rule.
Temporal assignment functions are the temporal instantiation of
Core.VarAssignment (VarAssignment Time = ℕ → Time). All algebraic
properties (update_lookup_same, update_lookup_other, update_update_same,
update_self) are inherited from the generic infrastructure.
Temporal assignment function: maps variable indices to times.
The temporal analogue of H&K's Assignment (ℕ → Entity).
Defined as VarAssignment Time from Core.VarAssignment.
Equations
Instances For
Modified temporal assignment g[n ↦ t].
Specializes Core.VarAssignment.updateVar.
Equations
- Core.Tense.updateTemporal g n t = Core.VarAssignment.updateVar g n t
Instances For
Temporal variable denotation: ⟦tₙ⟧^g = g(n).
Specializes Core.VarAssignment.lookupVar.
Equations
Instances For
Temporal lambda abstraction: bind a time variable.
Specializes Core.VarAssignment.varLambdaAbs.
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
- Core.Tense.temporalLambdaAbs n body = Core.VarAssignment.varLambdaAbs n body
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
- Core.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.
Type of situation-level propositions (Prop-valued, for proof-level temporal reasoning).
A temporal predicate takes a situation and returns truth value. This is what tense operators modify.
Note: a Bool-valued counterpart exists at
Semantics.Attitudes.SituationDependent.SitProp for
computational RSA evaluation. The split follows the Prop'/BProp
pattern in Core/Proposition.lean.
Equations
- Core.Tense.SitProp W Time = (Situation W Time → Prop)
Instances For
@cite{abusch-1997}'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:
constraint.constrains(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 : GramTense
- 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. @cite{klecha-2016}: 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
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- Core.Tense.instBEqTensePronoun.beq x✝¹ x✝ = false
Instances For
Equations
Resolve: look up the temporal variable.
Equations
- tp.resolve g = Core.Tense.interpTense tp.varIndex g
Instances For
Presupposition: the constraint applied to the resolved time.
Equations
- tp.presupposition resolvedTime perspectiveTime = tp.constraint.constrains resolvedTime perspectiveTime
Instances For
Construct the Reichenbach frame. R = g(varIndex), P = perspectiveTime.
Equations
Instances For
Equations
Instances For
Equations
Instances For
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 = Core.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 = tp.constraint.constrains (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
- Core.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 (@cite{heim-kratzer-1998} §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
- One or more equations did not get rendered due to their size.
- Core.Tense.instReprOvertness.repr Core.Tense.Overtness.zero prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Tense.Overtness.zero")).group prec✝
Instances For
Equations
- Core.Tense.instReprOvertness = { reprPrec := Core.Tense.instReprOvertness.repr }
Equations
Equations
- Core.Tense.instBEqOvertness.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
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 @cite{abusch-1997}'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
- Core.Tense.tensePronounAccessPattern tp = { depth := Core.Context.DepthSpec.relative tp.evalTimeIndex, project := Core.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.
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.
@cite{von-stechow-2009}'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.