Documentation

CsdLean4.Thermo.Equilibration

E4: equilibration of time-averaged reduced states, as a conditional theorem #

The equilibration arc's fourth item (specs/equilibration-arc-plan.md E4). It spends the generic engine CsdLean4/Mathlib/Dynamics/CorrelationDecay.lean on the observables E1 built.

⚠️ This is a conditional, and the antecedent is the whole content #

Both theorems below have the shape

if the flow preserves μ_FS, and its correlations for this observable decay with a summable envelope, then the time averages converge to the Fubini–Study average.

Neither hypothesis is proved, exhibited, or claimed to hold for any Σ. Nothing in the corpus proves that any dynamics mixes, and nothing here changes that. What E4 buys is a reformulation: equilibration stops being a dephasing story and becomes an ergodic-theoretic statement whose one hypothesis is explicit, quantitative, and checkable in principle. Producing an actual witness for the antecedent is E5's separate job, and until that exists these theorems are conditionals with an unpopulated antecedent — which is exactly why the hypothesis is named in the signature rather than folded into a definition.

What is proved #

⚠️ And the antecedent is empty for unitary Σ-dynamics (E5/E6) #

So the conditionals above are sound machinery whose hypothesis finite-dimensional unitary dynamics cannot meet. Read that as a limitation, not a refutation: equilibration in this setting rests on the typicality results (E1/E2), not on mixing. The engine itself is not vacuous — CsdLean4/Mathlib/Dynamics/CorrelationDecayWitness.lean exhibits a genuine witness (the doubling map on the circle), which is precisely a non-atomic, non-unitary system.

⚠️ Honest scope #

Reference: specs/equilibration-arc-plan.md (E4, and E5 for the non-vacuity requirement); MATHLIB-GAPS.md; specs/future-work.md.

★★ Time-averaged subsystem populations equilibrate — conditionally.

If Φ preserves the Fubini–Study measure and the population's correlations decay with a summable envelope ε, then the Birkhoff averages of (ρ_A)_{aa} converge in to d_B/N, which fs_blockPop_mean identifies as the maximally-mixed value 1/d_A.

The correlation hypothesis is stated at one lag, which is the form a physical estimate produces; HasCorrelationDecay.of_measurePreserving turns it into the two-index form the engine consumes.

★★ E4 composed with E1. Under the same two hypotheses, the time-averaged Hilbert–Schmidt deviation of the reduced state from maximally mixed converges in to the Lubkin–Page value (d_A + d_B)/(N + 1) − 1/d_A proved in fs_hsDeviationNormSq.

For a large environment that value is O(1/d_A · d_A/d_B)-small, so the conditional reads: a μ_FS-preserving flow with decaying correlations spends almost all of its time with the subsystem near maximally mixed. Again — conditional; see the header.

⚠️ E5's sharpness check: when the antecedent is empty #

The Q24 arithmetic both no-goes run on: for a nontrivial subsystem the population's second moment does not equal the square of its mean. fs_blockPop_sq and fs_blockPop_mean give (d_B²+d_B)/(N(N+1)) and d_B/N, and those agree exactly when N = d_B, i.e. d_A = 1.

theorem CSD.Thermo.not_hasCorrelationDecay_blockPop_of_periodic {N dA dB : } [NeZero N] (p₀ : LF4.CPN N) (e : Fin N Fin dA × Fin dB) (a : Fin dA) (hdA : 2 dA) {Φ : LF4.CPN NLF4.CPN N} {ε : } {k : } (hk : 0 < k) (hper : Φ^[k] = id) (hsum : Summable ε) :

⚠️ No periodic flow satisfies E4's antecedent for a nontrivial subsystem.

If Φ^[k] = id and d_A ≥ 2, then HasCorrelationDecay for the population observable is false for every summable envelope. So blockPop_timeAverage_tendsto, applied to a periodic Σ-flow, is a conditional whose antecedent cannot be met.

The proof is Q24 arithmetic against the periodic no-go. A periodic map forces ⟨x²⟩ = ⟨x⟩² (HasCorrelationDecay.integral_mul_self_eq_of_periodic), whereas fs_blockPop_sq and fs_blockPop_mean give ⟨x²⟩ = (d_B²+d_B)/(N(N+1)) and ⟨x⟩ = d_B/N. Those agree exactly when N = d_B, i.e. when d_A = 1 — no subsystem at all.

Superseded in strength by not_hasCorrelationDecay_blockPop_of_unitary (E6, below), which drops the periodicity hypothesis entirely: no unitary flow satisfies the antecedent. This periodic version is kept because it applies to any periodic Φ, not only to unitary ones.

★★ Q12-d route 2: the finite-horizon statement, which E6 does not reach #

★★ Equilibration at a finite horizon — and this one a unitary Σ-flow can have.

If the population's correlations are within ε on lags below T, the time average at horizon T sits within (2/T) Σ_{u<T} ε u of the maximally-mixed value. No summability, no limit.

Why this matters. not_hasCorrelationDecay_blockPop_of_unitary (E6) shows no unitary flow can satisfy the asymptotic antecedent: its powers recur, so the correlations recur. That argument needs the bound at arbitrarily large lags and says nothing over a bounded window. A unitary flow on a large space can decorrelate for a very long time before recurring — which is what a physical environment does — and this theorem is exactly the statement that survives.

So E4's conclusion is not lost for finite-dimensional unitary dynamics; what is lost is its asymptotic form. specs/q12-fibre-mechanism-scoping.md records this as Q12-d route 2, the recommended escape from W1.

⚠️ Still conditional, and the antecedent is still not exhibited. Nothing here shows any particular Σ-flow has small ε on lags below T; that is a quantitative estimate about a specific dynamics, and it remains open. What has changed is that the hypothesis is no longer provably unsatisfiable — which is what E6 established for the asymptotic version.

E6: the analytic bridge to the general unitary no-go #

The three lemmas below are generic (no CSD content) and are extraction candidates for Mathlib/QuantumInfo/; they live here to keep the rebuild surface small while E6 is in progress.

A unitary matrix acts as an isometry. The general statement behind the per-gate signFlip_normSq / perm_normSq / hadamard_normSq of CanonicalTypicality.

theorem CSD.Thermo.continuous_unitaryEntry {N : } (k j : Fin N) :
Continuous fun (V : (Matrix.unitaryGroup (Fin N) )) => V k j
noncomputable def CSD.Thermo.matDev {N : } (V : (Matrix.unitaryGroup (Fin N) )) :

The deviation of a unitary from the identity, measured entrywise in ℓ¹.

ℓ¹ rather than ℓ² deliberately: it makes the uniform estimate below a triangle inequality plus coord_norm_le, with no Cauchy–Schwarz and no square roots anywhere.

Equations
Instances For
    @[simp]
    theorem CSD.Thermo.matDev_one {N : } :
    matDev 1 = 0
    theorem CSD.Thermo.toEuclideanLin_entry {N : } (A : Matrix (Fin N) (Fin N) ) (v : EuclideanSpace (Fin N)) (k : Fin N) :
    ((Matrix.toEuclideanLin A) v).ofLp k = j : Fin N, A k j * v.ofLp j
    theorem CSD.Thermo.norm_sub_coord_le {N : } (V : (Matrix.unitaryGroup (Fin N) )) (v : EuclideanSpace (Fin N)) (k : Fin N) :
    ((Matrix.toEuclideanLin V) v).ofLp k - v.ofLp k (∑ j : Fin N, V k j - 1 k j) * v

    One coordinate of (V - 1)ψ, bounded by the ℓ¹ deviation of that row times ‖ψ‖. Triangle inequality plus coord_norm_le — this is where the ℓ¹ choice pays off.

    theorem CSD.Thermo.abs_momentMap_smul_sub_le {N : } [NeZero N] (V : (Matrix.unitaryGroup (Fin N) )) (p : LF4.CPN N) (k : Fin N) :
    |LF4.momentMap (V p) k - LF4.momentMap p k| 2 * j : Fin N, V k j - 1 k j

    The uniform estimate, one coordinate. The moment map moves by at most twice the ℓ¹ deviation of the acting unitary's row — uniformly in the state, which is what replaces the unavailable dominated-convergence argument.

    theorem CSD.Thermo.blockPop_eq_sum {N dA dB : } (e : Fin N Fin dA × Fin dB) (q : LF4.CPN N) (a : Fin dA) :
    blockPop e q a = b : Fin dB, LF4.momentMap q (e.symm (a, b))
    theorem CSD.Thermo.abs_blockPop_smul_sub_le {N dA dB : } [NeZero N] (e : Fin N Fin dA × Fin dB) (V : (Matrix.unitaryGroup (Fin N) )) (p : LF4.CPN N) (a : Fin dA) :
    |blockPop e (V p) a - blockPop e p a| 2 * matDev V

    The uniform estimate for the population observable: it moves by at most 2 · matDev V, uniformly in the state. Summing the coordinate estimate over the a-block and discarding the other blocks (all terms nonnegative) turns the row sums into the full matDev.

    The correlation moves by at most 2 · matDev V. The uniform estimate integrates directly — no dominated convergence, which is what FirstCountableTopology's absence rules out.

    theorem CSD.Thermo.smul_iterate {N : } (U : (Matrix.unitaryGroup (Fin N) )) (u : ) (p : LF4.CPN N) :
    (fun (q : LF4.CPN N) => U q)^[u] p = U ^ u p
    theorem CSD.Thermo.not_hasCorrelationDecay_blockPop_of_unitary {N dA dB : } [NeZero N] (p₀ : LF4.CPN N) (e : Fin N Fin dA × Fin dB) (a : Fin dA) (hdA : 2 dA) (U : (Matrix.unitaryGroup (Fin N) )) {ε : } (hsum : Summable ε) :

    ★★ E6, the general no-go: no unitary flow satisfies E4's antecedent for a nontrivial subsystem. For d_A ≥ 2 and any unitary U, HasCorrelationDecay for the population observable along p ↦ U • p is false for every summable envelope.

    This is the almost-periodicity obstruction in full, no longer restricted to the periodic case.

    Since 2026-08-24 it is a one-line consequence of the general statement, MeasureTheory.not_hasCorrelationDecay_of_compactGroup: no flow generated by a compact group has decaying correlations for an observable of nonzero variance. The recurrence argument that used to sit here has moved there, and what is left is the three inputs specific to this case — the uniform transfer abs_corr_smul_sub_le as a modulus, smul_iterate to identify iterates with powers, and Q24's arithmetic blockPop_variance_ne for the variance. The general form is what makes the same obstruction available to the Kähler fibre shift (CSD.LF4.KahlerFlow.not_hasCorrelationDecay_kFlow) without repeating any of it.

    Read it as a limitation, not a refutation. E4's machinery is sound; what this says is that its antecedent is not populated by finite-dimensional unitary Σ-dynamics, so equilibration in that setting must rest on the typicality results (E1/E2) rather than on mixing.