The semimonomial transformation group of degree over a ring
is
the semidirect product of the monomial transformation group of degree
(also known as the complete monomial group over the group of units
of
) and the group of ring automorphisms.
The multiplication of two elements
with
(with the multiplication
done from left to right (like in GAP) – that is,
for all
.)
is defined by
where
and the multiplication of vectors is defined elementwisely. (The indexing
of vectors is
-based here, so
.)
Todo
Up to now, this group is only implemented for finite fields because of the limited support of automorphisms for arbitrary rings.
AUTHORS:
EXAMPLES:
sage: S = SemimonomialTransformationGroup(GF(4, 'a'), 4)
sage: G = S.gens()
sage: G[0]*G[1]
((a, 1, 1, 1); (1,2,3,4), Ring endomorphism of Finite Field in a of size 2^2
Defn: a |--> a)
TESTS:
sage: TestSuite(S).run()
sage: TestSuite(S.an_element()).run()
Bases: sage.categories.action.Action
The action of SemimonomialTransformationGroup on matrices over the same ring whose number of columns is equal to the degree. See SemimonomialActionVec for the definition of the action on the row vectors of such a matrix.
Bases: sage.categories.action.Action
The natural action of the semimonomial group on vectors.
The action is defined by:
.
(The indexing of vectors is
-based here, so
.)
Bases: sage.groups.group.FiniteGroup, sage.structure.unique_representation.UniqueRepresentation
A semimonomial transformation group over a ring.
The semimonomial transformation group of degree over a ring
is
the semidirect product of the monomial transformation group of degree
(also known as the complete monomial group over the group of units
of
) and the group of ring automorphisms.
The multiplication of two elements
with
(with the multiplication
done from left to right (like in GAP) – that is,
for all
.)
is defined by
where
and the multiplication of vectors is defined elementwisely. (The indexing
of vectors is
-based here, so
.)
Todo
Up to now, this group is only implemented for finite fields because of the limited support of automorphisms for arbitrary rings.
EXAMPLES:
sage: F.<a> = GF(9)
sage: S = SemimonomialTransformationGroup(F, 4)
sage: g = S(v = [2, a, 1, 2])
sage: h = S(perm = Permutation('(1,2,3,4)'), autom=F.hom([a**3]))
sage: g*h
((2, a, 1, 2); (1,2,3,4), Ring endomorphism of Finite Field in a of size 3^2 Defn: a |--> 2*a + 1)
sage: h*g
((2*a + 1, 1, 2, 2); (1,2,3,4), Ring endomorphism of Finite Field in a of size 3^2 Defn: a |--> 2*a + 1)
sage: S(g)
((2, a, 1, 2); (), Ring endomorphism of Finite Field in a of size 3^2 Defn: a |--> a)
sage: S(1)
((1, 1, 1, 1); (), Ring endomorphism of Finite Field in a of size 3^2 Defn: a |--> a)
alias of SemimonomialTransformation
Returns the underlying ring of self.
EXAMPLES:
sage: F.<a> = GF(4)
sage: SemimonomialTransformationGroup(F, 3).base_ring() is F
True
Returns the degree of self.
EXAMPLES:
sage: F.<a> = GF(4)
sage: SemimonomialTransformationGroup(F, 3).degree()
3
Return a tuple of generators of self.
EXAMPLES:
sage: F.<a> = GF(4)
sage: SemimonomialTransformationGroup(F, 3).gens()
[((a, 1, 1); (), Ring endomorphism of Finite Field in a of size 2^2
Defn: a |--> a), ((1, 1, 1); (1,2,3), Ring endomorphism of Finite Field in a of size 2^2
Defn: a |--> a), ((1, 1, 1); (1,2), Ring endomorphism of Finite Field in a of size 2^2
Defn: a |--> a), ((1, 1, 1); (), Ring endomorphism of Finite Field in a of size 2^2
Defn: a |--> a + 1)]
Returns the number of elements of self.
EXAMPLES:
sage: F.<a> = GF(4)
sage: SemimonomialTransformationGroup(F, 5).order() == (4-1)**5 * factorial(5) * 2
True