Documentation

Linglib.Core.Temporal.Time

Theory-Neutral Temporal Infrastructure #

@cite{allen-1983} @cite{champollion-2015} @cite{fox-hackl-2006} @cite{kamp-reyle-1993} @cite{klein-1994} @cite{kratzer-1989} @cite{rouillard-2026} @cite{zhao-2025} @cite{smith-1991}

Framework-agnostic types for temporal reasoning: intervals, temporal relations, situations (world–time pairs), and concrete time instances.

These definitions are used across truth-conditional semantics, event semantics, dynamic semantics, and intensional semantics. The theory-specific layer (branching time, temporal propositions) remains in Theories/Semantics.Montague/Core/Time.

Key Concepts #

  1. Times as primitives (intervals or instants)
  2. Situations as world-time pairs
  3. Temporal relations (precedence, overlap, containment)
  4. Atomic distributivity (subinterval property, @cite{zhao-2025})
structure Core.Situation (W : Type u_1) (Time : Type u_2) :
Type (max u_1 u_2)

A situation is a part of a world at a time.

Following Kratzer's situation semantics:

  • Situations are "slices" of possible worlds
  • They have both spatial and temporal extent
  • They can be minimal witnesses for propositions

We model situations as world–time pairs, abstracting from spatial extent. This is the most basic composition of ontological primitives.

  • world : W

    The world this situation is part of

  • time : Time

    The temporal coordinate of the situation

Instances For
    def Core.instReprSituation.repr {W✝ : Type u_1} {Time✝ : Type u_2} [Repr W✝] [Repr Time✝] :
    Situation W✝ Time✝Std.Format
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      instance Core.instReprSituation {W✝ : Type u_1} {Time✝ : Type u_2} [Repr W✝] [Repr Time✝] :
      Repr (Situation W✝ Time✝)
      Equations
      class Core.Time.TimeStructure (Time : Type u_1) extends LinearOrder Time :
      Type u_1

      Abstract time type.

      We keep this polymorphic to allow:

      • Discrete times (ℕ, ℤ)
      • Dense times (ℚ, ℝ)
      • Abstract/opaque times

      The key requirement is a linear order for temporal relations.

      Instances
        structure Core.Time.Interval (Time : Type u_1) [LE Time] :
        Type u_1

        Temporal interval: a pair of times [start, end].

        Following standard interval semantics.

        Instances For
          def Core.Time.Interval.point {Time : Type u_1} [LinearOrder Time] (t : Time) :

          Point interval: start = finish

          Equations
          Instances For
            def Core.Time.Interval.contains {Time : Type u_1} [LinearOrder Time] (i : Interval Time) (t : Time) :

            Does time t fall within interval i?

            Equations
            Instances For
              def Core.Time.Interval.containsB {Time : Type u_1} [LinearOrder Time] [DecidableRel fun (x1 x2 : Time) => x1 x2] (i : Interval Time) (t : Time) :

              Decidable containment for computational use

              Equations
              Instances For
                def Core.Time.Interval.subinterval {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                Interval i₁ is contained in i₂

                Equations
                Instances For
                  def Core.Time.Interval.overlaps {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                  Intervals overlap

                  Equations
                  Instances For
                    def Core.Time.Interval.precedes {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                    i₁ precedes i₂ (no overlap, i₁ entirely before i₂)

                    Equations
                    Instances For
                      def Core.Time.Interval.meets {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                      i₁ meets i₂ (i₁ ends exactly when i₂ starts)

                      Equations
                      Instances For
                        def Core.Time.Interval.properSubinterval {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                        Proper subinterval: i₁ ⊆ i₂ with at least one strict boundary. Required for IMPF: reference time PROPERLY inside event runtime.

                        Equations
                        Instances For
                          def Core.Time.Interval.isAfter {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                          i₁ is entirely after i₂ (i₁ starts at or after i₂ finishes).

                          Equations
                          Instances For
                            def Core.Time.Interval.isBefore {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                            i₁ is entirely before i₂.

                            Equations
                            Instances For
                              theorem Core.Time.Interval.properSub_implies_sub {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) (h : i₁.properSubinterval i₂) :
                              i₁.subinterval i₂
                              @[simp]
                              theorem Core.Time.Interval.subinterval_refl {Time : Type u_1} [LinearOrder Time] (i : Interval Time) :

                              No interval is properly contained in itself.

                              theorem Core.Time.Interval.isAfter_iff_isBefore {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :
                              i₁.isAfter i₂ i₂.isBefore i₁
                              def Core.Time.Interval.finalSubinterval {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                              Final subinterval: i₁ ⊆ i₂ and they share the same right endpoint. @cite{pancheva-2003}: PTS(i', i) iff i is a final subinterval of i'.

                              Equations
                              Instances For
                                def Core.Time.Interval.initialOverlap {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) :

                                Initial overlap (∂): i₁ and i₂ overlap, and the start of i₂ is in i₁. @cite{pancheva-2003}: i ∂τ(e) — the beginning of the eventuality is included in the reference interval but the end may not be. Used for NEUTRAL viewpoint aspect.

                                Equations
                                Instances For
                                  theorem Core.Time.Interval.finalSub_implies_sub {Time : Type u_1} [LinearOrder Time] (i₁ i₂ : Interval Time) (h : i₁.finalSubinterval i₂) :
                                  i₁.subinterval i₂

                                  Final subinterval implies subinterval.

                                  Every interval is a final subinterval of itself.

                                  Whether an interval's boundary is included (closed) or excluded (open). @cite{rouillard-2026} §2.2.4: the distinction between closed and open times is central to deriving the polarity sensitivity of G-TIAs. Event runtimes are closed; PTSs are open intervals.

                                  Instances For
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      structure Core.Time.Interval.GInterval (Time : Type u_2) [LE Time] :
                                      Type u_2

                                      A generalized interval with specified boundary types. Extends the basic Interval with open/closed annotations on each end. @cite{rouillard-2026} eq. (14a–b), (99a–b).

                                      • left : Time

                                        Left endpoint

                                      • right : Time

                                        Right endpoint

                                      • leftType : BoundaryType

                                        Left boundary type: closed [m or open]m

                                      • rightType : BoundaryType

                                        Right boundary type: closed m] or open m[

                                      • valid : self.left self.right

                                        The endpoints are ordered

                                      Instances For
                                        def Core.Time.Interval.GInterval.closed {Time : Type u_2} [LinearOrder Time] (i : Interval Time) :

                                        A closed interval [m₁, m₂]: both endpoints included. @cite{rouillard-2026} eq. (14a): C := {t | min(t) ⊑ᵢ t ∧ max(t) ⊑ᵢ t}.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          def Core.Time.Interval.GInterval.open_ {Time : Type u_2} [LinearOrder Time] (i : Interval Time) :

                                          An open interval]m₁, m₂[: both endpoints excluded. @cite{rouillard-2026} eq. (14b): O := {t | min(t) ⊄ᵢ t ∨ max(t) ⊄ᵢ t}.

                                          Equations
                                          Instances For
                                            def Core.Time.Interval.GInterval.toOpen {Time : Type u_2} [LinearOrder Time] (gi : GInterval Time) :

                                            The o(t) operation: open counterpart of a time. @cite{rouillard-2026} eq. (99a): if t is open, o(t) = t; if t is closed, o(t) is the open interval with the same endpoints.

                                            Equations
                                            Instances For

                                              The c(t) operation: closed counterpart of a time. @cite{rouillard-2026} eq. (99b): if t is closed, c(t) = t; if t is open, c(t) adds the endpoints.

                                              Equations
                                              Instances For

                                                Is this interval closed (both boundaries included)?

                                                Equations
                                                Instances For

                                                  Is this interval open (both boundaries excluded)?

                                                  Equations
                                                  Instances For
                                                    def Core.Time.Interval.GInterval.gcontains {Time : Type u_2} [LinearOrder Time] (gi : GInterval Time) (m : Time) :

                                                    Containment for generalized intervals: m is in gi. For closed endpoints, ≤ is used; for open endpoints, <.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      def Core.Time.Interval.GInterval.gsubinterval {Time : Type u_2} [LinearOrder Time] (gi₁ gi₂ : GInterval Time) :

                                                      Generalized subinterval: gi₁ ⊆ gi₂ (every moment in gi₁ is in gi₂).

                                                      Equations
                                                      Instances For

                                                        Convert a closed GInterval back to the basic Interval type.

                                                        Equations
                                                        Instances For
                                                          @[simp]

                                                          The closed counterpart of an open interval is always closed.

                                                          @[simp]

                                                          The open counterpart is always open.

                                                          @[simp]

                                                          toClosed is idempotent.

                                                          @[simp]

                                                          toOpen is idempotent.

                                                          Aspectual boundedness of a situation.

                                                          Whether a situation is conceptualized as having inherent boundaries:

                                                          • bounded: telic / perfective / closed (achievements, accomplishments)
                                                          • unbounded: atelic / imperfective / open (activities, states)

                                                          Cross-cuts Vendler classes and aspectual viewpoint. Used by event semantics (telicity), aspect theory (perfective/imperfective), and temporal discourse interpretation (sequential vs. simultaneous default readings).

                                                          Instances For
                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For

                                                              SituationBoundedness → MereoTag: bounded = quantized, unbounded = cumulative. Bounded situations (telic/perfective) are mereologically quantized; unbounded situations (atelic/imperfective) are cumulative.

                                                              Equations
                                                              Instances For

                                                                Temporal relation type for tense operators.

                                                                These relate two times (typically event time and reference/speech time).

                                                                Instances For
                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    def Core.Time.TemporalRelation.eval {Time : Type u_1} [LinearOrder Time] :
                                                                    TemporalRelationTimeTimeProp

                                                                    Evaluate a temporal relation on two times

                                                                    Equations
                                                                    Instances For
                                                                      def Core.Time.TemporalRelation.evalB {Time : Type u_1} [LinearOrder Time] [DecidableEq Time] [DecidableRel fun (x1 x2 : Time) => x1 < x2] [DecidableRel fun (x1 x2 : Time) => x1 x2] :
                                                                      TemporalRelationTimeTimeBool

                                                                      Decidable evaluation

                                                                      Equations
                                                                      Instances For

                                                                        Integer times for concrete examples.

                                                                        Using ℤ allows both past (negative) and future (positive) times relative to a speech time of 0.

                                                                        Equations

                                                                        Speech time at 0 by convention

                                                                        Equations
                                                                        Instances For

                                                                          Example: yesterday (t = -1)

                                                                          Equations
                                                                          Instances For

                                                                            Example: today (t = 0)

                                                                            Equations
                                                                            Instances For

                                                                              Example: tomorrow (t = 1)

                                                                              Equations
                                                                              Instances For

                                                                                Interval boundary type maps to scale boundedness. @cite{rouillard-2026}: closed runtimes correspond to closed scales (licensed); open PTSs correspond to open scales (blocked/information collapse). This is the "interval generalization": BoundaryType.closed/.open_ in Core/Time is isomorphic to Boundedness.closed/.open_ in Core/MeasurementScale.

                                                                                Equations
                                                                                Instances For
                                                                                  @[reducible, inline]
                                                                                  abbrev Core.Time.EvQuant (Event : Type u_1) :
                                                                                  Type u_1

                                                                                  An event quantifier: a predicate on event predicates. V(P) holds iff "there is an event satisfying P" according to V's quantificational force.

                                                                                  Equations
                                                                                  Instances For
                                                                                    def Core.Time.AtomDist {Event : Type u_1} {α : Type u_2} [LinearOrder α] (τ : EventInterval α) (V : EvQuant Event) :

                                                                                    ATOM-DIST_α (@cite{zhao-2025}, Def. 5.3): an event quantifier V satisfies ATOM-DIST with respect to trace function τ iff for every event predicate P and subinterval i' of τ(e), V also holds for the restriction of P to events whose trace is i'.

                                                                                    Formally: V(P) → ∀ e, P(e) → ∀ i', subinterval(i', τ(e)) → V(λ e'. P(e') ∧ τ(e') = i')

                                                                                    This captures the subinterval property parameterized over any linearly ordered dimension α.

                                                                                    Equations
                                                                                    Instances For
                                                                                      @[reducible, inline]
                                                                                      abbrev Core.Time.AtomDist_t {Event : Type u_1} {Time : Type u_2} [LinearOrder Time] (τ_t : EventInterval Time) (V : EvQuant Event) :

                                                                                      ATOM-DIST_t: temporal atomic distributivity. Abbreviation for ATOM-DIST with respect to a temporal trace.

                                                                                      Equations
                                                                                      Instances For
                                                                                        @[reducible, inline]
                                                                                        abbrev Core.Time.AtomDist_d {Event : Type u_1} {Deg : Type u_2} [LinearOrder Deg] (τ_d : EventInterval Deg) (V : EvQuant Event) :

                                                                                        ATOM-DIST_d: degree atomic distributivity. Abbreviation for ATOM-DIST with respect to a degree trace.

                                                                                        Equations
                                                                                        Instances For
                                                                                          def Core.Time.antiAtomDistLicensed {Event : Type u_1} {α : Type u_2} [LinearOrder α] (τ : EventInterval α) (V : EvQuant Event) :

                                                                                          NOT-ATOM-DIST_α licensing condition: A particle is licensed by an event quantifier V (w.r.t. trace τ) iff V does NOT satisfy ATOM-DIST_α. This is the presupposition of Mandarin le and mei-you.

                                                                                          Equations
                                                                                          Instances For