Zulip Chat Archive

Stream: Is there code for X?

Topic: finprod of elements of a submonoid


Kevin Buzzard (Jun 12 2024 at 23:12):

Do we have this:

import Mathlib.Algebra.BigOperators.Finprod
import Mathlib.Algebra.Group.Submonoid.Basic

lemma Submonoid.finprod_mem {G : Type*} [CommMonoid G] {M : Submonoid G} {ι : Type*}
    {S : Set ι} {f : ι  G} (hf :  i  S, f i  M) : (∏ᶠ i  S, f i)  M := by
  sorry

Kevin Buzzard (Jun 13 2024 at 07:20):

lemma Submonoid.finprod_mem {G : Type*} [CommMonoid G] {M : Submonoid G} {ι : Type*}
    {S : Set ι}
    {f : ι  G} (hf :  i  S, f i  M) : (∏ᶠ i  S, f i)  M := by
  by_cases hS : (S  mulSupport f).Finite
  · rw [finprod_mem_eq_prod _ hS]
    apply Submonoid.prod_mem M <| fun i hi  hf _ ?_
    exact mem_of_mem_diff ((Finite.mem_toFinset hS).mp hi)
  · exact finprod_mem_eq_one_of_infinite hS  M.one_mem

Johan Commelin (Jun 13 2024 at 07:21):

I hope we have a generic docs#prod_mem

Kevin Buzzard (Jun 13 2024 at 07:25):

yeah but for finsets.

Johan Commelin (Jun 13 2024 at 07:37):

Aah, oops

Edward van de Meent (Jun 13 2024 at 10:34):

docs#finprod_induction seems relevant

Eric Wieser (Jun 13 2024 at 11:10):

lemma Submonoid.finprod_mem {G : Type*} [CommMonoid G] {M : Submonoid G} {ι : Type*}
    {S : Set ι} {f : ι  G} (hf :  i  S, f i  M) : (∏ᶠ i  S, f i)  M :=
  finprod_mem_induction (·  M) (one_mem _) (fun _ _ => mul_mem) hf

Yury G. Kudryashov (Jul 15 2024 at 01:30):

You should prove it for a finprod indexed on i : (_ : Sort*)


Last updated: May 02 2025 at 03:31 UTC