FormalConjecturesForMathlib/Dynamics/SymbolicDynamics/BlockComplexity.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1

4 declarations, 0 contain sorry, 0 declared as axioms

Block complexity and entropy of a sequence

The block complexity $p(n, a)$ of a sequence $a$ is the number of distinct blocks of $n$ consecutive terms of $a$. The entropy of $a$ is the exponential growth rate of $p(n, a)$.

References:

Main definitions

Imports (5)
Imported by 2 files
  1. def SymbolicDynamics.blockComplexity The block complexity $p(n, a)$ of a sequence $a$, that is, the number of distinct blocks $a_k a_{k+1} \cdots a_{k+n-1}$ of $n$ consecutive terms of $a$ line 55 source

    Source documentation

    The block complexity $p(n, a)$ of a sequence $a$, that is, the number of distinct blocks $a_k a_{k+1} \cdots a_{k+n-1}$ of $n$ consecutive terms of $a$. It is ⊤ when $n \ge 1$ and $a$ takes infinitely many values.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, ENNReal

    Proof uses: Set.encard, Fin, Set.ofPred, Exists, Eq, HAdd.hAdd

    4 instances, coercions and auxiliary constants left out.

    noncomputable def blockComplexity {α : Type*} (a : ℕ → α) (n : ℕ) : ℝ≥0∞ :=
    …
  2. def SymbolicDynamics.blockEntropy The entropy of a sequence line 64 source

    Source documentation

    The entropy of a sequence $a$, $$E(a) = \lim_{n \to \infty} \frac{\log p(n, a)}{n}.$$ The limit exists because $n \mapsto \log p(n, a)$ is subadditive, so it agrees with the limsup used here. The value is ⊤ exactly when $a$ takes infinitely many values.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, EReal

    Proof uses: Filter.limsup, HDiv.hDiv, ENNReal.log, SymbolicDynamics.blockComplexity, Filter.atTop

    12 instances, coercions and auxiliary constants left out.

    noncomputable def blockEntropy {α : Type*} (a : ℕ → α) : EReal :=
    …
  3. theorem SymbolicDynamics.blockComplexity_const A constant sequence has exactly one block of each length line 68 source

    Source documentation

    A constant sequence has exactly one block of each length.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Eq, ENNReal, SymbolicDynamics.blockComplexity, OfNat.ofNat

    Proof uses: Set, Fin, Set.ofPred, Exists, HAdd.hAdd, Singleton.singleton, Set.ext, of_eq_true, Iff, Membership.mem, Eq.trans, True, congr, congrArg, congrFun', funext, iff_self, Set.encard, ENat, Set.encard_singleton and 2 more

    17 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

    Open to load the checked before-and-after goal states.

    theorem blockComplexity_const {α : Type*} (c : α) (n : ℕ) :
        blockComplexity (fun _ ↦ c) n = 1 := by
    …

    Mentions: c, SymbolicDynamics.blockComplexity

  4. theorem SymbolicDynamics.blockEntropy_const A constant sequence has zero entropy line 77 source

    Source documentation

    A constant sequence has zero entropy.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, EReal, SymbolicDynamics.blockEntropy, Nat, OfNat.ofNat

    Proof uses: of_eq_true, Eq.trans, True, congrFun', congrArg, Filter.limsup, HDiv.hDiv, ENNReal.log, SymbolicDynamics.blockComplexity, Filter.atTop, Filter, funext, ENNReal, SymbolicDynamics.blockComplexity_const, ENNReal.log_one, EReal.zero_div, Filter.limsup_const, eq_self

    27 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem blockEntropy_const {α : Type*} (c : α) : blockEntropy (fun _ ↦ c) = 0 := by
    …

    Mentions: c, SymbolicDynamics.blockEntropy