Compositional Tense Operators #
Semantic operators for grammatical tense (PAST, PRES, FUT) in the
situation-semantic style ([Men25]: operators constrain the temporal
coordinate of a situation argument), driven by the shared temporal-relation
kernel (precedes/coincides/follows), which also grounds the dynamic
counterparts in Tense/Dynamic.lean. (Reichenbach frame-based tense
predicates live in Tense/Reichenbach.lean.)
Following [Par73], tenses are pronoun-like: they retrieve temporal
reference points rather than quantify over all times.
Type of tense operators.
A tense operator takes:
- A temporal predicate P : (s, s') → Prop
- Two situations: the "now" situation s and evaluation situation s'
- Returns whether P holds with the tense constraint
Equations
- Tense.TenseOp W Time = (Tense.SitProp W Time → Intensional.WorldTimeIndex W Time → Intensional.WorldTimeIndex W Time → Prop)
Instances For
Temporal-relation kernel #
The temporal constraint of each tense, factored out as a pure relation
on WorldTimeIndex pairs and shared with the dynamic-context-update
counterparts in Tense/Dynamic.lean via dynRelation. This is the
Heim-Kratzer "tense as relation between times" intuition isolated from
the propositional payload, so that a single relation kernel (precedes/
coincides/follows) is the source of truth for both static PAST/
PRES/FUT (Compositional, this file) and their dynamic eliminative-
update counterparts (Tense/Dynamic.lean). Trichotomy and pairwise
exclusion proved at this layer propagate to both static and dynamic
operators by definitional unfolding.
Event time precedes reference time. The temporal kernel of PAST
and dynPAST. Reducible so decide and rw see through to the
underlying < on .time.
Equations
- Tense.precedes s₁ s₂ = (s₁.time < s₂.time)
Instances For
Event time coincides with reference time. The temporal kernel of
PRES and dynPRES.
Equations
- Tense.coincides s₁ s₂ = (s₁.time = s₂.time)
Instances For
Event time follows reference time. The temporal kernel of FUT
and dynFUT.
Equations
- Tense.follows s₁ s₂ = (s₁.time > s₂.time)
Instances For
The three temporal relations partition any pair of situations on a
linear order. Used downstream by temporal_partition (in
Tense/Dynamic.lean) and by static analyses that need exhaustive case
analysis on tense.
precedes and follows are mutually exclusive on any preorder.
precedes and coincides are mutually exclusive on any preorder.
coincides and follows are mutually exclusive on any preorder.
PAST operator ([Men25] style)
⟦PAST⟧ = λP.λs.λs'. τ(s) < τ(s') ∧ P(s)
The PAST operator:
- Requires the event situation s to precede reference situation s'
- Evaluates P at the past situation s
Defined via the precedes kernel (above) so the temporal constraint is
shared with dynPAST in Tense/Dynamic.lean.
Equations
- Tense.PAST P s s' = (Tense.precedes s s' ∧ P s)
Instances For
PRES operator ([Men25] style)
⟦PRES⟧ = λP.λs.λs'. τ(s) = τ(s') ∧ P(s)
The PRESENT operator:
- Requires the event situation s to be contemporaneous with s'
- Evaluates P at situation s
Defined via the coincides kernel.
Equations
- Tense.PRES P s s' = (Tense.coincides s s' ∧ P s)
Instances For
FUT operator ([Men25] style)
⟦FUT⟧ = λP.λs.λs'. τ(s) > τ(s') ∧ P(s)
The FUTURE operator:
- Requires the event situation s to follow reference situation s'
- Evaluates P at the future situation s
Defined via the follows kernel.
Equations
- Tense.FUT P s s' = (Tense.follows s s' ∧ P s)
Instances For
Simple PAST: Event time precedes speech time.
⟦PAST⟧ₛᵢₘₚₗₑ = λP.λt.λt_s. t < t_s ∧ P(t)
Equations
- Tense.pastSimple P eventTime speechTime = (eventTime < speechTime ∧ P eventTime)
Instances For
Simple PRESENT: Event time equals speech time.
Equations
- Tense.presSimple P eventTime speechTime = (eventTime = speechTime ∧ P eventTime)
Instances For
Simple FUTURE: Event time follows speech time.
Equations
- Tense.futSimple P eventTime speechTime = (eventTime > speechTime ∧ P eventTime)
Instances For
PAST requires temporal precedence.
FUT requires temporal succession.
PRES requires contemporaneity.
Tense preserves the predicate.
If TENSE(P)(s, s'), then P(s).