Documentation

Linglib.Semantics.Tense.Reichenbach

Reichenbach's Temporal Framework #

[Kip02] [Kle94] [Rei47]

[Rei47] / [Kle94] tense–aspect parameters, extended with [Kip02]'s perspective time P.

Three (four) distinguished times:

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.

structure Time.ReichenbachFrame (T : Type u_1) :
Type u_1

Reichenbach's temporal parameters for tense/aspect analysis, extended with [Kip02]'s perspective time P.

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
    def Time.ReichenbachFrame.isPast {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

    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
      Instances For
        def Time.ReichenbachFrame.isFuture {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

        FUTURE: P < R (perspective time precedes reference time).

        Equations
        Instances For
          def Time.ReichenbachFrame.isNonpast {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

          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
            Instances For
              def Time.ReichenbachFrame.defaultPR {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

              Kiparsky's unmarked P–R default: P ≤ R.

              Equations
              Instances For
                def Time.ReichenbachFrame.defaultER {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

                Kiparsky's unmarked E–R default: E ≤ R.

                Equations
                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
                  Instances For
                    def Time.ReichenbachFrame.isPerfect {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

                    Perfect: E < R (event precedes reference)

                    Equations
                    Instances For
                      def Time.ReichenbachFrame.isProspective {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

                      Prospective: R < E (reference precedes event)

                      Equations
                      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.

                        @[simp]
                        theorem Time.ReichenbachFrame.isPast_def {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                        @[simp]
                        @[simp]
                        @[simp]
                        theorem Time.ReichenbachFrame.isPerfect_def {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                        theorem Time.ReichenbachFrame.isPast_simpleCase {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) (h : f.isSimpleCase) :

                        In the simple case (P = S), isPast reduces to R < S.

                        @[implicit_reducible]
                        instance Time.ReichenbachFrame.instDecidableIsPast {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                        Decidable f.isPast
                        Equations
                        @[implicit_reducible]
                        instance Time.ReichenbachFrame.instDecidableIsFuture {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                        Decidable f.isFuture
                        Equations
                        @[implicit_reducible]
                        instance Time.ReichenbachFrame.instDecidableIsNonpast {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                        Decidable f.isNonpast
                        Equations

                        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

                          isPast is exactly topic precedes perspective in the Allen algebra against the domain — the Reichenbach predicate grounded by construction in the Allen projection function on point intervals.

                          isFuture is exactly perspective precedes topic in the Allen algebra against the domain.

                          isPresent is exactly topic equal perspective in the Allen algebra against the domain.

                          isPerfect is exactly situation precedes topic in the Allen algebra against the domain.

                          isProspective is exactly topic precedes situation in the Allen algebra against the domain.

                          isPerfective is exactly situation equal topic in the Allen algebra against the domain. (For the point-time approximation; the proper interval-based perfective/imperfective distinction lives in Semantics/Lexical/Verb/ViewpointAspect.lean.)

                          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.

                          @[implicit_reducible]
                          Equations

                          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.

                          @[simp]
                          theorem Time.tenseSystem_isPast_iff {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                          @[simp]
                          theorem Time.tenseSystem_isPresent_iff {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                          @[simp]
                          theorem Time.tenseSystem_isFuture_iff {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :
                          @[simp]
                          theorem Time.aspectSystem_isPerfect_iff {T : Type u_1} [LinearOrder T] (f : ReichenbachFrame T) :

                          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.