def
HallTheorem.BipartiteExpander
{L : Type u_1}
{R : Type u_2}
[DecidableEq R]
[Fintype L]
(neighbors : L → Finset R)
(α β : ℝ)
:
Instances For
theorem
HallTheorem.bipartite_expander_matching
{L : Type u_1}
{R : Type u_2}
[DecidableEq L]
[DecidableEq R]
[Fintype L]
(neighbors : L → Finset R)
(α β : ℝ)
(hexp : BipartiteExpander neighbors α β)
(hβ : 1 < β)
(S : Finset L)
(hS : ↑S.card ≤ α * ↑(Fintype.card L))
:
∃ (f : ↥S → R), Function.Injective f ∧ ∀ (x : ↥S), f x ∈ neighbors ↑x
- α : ℝ
- β : ℝ
- upIsExpander (i : Fin numLayers) : BipartiteExpander (self.upNeighbors i) self.α self.β
- downIsExpander (i : Fin numLayers) : BipartiteExpander (self.downNeighbors i) self.α self.β
Instances For
theorem
HallTheorem.multibutterfly_can_route
{N numLayers : ℕ}
(net : MultibutterflyNetwork N numLayers)
(assignments : RoutingAssignment N numLayers net.α)
(i : Fin numLayers)
:
(∃ (fUp : ↥(assignments i).up → Fin N),
Function.Injective fUp ∧ ∀ (x : ↥(assignments i).up), fUp x ∈ net.upNeighbors i ↑x) ∧ ∃ (fDown : ↥(assignments i).down → Fin N),
Function.Injective fDown ∧ ∀ (x : ↥(assignments i).down), fDown x ∈ net.downNeighbors i ↑x
def
HallTheorem.uniqueNeighbors
{L : Type u_1}
{R : Type u_2}
[DecidableEq L]
[DecidableEq R]
(neighbors : L → Finset R)
(S : Finset L)
:
Finset R
Instances For
theorem
HallTheorem.unique_neighbors_lower_bound
{L : Type u_1}
{R : Type u_2}
[DecidableEq R]
(neighbors : L → Finset R)
(d : ℕ)
(β : ℝ)
(S : Finset L)
(hexp : β * ↑S.card ≤ ↑(S.biUnion neighbors).card)
(A B : Finset R)
(hAB_union : A ∪ B = S.biUnion neighbors)
(hAB_disj : Disjoint A B)
(hedge : ↑A.card + 2 * ↑B.card ≤ ↑d * ↑S.card)
:
def
SimpleGraph.rightDegreeInS
{L : Type u_1}
{R : Type u_2}
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
(r : R)
:
Instances For
def
SimpleGraph.uniqueNeighbors
{L : Type u_1}
{R : Type u_2}
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
Finset R
Instances For
def
SimpleGraph.multiNeighbors
{L : Type u_1}
{R : Type u_2}
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
Finset R
Instances For
Instances For
theorem
SimpleGraph.bipartiteNeighborFinset_eq_filter_pos
{L : Type u_1}
{R : Type u_2}
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
theorem
SimpleGraph.bipartiteNeighborFinset_eq_unique_union_multi
{L : Type u_1}
{R : Type u_2}
[Fintype R]
[DecidableEq R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
theorem
SimpleGraph.uniqueNeighbors_disjoint_multiNeighbors
{L : Type u_1}
{R : Type u_2}
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
Disjoint (G.uniqueNeighbors S) (G.multiNeighbors S)
theorem
SimpleGraph.card_filter_adj_right_eq_of_regular_bipartite
{L : Type u_1}
{R : Type u_2}
[Fintype L]
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
{d : ℕ}
(hbip : G.IsBipartiteOn)
(hreg : G.IsRegularOfDegree d)
(l : L)
:
theorem
SimpleGraph.sum_leftRightDegree_eq_d_mul_card
{L : Type u_1}
{R : Type u_2}
[Fintype L]
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
{d : ℕ}
(hbip : G.IsBipartiteOn)
(hreg : G.IsRegularOfDegree d)
(S : Finset L)
:
theorem
SimpleGraph.double_count_edges
{L : Type u_1}
{R : Type u_2}
[Fintype R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
theorem
SimpleGraph.sum_rightDegreeInS_ge
{L : Type u_1}
{R : Type u_2}
[Fintype R]
[DecidableEq R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
(S : Finset L)
:
theorem
SimpleGraph.unique_neighbors_lower_bound
{L : Type u_1}
{R : Type u_2}
[Fintype L]
[Fintype R]
[DecidableEq R]
(G : SimpleGraph (L ⊕ R))
[DecidableRel G.Adj]
{d : ℕ}
{α β : ℝ}
(hbip : G.IsBipartiteOn)
(hreg : G.IsRegularOfDegree d)
(hexp : G.IsBipartiteExpander α β)
(S : Finset L)
(hS : ↑S.card ≤ α * ↑(Fintype.card L))
: