Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Modular case
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelmarco committed Oct 13, 2015
1 parent 6a025ba commit 2fa234a
Showing 1 changed file with 28 additions and 4 deletions.
32 changes: 28 additions & 4 deletions src/sage/groups/matrix_gps/finitely_generated.py
Expand Up @@ -716,6 +716,15 @@ def invariant_generators(self, ring=None):
[x^4 + 2*x^2*y^2 + y^4,
x^5*y - x*y^5,
x^8 + 28/9*x^6*y^2 + 70/9*x^4*y^4 + 28/9*x^2*y^6 + y^8]
An example of the modular case::
sage: F = FiniteField(2)
sage: m1 = matrix(F, [[0,1],[1,0]])
sage: G = MatrixGroup([m1])
sage: G.invariant_generators()
[x0 + x1, x0*x1, 1]
AUTHORS:
Expand All @@ -740,10 +749,25 @@ def invariant_generators(self, ring=None):
R = PolynomialRing(F, n, 'x')
else:
R = ring
char = R.base_ring().characteristic()
import sage.libs.singular.function_factory
from sage.libs.singular.function import singular_function
sage.libs.singular.function_factory.lib('finvar.lib')
inrey = singular_function('invariant_algebra_reynolds')
L = matrix([a.matrix()*vector(R.gens()) for a in self.list()])
invars = inrey(L, 0)
return [R(a) for a in invars[0]]
if char == 0 or self.cardinality() % char != 0: #non modular case
inrey = singular_function('invariant_algebra_reynolds')
L = matrix([a.matrix()*vector(R.gens()) for a in self.list()])
invars = inrey(L, 0)
return [R(a) for a in invars[0]]
else: #modular case
primcharp = singular_function('primary_charp_without')
secnm = singular_function('secondary_not_cohen_macaulay')
lgens = [a.matrix().change_ring(R) for a in self.gens()] + [0]
primgens = primcharp(*lgens)
secgens = secnm(primgens, *lgens)
return [R(a) for a in primgens.list() + secgens.list()]






0 comments on commit 2fa234a

Please sign in to comment.