This is the proof-to-prose companion for
formalization/NonlinearDynamics/Random/RandomCocycles/LogPlusIntegrability.lean.
It covers all sixteen public declarations in exact source order. There are no
private declarations in the module.
The immediate predecessor, Finite-Time Cocycle Norms in Lean, fixed the maximum absolute row-sum norm and the extended-real logarithm that sends a zero matrix to bottom. Reusable foundations include one-sided discrete matrix cocycle , induced infinity operator norm , extended log-norm observable , and log-positive integrability envelope . The parallel textbook treatment is Finite-Horizon Log-Positive Cocycle Integrability. The immediate successor, Integrated Log-Positive Growth in Lean, integrates these envelopes against the raw measure, proves scalar subadditivity under the same explicit one-step hypothesis, and applies Mathlib’s deterministic Fekete theorem. That next result is still neither a samplewise theorem nor a Lyapunov exponent.
Choose a route up
| Route | Begin | Destination |
|---|---|---|
| First encounter | Why keep only positive logarithmic growth? | Understand the expansion envelope and what it erases |
| Comparison route | Two logarithms, two jobs | Separate the extended log observable from the real log-positive envelope |
| Dynamics route | The cocycle split becomes log-positive subadditivity | Preserve the base shift and matrix order |
| Orbit-sum route | Unroll the horizon into one-step costs | Derive the finite majorant by induction |
| Measure route | Measure preservation transports integrability | See why no independence or probability normalization is needed |
| Lean route | The complete declaration map | Audit all sixteen declarations in source order |
| Boundary route | The empty dimension is still a theorem branch | Check time zero and all horizons without a hidden positive-dimension premise |
| Integrity route | Exactly what the module does not prove | Keep finite-horizon \(L^1\) control separate from asymptotic dynamics |
Learning objectives
By the summit, a reader should be able to:
- define Mathlib’s \(\log^+\) on real inputs;
- explain why \(\log^+0=0\) is useful for upper integrability control;
- explain why the same convention cannot record contraction or collapse;
- distinguish \(G_k\) from RMT-14’s extended log-norm observable;
- compute \(G_k\) in collapse, contraction, neutral, and expansion examples;
- prove nonnegativity and ordinary measurability of \(G_k\);
- preserve the shifted later block in the two-time cocycle inequality;
- use monotonicity and the product estimate for \(\log^+\);
- define the one-step orbit sum \(S_k\);
- read the empty-sum and successor-sum identities;
- derive \(G_k\le S_k\) by natural-number induction;
- distinguish ordinary measurability from integrability;
- state the explicit one-step integrability hypothesis;
- explain how measure preservation transports an \(L^1\) function;
- explain why a finite sum of orbit pullbacks is integrable;
- read the final domination proof through the real absolute value;
- identify every ambient typeclass assumption;
- explain why the proof works for a raw measure, not only a probability;
- evaluate the observables in empty matrix dimension;
- run and audit the Lean module from the command line; and
- list the missing hypotheses before any asymptotic or derivative claim.
Lineage, contribution, and boundary
Positive logarithmic moments are classical inputs in random matrix product theory. Furstenberg and Kesten study normalized growth of random products under probabilistic assumptions, and Kingman develops an ergodic theory for subadditive stochastic processes. Those works explain the historical importance of controlling positive logarithmic growth (Furstenberg and Kesten, 1960; Kingman, 1968).
RMT-15 does not formalize either paper. Its local contribution is the finite-horizon bridge those later theories would need: one exact real-valued envelope, one explicit one-step \(L^1\) predicate, one finite orbit-sum majorant, and a checked propagation proof for every natural horizon. The module neither chooses nor proves an asymptotic theorem.
Why keep only positive logarithmic growth?
A matrix norm measures amplification. Its logarithm changes multiplicative growth into additive growth:
\[ \log(ab)=\log a+\log b \]for positive \(a\) and \(b\). But the ordinary logarithm has a negative tail near zero. A product that contracts very strongly has a very negative log norm; an extended logarithm assigns the value \(-\infty\) to a product that becomes exactly zero.
Suppose the immediate question is narrower:
Is the upward growth cost integrable?
Then negative values do not threaten the positive tail. The standard envelope
\[ \log^+x=\max\{0,\log x\} \]discards them. For a nonnegative matrix norm \(x\),
\[ \log^+x= \begin{cases} 0, & 0\le x\le 1,\\ \log x, & 1\le x. \end{cases} \]Mathlib defines Real.posLog exactly as the maximum of zero and
the total real logarithm. The notation log⁺ is activated by
open scoped Real
(Mathlib positive-log documentation).
Four scales, one warning
Take four hypothetical finite-time norms:
| Norm \(N_k(\omega)\) | Dynamical reading | Extended log from RMT-14 | Positive log in RMT-15 |
|---|---|---|---|
| \(0\) | exact singular collapse | \(\bot\) | \(0\) |
| \(1/4\) | strict contraction | \(\log(1/4)\lt 0\) | \(0\) |
| \(1\) | neutral scale | \(0\) | \(0\) |
| \(e^3\) | expansion | \(3\) | \(3\) |
The values are illustrative calculations, not measurements. They make the semantic boundary visible: RMT-15 keeps the last row’s expansion cost and flattens the first three rows.
Figure: each one-step expansion cost is observed at a successive base point. Their finite sum is an integrable majorant once the one-step cost is integrable and the base preserves the measure. Contraction and collapse both enter the envelope as zero. The plate stops before probability, ergodicity, time normalization, limits, exponents, or invariant splittings.
Two logarithms, two jobs
RMT-14 and RMT-15 intentionally expose different observables.
Let
\[ E_k(\omega) =\operatorname{ENNReal.log} \bigl(\lVert\Phi(k,\omega)\rVert_{\mathrm e}\bigr) \in\overline{\mathbb R} \]be the RMT-14 extended log-norm observable, and let
\[ G_k(\omega)=\log^+\lVert\Phi(k,\omega)\rVert\in\mathbb R \]be the new envelope.
| Question | \(E_k\) | \(G_k\) |
|---|---|---|
| Codomain | extended real | real |
| Zero matrix | bottom | zero |
| Strict contraction | negative finite value | zero |
| Norm one | zero | zero |
| Expansion | positive logarithm | positive logarithm |
| Main local role | finite-time logarithmic growth scale | positive-tail \(L^1\) control |
| Integrability proved here | no | yes, under an explicit one-step hypothesis |
The two observables do not serve the same formal role. The extended version remembers the lower endpoint and contraction. The positive version is easier to dominate by a nonnegative real function and is tailored to an upper-integrability statement.
There is also no theorem in this module equating \(G_k\) with the positive part of \(E_k\). Such a bridge might be formulated later, but it would need careful endpoint and coercion bookkeeping. RMT-15 works directly with the already real-valued norm \(N_k\).
The finite-horizon setup
The ambient data are:
- an outcome or base-state type \(\Omega\);
- a measurable space on \(\Omega\);
- a finite decidable matrix index type \(\iota\);
- an arbitrary measure \(\mu\) on \(\Omega\); and
- a
DiscreteMatrixCocycle\(C\).
The cocycle stores a measurable base map \(T:\Omega\to\Omega\), a proof that \(T\) preserves \(\mu\), and a measurable complex matrix generator. Its finite value obeys
\[ \Phi(m+k,\omega) =\Phi(k,T^m\omega)\Phi(m,\omega). \]The matrix norm chosen in RMT-14 is the maximum absolute row-sum operator norm. Define
\[ N_k(\omega)=\lVert\Phi(k,\omega)\rVert, \qquad G_k(\omega)=\log^+N_k(\omega). \]Nothing in those definitions turns \(\mu\) into a probability measure. The
type Measure Ω permits finite, infinite, zero, and probability
measures. Integrability is always stated with the actual \(\mu\).
The cocycle split becomes log-positive subadditivity
RMT-14 proved
\[ N_{m+k}(\omega) \le N_k(T^m\omega)N_m(\omega). \]Both sides are nonnegative. Mathlib proves that \(\log^+\) is monotone on the nonnegative axis, so
\[ \log^+N_{m+k}(\omega) \le \log^+\bigl(N_k(T^m\omega)N_m(\omega)\bigr). \]Mathlib also proves the product estimate
\[ \log^+(xy)\le\log^+x+\log^+y \]for all real \(x,y\). Combining the two gives
\[ G_{m+k}(\omega) \le G_k(T^m\omega)+G_m(\omega). \]The order is not cosmetic. The first term on the right is the later \(k\)-step block, observed after the first \(m\) base steps. The second term is the earlier \(m\)-step prefix. Real addition is commutative, but the matrix identity that produced the bound is not.
Unroll the horizon into one-step costs
The key finite sum is
\[ S_k(\omega)=\sum_{j=0}^{k-1}G_1(T^j\omega). \]It charges one log-positive generator norm at each point visited by the base orbit. There are exactly \(k\) terms.
For the first few horizons,
\[ \begin{aligned} S_0(\omega)&=0,\\ S_1(\omega)&=G_1(\omega),\\ S_2(\omega)&=G_1(\omega)+G_1(T\omega),\\ S_3(\omega)&=G_1(\omega)+G_1(T\omega)+G_1(T^2\omega). \end{aligned} \]The successor law is
\[ S_{k+1}(\omega)=S_k(\omega)+G_1(T^k\omega). \]Now apply the two-time inequality with \(m=k\) and the later length equal to one:
\[ G_{k+1}(\omega) \le G_1(T^k\omega)+G_k(\omega). \]If the induction hypothesis gives \(G_k(\omega)\le S_k(\omega)\), then
\[ \begin{aligned} G_{k+1}(\omega) &\le G_1(T^k\omega)+G_k(\omega)\\ &\le G_1(T^k\omega)+S_k(\omega)\\ &=S_{k+1}(\omega). \end{aligned} \]At \(k=0\), both \(G_0\) and \(S_0\) are zero. Therefore
\[ G_k(\omega)\le S_k(\omega) \]for every natural horizon and every base point.
Why this is a useful majorant
The left side is a norm of an entire matrix product followed by a nonlinear function. The right side is a finite sum of copies of one fixed observable along the base orbit. Measure preservation transports that one-step observable through each base iterate. This converts a product-level integrability problem into repeated use of a one-step hypothesis.
The argument is finite. It uses neither a limit nor a uniform bound in \(k\). The integral of \(S_k\) may grow with \(k\), and the module does not estimate that growth.
Measurability comes before integrability
An integrability proof needs a measurable representative and finite integral control. RMT-15 proves ordinary measurability for both \(G_k\) and \(S_k\).
For \(G_k\), the chain is
\[ \omega \longmapsto N_k(\omega) \longmapsto \log^+N_k(\omega). \]RMT-14 supplies measurability of \(N_k\). Mathlib supplies continuity of \(\log^+\), hence its measurability. Composition closes the proof.
For \(S_k\), each base iterate \(T^j\) is measurable because it is measure preserving. Therefore
\[ \omega\longmapsto G_1(T^j\omega) \]is measurable. A finite sum of measurable real functions is measurable.
Measurability alone gives no finite integral. A measurable function can have an infinite \(L^1\) norm. That is why declaration 13 introduces an explicit hypothesis rather than attempting to derive it from the cocycle structure.
Measure preservation transports integrability
The sole new analytic premise is
\[ \operatorname{Integrable}(G_1,\mu). \]In Lean this becomes the proposition
HasIntegrableGeneratorLogPlus C. It is a definition, not a
structure field, an instance, or a theorem forced by measurability.
Mathlib defines Integrable f μ as almost-everywhere strong
measurability together with a finite integral of the norm of \(f\)
(Mathlib integrability documentation). For a
real-valued nonnegative function such as \(G_1\), that is the expected finite
positive integral condition.
If \(T^j\) preserves \(\mu\), pulling back an integrable function by \(T^j\) preserves integrability:
\[ G_1\in L^1(\mu) \quad\Longrightarrow\quad G_1\circ T^j\in L^1(\mu). \]Conceptually, measure preservation leaves the measured distribution of values
unchanged under pullback. Formally, the proof invokes
MeasurePreserving.integrable_comp_of_integrable with RMT-13’s
theorem that every natural base iterate preserves \(\mu\).
Since \(S_k\) is a finite sum of those pullbacks,
\[ S_k\in L^1(\mu). \]Finally,
\[ 0\le G_k(\omega)\le S_k(\omega). \]The norm of a nonnegative real is itself, so the pointwise majorization is
also the norm bound required by Integrable.mono’. Ordinary
measurability of \(G_k\) supplies its almost-everywhere strong measurability.
Thus
for every finite \(k\).
What measure preservation does not supply
Measure preservation does not prove the starting hypothesis \(G_1\in L^1(\mu)\). It only transports an already integrable observable. It also supplies none of the following:
- total mass one;
- ergodicity;
- mixing;
- independence of successive matrices;
- a tail estimate;
- a finite negative logarithmic moment; or
- a time-normalized limit.
Measure preservation does imply that \(A\circ T^j\) has the same pushforward measure as \(A\), because \(T^j\) preserves \(\mu\). RMT-15 does not export that equality as a separately named theorem, and equal marginals would not imply independence or any joint-law factorization.
On an infinite measure space, even a nonzero constant function may fail to be integrable. The explicit predicate prevents the base invariance proof from hiding that issue.
A physical reading, with the bridge left explicit
Imagine a nonlinear discrete system \(x_{n+1}=F(x_n)\). If differentiability and a chain rule have been established, the derivative of a \(k\)-step orbit can be a product of Jacobian matrices. The finite-time norm then bounds the amplification of infinitesimal perturbations, and
\[ \log^+\lVert D F^k(x)\rVert \]records only the expansion part of that bound.
The orbit sum says that total finite-horizon expansion is no larger than the sum of one-step expansion budgets encountered along the orbit. This resembles an energy or resource ledger: a step with norm at most one contributes no positive cost, while a step with norm above one contributes its logarithmic excess.
That picture is motivation only. The checked cocycle stores arbitrary measurable complex matrices. RMT-15 does not define \(F\), tangent spaces, derivatives, Jacobians, smoothness, or a chain rule. Calling its generator a Jacobian requires a separate Lean bridge.
The empty dimension is still a theorem branch
The index type \(\iota\) is finite and decidable, but it is not globally assumed nonempty. When \(\iota\) is empty, there is exactly one square matrix. It is both the empty identity matrix and the zero matrix. Under the selected row-sum norm, its norm is zero.
Therefore every finite-time positive-log observable is zero:
\[ G_k(\omega)=\log^+0=0. \]At time zero the proof cannot use the positive-dimensional fact that the identity has norm one. It splits on whether \(\iota\) is empty:
- in the empty branch, \(N_0=0\) and \(\log^+0=0\);
- in the nonempty branch, \(N_0=1\) and \(\log^+1=0\).
Both branches reach the same theorem \(G_0=0\), but for different reasons. This is a good example of why formalization exposes boundary assumptions that informal notation often suppresses.
The orbit sums are also zero in empty dimension. The module exports the stronger all-horizon result for \(G_k\); the corresponding orbit-sum fact follows by simplification but is not a separate public declaration.
The complete declaration map
All declarations below live in
NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.
The ambient variables are
universe uΩ uι
variable {Ω : Type uΩ} {ι : Type uι} [MeasurableSpace Ω]
[Fintype ι] [DecidableEq ι] {μ : Measure Ω}
Every occurrence of \(C\) has type
DiscreteMatrixCocycle (ι := ι) μ. That structure already
contains a \(\mu\)-preserving measurable base and a measurable generator.
There is no ambient ProbabilityMeasure μ,
Nonempty ι, ergodicity instance, or invertibility premise.
Declaration ledger
| No. | Lean declaration | Kind | Additional premise | Mathematical role |
|---|---|---|---|---|
| 1 | logPlusNormObservable | definition | none | \(G_k=\log^+N_k\) |
| 2 | logPlusNormObservable_nonneg | theorem | none | \(0\le G_k\) |
| 3 | logPlusNormObservable_zero | simp theorem | none | \(G_0=0\) in every finite dimension |
| 4 | logPlusNormObservable_one | simp theorem | none | \(G_1=\log^+\lVert A\rVert\) |
| 5 | measurable_logPlusNormObservable | theorem | none | ordinary measurability of \(G_k\) |
| 6 | logPlusNormObservable_add_le | theorem | none | shifted two-time subadditivity |
| 7 | logPlusNormObservable_eq_zero_of_isEmpty | simp theorem | IsEmpty ι | all horizons vanish in empty dimension |
| 8 | orbitLogPlusSum | definition | none | finite orbit sum \(S_k\) |
| 9 | orbitLogPlusSum_zero | simp theorem | none | \(S_0=0\) |
| 10 | orbitLogPlusSum_succ | simp theorem | none | append the newest one-step term |
| 11 | measurable_orbitLogPlusSum | theorem | none | ordinary measurability of \(S_k\) |
| 12 | logPlusNormObservable_le_orbitLogPlusSum | theorem | none | \(G_k\le S_k\) |
| 13 | HasIntegrableGeneratorLogPlus | definition | none | explicit \(G_1\in L^1(\mu)\) predicate |
| 14 | HasIntegrableGeneratorLogPlus.integrable_at_base_iterate | theorem | predicate | every \(G_1\circ T^j\) is integrable |
| 15 | HasIntegrableGeneratorLogPlus.integrable_orbitLogPlusSum | theorem | predicate | every finite \(S_k\) is integrable |
| 16 | HasIntegrableGeneratorLogPlus.integrable_logPlusNormObservable | theorem | predicate | every finite \(G_k\) is integrable |
The next sections follow this exact order.
Declaration 1: logPlusNormObservable
def logPlusNormObservable
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) : Ω → ℝ :=
fun ω ↦ log⁺ (C.normObservable k ω)
This is a function of the base point. It stays in \(\mathbb R\), unlike the extended observable from RMT-14. The definition makes no integrability claim.
Declaration 2: logPlusNormObservable_nonneg
theorem logPlusNormObservable_nonneg
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) (ω : Ω) :
0 ≤ C.logPlusNormObservable k ω
The proof is exactly Mathlib’s Real.posLog_nonneg. The theorem is
pointwise and needs no measure calculation.
Declaration 3: logPlusNormObservable_zero
@[simp] theorem logPlusNormObservable_zero
(C : DiscreteMatrixCocycle (ι := ι) μ) :
C.logPlusNormObservable 0 = fun _ ↦ 0
The proof splits with isEmpty_or_nonempty ι. In empty dimension
it rewrites the time-zero norm with
normObservable_eq_zero_of_isEmpty and uses
Real.posLog_zero. In positive dimension it uses
normObservable_zero and Real.posLog_one.
Declaration 4: logPlusNormObservable_one
@[simp] theorem logPlusNormObservable_one
(C : DiscreteMatrixCocycle (ι := ι) μ) :
C.logPlusNormObservable 1 = fun ω ↦ log⁺ ‖C.generator ω‖
RMT-13 identifies the one-step cocycle value with the generator, and RMT-14 identifies the one-step norm observable with its norm. Simplification exposes the one-step integrability target.
Declaration 5: measurable_logPlusNormObservable
theorem measurable_logPlusNormObservable
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) :
Measurable (C.logPlusNormObservable k)
The proof composes C.measurable_normObservable k with
Real.continuous_posLog.measurable. This is ordinary
measurability, stronger than the almost-everywhere measurability later needed
for integrability.
Declaration 6: logPlusNormObservable_add_le
theorem logPlusNormObservable_add_le
(C : DiscreteMatrixCocycle (ι := ι) μ) (m k : ℕ) (ω : Ω) :
C.logPlusNormObservable (m + k) ω ≤
C.logPlusNormObservable k (C.base^[m] ω) +
C.logPlusNormObservable m ω
The proof has two inequalities:
Real.posLog_le_posLoglifts RMT-14’s norm bound through monotonicity on nonnegative inputs.Real.posLog_mulbounds the positive log of the product by the sum of positive logs.
No factor is assumed nonzero. If a block norm is zero, its positive logarithm is zero and the upper bound remains valid.
Declaration 7: logPlusNormObservable_eq_zero_of_isEmpty
@[simp] theorem logPlusNormObservable_eq_zero_of_isEmpty [IsEmpty ι]
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) :
C.logPlusNormObservable k = fun _ ↦ 0
RMT-14 proves every norm observable is zero in empty dimension. Simplification then uses \(\log^+0=0\). This theorem covers all horizons, not only time zero.
Declaration 8: orbitLogPlusSum
def orbitLogPlusSum
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) : Ω → ℝ :=
fun ω ↦ ∑ j ∈ Finset.range k,
C.logPlusNormObservable 1 (C.base^[j] ω)
Finset.range k contains \(0,\ldots,k-1\). The double-binder form
in Lean is a finite sum over membership in that range.
Declaration 9: orbitLogPlusSum_zero
@[simp] theorem orbitLogPlusSum_zero
(C : DiscreteMatrixCocycle (ι := ι) μ) :
C.orbitLogPlusSum 0 = fun _ ↦ 0
The range at zero is empty, and the empty real sum is zero.
Declaration 10: orbitLogPlusSum_succ
@[simp] theorem orbitLogPlusSum_succ
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) :
C.orbitLogPlusSum (k + 1) = fun ω ↦
C.orbitLogPlusSum k ω +
C.logPlusNormObservable 1 (C.base^[k] ω)
The proof is the finite-sum identity
Finset.sum_range_succ. The term at index \(k\) is appended to the
previous prefix.
Declaration 11: measurable_orbitLogPlusSum
theorem measurable_orbitLogPlusSum
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) :
Measurable (C.orbitLogPlusSum k)
For each \(j\), the base iterate is measurable because
C.base_preserving.measurable.iterate j is measurable. Compose it
with declaration 5 at horizon one, then use
Finset.measurable_sum.
Declaration 12: logPlusNormObservable_le_orbitLogPlusSum
theorem logPlusNormObservable_le_orbitLogPlusSum
(C : DiscreteMatrixCocycle (ι := ι) μ) (k : ℕ) (ω : Ω) :
C.logPlusNormObservable k ω ≤ C.orbitLogPlusSum k ω
The proof is induction on \(k\). The zero case simplifies. At a successor,
declaration 6 treats an earlier length \(k\) followed by a later length one,
the induction hypothesis bounds the prefix, and declaration 10 identifies the
sum. One final
add_comm matches the order in which the two inequalities present
their real summands.
Declaration 13: HasIntegrableGeneratorLogPlus
def HasIntegrableGeneratorLogPlus
(C : DiscreteMatrixCocycle (ι := ι) μ) : Prop :=
Integrable (C.logPlusNormObservable 1) μ
This definition names the sole added analytic hypothesis. By declaration 4 it is equivalently the integrability of \(\omega\mapsto\log^+\lVert C.\mathrm{generator}(\omega)\rVert\), although the module does not export that equivalence as a separate theorem.
Declaration 14: integrable_at_base_iterate
theorem HasIntegrableGeneratorLogPlus.integrable_at_base_iterate
{C : DiscreteMatrixCocycle (ι := ι) μ}
(hC : C.HasIntegrableGeneratorLogPlus) (j : ℕ) :
Integrable (fun ω ↦
C.logPlusNormObservable 1 (C.base^[j] ω)) μ
The proof changes the lambda into the composition
\(G_1\circ T^j\). RMT-13 proves that \(T^j\) preserves \(\mu\), and Mathlib’s
integrable_comp_of_integrable transports hC.
Declaration 15: integrable_orbitLogPlusSum
theorem HasIntegrableGeneratorLogPlus.integrable_orbitLogPlusSum
{C : DiscreteMatrixCocycle (ι := ι) μ}
(hC : C.HasIntegrableGeneratorLogPlus) (k : ℕ) :
Integrable (C.orbitLogPlusSum k) μ
Unfold the sum. Declaration 14 proves every summand is integrable, and
integrable_finsetSum closes the finite sum.
Declaration 16: integrable_logPlusNormObservable
theorem HasIntegrableGeneratorLogPlus.integrable_logPlusNormObservable
{C : DiscreteMatrixCocycle (ι := ι) μ}
(hC : C.HasIntegrableGeneratorLogPlus) (k : ℕ) :
Integrable (C.logPlusNormObservable k) μ
This is the summit theorem. Its majorant is declaration 15. Declaration 5 supplies the target’s almost-everywhere strong measurability. Pointwise, declaration 2 rewrites the real norm as the function itself:
\[ \lVert G_k(\omega)\rVert_{\mathbb R} =\lvert G_k(\omega)\rvert =G_k(\omega). \]Declaration 12 then proves
\(\lVert G_k(\omega)\rVert\le S_k(\omega)\).
Mathlib’s Integrable.mono’ concludes integrability.
Proof architecture at a glance
RMT-14 measurable norm N_k
|
v
continuous real positive log
|
v
measurable, nonnegative G_k
|
+---- cocycle norm split + posLog product inequality
| |
| v
| G_(m+k) <= shifted G_k + G_m
| |
| v
| induction: G_k <= S_k
|
one-step hypothesis G_1 in L1(mu)
|
v
measure-preserving pullback along every T^j
|
v
each orbit term is integrable
|
v
finite sum S_k is integrable
|
v
domination: every finite-horizon G_k is integrable
The left branch supplies the measurable target and pointwise bound. The right branch supplies an integrable majorant. The final theorem joins them.
Running and auditing the Lean
From the repository root on macOS or Linux:
source "$HOME/.elan/env"
cd formalization
lake env lean NonlinearDynamics/Random/RandomCocycles/LogPlusIntegrability.lean
cd ..
A successful invocation exits silently with status zero. From the repository root, build the complete formalization with:
cd formalization
lake build
To inspect the public contract in a scratch file, import the module and ask Lean for representative declarations:
import NonlinearDynamics.Random.RandomCocycles.LogPlusIntegrability
#check NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.logPlusNormObservable
#check NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.logPlusNormObservable_add_le
#check NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.orbitLogPlusSum
#check NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.logPlusNormObservable_le_orbitLogPlusSum
#check NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.HasIntegrableGeneratorLogPlus
#check NonlinearDynamics.Random.RandomCocycles.DiscreteMatrixCocycle.HasIntegrableGeneratorLogPlus.integrable_logPlusNormObservable
The source imports RMT-14 and
Mathlib.Analysis.SpecialFunctions.Log.PosLog. The latter import
is deliberate: it provides the definition, notation, continuity,
nonnegativity, monotonicity, and product estimate used by the module.
Common proof and interpretation traps
Trap 1: treating \(\log^+\) as the signed logarithm
The equation \(\log(xy)=\log x+\log y\) does not become an equality for \(\log^+\). The available statement is an inequality. Flattening negative values destroys additivity.
Trap 2: inferring that a zero envelope means neutral dynamics
\(G_k(\omega)=0\) means only that \(N_k(\omega)\le1\). The matrix may be norm preserving, strictly contracting, or zero.
Trap 3: forgetting the shifted base point
The later block begins at \(T^m\omega\). Writing \(G_{m+k}\le G_k(\omega)+G_m(\omega)\) would erase the cocycle’s orbit geometry.
Trap 4: deriving integrability from measurability
Declarations 5 and 11 prove measurability only. Declaration 13 is a genuine new premise.
Trap 5: deriving integrability from measure preservation
Measure preservation transports integrability; it does not create it. The one-step cost must already be integrable.
Trap 6: silently assuming total mass one
The module uses a raw Measure Ω. No expectation notation or
probability normalization appears.
Trap 7: assuming independence
The orbit observations can be strongly dependent. The finite-sum integrability proof needs no independence because \(L^1\) is closed under finite sums.
Trap 8: assuming a uniform-in-time estimate
For every fixed \(k\), the module proves \(G_k\in L^1\). It does not produce a single integrable function dominating all \(k\), a bound independent of \(k\), or convergence as \(k\to\infty\).
Trap 9: forgetting the negative side
Integrability of \(\log^+\lVert A\rVert\) controls upward growth. It says nothing about \(\log^+\lVert A^{-1}\rVert\), negative logarithmic growth, or singular collapse.
Trap 10: calling the generator a Jacobian
An arbitrary measurable complex matrix field is not automatically the derivative of a nonlinear system.
Exactly what the module does not prove
The following nonclaims are part of the contract:
- \(\mu\) is not proved or assumed to be a probability measure.
- The base transformation is not assumed ergodic.
- No mixing, stationarity beyond measure preservation, independence, or identical-distribution theorem is supplied.
- No normalized quantity \(k^{-1}G_k\) is defined.
- No almost-sure, in-probability, or \(L^1\) limit is proved.
- Kingman’s subadditive ergodic theorem is not imported or applied.
- The Furstenberg-Kesten theorem is not formalized or applied.
- No Lyapunov exponent is defined.
- No deterministic almost-sure growth rate is proved.
- No Oseledets theorem, invariant filtration, or invariant splitting is present.
- No two-sided time or inverse cocycle is defined.
- No integrability of \(\log^+\lVert A^{-1}\rVert\) is assumed or proved.
- No negative-part integrability is proved.
- A zero matrix is not distinguished from a strict contraction by \(G_k\).
- No Jacobian, derivative cocycle, tangent bundle, or chain rule is present.
- No random differential equation or stochastic differential equation is modeled.
- No dimension-uniform estimate is claimed.
- No optimality or equality case for the orbit-sum majorant is proved.
- No integral identity for \(S_k\) is exported.
- No theorem identifies this envelope with the RMT-14 extended observable.
These omissions are not defects in the finite-horizon theorem. They mark the interfaces that future modules must formalize explicitly.
Exercises with solutions
Exercise 1: compute the envelope
Compute \(\log^+x\) for \(x=0\), \(x=e^{-2}\), \(x=1\), and \(x=e^2\).
Solution.
\[ \log^+0=0,\qquad \log^+(e^{-2})=0,\qquad \log^+1=0,\qquad \log^+(e^2)=2. \]The first three inputs all lie at or below one.
Exercise 2: find the information loss
Can \(G_k(\omega)=0\) prove that \(\Phi(k,\omega)\) is invertible?
Solution. No. A zero matrix and an invertible strict contraction both have positive logarithm zero.
Exercise 3: preserve the shift
Write declaration 6 at \(m=2\) and \(k=3\).
Solution.
\[ G_5(\omega)\le G_3(T^2\omega)+G_2(\omega). \]The later three-step block begins after the earlier two-step prefix.
Exercise 4: expand the orbit sum
Write \(S_4(\omega)\).
Solution.
\[ S_4(\omega) =G_1(\omega)+G_1(T\omega)+G_1(T^2\omega)+G_1(T^3\omega). \]Exercise 5: identify the induction split
Which substitution into declaration 6 starts the successor step for \(G_{k+1}\)?
Solution. Set the earlier length to \(m=k\) and the later length to one. This gives
\[ G_{k+1}(\omega)\le G_1(T^k\omega)+G_k(\omega). \]Exercise 6: separate two uses of the base map
Why is the base iterate needed once for measurability and again for integrability?
Solution. Measurability of \(T^j\) lets us compose it with \(G_1\) to obtain a measurable summand. Measure preservation of \(T^j\) is stronger and transports the finite \(L^1\) integral.
Exercise 7: reject an independence premise
Where does independence enter the proof of declaration 15?
Solution. Nowhere. Each finite summand is integrable, and finite sums of integrable real functions are integrable regardless of dependence.
Exercise 8: inspect a raw infinite measure
If \(\mu(\Omega)=\infty\) and \(G_1(\omega)=1\) everywhere, is declaration 13 automatic?
Solution. No. The integral of the constant one function is infinite. Measure preservation does not make it integrable.
Exercise 9: explain the norm rewrite
Why does declaration 16 use nonnegativity before applying domination?
Solution. Integrable.mono’ asks for a bound on the norm of
the target. Since \(G_k\ge0\),
\(\lVert G_k(\omega)\rVert=\lvert G_k(\omega)\rvert=G_k(\omega)\), so the
already proved inequality \(G_k\le S_k\) has the required shape.
Exercise 10: test empty dimension
What are \(G_7(\omega)\) and \(S_7(\omega)\) when \(\iota\) is empty?
Solution. Every cocycle norm is zero, so every positive-log term is zero. Thus both values are zero.
Exercise 11: compare the two zeros
What do RMT-14 and RMT-15 return when \(\Phi(k,\omega)=0\)?
Solution. RMT-14’s extended log-norm observable returns bottom. RMT-15’s real positive-log envelope returns zero.
Exercise 12: locate the probability gap
Which Lean assumption would show that \(\mu\) has total mass one?
Solution. A suitable probability-measure wrapper or typeclass would be needed. No such assumption appears in this module.
Exercise 13: locate the ergodicity gap
Does MeasurePreserving imply ergodicity?
Solution. No. Measure preservation says measured sets are transported without changing the measure. Ergodicity is an additional statement about invariant sets.
Exercise 14: reject a Lyapunov conclusion
Why does integrability of every fixed \(G_k\) not produce a Lyapunov exponent?
Solution. A Lyapunov exponent concerns normalized long-time logarithmic growth. The module defines no normalized sequence and proves no convergence theorem. Moreover, \(G_k\) has erased negative growth.
Exercise 15: identify the derivative gap
What must be formalized before interpreting the generator as \(DF\)?
Solution. At minimum, one needs a nonlinear state space and map, differentiability, a coordinate or tangent-space identification, measurability of the derivative field, and a chain rule matching the cocycle product order.
Exercise 16: audit the hypothesis count
How many new integrability hypotheses are introduced?
Solution. One:
HasIntegrableGeneratorLogPlus C. All finite-horizon
integrability results are derived from it.
The next ridge
RMT-15 now provides the positive-tail \(L^1\) input and a finite-horizon subadditive envelope. A responsible asymptotic step must first choose the actual process whose normalized limit is sought. The real positive part \(G_k\) is not enough to represent contraction. RMT-14’s extended observable retains collapse as bottom but raises different integrability and codomain questions.
If the next target is a subadditive ergodic theorem, the project must match the exact shifted indexing convention, add whatever probability or finite measure assumptions the chosen theorem needs, state stationarity and ergodicity at the correct strength, and verify the theorem’s integrability hypotheses. A deterministic limit under ergodicity is a further conclusion, not a synonym for measure preservation.
If the next target is a multiplicative ergodic theorem, more structure is needed: a suitable matrix or linear-map cocycle interface, dimension conditions, a treatment of singular values or exterior powers, and possibly inverse-log integrability depending on the theorem variant. If the target is nonlinear dynamics, a separate derivative-cocycle bridge must come first.
The finite-horizon envelope is therefore a staging theorem. It makes the positive-growth hypothesis reusable and checked while leaving every asymptotic choice visible.
References
The links below were checked on 2026-07-21. The pinned local Mathlib 4.32.0 checkout remains the exact API authority for the Lean proof.
Mathlib contributors.
Mathlib 4.32.0 release,
2026. This is the dependency release selected by
formalization/lakefile.toml.
Mathlib contributors.
The positive part of the logarithm,
Mathlib 4 documentation. This official page defines
Real.posLog and the notation log⁺, proves
nonnegativity, continuity, monotonicity on nonnegative inputs, the zero
criterion, and the product upper bound used by RMT-15.
Mathlib contributors.
Integrable functions,
Mathlib 4 documentation. This official page defines
Integrable and documents the measure-preserving composition,
finite-sum, and domination tools used in declarations 14 through 16.
Harry Furstenberg and Harry Kesten. “Products of Random Matrices”, The Annals of Mathematical Statistics 31(2), 457-469, 1960. This original paper is cited as historical motivation for normalized logarithmic growth of random matrix products. RMT-15 proves no result from it.
J. F. C. Kingman. “The Ergodic Theory of Subadditive Stochastic Processes”, Journal of the Royal Statistical Society: Series B 30(3), 499-510, 1968. This original paper locates the later asymptotic theory. RMT-15 proves only a finite pointwise subadditive inequality and finite-horizon integrability.
