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