Chronological precedence: the causal order with its same-period steps removed #
Category: 3-Local (CV; the event layer of ST-1).
BACKLOG #192 (out of #39; the second of #191–#197).
CausalPrecedes E e₁ e₂ allows e₁.time = e₂.time with e₁.region ⊆ e₂.region-type steps: a
region-inclusion step at an unchanged period index is a strict causal step, and CausalDistance.lean
counts it. That is exactly how the inflation theorems of #188 and #190 are built: inserting "both ends
of the edge, at the period of the reception" between the emission and the reception adds a strict step
with no elapsed period. This file names the sub-relation whose strict part demands a strictly
later period, and proves what it changes and what it does not.
ChronoPrecedes E e₁ e₂ := CausalPrecedes E e₁ e₂ ∧ (e₁ = e₂ ∨ e₁.time < e₂.time);ChronoPrecedes.causalPrecedes— it is a sub-relation;chronoPrecedes_iff_of_time_ne— on events of distinct periods the two relations agree;chronoPrecedes_of_causalPrecedes_of_lt; ★not_chronoPrecedes_of_time_eq— distinct simultaneous events are chrono-incomparable (this is how simultaneous writes are handled: neither precedes the other);- ★
isPartialOrder_chronoPrecedes— a partial order (chronoPrecedes_refl/trans/antisymm); strictChrono E— the strict part as a relation chains run on; ★time_lt_of_strictChrono— its strict part excludes every transition with unchanged period;isTrans_strictChrono,isIrrefl_strictChrono(so a strict chrono chain is acyclic: the period strictly increases along it,time_add_length_le_of_chain);strictChrono_le_strictPrecedes— every chrono step is a causal step;chronoChainLengths,chronoDist— the longest chrono chain, built exactly ascausalDist; ★★chronoChainLengths_le_elapsed, ★★chronoDist_le_elapsed— the longest chrono chain is bounded by the elapsed periodse₂.time − e₁.time; ★chronoDist_le_causalDist— and never exceeds the causal longest chain;chronoDist_add_le— the reverse triangle inequality survives;chronoDist_pos_iff.
What this is not #
⚠️ CausalPrecedes is not redefined. It keeps its name, its theorems and its distance; the
inflation theorems three_le_causalDist and two_mul_le_causalDist stand untouched, and this file
says why they inflate: the steps they insert are strict causal steps with zero elapsed period, which
strictChrono excludes (RecordLayer/ChainChrono.lean exhibits them).
⚠️ Chrono chain length is not clock time in general. The bound chronoDist ≤ elapsed periods is an
inequality: a system may write several records in one period, and nothing here forces equality. Where
equality holds — the site chain of the path graph, RecordLayer/ChainChrono.lean — it is a property
of that witness.
⚠️ Everything is relative to the assumed coupling graph E, as in RecordCausalOrder.lean; no metric,
no volume element, no continuum.
References: specs/BACKLOG.md #192, #188, #190, #111, #39; CV/RecordCausalOrder.lean
(CausalPrecedes, isPartialOrder_causalPrecedes), CV/CausalDistance.lean (strictPrecedes,
chainLengths, causalDist), RecordLayer/ChainClocks.lean (pairEvent, two_mul_le_causalDist).
The relation #
Chronological precedence: causal precedence whose strict part demands a strictly later period.
Equations
- CSD.CV.ChronoPrecedes E e₁ e₂ = (CSD.CV.CausalPrecedes E e₁ e₂ ∧ (e₁ = e₂ ∨ e₁.time < e₂.time))
Instances For
A causal step to a strictly later period is a chrono step.
On events of distinct periods the two relations agree.
★ Distinct simultaneous events are chrono-incomparable.
★ Chronological precedence is a partial order on record events.
The strict part, as a relation chains run on #
Strict chronological precedence: a chrono step to a different event.
Equations
- CSD.CV.strictChrono E = {q : CSD.CV.RecordEvent K × CSD.CV.RecordEvent K | CSD.CV.ChronoPrecedes E q.1 q.2 ∧ q.1 ≠ q.2}
Instances For
Every chrono step is a causal step.
A strict chrono step never returns: the relation is irreflexive, hence (with transitivity) acyclic.
Along a chrono chain the period strictly increases #
★ A strict chrono chain is acyclic and its length is at most the elapsed periods: the head's period plus the length is at most the last's period.
The chrono chain lengths and the chrono distance #
The lengths of the strict chrono chains from e₁ to e₂.
Equations
Instances For
★★ Every chrono chain is bounded by the elapsed periods.
A chrono chain is a causal chain of the same length.
The chrono distance: the length of the longest strict chrono chain, 0 when there is none.
Equations
- CSD.CV.chronoDist E e₁ e₂ = sSup (CSD.CV.chronoChainLengths E e₁ e₂)
Instances For
★★ The longest chrono chain is bounded by the elapsed periods.
★ The chrono distance never exceeds the causal distance.
The longest chrono chain is attained.
★ The chrono distance is positive exactly on the strictly chrono-related pairs.
The reverse triangle inequality survives the restriction: chrono chains concatenate.