Symmetric variables in a polynomial

37 views
Skip to first unread message

Jori Mantysalo

unread,
Feb 23, 2015, 2:24:40 AM2/23/15
to sage-s...@googlegroups.com
Is there easy way to get "variables group" of a polynomial, or a list of
interchangeable variables? I.e. from

a*b+c

one would get

[[a,b]]

or from

a*b+c*d

either

[[a,b],[c,d]]

or a group isomorphic to D_4.

--
Jori Mäntysalo

Dima Pasechnik

unread,
Feb 23, 2015, 4:35:16 AM2/23/15
to sage-s...@googlegroups.com
This is easy at least in the sense that this is the stabiliser of
a set of subsets of the variables in the symmetric group S_n (assuming
you have n variables). And GAP does this for you.

The corresponding GAP command for your 2nd example would be

gap> h:=Stabilizer(SymmetricGroup(4), [[1,2],[3,4]],OnSetsSets);
Group([ (1,2), (1,3)(2,4) ])
gap> Size(h);
8

I don't know if this is properly wrapped in Sage.
(Some GAP actions are wrapped just fine).
You'd need to convert your polynomial into such a
stricture, but this is easy.

HTH,
Dima


Jori Mantysalo

unread,
Apr 8, 2015, 5:53:34 AM4/8/15
to sage-s...@googlegroups.com
On Mon, 23 Feb 2015, Dima Pasechnik wrote:

>> Is there easy way to get "variables group" of a polynomial, or a list of
>> interchangeable variables? I.e. from

>> a*b+c*d
>>
>> either
>>
>> [[a,b],[c,d]]
>>
>> or a group isomorphic to D_4.

> The corresponding GAP command for your 2nd example would be
>
> gap> h:=Stabilizer(SymmetricGroup(4), [[1,2],[3,4]],OnSetsSets);
> Group([ (1,2), (1,3)(2,4) ])
> gap> Size(h);
> 8
>
> You'd need to convert your polynomial into such a stricture, but this is
> easy.

Eh, could you tell how to this easy conversion?

--
Jori Mäntysalo

Nils Bruin

unread,
Apr 8, 2015, 12:40:27 PM4/8/15
to sage-s...@googlegroups.com
On Monday, February 23, 2015 at 1:35:16 AM UTC-8, Dima Pasechnik wrote:
This is easy at least in the sense that this is the stabiliser of
a set of subsets of the variables in the symmetric group S_n (assuming
you have n variables). And GAP does this for you.

You'd need to be a little more careful than that. The coefficients do matter:

a*b+c*d

is invariant under more permutations than

a*b-c*d

is.

 A brain-dead way is to just iterate through all permutations, which is entirely reasonable for 4 variables and infeasible by the time you hit 14 variables or so:

sage: P.<a,b,c,d>=QQ[]
sage: G=SymmetricGroup([a,b,c,d])
sage: f=a*b+c*d
sage: [g for  g in G if f(g(a),g(b),g(c),g(d)) == f]
[(), (c,d), (a,b), (a,b)(c,d), (a,c)(b,d), (a,c,b,d), (a,d,b,c), (a,d)(b,c)]

Dima Pasechnik

unread,
Apr 9, 2015, 9:53:24 AM4/9/15
to sage-s...@googlegroups.com
On 2015-04-08, Nils Bruin <nbr...@sfu.ca> wrote:
> On Monday, February 23, 2015 at 1:35:16 AM UTC-8, Dima Pasechnik wrote:
>>
>> This is easy at least in the sense that this is the stabiliser of
>> a set of subsets of the variables in the symmetric group S_n (assuming
>> you have n variables). And GAP does this for you.
>>
>
> You'd need to be a little more careful than that. The coefficients do
> matter:

well, the examples were just sums of monomials.

More generally, one could speak about
finding the automorphism group of the edge-coloured hypergraph, with
edges corresponding to monomials, and edge colours corresponding to
the coefficients of the monomials.

How does one solve this in full generality, i.e. finding the
largest subgroup of GL(V) which leaves the polynomial invariant,
I don't really know. (Unless one resorts to solving systems of
polynomial equations).

Dima

Reply all
Reply to author
Forward
0 new messages