Documentation

TauCeti.Algebra.BigOperators.Finprod

Regrouping finitely supported products #

Fintype.prod_sum_type splits a product over α ⊕ β into the two partial products, but it needs both index types to be finite. This file records the finprod analogue, which only needs the two restricted families to have finite multiplicative support. Regrouping by the fibers of an arbitrary map is also available, without finiteness assumptions on the fibers.

Main results #

Finite multiplicative support on both summands implies finite multiplicative support on their disjoint union.

theorem TauCeti.finprod_sum_type {α : Type u_1} {β : Type u_2} {M : Type u_3} [CommMonoid M] (f : α ⊕ β → M) (hl : Function.HasFiniteMulSupport (f ∘ Sum.inl)) (hr : Function.HasFiniteMulSupport (f ∘ Sum.inr)) :
∏ᶠ (v : α ⊕ β), f v = (∏ᶠ (a : α), f (Sum.inl a)) * ∏ᶠ (b : β), f (Sum.inr b)

A product over a disjoint union of index types splits as the product of the two partial products, provided both partial families have finite multiplicative support.

theorem TauCeti.finsum_sum_type {α : Type u_1} {β : Type u_2} {M : Type u_3} [AddCommMonoid M] (f : α ⊕ β → M) (hl : Function.HasFiniteSupport (f ∘ Sum.inl)) (hr : Function.HasFiniteSupport (f ∘ Sum.inr)) :
∑ᶠ (v : α ⊕ β), f v = ∑ᶠ (a : α), f (Sum.inl a) + ∑ᶠ (b : β), f (Sum.inr b)
theorem TauCeti.finprod_fiberwise {α : Type u_4} {β : Type u_5} {M : Type u_6} [CommMonoid M] (g : α → β) (f : α → M) (hf : (Function.mulSupport f).Finite) :
∏ᶠ (b : β) (a : { a : α // g a = b }), f ↑a = ∏ᶠ (a : α), f a

Regroup a finitely supported product by the fibers of an arbitrary map. Neither the index sets nor the fibers need be finite.

theorem TauCeti.finsum_fiberwise {α : Type u_4} {β : Type u_5} {M : Type u_6} [AddCommMonoid M] (g : α → β) (f : α → M) (hf : (Function.support f).Finite) :
∑ᶠ (b : β) (a : { a : α // g a = b }), f ↑a = ∑ᶠ (a : α), f a

Regroup a finitely supported sum by the fibers of an arbitrary map. Neither the index sets nor the fibers need be finite.