Documentation

CsdLean4.RecordLayer.ChainClocks

Clocks along the chain: clock delay against graph distance, and chain length #

Category: 7-SigmaLayer (the record layer — the network witness of the clock-and-echo programme). BACKLOG #190 (out of #39; the residue of #188).

The scheduled chain of CV/ChainExchange.lean carries one excitation from site 0 to site k in exactly k hop times. Here a physical record clock of #185 sits at every site, all started at the switch-on and all calibrated to the hop time — the synchronisation and calibration conventions of #186 and #188, stated as hypotheses — on one arena with the exchange, under one two-time measure-preserving evolution.

What this says about an effective cone #

The clock delay equals the graph distance because every edge is switched on for the same hop time τ_hop = πħ/2J: the schedule gives the network one edge per τ_hop, and that is the only reason the two agree. A universal effective cone for this network would have to be exactly that — the same hop time on every edge, supplied by the schedule, not derived from the graph. Nothing here says the cone is universal, and nothing identifies 1 / τ_hop with a limiting speed; cf. the containment, never identification, of CV/TwoCones.lean.

Honest scope #

References: specs/BACKLOG.md #190, #188, #186, #185, #39; CV/ChainExchange.lean, RecordLayer/RecordClock.lean, RecordLayer/ClockCalibration.lean, CV/CausalDistance.lean (causalDist, causalDist_add_le, causalDist_pos_iff), CV/TwoCones.lean.

The arena and its two-time propagator #

@[reducible, inline]

The common arena: the scheduled exchange on n + 1 sites and a record clock at every site.

Equations
Instances For
    noncomputable def CSD.RecordLayer.chainEvolve {n K : ℕ} (J ħ T : ℝ) (s t : SigmaLayer.OnticTime) :

    The joint two-time propagator: the scheduled exchange from s to t, and every clock on its own schedule, all started at the switch-on 0.

    Equations
    Instances For
      theorem CSD.RecordLayer.chainEvolve_exchange {n K : ℕ} (J ħ T : ℝ) (s t : SigmaLayer.OnticTime) (x : ChainArena n K) :
      (chainEvolve J ħ T s t x).1 = CV.arenaKick ((CV.chainSchedule n J ħ).evolve s t) x.1
      theorem CSD.RecordLayer.chainEvolve_clock {n K : ℕ} (J ħ T : ℝ) (s t : SigmaLayer.OnticTime) (x : ChainArena n K) (j : Fin (n + 1)) :
      (chainEvolve J ħ T s t x).2 j = clockEvolve T s t (x.2 j)
      theorem CSD.RecordLayer.chainEvolve_comp {n K : ℕ} (J ħ T : ℝ) (s t u : SigmaLayer.OnticTime) :
      chainEvolve J ħ T t u ∘ chainEvolve J ħ T s t = chainEvolve J ħ T s u

      ★ The two-time composition law on the common arena.

      ★ The joint propagator preserves Liouville measure — Fubini–Study on the exchange, Haar on every clock — for every reference point of the Fubini–Study measure: it is a dynamics.

      Readiness, preparation, readings #

      Every clock ready.

      Equations
      Instances For
        noncomputable def CSD.RecordLayer.chainPrep {n K : ℕ} (b : Fin 2) (c : Fin (n + 1) → ClockArena K) :

        The ready preparation with message b: the message point and the clocks c.

        Equations
        Instances For
          theorem CSD.RecordLayer.chainPrep_mem_ready {n K : ℕ} {c : Fin (n + 1) → ClockArena K} (hc : ∀ (j : Fin (n + 1)), c j ∈ ClockReady K) (b : Fin 2) :
          noncomputable def CSD.RecordLayer.siteReading {n K : ℕ} (J ħ T τ : ℝ) (x : ChainArena n K) (j : Fin (n + 1)) (t : SigmaLayer.OnticTime) :

          The reading of site j's clock, unit τ, at ontic time t from the switch-on.

          Equations
          Instances For
            theorem CSD.RecordLayer.siteReading_eq {n K : ℕ} (J ħ T τ : ℝ) (x : ChainArena n K) (j : Fin (n + 1)) (t : SigmaLayer.OnticTime) :
            siteReading J ħ T τ x j t = tickReading τ (clockEvolve T 0 t (x.2 j))
            theorem CSD.RecordLayer.chainEvolve_exchange_zero {n K : ℕ} (J ħ T : ℝ) (t : SigmaLayer.OnticTime) (x : ChainArena n K) :
            (chainEvolve J ħ T 0 t x).1 = CV.chainArenaFlow J ħ t x.1

            From the switch-on, the exchange factor is the scheduled arena flow.

            Clock delay against graph distance #

            theorem CSD.RecordLayer.tickCount_at_reception {n K : ℕ} {J ħ T : ℝ} (hJ : 0 < J) (hħ : 0 < ħ) (hT : T = CV.hopTime J ħ) (hK : 0 < K) (hnK : n ≤ K) {x : ChainArena n K} (hx : x ∈ ChainReady n K) (k : Fin (n + 1)) :
            tickCount ((chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) x).2 k) = ↑k

            The clock at site k shows k ticks when the signal arrives.

            theorem CSD.RecordLayer.reception_reading {n K : ℕ} {J ħ T : ℝ} (hJ : 0 < J) (hħ : 0 < ħ) (hT : T = CV.hopTime J ħ) (hK : 0 < K) (hnK : n ≤ K) {x : ChainArena n K} (hx : x ∈ ChainReady n K) (k : Fin (n + 1)) :
            siteReading J ħ T T x k (↑↑k * CV.hopTime J ħ) = ↑↑k * CV.hopTime J ħ

            ★★ The clock at site k, calibrated to the hop time, reads k τ_hop when the signal arrives — the transmission delay in the clock's own units.

            theorem CSD.RecordLayer.clock_delay_eq_graphDist {n K : ℕ} {J ħ T : ℝ} (hJ : 0 < J) (hħ : 0 < ħ) (hT : T = CV.hopTime J ħ) (hK : 0 < K) (hnK : n ≤ K) {x : ChainArena n K} (hx : x ∈ ChainReady n K) (k : Fin (n + 1)) :
            tickCount ((chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) x).2 k) = CV.graphDist (CV.pathGraph n) {0} k

            ★★★ Clock delay equals graph distance on this witness: the ticks shown at site k when the signal arrives are the graph distance from site 0 to site k on the path graph.

            theorem CSD.RecordLayer.reception_readout {n K : ℕ} {J ħ T : ℝ} (hJ : 0 < J) (hħ : 0 < ħ) (c : Fin (n + 1) → ClockArena K) (k : Fin (n + 1)) :
            CV.arenaObs (CV.occAt k) (chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) (chainPrep 1 c)).1 = 1 ∧ CV.arenaObs (CV.occAt k) (chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) (chainPrep 0 c)).1 = 0

            ★★ At the same moment the receiver at k reads the message: 1 for message 1, 0 for message 0.

            The reception as a record event labelled by the clock #

            noncomputable def CSD.RecordLayer.eventOfReception {n K : ℕ} (J ħ T : ℝ) (x : ChainArena n K) (k : Fin (n + 1)) :

            The reception at site k, as a record event: the site, at the period its own clock shows.

            Equations
            Instances For
              def CSD.RecordLayer.siteEvent {n : ℕ} (k : Fin (n + 1)) :

              The site event ⟨{k}, k⟩.

              Equations
              Instances For

                The inserted event: both ends of edge (k, k+1), at period k + 1.

                Equations
                Instances For
                  theorem CSD.RecordLayer.eventOfReception_eq {n K : ℕ} {J ħ T : ℝ} (hJ : 0 < J) (hħ : 0 < ħ) (hT : T = CV.hopTime J ħ) (hK : 0 < K) (hnK : n ≤ K) {x : ChainArena n K} (hx : x ∈ ChainReady n K) (k : Fin (n + 1)) :

                  The reception at k is the site event ⟨{k}, k⟩, under the stated calibration.

                  theorem CSD.RecordLayer.mem_graphBall_of_mem {n : ℕ} {E : Finset (Fin (n + 1) × Fin (n + 1))} {R : Finset (Fin (n + 1))} {k : Fin (n + 1)} (hk : k ∈ R) (d : ℕ) :

                  Consecutive site events are causally ordered.

                  The emission precedes every reception.

                  One edge of the chain already has two strict steps through the inserted event.

                  ★ The experiment's own chain of site events gives causalDist ≥ k, matching the clock.

                  ★★ Inserting events doubles the chain: through the pair events the longest chain from the emission to the reception at site m has at least 2m steps, while the clock shows m ticks.

                  theorem CSD.RecordLayer.clock_time_lt_causalDist {n m : ℕ} (hm : m ≤ n) (hm1 : 1 ≤ m) :

                  ★★ Clock time is not chain length: for every site m ≥ 1 the clock's elapsed ticks m are strictly less than the longest-chain separation from the emission.

                  The package #

                  theorem CSD.RecordLayer.chain_clocks {n K : ℕ} {J ħ T : ℝ} (hJ : 0 < J) (hħ : 0 < ħ) (hT : T = CV.hopTime J ħ) (hK : 0 < K) (hnK : n ≤ K) {c : Fin (n + 1) → ClockArena K} (hc : ∀ (j : Fin (n + 1)), c j ∈ ClockReady K) :
                  (∀ (s t u : SigmaLayer.OnticTime), chainEvolve J ħ T t u ∘ chainEvolve J ħ T s t = chainEvolve J ħ T s u) ∧ (∀ (s t : SigmaLayer.OnticTime) (p₀ : CV.FieldArena (n + 1) 2), MeasureTheory.MeasurePreserving (chainEvolve J ħ T s t) ((Matrix.UnitaryGroup.fsMeasure p₀).prod MeasureTheory.volume) ((Matrix.UnitaryGroup.fsMeasure p₀).prod MeasureTheory.volume)) ∧ (∀ (b : Fin 2) (k : Fin (n + 1)), tickCount ((chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) (chainPrep b c)).2 k) = CV.graphDist (CV.pathGraph n) {0} k) ∧ (∀ (k : Fin (n + 1)), CV.arenaObs (CV.occAt k) (chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) (chainPrep 1 c)).1 = 1 ∧ CV.arenaObs (CV.occAt k) (chainEvolve J ħ T 0 (↑↑k * CV.hopTime J ħ) (chainPrep 0 c)).1 = 0) ∧ (∀ (b : Fin 2) (k : Fin (n + 1)), eventOfReception J ħ T (chainPrep b c) k = siteEvent k) ∧ ∀ (m : ℕ) (hm : m ≤ n), m ≤ CV.causalDist (CV.pathGraph n) (siteEvent 0) (siteEvent ⟨m, ⋯⟩) ∧ 2 * m ≤ CV.causalDist (CV.pathGraph n) (siteEvent 0) (siteEvent ⟨m, ⋯⟩)

                  ★★★ Clocks along the chain. One two-time measure-preserving dynamics carries the scheduled exchange and a clock at every site; for every ready preparation the clock at site k shows k ticks when the signal arrives, which is the graph distance from site 0 to site k; the receiver at k reads the message at that moment; the reception is the record event ⟨{k}, k⟩; the site events alone give causalDist ≥ k, the inserted events give ≥ 2k, so clock time is below the longest chain for every k ≥ 1.