OAI/Algebra/GroupRing/ChainCoverage.lean
29 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.TorsionFreeZeroDivisors.ChainCoverage.Coveredline 15Source documentation
A dart lying in one of the actual maximal marked chains.
def Covered (d : D) : Prop := …
- lemma
OAI.TorsionFreeZeroDivisors.ChainCoverage.covered_fixedline 19 - lemma
OAI.TorsionFreeZeroDivisors.ChainCoverage.covered_nextline 22 - lemma
OAI.TorsionFreeZeroDivisors.ChainCoverage.covered_reverseline 36Source documentation
Reversing an original dart stays in the opposite oriented marked chain.
lemma covered_reverse {d : D} (hd : Covered σ τ hσ hτ d) : Covered σ τ hσ hτ (σ d) := by … - lemma
OAI.TorsionFreeZeroDivisors.ActualMarkedChains.forced_turnline 64 - lemma
OAI.TorsionFreeZeroDivisors.ActualMarkedChains.covered_stepline 72 - lemma
OAI.TorsionFreeZeroDivisors.ActualMarkedChains.covered_pathline 84 - theorem
OAI.TorsionFreeZeroDivisors.ActualMarkedChains.actual_image_coveredline 108Source documentation
Every dart of the actual image belongs to a marked chain. No circle component is dropped: a path start is marked in every component.
theorem actual_image_covered {J : Type*} (paths : J → List D) (hpaths : ∀ j, (paths j).IsChain (WeightedMoore.PortWalk.step Γ.origin Γ.reverse)) (hstarts : ∀ j d, d∈(paths j).head? → mark (Γ.origin d)) (himage : ∀ d : D, ∃ j, d∈paths j ∨ Γ.reverse d∈paths j) : ∀ d, Covered Γ.reverse (turn Γ.origin mark h2) Γ.reverse_reverse (turn_involutive Γ.origin mark h2) d := by …Mentions: OAI.TorsionFreeZeroDivisors.WeightedMoore.PortWalk.step
- theorem
OAI.TorsionFreeZeroDivisors.ActualMarkedChains.actual_chain_totalline 126Source documentation
Exact length accounting after suppressing the actual image, rather than only the inequality for a possibly incomplete set of marked components.
theorem actual_chain_total {J : Type*} (paths : J → List D) (hpaths : ∀ j, (paths j).IsChain (WeightedMoore.PortWalk.step Γ.origin Γ.reverse)) (hstarts : ∀ j d, d∈(paths j).head? → mark (Γ.origin d)) (himage : ∀ d : D, ∃ j, d∈paths j ∨ Γ.reverse d∈paths j) : ∑ d : {d : D // turn Γ.origin mark h2 d=d}, chainLength Γ mark h2 d = Fintype.card D := by …Mentions: OAI.TorsionFreeZeroDivisors.WeightedMoore.PortWalk.step
- def
OAI.TorsionFreeZeroDivisors.MarkedChainBound.marksline 148Source documentation
Mark all irregular vertices and the specified start/end vertices.
def marks (M : Finset V) (v : V) : Prop := degree Γ Finset.univ v ≠ 2 ∨ v∈M …
- lemma
OAI.TorsionFreeZeroDivisors.MarkedChainBound.marks_degree_twoline 151 - lemma
OAI.TorsionFreeZeroDivisors.MarkedChainBound.marked_dart_boundline 156 - lemma
OAI.TorsionFreeZeroDivisors.MarkedChainBound.chain_dart_cardline 176 - theorem
OAI.TorsionFreeZeroDivisors.MarkedChainBound.bounded_marked_chainsline 186Source documentation
Uniformly bounded many marked chains of the actual image, before choosing any label assignments. The bound depends only on C and K.
theorem bounded_marked_chains (C : ℝ) (hC : 0≤C) (K : ℕ) : ∃ R : ℕ, ∀ {V D : Type} [Fintype V] [Fintype D] (Γ : PortGraph V D) (L : ℝ) (_ : 0<L) (_ : (Fintype.card D:ℝ)≤2*C*L) (_ : ∀ a (c : Γ.subdivision.Walk a a), c.IsCycle → L≤WeightedCycles.weight (WeightedPortMoore.edgeWeight (fun _ : D => (1:ℝ))) c) (_ : (Finset.univ.filter (fun v => degree Γ Finset.univ v=1)).card≤2) (M : Finset V) (_ : M.card≤2*K), Fintype.card {d : D // turn Γ.origin (marks Γ M) (marks_degree_two Γ M) d=d}≤R := by …Mentions: OAI.TorsionFreeZeroDivisors.WeightedCycles.weight, OAI.TorsionFreeZeroDivisors.WeightedPortMoore.edgeWeight, OAI.TorsionFreeZeroDivisors.MarkedChainBound.marks, OAI.TorsionFreeZeroDivisors.MarkedChainBound.marks_degree_two
- def
OAI.TorsionFreeZeroDivisors.ChainPaths.wordline 216Source documentation
The literal nonempty word of original darts in one oriented marked chain.
def word (d : B) : List D := outWord (iterChain F (len d-1) d.val) …
- lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.outWord_lengthline 219 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.outWord_lastline 225 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.word_lengthline 232 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.word_endline 237 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.iter_chain_prefixline 246Source documentation
A reduced path cannot stop before the end of its current marked chain: its prescribed last vertex is marked, while all interior chain vertices are not.
lemma iter_chain_prefix (n : ℕ) (x : D) (p : List D) (hp : p.IsChain (PortWalk.step Γ.origin Γ.reverse)) (hh : p.head?=some x) (ht : ∀ d∈p.getLast?, mark (Γ.origin (Γ.reverse d))) (hn : ∀ i : ℕ, 0 < i → i ≤ n → ¬mark (Γ.origin (F^[i] x))) : outWord (iterChain F n x) <+: p := by … - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.word_prefixline 291 - theorem
OAI.TorsionFreeZeroDivisors.ChainPaths.path_decomposesline 305Source documentation
Every original path traverses whole marked chains. This includes a path that returns to a mark, and does not require it embedded.
theorem path_decomposes (p : List D) (hp : p.IsChain (PortWalk.step Γ.origin Γ.reverse)) (hs : ∀ d∈p.head?, mark (Γ.origin d)) (ht : ∀ d∈p.getLast?, mark (Γ.origin (Γ.reverse d))) : ∃ ds : List B, ds.flatMap (word Γ mark h2)=p := by … - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.outWord_iterChainline 342Source documentation
Enumerating a chain lists precisely the forward iterates before its first mark.
lemma outWord_iterChain (f : D → D) (n : ℕ) (x : D) : outWord (iterChain f n x) = (List.range (n+1)).map (fun i => f^[i] x) := by … - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.word_eq_rangeline 351 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.mem_word_iffline 358 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.word_nodupline 367 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.words_disjointline 377 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.count_wordline 386 - lemma
OAI.TorsionFreeZeroDivisors.ChainPaths.multiplicity_constantline 398Source documentation
Every directed edge in one chain has the same traversal multiplicity, namely the number of occurrences of that oriented chain in the decomposition.
lemma multiplicity_constant (ds : List B) (d : B) (x : D) (hx : x∈word Γ mark h2 d) : (ds.flatMap (word Γ mark h2)).count x = ds.count d := by …