Zulip Chat Archive
Stream: new members
Topic: Non commutative Finset.prod
Gaëtan Serré (Mar 14 2024 at 15:45):
Hello, is it possible to define a product over a finite, noncommutative group:
import Mathlib
open BigOperators
-- Fails because G is not commutative.
def generative_subgroup {α : Type} [G : Group (Fintype α)] (G' : Subgroup (Fintype α)) := ∀ (g : Fintype α), ∃ (S : Finset G'), ∏ g' in S, g' = g
I saw that docs#Finset.prod depends on fold operations on lists, that return the same result when applied to lists that are permutation of each others (hence to necessity of commutativity). Is there a "fold
" depending on the order of operations or do I have to define my own operator on Finset
?
Richard Copley (Mar 14 2024 at 16:03):
I think List.prod
is the closest thing. To illustrate why there isn't a noncommutative product defined using Finset
, suppose that there were:
import Mathlib.Data.Finset.Basic
example {α : Type*} [Monoid α]
(MyNoncommProd : (s : Finset ℕ) → (f : ℕ → α) → α) (f : ℕ → α) :
MyNoncommProd {1, 2} f = MyNoncommProd {2, 1} f := by
rw [Finset.pair_comm 1 2]
Gaëtan Serré (Mar 14 2024 at 16:07):
Ok I get what you mean, thanks a lot!
Gaëtan Serré (Mar 14 2024 at 16:09):
Moreover, I think docs#List.prod is much more adapted to what I want to do next anyway
Richard Copley (Mar 14 2024 at 16:12):
That's what is usually used. See the definition of ExteriorAlgebra.ιMulti
(in "Mathlib.LinearAlgebra.ExteriorAlgebra.Basic"), for example.
Richard Copley (Mar 14 2024 at 16:15):
Or more directly, MultilinearMap.mkPiAlgebraFin
in Mathlib.LinearAlgebra.Multilinear.Basic
Gaëtan Serré (Mar 14 2024 at 16:22):
Oh I see! Thanks a lot for the references
Eric Wieser (Mar 14 2024 at 17:08):
docs#Finset.noncommProd is related, but probably not helpful here
Gaëtan Serré (Mar 14 2024 at 17:09):
Good to know, thanks anyway!
Last updated: May 02 2025 at 03:31 UTC