OAI/Combinatorics/BinaryEdit/FiniteVectors.lean
39 declarations, 0 contain sorry, 0 declared as axioms
Concrete vectors for the finite tree (finite-tree.tex, finite-vectors). A prefix is represented by its depth and any full leaf path extending it. All definitions ignore the unused tail of that representative. No primality assumption is needed for the annihilation and recursive vector identities.
- abbrev
OAI.TreeEdit.BinaryLower.FiniteVectors.Leafline 16 - def
OAI.TreeEdit.BinaryLower.FiniteVectors.Agreesline 18 - instance
OAI.TreeEdit.BinaryLower.FiniteVectors.(instance at line 21)line 21 - def
OAI.TreeEdit.BinaryLower.FiniteVectors.levelProductline 24 - def
OAI.TreeEdit.BinaryLower.FiniteVectors.suffixScaleline 26 - def
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriodline 29 - def
OAI.TreeEdit.BinaryLower.FiniteVectors.leafPeriodline 32 - abbrev
OAI.TreeEdit.BinaryLower.FiniteVectors.Stateline 35 - def
OAI.TreeEdit.BinaryLower.FiniteVectors.wline 38Source documentation
Distinguished subtree vector, with the common suffix coefficient.
def w (p : Fin k → Fin m → ℕ) (j : ℕ) (a : Leaf m k) : State p := …
Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.State
- def
OAI.TreeEdit.BinaryLower.FiniteVectors.uline 42Source documentation
Cheap row-advancing vector.
def u (p : Fin k → Fin m → ℕ) (j : ℕ) (a : Leaf m k) : State p := …
Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.State
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_zeroline 45 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.suffixScale_topline 48 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.suffixScale_succline 54 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.leafPeriod_dvdline 73Source documentation
The full leaf modulus divides its prefix period times the suffix scale.
lemma leafPeriod_dvd (p : Fin k → Fin m → ℕ) (j : ℕ) (a b : Leaf m k) (hab : Agrees j a b) : leafPeriod p b ∣ prefixPeriod p j a * suffixScale p j := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.Agrees, OAI.TreeEdit.BinaryLower.FiniteVectors.leafPeriod, OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod, OAI.TreeEdit.BinaryLower.FiniteVectors.suffixScale
- theorem
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_nsmul_wline 89Source documentation
Every node vector is annihilated by its prescribed prefix period.
theorem prefixPeriod_nsmul_w (p : Fin k → Fin m → ℕ) (j : ℕ) (a : Leaf m k) : prefixPeriod p j a • w p j a = 0 := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod, OAI.TreeEdit.BinaryLower.FiniteVectors.w
- theorem
OAI.TreeEdit.BinaryLower.FiniteVectors.w_eq_level_nsmul_uline 100Source documentation
Multiplication of the cheap vector by the current level product gives
w.theorem w_eq_level_nsmul_u (p : Fin k → Fin m → ℕ) (j : ℕ) (hj : j < k) (a : Leaf m k) : w p j a = levelProduct p ⟨j, hj⟩ • u p j a := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.w, OAI.TreeEdit.BinaryLower.FiniteVectors.levelProduct, OAI.TreeEdit.BinaryLower.FiniteVectors.u
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.agrees_child_iffline 110 - theorem
OAI.TreeEdit.BinaryLower.FiniteVectors.u_eq_sum_child_wline 129Source documentation
The cheap vector is exactly the sum of the children's distinguished vectors.
theorem u_eq_sum_child_w (p : Fin k → Fin m → ℕ) (j : ℕ) (hj : j < k) (a : Leaf m k) : u p j a = ∑ i : Fin m, w p (j + 1) (Function.update a ⟨j, hj⟩ i) := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.u, OAI.TreeEdit.BinaryLower.FiniteVectors.w
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.agrees_top_iffline 138 - theorem
OAI.TreeEdit.BinaryLower.FiniteVectors.w_leafline 147Source documentation
At a leaf, the distinguished vector is the coordinate unit vector.
theorem w_leaf (p : Fin k → Fin m → ℕ) (a b : Leaf m k) : w p k a b = if b = a then 1 else 0 := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.w
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.agrees_reflline 151 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.agrees_symmline 155 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.agrees_transline 159 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.agrees_iff_of_agreesline 164 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_eq_of_agreesline 168 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.w_eq_of_agreesline 176 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.u_eq_of_agreesline 181 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_childline 186 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_topline 214 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.leafPeriod_posline 218 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_posline 226 - theorem
OAI.TreeEdit.BinaryLower.FiniteVectors.state_finiteline 235Source documentation
Positive leaf moduli make the manuscript's parameter group finite.
theorem state_finite (p : Fin k → Fin m → ℕ) (hp : ∀ q i, 0 < p q i) : Finite (State p) := by … - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_eq_prod_castline 242Source documentation
Prefix products agree with the usual dependent
Fin jpath product.lemma prefixPeriod_eq_prod_cast (p : Fin k → Fin m → ℕ) (j : ℕ) (hj : j ≤ k) (a : Leaf m k) : prefixPeriod p j a = 2 * ∏ q : Fin j, p (Fin.castLE hj q) (a (Fin.castLE hj q)) := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_leline 261Source documentation
The source's period upper bound, on the concrete vector prefix periods.
lemma prefixPeriod_le (p : Fin k → Fin m → ℕ) (hp : ∀ q i, p q i ≤ k ^ 5) (j : ℕ) (hj : j ≤ k) (a : Leaf m k) : prefixPeriod p j a ≤ 2 * k ^ (5 * j) := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_coprime_levelline 272Source documentation
Distinct odd depth/child primes make the prefix period coprime to the current level. This is a specialization to the concrete vector API of the prime-product coprimality calculation in
lem:orders.lemma prefixPeriod_coprime_level (p : Fin k → Fin m → ℕ) (hinj : Function.Injective (fun z : Fin k × Fin m => p z.1 z.2)) (hprime : ∀ q i, Nat.Prime (p q i)) (hodd : ∀ q i, p q i ≠ 2) (j : ℕ) (hj : j < k) (a : Leaf m k) : Nat.Coprime (prefixPeriod p j a) (levelProduct p ⟨j, hj⟩) := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod, OAI.TreeEdit.BinaryLower.FiniteVectors.levelProduct
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.prefixPeriod_zsmul_wline 294 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.zsmul_w_eq_mul_uline 298 - lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.leaf_shift_eq_iffline 308Source documentation
The leaf coordinate changes under exactly the nonzero period residues, including negative translations. This is the base case of separation.
lemma leaf_shift_eq_iff (p : Fin k → Fin m → ℕ) (a : Leaf m k) (x : State p) (t : ℤ) : (x + t • w p k a) a = x a ↔ (leafPeriod p a : ℤ) ∣ t := by …Mentions: OAI.TreeEdit.BinaryLower.FiniteVectors.Leaf, OAI.TreeEdit.BinaryLower.FiniteVectors.State, OAI.TreeEdit.BinaryLower.FiniteVectors.w, OAI.TreeEdit.BinaryLower.FiniteVectors.leafPeriod
- lemma
OAI.TreeEdit.BinaryLower.FiniteVectors.leaf_shift_ne_iffline 314