Reichenbach's Temporal Framework #
[Rei47] / [Kle94] tense–aspect parameters, extended with [Kip02]'s perspective time P.
Three (four) distinguished times:
- S (Speech time): When the utterance occurs
- P (Perspective time): Origin of temporal deixis
- R (Reference/Topic time): The time being talked about
- E (Event time): When the event occurs
Tense relates R to P; Aspect relates E to R.
Domain bridge #
ReichenbachFrame is the four-slot point-time record used throughout
linglib's tense modules. The toDomain builder lifts it to a generic
Tense.Domain (central = S, sub-TOs = [P, R, E], all as point
intervals via TO.pure). The *_iff_relatedByName bridge theorems
re-express each predicate (isPast, isPerfect, …) as a
Domain.relatedByName query against named atom-sets from the Allen
algebra. This grounds the Reichenbach predicates in the Allen
projection function (NonemptyInterval.allenRel) without changing the
existing four-field record — downstream call sites continue to use
f.referenceTime, f.isPast, etc., while domain-level tooling can
work with f.toDomain and relatedByName.
Reichenbach's temporal parameters for tense/aspect analysis, extended with [Kip02]'s perspective time P.
speechTime: When the utterance is made (S)perspectiveTime: Origin of temporal deixis (P, [Kip02])referenceTime: The time being talked about (R, Klein's "topic time")eventTime: When the described event occurs (E)
P = S in root clauses but diverges for flashbacks, free indirect discourse, and embedded tenses. Tense locates R relative to P (not S).
- speechTime : T
Speech time (S): when the utterance occurs
- perspectiveTime : T
Perspective time (P): origin of temporal deixis. Equals S in root clauses; shifts in flashback, FID, embedded tenses.
- referenceTime : T
Reference time (R): the time under discussion
- eventTime : T
Event time (E): when the described event occurs (E)
Instances For
PAST: R < P (reference time precedes perspective time) — a view of
Core.Order.holds Tense.past. [Kip02]: tense locates R relative to P, not S.
Equations
Instances For
PRESENT: R = P (reference time equals perspective time). Present is the one tense that
needs no ordering, so it stays the bare equality (frame predicates over unordered time keep
typechecking); it is definitionally Core.Order.holds Tense.present.
Equations
- f.isPresent = (f.referenceTime = f.perspectiveTime)
Instances For
FUTURE: P < R (perspective time precedes reference time).
Equations
Instances For
NONPAST: P ≤ R (present or future) ([Kle16]) — the view of
Core.Order.holds Tense.nonpast. Completes the four-way relation on frames.
Equations
Instances For
Simple case: P = S (root clause, no perspective shift).
Equations
- f.isSimpleCase = (f.perspectiveTime = f.speechTime)
Instances For
Kiparsky's unmarked P–R default: P ≤ R.
Equations
- f.defaultPR = (f.perspectiveTime ≤ f.referenceTime)
Instances For
Kiparsky's unmarked E–R default: E ≤ R.
Equations
- f.defaultER = (f.eventTime ≤ f.referenceTime)
Instances For
Perfective: E ⊆ R (event contained in reference).
Simplified to E = R for point-based times.
TODO: proper interval-based perfective/imperfective distinction
lives in Semantics/Aspect/Basic.lean (ViewpointAspectB).
Equations
- f.isPerfective = (f.eventTime = f.referenceTime)
Instances For
Perfect: E < R (event precedes reference)
Equations
- f.isPerfect = (f.eventTime < f.referenceTime)
Instances For
Prospective: R < E (reference precedes event)
Equations
- f.isProspective = (f.referenceTime < f.eventTime)
Instances For
Unfolding lemmas and decidability #
One _def simp lemma and one Decidable instance per predicate, so
consumers can close concrete goals with decide and rewrite with
simp only [isPast_def] instead of unfolding definitions by hand.
In the simple case (P = S), isPast reduces to R < S.
Equations
- f.instDecidableIsPast = id inferInstance
Equations
- f.instDecidableIsFuture = id inferInstance
Equations
- f.instDecidableIsNonpast = id inferInstance
Domain Bridge #
The Reichenbach frame as a generic temporal Domain over the
universal Orientation role vocabulary: central = utterance
(S), sub-TOs = [perspective (P), topic (R), situation (E)], every
TO a point interval (degenerate via TO.pure). This is the
canonical bridge from the four-field record to the
framework-agnostic Domain substrate.
Proved equal to Domain.ofReichenbachPoints (toDomain_eq); the
four find? simp lemmas inherited from Domain then resolve all
role lookups by rfl.
Equations
Instances For
TenseSystem and AspectSystem Instances #
Reichenbach as a TenseSystem (anchor = P, situation = R)
and AspectSystem (event = E, reference = R) instance.
The instances commit Reichenbach to the Orientation role
vocabulary so generic Domain-level tooling (e.g.
relatedByName-driven analyses) can dispatch over any tense or
aspect framework. The concrete isPast/isPerfect/etc.
predicates remain on ReichenbachFrame; the Allen bridges above
(*_iff_relatedByName) show how they project into the algebra.
Equations
- Time.reichenbachFrame_tenseSystem = { toDomain := Time.ReichenbachFrame.toDomain, anchor := Tense.Orientation.perspective, located := Tense.Orientation.topic, anchor_mem := ⋯ }
Equations
- Time.reichenbachFrame_aspectSystem = { toDomain := Time.ReichenbachFrame.toDomain, event := Tense.Orientation.situation, reference := Tense.Orientation.topic }
Generic-predicate specializations #
The generic TenseSystem/AspectSystem predicates agree with the
concrete ReichenbachFrame predicates — the frame is the point-time
specialization of the interval-native generic layer.
Point frames cannot be imperfective. [Kle94]'s imperfective
(TT properly inside TSit) requires a non-degenerate interval, and
every ReichenbachFrame TO is a point. The audit-level claim that
"the imperfective is unrepresentable in the point-frame core" is
here a theorem, not a docstring.