Decomposition Group of A Triangular Ideal





1   Introduction


Documented function and procedures above are the Magma implementation of the algorithm presented in the paper Computation of the decomposition group of a triangular ideal.

The function Decomposition_Group computes the decomposition group of a triangular ideal Ik[x1,…,xn] . The decomposition group of I is the set-wise stabiliser of I for the natural group action of Sn (the symmetric group of degree n) on k[x1,… ,xn] :
Sn X k[x1,…,xn] —→ k[x1,…,xn]       
(σ,P(x1,…,xn)) ⊢→ P(xσ(1),…,xσ(n)).
In other words, the decomposition group is defined by :
Dec(I) = { σ ∈ Sn   ∣   σ.fI  }.
The input of this implementation is a triangular generating set {f1,…,fn} of I such that fi depends only on the variables x1,…,xi. As this algorithm uses ideal membership tests, in this implementation, the triangular set of generators S is supposed to be a lexicographical Gröbner basis for the order induced by x1>…>xn.
The output is a strong generating set of the decomposition group of the ideal generated by S. During the computation, the algorithm tests whether a backtrack appears (in this case, the Galois ideal I is not pure) and at the end of the computation return the predicate

Is I a pure Galois Ideal ?


Authors : S. Orange (LIP6, Paris 6 University), G. Renault (LIP6, Paris 6 University).

Source of this file : Documented Magma Code file.

2   Implementation


2.1   NewOrbits



function NewOrbits (orbites,sigma); nvorbites := {}; while not(IsEmpty(orbites)) do e := Random(orbites) ; p := e join Image(sigma,e) ; orbites := Exclude(orbites,e) ; while not(p eq e) do for oprime in orbites do if not(#(p meet oprime) eq 0) then e := e join oprime; orbites := Exclude(orbites,oprime) ; end if; end for; p := e join Image(sigma,e) ; end while ; nvorbites := Include(nvorbites,e) ; end while; return nvorbites; end function;



2.2   OnePermutation



function OnePermutation(l,S,SP) local r,Sn,n,boucle1,boucle2,a,ens,s,ll; n := #S; Sn := Sym(n); r := n - #l; boucle1 := true; while (r gt 0) and boucle1 do ens:=Reverse(Sort(SetToSequence({1..n} diff Set(l)))); boucle2 := true; while (r gt 0) and boucle2 do if #ens eq 0 then //A backtrack appears boucle1:=false; boucle2:=false; else a := ens[1]; ens := ens[2 .. #ens]; ll := [a] cat l; s:= Sn!(SetToSequence({1..n} diff Set(ll)) cat ll); if NormalForm((SP[r])^s ,SP) eq 0 then if NormalForm((S[r])^s,S) eq 0 then r:=r-1; boucle2 := false; l := ll; end if; end if; end if; end while; end while; if r eq 0 then return s; else //A backtrack appears return Id(Sn); end if; end function;



2.3   deGkaGkm


This procedure determines a set of generators G of the set-wise stabiliser of {k−1,…,n} of the decomposition group of a triangular ideal < S > from the set-wise stabiliser of {k−1,…,n}

In order to improve efficiency, a preliminary modular test is performed.
procedure deGkaGkm(k,~G,~S,~SP,~n,~sn,~orbites,~IsPureGaloisIdeal) elt:={1..(k-1)} meet {Max(o): o in orbites}; while (not(IsEmpty(elt))) do ak := Max(elt); elt := elt diff {ak}; ll:= SetToSequence({1..k} diff {ak}) cat [ak] cat [(k+1)..n] ; if NormalForm((SP[k])^(sn! ll) ,SP) eq 0 then if NormalForm((S[k])^(sn! ll) ,S) eq 0 then sigma2:= OnePermutation([ak] cat [(k+1)..n],S,SP); if not (sigma2 eq Id(sn)) then G:=G cat [sigma2]; orbites:=NewOrbits(orbites,sigma2); elt:=elt meet {Max(o): o in orbites}; else if IsPureGaloisIdeal then IsPureGaloisIdeal := false; //A backtrack appears; break; end if; end if; end if; end if; end while; end procedure;



2.4   Decomposition_group


This is the central function. It determines the decomposition group of a triangular ideal and permits the computation of the predicate IsPureGaloisIdeal?.
function Decomposition_group(S,GalId) S:=Reverse(Sort(S)); n:=Rank(Parent (S[1])); sn:=Sym(n); G:=[]; orbites := {{i}: i in {1..n}} ; // We search for a prime p which is compatible. p:=2; rep:=false; while rep eq false do polmod:=PolynomialRing(FiniteField(p),n); k:=1; rep:=true; while (rep eq true) and (k le n) do rep:=IsCoercible(polmod,S[k]); k:=k+1; end while; if rep eq false then p:=NextPrime(p); end if; end while; polmod:=PolynomialRing(FiniteField(p),n); SP := [(polmod ! S[i]) : i in [1..n]]; // Computation of the group of decomposition. if GalId then for k:= 2 to n do deGkaGkm(k,~G,~S,~SP,~n,~sn,~orbites,~GalId); if not(GalId) then break; end if; end for; else for k:= 2 to n do deGkaGkm(k,~G,~S,~SP,~n,~sn,~orbites,~GalId); end for; end if; // Computation of Card(V(<S>)). // Here S must be separable. card := &*[LeadingTotalDegree(f) : f in S]; // Output G:=PermutationGroup<n|G>; return G, (card eq #G) and GalId; end function;



3   Examples of uses in Magma of the function Decomposition_group


3.1   Computation of the decomposition group of a triangular ideal and of the predicate Is Pure Galois Ideal ?


The ideal I of Q[x1,…,xn] generated by the triangular Gröbner basis (with respect to the lexicographical order induced by x8<…<x1)

S = { x1x4x6x87 + x4x6x83,
x22 + x2*x3 + x2*x4 + x32 + x3*x4 + x42,
x33 + x32*x4 + x3*x42 + x43,
x44 + x84 − 1,
x5 + x6,
x62 + x82,
x7 + x8,
x88x84 − 1}
is an Galois ideal of f(x) = x88x84 − 1 ∈ Q[x] .

The Magma function Decomposition_Group return the decomposition group of I :

> PR8<x1,x2,x3,x4,x5,x6,x7,x8>:= PolynomialRing(RationalField(), 8);
>
> S:=[
> x1 + x2 + x3 + x4,
> x2^2 + x2*x3 + x2*x4 + x3^2 + x3*x4 + x4^2,
> x3^3 + x3^2*x4 + x3*x4^2 + x4^3,
> x4^4 + x8^4 - 1,
> x5 + x6,
> x6^2 + x8^2,
> x7 + x8,
> x8^8 - x8^4 - 1
> ];
>
The decomposition group of the ideal I and the predicate "Is I a pure Galois Ideal ?" are computed by the function call :

> Decomposition_group(S,true);
Permutation group acting on a set of cardinality 8
Order = 192 = 2^6 * 3
(1, 2)
(2, 3)
(3, 4)
(5, 6)
(7, 8)
(5, 7)(6, 8)
false
>


The second ouput shows that this Galois ideal is not a pure Galois ideal.

3.2   Computation of the decomposition group


The ideal I of Q[x1,…,xn] generated by the triangular Gröbner basis (with respect to the lexicographical order induced by x8<…<x1)

S = { x1x4x6x87 + x4x6x83,
x2 + x4x6x87x4x6x83,
x3 + x4,
x42x6x85 + x6x8,
x5 + x6,
x62 + x82,
x7 + x8,
x88x84 − 1}
is a relations ideal of f(x) = x88x84 − 1 ∈ Q[x] .

The Magma function Decomposition_Group return the decomposition group of I :

> PR8<x1,x2,x3,x4,x5,x6,x7,x8>:= PolynomialRing(RationalField(), 8);
>
> S:=[
> x1 + x2 + x3 + x4,
> x_2 + x_4x_6x_8^7 - x_4x_6x_8^3,
> x_3 + x_4,
> x_4^2 - x_6x_8^5 + x_6x_8,
> x5 + x6,
> x6^2 + x8^2,
> x7 + x8,
> x8^8 - x8^4 - 1
> ];
>
> Decomposition_group(S,true);
Permutation group acting on a set of cardinality 8
Order = 32 = 2^5
(1, 2)(3, 4)
(1, 3)(2, 4)(5, 6)
(1, 3)(2, 4)(7, 8)
(1, 2)(5, 7)(6, 8)
(1, 8, 4, 6, 2, 7, 3, 5)
true
>


The second parameter of Decomposition_group is set to true and, in this case, the predicate is calculated. The second output shows that the ideal < S > is a pure Galois ideal. This Galois ideal is actually a relations ideal of f and therefore the decomposition group of I is the the symetric representation of the Galois group of f corresponding to I.


This document was translated from a Documented Magma Code to LATEX by DMC2TEX beta0.1 version.
This document was translated from LATEX by HEVEA.