OAI/Topology/EilenbergGanea/SmallHolonomy.lean
77 declarations, 0 contain sorry, 0 declared as axioms
- theorem
OAI.EilenbergGanea.su2_distance_squareline 16Source documentation
Squared chord length on the unit-quaternion sphere.
theorem su2_distance_square (a : SU2) : ‖(a : ℍ) - 1‖ ^ 2 = 2 - 2 * (a : ℍ).re := by …Mentions: OAI.EilenbergGanea.SU2
- def
OAI.EilenbergGanea.arcBlendline 26 - theorem
OAI.EilenbergGanea.arcBlend_norm_leline 29 - theorem
OAI.EilenbergGanea.small_unit_reline 39 - theorem
OAI.EilenbergGanea.arcBlend_re_leline 45 - theorem
OAI.EilenbergGanea.arcBlend_ne_zeroline 53 - def
OAI.EilenbergGanea.smallQuaternionArcline 61Source documentation
A globally smooth path that remains in the closed chord ball of its endpoint, avoiding any branch choice of a quaternion logarithm.
def smallQuaternionArc (a : SU2) (t : ℝ) : SU2 := normalizeQuaternion (arcBlend a t)
Mentions: OAI.EilenbergGanea.SU2, OAI.EilenbergGanea.normalizeQuaternion, OAI.EilenbergGanea.arcBlend
- theorem
OAI.EilenbergGanea.smallQuaternionArc_zeroline 63 - theorem
OAI.EilenbergGanea.smallQuaternionArc_oneline 66 - theorem
OAI.EilenbergGanea.smallQuaternionArc_smoothline 69 - theorem
OAI.EilenbergGanea.smallQuaternionArc_distanceline 77 - def
OAI.EilenbergGanea.selectedAlphabetline 100Source documentation
The selected unknowns remain separate from coefficients, even when two letters have the same image in the group quotient.
def selectedAlphabet (σ : Fin m ↪ E) (e : E) : E ⊕ Fin m := by …
- theorem
OAI.EilenbergGanea.selectedAlphabet_selectedline 104 - theorem
OAI.EilenbergGanea.selectedAlphabet_otherline 111 - def
OAI.EilenbergGanea.selectedWordline 116 - def
OAI.EilenbergGanea.selectedLabelline 119 - theorem
OAI.EilenbergGanea.selectedLabel_selectedline 122 - theorem
OAI.EilenbergGanea.selectedLabel_otherline 126 - theorem
OAI.EilenbergGanea.selectedWord_evalline 131 - theorem
OAI.EilenbergGanea.selectedWord_exponentsline 142 - theorem
OAI.EilenbergGanea.selected_word_sublevel_solvableline 160Source documentation
Solve a finite, full-rank system while keeping every unselected label fixed. The distinguished sublevel condition is the actual isolated root condition, not a nonsingularity assumption on the roots.
theorem selected_word_sublevel_solvable [DecidableEq E] (σ : Fin m ↪ E) (w : Fin m → FreeGroup E) (ρ : Fin d → FreeGroup E) (a : ℝ → E → SU2) (ha : ∀ e, ContDiff ℝ ∞ (fun t => (a t e : ℍ))) (ha0 : ∀ e, a 0 e = 1) (hB : Matrix.det (fun i j => wordExponents (w i) (σ j)) ≠ 0) (δ : ℝ) (hδ : 0 < δ) (hiso : ∀ t ∈ Icc (0 : ℝ) 1, ∀ x : Fin m → SU2, (∀ i, FreeGroup.lift (selectedLabel σ (a t) x) (w i) = 1) → ‖(fun i => (FreeGroup.lift (selectedLabel σ (a t) x) (ρ i) : ℍ)) - 1‖ ≠ δ) : ∃ b : E → SU2, (∀ e, (∀ i, σ i ≠ e) → b e = a 1 e) ∧ (∀ i, FreeGroup.lift b (w i) = 1) ∧ …Mentions: OAI.EilenbergGanea.SU2, OAI.EilenbergGanea.wordExponents, OAI.EilenbergGanea.selectedLabel
- def
OAI.EilenbergGanea.labelLiftline 197 - def
OAI.EilenbergGanea.wordValueline 201 - def
OAI.EilenbergGanea.pathProductline 203 - theorem
OAI.EilenbergGanea.labelLift_rightline 206 - theorem
OAI.EilenbergGanea.pathProduct_oneline 215 - theorem
OAI.EilenbergGanea.pathProduct_ofline 217 - theorem
OAI.EilenbergGanea.pathProduct_mulline 219 - theorem
OAI.EilenbergGanea.pathProduct_invline 223 - theorem
OAI.EilenbergGanea.pathProduct_conjugate_loopline 228 - theorem
OAI.EilenbergGanea.pathProduct_continuousline 235 - theorem
OAI.EilenbergGanea.pathProduct_finite_locationsline 252Source documentation
The set of vertices inspected by a word is finite, independently of the label values. No countability hypothesis on the alphabet is needed.
theorem pathProduct_finite_locations (v : S → Γ) (w : FreeGroup S) (g : Γ) : ∃ P : Finset Γ, ∀ a b : Γ → S → H, (∀ p ∈ P, ∀ s, a p s = b p s) → pathProduct v a w g = pathProduct v b w g := by …Mentions: OAI.EilenbergGanea.pathProduct
- theorem
OAI.EilenbergGanea.pathProduct_pullbackline 271Source documentation
Evaluation commutes with pullback of a labeling along a group quotient, including when different alphabet letters have the same image.
theorem pathProduct_pullback {D : Type*} [Group D] (q : Γ →* D) (v : S → Γ) (a : D → S → H) (w : FreeGroup S) (g : Γ) : pathProduct v (fun p s => a (q p) s) w g = pathProduct (fun s => q (v s)) a w (q g) := by …Mentions: OAI.EilenbergGanea.pathProduct
- theorem
OAI.EilenbergGanea.pathProduct_trivial_of_relatorsline 291Source documentation
Once every final relator has trivial transport at every vertex, normal closure gives trivial transport on every null word, not just on a finite collection of test loops.
theorem pathProduct_trivial_of_relators (v : S → Γ) (a : Γ → S → H) (R : Set (FreeGroup S)) (hR : R ⊆ (wordValue v).ker) (hp : (wordValue v).ker = Subgroup.normalClosure R) (ha : ∀ r ∈ R, ∀ g, pathProduct v a r g = 1) (w : FreeGroup S) (hw : wordValue v w = 1) (g : Γ) : pathProduct v a w g = 1 := by …Mentions: OAI.EilenbergGanea.wordValue, OAI.EilenbergGanea.pathProduct
- def
OAI.EilenbergGanea.pathChainline 311 - theorem
OAI.EilenbergGanea.pathChain_oneline 314 - theorem
OAI.EilenbergGanea.pathChain_ofline 316 - theorem
OAI.EilenbergGanea.pathChain_mulline 318 - theorem
OAI.EilenbergGanea.pathChain_invline 321 - theorem
OAI.EilenbergGanea.pathChain_conjugateline 324 - abbrev
OAI.EilenbergGanea.NormalFactorline 332 - def
OAI.EilenbergGanea.normalFactorWordline 334 - def
OAI.EilenbergGanea.normalFactorCountline 337 - def
OAI.EilenbergGanea.relatorChainMapline 340 - theorem
OAI.EilenbergGanea.normalFactor_valueline 344 - theorem
OAI.EilenbergGanea.pathChain_normalFactorline 350 - theorem
OAI.EilenbergGanea.pathChain_normalProductline 359 - theorem
OAI.EilenbergGanea.exact_translated_relator_countsline 372Source documentation
The coefficient identity is an equality in the full free abelian group of translated indexed relators. Injectivity is sufficient; no finiteness of the relator or generator types is assumed.
theorem exact_translated_relator_counts (v : S → Γ) (r : R → FreeGroup S) (hr : ∀ i, wordValue v (r i) = 1) (hinj : Function.Injective (relatorChainMap v r)) (z : FreeGroup S) (ρ : R) (hchain : pathChain v z 1 = pathChain v (r ρ) 1) (l : List (NormalFactor S R)) (he : z = (l.map (normalFactorWord r)).prod) : (l.map (fun f => normalFactorCount v f 1)).sum = Finsupp.single (1,ρ) 1 := by …Mentions: OAI.EilenbergGanea.wordValue, OAI.EilenbergGanea.relatorChainMap, OAI.EilenbergGanea.pathChain, OAI.EilenbergGanea.NormalFactor, OAI.EilenbergGanea.normalFactorWord, OAI.EilenbergGanea.normalFactorCount
- def
OAI.EilenbergGanea.mergeLabelsline 390 - theorem
OAI.EilenbergGanea.mergeLabels_continuousline 394 - theorem
OAI.EilenbergGanea.copy_labels_on_finite_setline 407Source documentation
Copy arbitrary prescribed labels to a finite quotient solely on the finite set of vertices currently being tested. This does not assert that the original labeling is periodic or descends to a single quotient.
theorem copy_labels_on_finite_set {D : Type*} [Group D] (q : Γ →* D) (P : Finset Γ) (hq : Set.InjOn q (P : Set Γ)) (a : Γ → S → H) (Allowed : H → Prop) (h1 : Allowed 1) (ha : ∀ g s, Allowed (a g s)) : ∃ aF : D → S → H, (∀ d s, Allowed (aF d s)) ∧ ∀ p ∈ P, ∀ s, aF (q p) s = a p s := by … - theorem
OAI.EilenbergGanea.compact_labeling_from_finite_quotientsline 428Source documentation
Tychonoff compactness for all extra generators, with the original labels fixed. The finite-quotient premise is exactly the separate finite solvability obligation, not a periodicity assumption on the prescribed assignment.
theorem compact_labeling_from_finite_quotients [Group.ResiduallyFinite Γ] [TopologicalSpace H] [IsTopologicalGroup H] [CompactSpace H] (v : S ⊕ T → Γ) (a : Γ → S → H) (w : I → FreeGroup (S ⊕ T)) (g : I → Γ) (K : I → Set H) (hK : ∀ i, IsClosed (K i)) (Allowed : H → Prop) (h1 : Allowed 1) (ha : ∀ g s, Allowed (a g s)) (hsolve : ∀ (N : FiniteIndexNormalSubgroup Γ) (J : Finset I) (aF : (Γ ⧸ N.toSubgroup) → S → H), (∀ d s, Allowed (aF d s)) → ∃ bF : (Γ ⧸ N.toSubgroup) → T → H, ∀ i ∈ J, ∀ d, pathProduct (fun s => QuotientGroup.mk' N.toSubgroup (v s)) (mergeLabels aF bF) (w i) d ∈ K i) : ∃ b : Γ → T → H, ∀ i, pathProduct v (mergeLabels a b) (w i) (g i) ∈ K i := by …Mentions: OAI.EilenbergGanea.pathProduct, OAI.EilenbergGanea.mergeLabels
- theorem
OAI.EilenbergGanea.su2_normline 473 - theorem
OAI.EilenbergGanea.unit_product_linearizationline 481Source documentation
The two elementary estimates needed for the presentation argument, with constants independent of the Cayley graph or any finite quotient.
theorem unit_product_linearization (l : List ℍ) (h : ℝ) (hh : 0 ≤ h) (hu : ∀ a ∈ l, ‖a‖ = 1) (hb : ∀ a ∈ l, ‖a - 1‖ ≤ h) : ‖l.prod - 1‖ ≤ l.length * h ∧ ‖l.prod - 1 - (l.map (fun a => a - 1)).sum‖ ≤ (l.length : ℝ)^2 * h^2 := by … - theorem
OAI.EilenbergGanea.quaternion_commutator_boundline 511 - theorem
OAI.EilenbergGanea.su2_conjugation_errorline 519 - theorem
OAI.EilenbergGanea.su2_inverse_distanceline 529 - theorem
OAI.EilenbergGanea.su2_inverse_linearizationline 535 - theorem
OAI.EilenbergGanea.unit_product_with_linear_modelsline 546Source documentation
Replacing each displacement by its linear model introduces only the sum of the errors. Combined with exact signed counts, this avoids any choice of an ordering of the relator indices (which can be uncountable).
theorem unit_product_with_linear_models {I : Type*} (l : List I) (f : I → SU2) (v : I → ℍ) (h D : ℝ) (hh : 0 ≤ h) (hb : ∀ i ∈ l, ‖(f i : ℍ) - 1‖ ≤ h) (he : ∀ i ∈ l, ‖(f i : ℍ) - 1 - v i‖ ≤ D) : ‖((l.map (fun i => (f i : ℍ))).prod - 1) - (l.map v).sum‖ ≤ (l.length : ℝ)^2 * h^2 + l.length * D := by …Mentions: OAI.EilenbergGanea.SU2
- theorem
OAI.EilenbergGanea.su2_conjugation_distanceline 580 - def
OAI.EilenbergGanea.signedUnitline 588 - def
OAI.EilenbergGanea.signedDisplacementline 589 - theorem
OAI.EilenbergGanea.signedUnit_distanceline 591 - theorem
OAI.EilenbergGanea.signedUnit_errorline 595 - theorem
OAI.EilenbergGanea.conjugated_signedUnit_errorline 603 - abbrev
OAI.EilenbergGanea.RelatorFactorline 620 - def
OAI.EilenbergGanea.relatorFactorValueline 622 - def
OAI.EilenbergGanea.relatorSignedCountsline 625 - theorem
OAI.EilenbergGanea.relator_linear_modelsline 628 - theorem
OAI.EilenbergGanea.relator_product_quadraticline 643Source documentation
Exact translated counts cancel the full linear term; the remaining bound is quadratic. The index set is arbitrary, not necessarily countable.
theorem relator_product_quadratic {I : Type*} (l : List (RelatorFactor I)) (x : I → SU2) (i₀ : I) (hc : relatorSignedCounts l = Finsupp.single i₀ 1) (h ε K : ℝ) (hh : 0 ≤ h) (hε : 0 ≤ ε) (hK : 0 ≤ K) (hb : ∀ r ∈ l, ‖(x r.2.1 : ℍ) - 1‖ ≤ h) (ha : ∀ r ∈ l, ‖(r.1 : ℍ) - 1‖ ≤ K * (ε + h)) : ‖(l.map (fun r => (relatorFactorValue x r : ℍ))).prod - (x i₀ : ℍ)‖ ≤ ((l.length : ℝ)^2 + l.length + 2 * l.length * K) * (ε + h) * h := by …Mentions: OAI.EilenbergGanea.RelatorFactor, OAI.EilenbergGanea.SU2, OAI.EilenbergGanea.relatorSignedCounts, OAI.EilenbergGanea.relatorFactorValue
- def
OAI.EilenbergGanea.familySizeline 671Source documentation
A uniform size for an arbitrary family, normalized to zero for an empty index set. This is a real supremum, not an attained maximum.
def familySize {I : Type*} (f : I → ℝ) : ℝ := sSup (Set.range f ∪ {0}) - theorem
OAI.EilenbergGanea.familySize_nonnegline 673 - theorem
OAI.EilenbergGanea.le_familySizeline 678 - theorem
OAI.EilenbergGanea.familySize_leline 681 - theorem
OAI.EilenbergGanea.familySize_ne_thresholdline 690Source documentation
The source no-threshold-crossing argument does not assume attainment of its supremum.
theorem familySize_ne_threshold {I : Type*} (f : I → ℝ) (hf : BddAbove (Set.range f)) (C δ η ε : ℝ) (hδ : 0 < δ) (hC : 0 ≤ C) (_hη : 0 ≤ η) (hε : 0 ≤ ε) (hεη : ε ≤ η) (hc₁ : C * (δ + η) < 1/2) (hc₂ : C * η < δ/2) (hbound : ∀ i, f i ≤ C * ε + C * (familySize f + ε) * familySize f) : familySize f ≠ δ := by …Mentions: OAI.EilenbergGanea.familySize
- theorem
OAI.EilenbergGanea.familySize_contractionline 706Source documentation
Uniform contraction of all residual errors. This handles even an uncountable family and does not replace the supremum by a maximum.
theorem familySize_contraction {I : Type*} (f : I → ℝ) (hf : ∀ i, 0 ≤ f i) (δ C η : ℝ) (hδ : 0 ≤ δ) (hC : 0 ≤ C) (hη : 0 ≤ η) (hb : ∀ i, f i ≤ δ) (hc : C * (δ + η) < 1) (he : ∀ i, f i ≤ C * (familySize f + η) * familySize f) : ∀ i, f i = 0 := by …Mentions: OAI.EilenbergGanea.familySize
- theorem
OAI.EilenbergGanea.small_thresholds_existline 724