OAI/Algebra/GroupRing/LinkComponents.lean
60 declarations, 0 contain sorry, 0 declared as axioms
- abbrev
OAI.TorsionFreeZeroDivisors.LinkComponents.Occurrenceline 12 - def
OAI.TorsionFreeZeroDivisors.LinkComponents.graphline 15 - abbrev
OAI.TorsionFreeZeroDivisors.LinkComponents.Componentline 22 - def
OAI.TorsionFreeZeroDivisors.LinkComponents.HasSelfline 24 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.partner_componentline 30Source documentation
Matched block occurrences always stay in their link component.
theorem partner_component (o : Occurrence m) : (graph m P).connectedComponentMk (P.partner o).1 = (graph m P).connectedComponentMk o.1 := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Occurrence, OAI.TorsionFreeZeroDivisors.LinkComponents.graph
- abbrev
OAI.TorsionFreeZeroDivisors.LinkComponents.ComponentOccurrenceline 38 - def
OAI.TorsionFreeZeroDivisors.LinkComponents.restrictline 41 - def
OAI.TorsionFreeZeroDivisors.LinkComponents.unmatchedline 45 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.card_occurrencesline 49Source documentation
Counting actual occurrences, including repeats, gives the sum of block multiplicities in the component.
theorem card_occurrences (c : Component m P) : Fintype.card (ComponentOccurrence m P c) = ∑ i : c, m i.val := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Component, OAI.TorsionFreeZeroDivisors.LinkComponents.ComponentOccurrence
- theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.card_block_occurrencesline 59 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.balanceline 73Source documentation
Literal link balance in a component without a self-link.
theorem balance (c : Component m P) (hn : ¬HasSelf m P c) (i : c) : 2*m i.val ≤ (∑ j : c, m j.val) + unmatched m P c := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Component, OAI.TorsionFreeZeroDivisors.LinkComponents.HasSelf, OAI.TorsionFreeZeroDivisors.LinkComponents.unmatched
- def
OAI.TorsionFreeZeroDivisors.LinkComponents.maximumline 86Source documentation
The maximum multiplicity is present exactly in the active components.
def maximum (c : Component m P) : ℕ := …
Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Component
- theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.le_maximumline 90 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.maximum_memline 95 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.maximum_balanceline 101 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.active_iffline 107 - theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.sum_componentsline 117Source documentation
Components partition the underlying blocks, including the isolated ones.
theorem sum_components {R : Type*} [AddCommMonoid R] (a : I → R) : (∑ c : Component m P, ∑ i : c, a i.val) = ∑ i, a i := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Component
- theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.sum_unmatchedline 126Source documentation
Fixed occurrences are partitioned by precisely the same components.
theorem sum_unmatched : (∑ c : Component m P, unmatched m P c) = Fintype.card P.Unmatched := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Component, OAI.TorsionFreeZeroDivisors.LinkComponents.unmatched
- def
OAI.TorsionFreeZeroDivisors.LinkComponents.minimumRootline 142Source documentation
The bin-minimizing root need not be present at a given stage.
def minimumRoot (d : I → ℝ) (c : Component m P) : c := …
Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.Component
- theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.minimumRoot_leline 146 - def
OAI.TorsionFreeZeroDivisors.LinkComponents.componentLabelCostline 151 - def
OAI.TorsionFreeZeroDivisors.LinkComponents.stageCostline 156Source documentation
The actual label/block part of the stage exponent, before embedding and uniform error terms are added. Stages are indexed from zero.
def stageCost (M : ℕ) (d : I → ℝ) (δ s : ℝ) (j : Fin M) : ℝ := …
- theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.sum_stageCostline 162Source documentation
Summing the actual link-component exponents gives decay and only the globally counted unmatched correction. No coverage identity is assumed.
theorem sum_stageCost (M : ℕ) (hm : ∀ i, m i ≤ M) (d : I → ℝ) (δ s a : ℝ) (hδ : 0 ≤ δ) (hs : 0 ≤ s) (ha : 0 ≤ a) (hlow : ∀ i, δ*s/2 ≤ d i) (hhigh : ∀ i, d i ≤ a*s) : (∑ j : Fin M, stageCost m P M d δ s j) ≤ a*s*(Fintype.card P.Unmatched : ℝ) - δ/2*s*(∑ i, (m i : ℝ)) := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.stageCost
- theorem
OAI.TorsionFreeZeroDivisors.LinkComponents.sum_stageBoundline 209Source documentation
A numerical bound for actual stages: the Euler terms need only have nonpositive total, exactly as supplied by the immersed traversal argument.
theorem sum_stageBound (M : ℕ) (hm : ∀ i, m i ≤ M) (d : I → ℝ) (δ s a logn : ℝ) (power err : Fin M → ℝ) (hδ : 0 ≤ δ) (hs : 0 ≤ s) (ha : 0 ≤ a) (hn : 0 ≤ logn) (hlow : ∀ i, δ*s/2 ≤ d i) (hhigh : ∀ i, d i ≤ a*s) (hpower : (∑ j : Fin M, power j) ≤ 0) : (Finset.univ.sum (fun j : Fin M => power j*logn + stageCost m P M d δ s j + err j)) ≤ a*s*(Fintype.card P.Unmatched : ℝ) - δ/2*s*(∑ i, (m i : ℝ)) + (∑ j : Fin M, err j) := by …Mentions: OAI.TorsionFreeZeroDivisors.LinkComponents.stageCost
- def
OAI.TorsionFreeZeroDivisors.OccurrenceMatching.Data.transportline 227 - theorem
OAI.TorsionFreeZeroDivisors.OccurrenceMatching.Data.transport_joinedline 238 - theorem
OAI.TorsionFreeZeroDivisors.OccurrenceMatching.Data.transport_partnerline 241 - abbrev
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Traversalline 266 - abbrev
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.traversalLengthline 267 - abbrev
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlyingline 268 - abbrev
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Occurrenceline 269 - abbrev
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.multiplicityline 270 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.occurrenceEquivline 273Source documentation
The occurrence index is retained separately from the common chain grid.
def occurrenceEquiv : Occurrence s len m ≃ LinkComponents.Occurrence (multiplicity s len m) where …
Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Occurrence, OAI.TorsionFreeZeroDivisors.LinkComponents.Occurrence, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.multiplicity
- def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.colorline 279 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.heightline 281 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.lowerline 283 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.upperline 284 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.block_intervalline 286 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.wordCoordinateline 290Source documentation
Literal increasing edge coordinates shared by every repetition.
def wordCoordinate (i : Underlying s len) : block s i.2.val ≃ Fin (height s len i) := …
Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.height
- theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.wordCoordinate_valline 295 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.blockPositionEquivline 299 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.coordinateline 315 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.coordinate_valline 319 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.dataline 326 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.repeatedCoordinateline 330 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.linksline 336 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.links_graphline 340 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.links_deficitline 343 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.links_consistentline 348 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.integerSlice_selfline 359 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.self_slice_cardline 370 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.self_comparisonline 383Source documentation
The original letter comparison restricts to precisely this integer slice.
theorem self_comparison {A : Type*} (bar : A → A) (w : C → ℤ → A) (hcompare : ∀ x e, cmp.side x = some e → w x.1.1 x.2.val = if cmp.reverse e then bar (w (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) else w (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) (i : Underlying s len) (k t : Fin (m i.1)) (e : E) (hsource : (⟨i.1,k⟩ : Traversal m) = cmp.source e) (htarget : (⟨i.1,t⟩ : Traversal m) = cmp.source (cmp.flip e)) (q : ℤ) (hq : q ∈ IntervalSelfLinks.selfSlice (lower s len i) (upper s len i) ⌈cmp.lo e-1/2⌉ ⌈cmp.hi e-1/2⌉ (cmp.reverse e) (cmp.offset e)) : w i.1 q = if cmp.reverse e then bar (w i.1 (affine (cmp.reverse e) (cmp.offset e) q)) else w i.1 (affine (cmp.reverse e) (cmp.offset e) q) := by …Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Traversal, OAI.TorsionFreeZeroDivisors.IntervalSelfLinks.selfSlice, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.lower, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.upper
- theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.self_shift_ne_zeroline 408Source documentation
Literal edge reduction rules out zero shift, rather than assuming that self-links are nontrivial translations.
theorem self_shift_ne_zero (hreduced : ∀ x e, cmp.side x = some e → (x.1.1,x.2.val) ≠ ((cmp.pairing.partner x).1.1,(cmp.pairing.partner x).2.val)) (i : Underlying s len) (k t : Fin (m i.1)) (e : E) (hne : ((data s hs len m cmp err).slice e ⟨i,k⟩ ⟨i,t⟩).Nonempty) (hrev : cmp.reverse e = false) : cmp.offset e ≠ 0 := by …Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.data
- theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.self_link_translationline 427Source documentation
A near-full actual self-link is a nonzero translation. Reversed self-links are infeasible for an immersed block, by the midpoint obstruction.
theorem self_link_translation {A : Type*} (bar : A → A) (hbar : Function.Involutive bar) (hfree : ∀ a, bar a ≠ a) (w : C → ℤ → A) (hcompare : ∀ x e, cmp.side x = some e → w x.1.1 x.2.val = if cmp.reverse e then bar (w (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) else w (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) (hwordred : ∀ (i : Underlying s len) q, lower s len i ≤ q → q+1 < upper s len i → w i.1 (q+1) ≠ bar (w i.1 q)) (hreduced : ∀ x e, cmp.side x = some e → (x.1.1,x.2.val) ≠ ((cmp.pairing.partner x).1.1,(cmp.pairing.partner x).2.val)) (i : Underlying s len) (k t : Fin (m i.1)) (e : E) …Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.lower, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.upper
- theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.height_eqline 462 - def
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.wordline 467Source documentation
The actual word on an underlying block, in its chain orientation.
def word (w : C → ℤ → A) (i : Underlying s len) (k : Fin (height s len i)) : A := …
Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.height
- theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.word_at_coordinateNline 470 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.self_translation_constraintsline 480Source documentation
A chosen literal self-comparison yields a fixed translation forest that works for all compatible words. Its cardinality is the original slice's, not an unrelated proxy for the number of constraints.
theorem self_translation_constraints (i : Underlying s len) (k t : Fin (m i.1)) (e : E) (hsource : (⟨i.1,k⟩ : Traversal m) = cmp.source e) (htarget : (⟨i.1,t⟩ : Traversal m) = cmp.source (cmp.flip e)) (hrev : cmp.reverse e = false) (hz : cmp.offset e ≠ 0) : ∃ tr : BlockConstraints.Translation (height s len i), tr.domain.card = ((data s hs len m cmp err).slice e ⟨i,k⟩ ⟨i,t⟩).card ∧ ∀ (A : Type*) (bar : A → A) (w : C → ℤ → A), (∀ x e, cmp.side x = some e → w x.1.1 x.2.val = if cmp.reverse e then bar (w (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) else w (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) → …Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Traversal, OAI.TorsionFreeZeroDivisors.BlockConstraints.Translation, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.height, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.data
- theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.positions_heightline 505 - theorem
OAI.TorsionFreeZeroDivisors.RepeatedBlocks.self_component_translationline 513Source documentation
Every literal self-linked component has a root and a translation forest of the prescribed deficit. A single feasible immersed labeling rules out the reflection case; the resulting forest then constrains every feasible labeling.
theorem self_component_translation [Fintype C] {A : Type*} (bar : A → A) (hbar : Function.Involutive bar) (hfree : ∀ a, bar a ≠ a) (w₀ : C → ℤ → A) (hcompare₀ : ∀ x e, cmp.side x = some e → w₀ x.1.1 x.2.val = if cmp.reverse e then bar (w₀ (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) else w₀ (cmp.pairing.partner x).1.1 (cmp.pairing.partner x).2.val) (hwordred : ∀ (i : Underlying s len) q, lower s len i ≤ q → q+1 < upper s len i → w₀ i.1 (q+1) ≠ bar (w₀ i.1 q)) (hreduced : ∀ x e, cmp.side x = some e → (x.1.1,x.2.val) ≠ ((cmp.pairing.partner x).1.1,(cmp.pairing.partner x).2.val)) (c : LinkComponents.Component (multiplicity s len m) (data s hs len m cmp err).matching) …Mentions: OAI.TorsionFreeZeroDivisors.RepeatedBlocks.Underlying, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.lower, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.upper, OAI.TorsionFreeZeroDivisors.LinkComponents.Component, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.multiplicity, OAI.TorsionFreeZeroDivisors.RepeatedBlocks.data