Skip to content

Commit 2ff8885

Browse files
feat(Topology/Algebra/Support): compact multiplicative support under product operations (#38022)
Add compact-multiplicative-support closure under product-like operations to `Mathlib/Topology/Algebra/Support.lean`. The main abstraction is a `Submonoid (α → β)` consisting of functions with compact multiplicative support; `List`, `Multiset`, and `Finset` product closures then follow by applying `Submonoid.{list,multiset,}_prod_mem`. All declarations carry `@[to_additive]` to generate `HasCompactSupport.{addSubmonoid, list_sum, multiset_sum, finset_sum}`. New declarations: - `HasCompactMulSupport.submonoid` (+ `HasCompactSupport.addSubmonoid`) - `HasCompactMulSupport.list_prod` (+ `.list_sum`) - `HasCompactMulSupport.multiset_prod` (+ `.multiset_sum`) - `HasCompactMulSupport.finset_prod` (+ `.finset_sum`) Type class hypotheses minimised per result: `MulOneClass` for the submonoid, `Monoid` for `list_prod`, `CommMonoid` for `multiset_prod` and `finset_prod`. Single new import: `Mathlib.Algebra.Group.Submonoid.BigOperators`. Drafted with assistance from Claude Opus 4.6 for Lean-syntax help and Mathlib API lookup; the choice of declarations, type class minimisation, and final verification are my own. Scope expansion (submonoid extraction + `list_prod` / `multiset_prod`) was [suggested on Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/small.20PR.3A.20finset_prod.20for.20compact.20support/with/585291281) by Eric Wieser. Co-authored-by: alejandrosotofranco <soto.alejandro2025@gmail.com>
1 parent b82deb8 commit 2ff8885

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

Mathlib/Topology/Algebra/Support.lean

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Floris van Doorn, Patrick Massot
55
-/
66
module
77

8+
public import Mathlib.Algebra.Group.Submonoid.BigOperators
89
public import Mathlib.Algebra.GroupWithZero.Indicator
910
public import Mathlib.Algebra.Module.Basic
1011
public import Mathlib.Algebra.Order.Group.Unbundled.Abs
@@ -393,8 +394,45 @@ protected lemma HasCompactMulSupport.one {α β : Type*} [TopologicalSpace α] [
393394
HasCompactMulSupport (1 : α → β) := by
394395
simp [HasCompactMulSupport]
395396

397+
variable (α β) in
398+
/-- The submonoid of functions `α → β` with compact multiplicative support. -/
399+
@[to_additive /-- The additive submonoid of functions `α → β` with compact support. -/]
400+
def HasCompactMulSupport.submonoid : Submonoid (α → β) where
401+
carrier := {f | HasCompactMulSupport f}
402+
one_mem' := .one
403+
mul_mem' := .mul
404+
405+
@[to_additive (attr := simp)]
406+
theorem HasCompactMulSupport.mem_submonoid_iff {f : α → β} :
407+
f ∈ HasCompactMulSupport.submonoid α β ↔ HasCompactMulSupport f :=
408+
Iff.rfl
409+
410+
@[to_additive]
411+
theorem HasCompactMulSupport.list_prod {α β : Type*} [TopologicalSpace α] [Monoid β]
412+
{l : List (α → β)} (hl : ∀ f ∈ l, HasCompactMulSupport f) :
413+
HasCompactMulSupport l.prod :=
414+
list_prod_mem (S := HasCompactMulSupport.submonoid α β) hl
415+
396416
end Monoid
397417

418+
section CommMonoid
419+
420+
variable [TopologicalSpace α] [CommMonoid β]
421+
422+
@[to_additive]
423+
theorem HasCompactMulSupport.multiset_prod
424+
(m : Multiset (α → β)) (hm : ∀ f ∈ m, HasCompactMulSupport f) :
425+
HasCompactMulSupport m.prod :=
426+
multiset_prod_mem (S := HasCompactMulSupport.submonoid α β) m hm
427+
428+
@[to_additive]
429+
theorem HasCompactMulSupport.finset_prod {ι : Type*}
430+
{s : Finset ι} {f : ι → α → β} (hf : ∀ i ∈ s, HasCompactMulSupport (f i)) :
431+
HasCompactMulSupport (∏ i ∈ s, f i) :=
432+
prod_mem (S := HasCompactMulSupport.submonoid α β) hf
433+
434+
end CommMonoid
435+
398436
section DivisionMonoid
399437

400438
@[to_additive]

0 commit comments

Comments
 (0)