Temporal intervals #
@cite{allen-1983} @cite{kamp-reyle-1993} @cite{klein-1994} @cite{pancheva-2003} @cite{rouillard-2026} @cite{sagey-1986} @cite{smith-1997}
The basic interval type and its relational algebra: containment, subinterval, overlap, precedence, meets, plus the nuclear cluster needed by aspectual semantics (proper subinterval, final subinterval, initial overlap, isAfter/isBefore).
Open/closed boundary distinctions and generalized intervals
(@cite{rouillard-2026}) live in Generalized.lean.
Point interval: start = finish
Equations
- Core.Time.Interval.point t = { start := t, finish := t, valid := ⋯ }
Instances For
Proper subinterval: i₁ ⊆ i₂ with at least one strict boundary. Required for IMPF: reference time PROPERLY inside event runtime.
Equations
- i₁.properSubinterval i₂ = (i₁.subinterval i₂ ∧ (i₂.start < i₁.start ∨ i₁.finish < i₂.finish))
Instances For
An interval is a point iff its endpoints coincide (start = finish). The atomic case in the time dimension — used by Bennett-Partee 1972 strict subinterval property and Zhao 2025 ATOM-DIST_t at the atomic granularity.
Instances For
No interval is properly contained in itself.
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
- i₁.finalSubinterval i₂ = (i₁.subinterval i₂ ∧ i₁.finish = i₂.finish)
Instances For
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. @cite{smith-1997}: the neutral viewpoint uses the same interval relation.
Equations
- i₁.initialOverlap i₂ = (i₁.overlaps i₂ ∧ i₁.contains i₂.start)
Instances For
Final subinterval implies subinterval.
Every interval is a final subinterval of itself.
Overlap is reflexive: every interval overlaps itself.
Overlap is NOT transitive: [0,1] overlaps [1,2] and [1,2] overlaps [2,3], but [0,1] does not overlap [2,3].
This is the cornerstone property that distinguishes overlap from simultaneity (identity) and makes the No-Crossing Constraint derivable from temporal precedence alone (@cite{sagey-1986} §5.2.3, fn. 6).
Subintervals overlap their containing intervals.
Precedence is irreflexive: no interval precedes 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.
Consumed by GInterval (in Generalized.lean).
- closed : BoundaryType
- open_ : BoundaryType
Instances For
Equations
- Core.Time.Interval.instDecidableEqBoundaryType x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
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":
Interval.BoundaryType.closed/.open_ is isomorphic to
Core.Scale.Boundedness.closed/.open_.