Completing a family of disjoint exchanges to a zero sum #
A family of exchanges which covers a quotient fibre can be combined with prescribed filler counts. Disjointness of multiset positions is expressed by a pointwise capacity bound on all reserved multiplicities.
noncomputable def
EGZ.Expansion.vectorSum
{G : Type u_1}
[AddCommMonoid G]
[Fintype G]
(u : G → ℕ)
:
G
The sum of the group elements counted with their natural-number multiplicities.
Equations
- EGZ.Expansion.vectorSum u = ∑ v : G, u v • v
Instances For
theorem
EGZ.Expansion.map_vectorSum
{G : Type u_1}
{H : Type u_2}
[AddCommMonoid G]
[AddCommMonoid H]
[Fintype G]
[Fintype H]
(π : G →+ H)
(u : G → ℕ)
:
theorem
EGZ.Expansion.vectorSum_choiceWeight
{I : Type u_1}
{G : Type u_2}
[Fintype I]
[Fintype G]
[AddCommGroup G]
(left right : I → G → ℕ)
(choice : I → Bool)
:
theorem
EGZ.Expansion.complete_exchange_family
{G : Type u_1}
{H : Type u_2}
{I : Type u_3}
[AddCommGroup G]
[AddCommGroup H]
[Fintype G]
[Fintype H]
[Fintype I]
(π : G →+ H)
(w : G → ℕ)
(a : H → ℕ)
(left right : I → G → ℕ)
(hcapacity : ∑ i : I, left i + ∑ i : I, right i ≤ w)
(hmass : ∀ (i : I), natMass (left i) = natMass (right i))
(hlo : pushWeight (⇑π) (∑ i : I, left i) ≤ a)
(hhi : a + pushWeight (⇑π) (∑ i : I, right i) ≤ pushWeight (⇑π) w)
(hzero : vectorSum a = 0)
(hcover :
∀ (v : G), π v = π (vectorSum (∑ i : I, left i)) → ∃ (c : I → Bool), vectorSum (choiceWeight left right c) = v)
:
A full quotient fibre of possible exchange sums gives a zero sum once the remaining prescribed counts fit outside all reserved positions.
theorem
EGZ.Expansion.complete_exchange_family_of_differences
{G : Type u_1}
{H : Type u_2}
{I : Type u_3}
[AddCommGroup G]
[AddCommGroup H]
[Fintype G]
[Fintype H]
[Fintype I]
(π : G →+ H)
(w : G → ℕ)
(a : H → ℕ)
(left right : I → G → ℕ)
(hcapacity : ∑ i : I, left i + ∑ i : I, right i ≤ w)
(hmass : ∀ (i : I), natMass (left i) = natMass (right i))
(hquotient : ∀ (i : I), π (vectorSum (left i)) = π (vectorSum (right i)))
(hlo : pushWeight (⇑π) (∑ i : I, left i) ≤ a)
(hhi : a + pushWeight (⇑π) (∑ i : I, right i) ≤ pushWeight (⇑π) w)
(hzero : vectorSum a = 0)
(hcover :
∀ (v : G),
π v = 0 → ∃ (c : I → Bool), (∑ i : I, if c i = true then vectorSum (left i) - vectorSum (right i) else 0) = v)
:
The equivalent form used by translation growth: binary sums of the exchange differences cover the quotient kernel.