OAI/Algebra/GroupRing/MatchingGraphs.lean
29 declarations, 0 contain sorry, 0 declared as axioms
- theorem
OAI.TorsionFreeZeroDivisors.MatchingGraphs.subdivision_degreeline 15Source documentation
All degrees are controlled by the fixed port fibers.
theorem subdivision_degree (Γ : PortGraph V D) (d : ℕ) (h2 : 2 ≤ d) (hd : ∀ v, Nat.card {e : D // Γ.origin e = v} ≤ d) (a : V ⊕ D) : (graphNeighbors Γ.subdivision a).card ≤ d := by … - theorem
OAI.TorsionFreeZeroDivisors.MatchingGraphs.exists_far_portline 25Source documentation
Uniformly many ports of one label lie outside both endpoint neighborhoods.
theorem exists_far_port (Γ : PortGraph V D) (label : D → T) (d R : ℕ) (h2 : 2 ≤ d) (hd : ∀ v, Nat.card {e : D // Γ.origin e = v} ≤ d) (x : D) (hbig : 4*d^(R+1) < Nat.card {e : D // label e = label x}) : ∃ e : D, label e = label x ∧ ∀ a ∈ ({Sum.inr x,Sum.inr (Γ.reverse x)} : Set (V ⊕ D)), ∀ b ∈ ({Sum.inr e,Sum.inr (Γ.reverse e)} : Set (V ⊕ D)), ∀ p : Γ.subdivision.Walk a b, R < p.length := by … - theorem
OAI.TorsionFreeZeroDivisors.MatchingGraphs.subdivision_switchline 74Source documentation
The conjugation switch is exactly the graph two-switch used in girth repair.
theorem subdivision_switch (Γ : PortGraph V D) (x e : D) (hxe : x ≠ e) (hxr : x ≠ Γ.reverse e) : (Γ.switch x e).subdivision = addEdge (addEdge (Γ.subdivision.deleteEdges {s(Sum.inr x,Sum.inr (Γ.reverse x)),s(Sum.inr e,Sum.inr (Γ.reverse e))}) (Sum.inr x) (Sum.inr (Γ.reverse e))) (Sum.inr e) (Sum.inr (Γ.reverse x)) := by … - abbrev
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matchingline 108Source documentation
A matching on the signed labelled port set; inverse labels have no fixed points. Keeping the origin function separate fixes the vertex types.
abbrev Matching (label : D → T) (bar : T → T) := …
- instance
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.(instance at line 114)line 114 - instance
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.(instance at line 115)line 115 - instance
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.(instance at line 119)line 119 - def
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.graphline 121 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.reverse_reverseline 124 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.label_reverseline 125 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.extline 128 - def
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.switchline 134Source documentation
Conjugating by the transposition of equally labelled ports.
def switch (r : Matching label bar) (x e : D) (he : label x = label e) : Matching label bar := …
Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.switch_applyline 147 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.switch_switchline 150 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.graph_switchline 155 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.switch_recoverline 161Source documentation
Given the new matching and the fixed old pair x,y, the auxiliary port is forced. This is the reconstructibility behind the conditional estimate.
theorem switch_recover (r : Matching label bar) (x y e : D) (he : label x = label e) (hxy : r x = y) (hbar : ∀ t, bar t ≠ t) : r.switch x e he y = e := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.switch_injectiveline 174Source documentation
Distinct input-matching/auxiliary-port pairs always give distinct outputs.
theorem switch_injective (x y : D) (hbar : ∀ t, bar t ≠ t) : Function.Injective (fun p : {r : Matching label bar // r x = y} × {e : D // label x = label e} => p.1.val.switch x p.2.val p.2.property) := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- def
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.Containsline 188Source documentation
Prior prescriptions are undirected matching edges, counted once.
def Contains (r : Matching label bar) (C : Finset (Sym2 D)) : Prop := …
Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.edge_name_injectiveline 193Source documentation
A signed label chooses a unique orientation of each matching edge.
theorem edge_name_injective (r : Matching label bar) (x : D) (hbar : ∀ t, bar t ≠ t) : Function.Injective (fun e : {e : D // label e = label x} => s(e.val,r e.val)) := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.switch_containsline 204Source documentation
Switching two edges disjoint from the prior prescriptions preserves them.
theorem switch_contains (r : Matching label bar) (C : Finset (Sym2 D)) (hC : r.Contains C) (x e : D) (he : label x = label e) (hxC : s(x,r x) ∉ C) (heC : s(e,r e) ∉ C) : (r.switch x e he).Contains C := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching, OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.Contains
- def
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.admissibleline 226Source documentation
All allowed transpositions for the distinguished port, omitting prior edges and both radius-R endpoint balls.
def admissible (r : Matching label bar) (origin : D → V) (x : D) (R : ℕ) (C : Finset (Sym2 D)) : Finset {e : D // label e = label x} := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.admissible_cardline 236Source documentation
The excluded prior set costs exactly one port per prior edge, not two.
theorem admissible_card (r : Matching label bar) (origin : D → V) (hbar : ∀ t, bar t ≠ t) (d : ℕ) (h2 : 2 ≤ d) (hd : ∀ v, Nat.card {e : D // origin e = v} ≤ d) (x : D) (R : ℕ) (C : Finset (Sym2 D)) : Nat.card {e : D // label e = label x} - C.card - 4*d^(R+1) ≤ (r.admissible origin x R C).card := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.admissible_preservesline 265Source documentation
The girth condition is preserved by each counted auxiliary port.
theorem admissible_preserves (r : Matching label bar) (origin : D → V) (x : D) (N : ℕ) (C : Finset (Sym2 D)) (hC : r.Contains C) (hxC : s(x,r x) ∉ C) (hg : (N : ℕ∞) ≤ (r.graph origin).subdivision.egirth) (e : {e : D // label e = label x}) (he : e ∈ r.admissible origin x (2*N) C) : (r.switch x e.val e.property.symm).Contains C ∧ (N : ℕ∞) ≤ ((r.switch x e.val e.property.symm).graph origin).subdivision.egirth := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching, OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.Contains, OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.graph
- def
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditionedline 303Source documentation
The exact finite space conditioned on girth and prior prescriptions.
def conditioned (origin : D → V) (N : ℕ) (C : Finset (Sym2 D)) : Finset (Matching label bar) := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditioned_countline 311Source documentation
Direct double counting on the whole tuple space, with all other matchings retained in the output. No independence after conditioning is used.
theorem conditioned_count (origin : D → V) (N : ℕ) (C : Finset (Sym2 D)) (hbar : ∀ t, bar t ≠ t) (d : ℕ) (h2 : 2 ≤ d) (hd : ∀ v, Nat.card {e : D // origin e = v} ≤ d) (x y : D) (hxy : s(x,y) ∉ C) : ((conditioned (label := label) (bar := bar) origin N C).filter (fun r => r x = y)).card * …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditioned
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.contains_insertline 372Source documentation
Adding one undirected prescription is exactly one matching-coordinate condition; the reverse orientation is automatic, not an extra constraint.
theorem contains_insert (r : Matching label bar) (C : Finset (Sym2 D)) (x y : D) : r.Contains (insert s(x,y) C) ↔ r.Contains C ∧ r x = y := by …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditioned_insertline 386 - theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.prescriptions_countline 397Source documentation
The simultaneous-prescription bound obtained by successive conditioning. No independence is asserted, even for prescriptions on distinct labels.
theorem prescriptions_count (origin : D → V) (N : ℕ) (hbar : ∀ t, bar t ≠ t) (d : ℕ) (h2 : 2 ≤ d) (hd : ∀ v, Nat.card {e : D // origin e = v} ≤ d) (R : ℕ) (C : Finset (Sym2 D)) (hR : ∀ x, R + C.card + 4*d^(2*N+1) ≤ Nat.card {e : D // label e = label x}) : (conditioned (label := label) (bar := bar) origin N C).card * R^C.card ≤ …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditioned
- theorem
OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditioned_probabilityline 429Source documentation
The uniform one-prescription bound for the actual girth-conditioned model.
theorem conditioned_probability (origin : D → V) (N : ℕ) (C : Finset (Sym2 D)) (hbar : ∀ t, bar t ≠ t) (d : ℕ) (h2 : 2 ≤ d) (hd : ∀ v, Nat.card {e : D // origin e = v} ≤ d) (x y : D) (hxy : s(x,y) ∉ C) (hΩ : (conditioned (label := label) (bar := bar) origin N C).Nonempty) …Mentions: OAI.TorsionFreeZeroDivisors.ConditionedMatchings.Matching.conditioned