Automorphism groups of endomorphisms of the projective line¶
AUTHORS:
- Xander Faber, Michelle Manes, Bianca Viray: algorithm and original code “Computing Conjugating Sets and Automorphism Groups of Rational Functions” by Xander Faber, Michelle Manes, and Bianca Viray [FMV].
- Joao de Faria, Ben Hutz, Bianca Thompson (11-2013): adaption for inclusion in Sage
-
sage.schemes.projective.endPN_automorphism_group.
CRT_automorphisms
(automorphisms, order_elts, degree, moduli)¶ Compute a maximal list of automorphisms over \(Zmod(M)\).
Given a list of automorphisms over various \(Zmod(p^k)\), a list of the elements orders, an integer degree, and a list of the \(p^k\) values compute a maximal list of automorphisms over \(Zmod(M)\), such that for every \(j\) in \(len(moduli)\), each element reduces mod
moduli[j]
to one of the elements inautomorphisms[j]
that has order =degree
INPUT:
automorphisms
– a list of lists of automorphisms over various \(Zmod(p^k)\).order_elts
– a list of lists of the orders of the elements ofautomorphisms
.degree
- a positive integer.moduli
– list of prime powers, i.e., \(p^k\).
OUTPUT:
- a list containing a list of automorphisms over \(Zmod(M)\) and the product of the moduli
EXAMPLES:
sage: aut = [[matrix([[1,0],[0,1]]), matrix([[0,1],[1,0]])]] sage: ords = [[1,2]] sage: degree = 2 sage: mods = [5] sage: from sage.schemes.projective.endPN_automorphism_group import CRT_automorphisms sage: CRT_automorphisms(aut,ords,degree,mods) ([ [0 1] [1 0] ], 5)
-
sage.schemes.projective.endPN_automorphism_group.
CRT_helper
(automorphisms, moduli)¶ Lift the given list of automorphisms to \(Zmod(M)\).
Given a list of automorphisms over various \(Zmod(p^k)\) find a list of automorphisms over \(Zmod(M)\) where \(M=\prod p^k\) that surjects onto every tuple of automorphisms from the various \(Zmod(p^k)\).
INPUT:
automorphisms
– a list of lists of automorphisms over various \(Zmod(p^k)\).moduli
– list of the various \(p^k\).
OUTPUT:
- a list of automorphisms over \(Zmod(M)\).
EXAMPLES:
sage: from sage.schemes.projective.endPN_automorphism_group import CRT_helper sage: CRT_helper([[matrix([[4,0],[0,1]]), matrix([[0,1],[1,0]])]],[5]) ([ [4 0] [0 1] [0 1], [1 0] ], 5)
-
sage.schemes.projective.endPN_automorphism_group.
PGL_order
(A)¶ Find the multiplicative order of a linear fractional transformation that has a finite order as an element of \(PGL_2(R)\).
A
can be represented either as a rational function or a 2x2 matrixINPUT:
A
– a linear fractional transformation.
OUTPUT:
- a positive integer.
EXAMPLES:
sage: M = matrix([[0,2],[2,0]]) sage: from sage.schemes.projective.endPN_automorphism_group import PGL_order sage: PGL_order(M) 2
sage: R.<x> = PolynomialRing(QQ) sage: from sage.schemes.projective.endPN_automorphism_group import PGL_order sage: PGL_order(-1/x) 2
-
sage.schemes.projective.endPN_automorphism_group.
PGL_repn
(rational_function)¶ Take a linear fraction transformation and represent it as a 2x2 matrix.
INPUT:
rational_function
– a linear fraction transformation.
OUTPUT:
- a 2x2 matrix representing
rational_function
.
EXAMPLES:
sage: R.<z> = PolynomialRing(QQ) sage: f = ((2*z-1)/(3-z)) sage: from sage.schemes.projective.endPN_automorphism_group import PGL_repn sage: PGL_repn(f) [ 2 -1] [-1 3]
-
sage.schemes.projective.endPN_automorphism_group.
automorphism_group_FF
(rational_function, absolute=False, iso_type=False, return_functions=False)¶ This function computes automorphism groups over finite fields.
ALGORITHM:
See Algorithm 4 in Faber-Manes-Viray [FMV].
INPUT:
rational_function
– a rational function defined over the fraction field- of a polynomial ring in one variable with finite field coefficients.
absolute
– Boolean - True returns the absolute automorphism group and a field of definition.- default: False (optional)
iso_type
– Boolean - True returns the isomorphism type of the automorphism group.- default: False (optional)
return_functions
– Boolean, True returns linear fractional transformations False returns elements of \(PGL(2)\). default: False (optional)
OUTPUT:
- List of automorphisms of
rational_function
.
EXAMPLES:
sage: R.<x> = PolynomialRing(GF(5^2, 't')) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_FF sage: automorphism_group_FF((x^2+x+1)/(x+1)) [ [1 0] [4 3] [0 1], [0 1] ]
sage: R.<x> = PolynomialRing(GF(2^5, 't')) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_FF sage: automorphism_group_FF(x^(5), True, False, True) [Univariate Polynomial Ring in w over Finite Field in b of size 2^5, [w, 1/w]]
sage: R.<x> = PolynomialRing(GF(2^5, 't')) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_FF sage: automorphism_group_FF(x^(5), False, False, True) [x, 1/x]
-
sage.schemes.projective.endPN_automorphism_group.
automorphism_group_FF_alg2
(rational_function)¶ Implementation of algorithm for determining the absolute automorphism group over a finite field, given an invariant set, see [FMV].
INPUT:
rational_function
–a rational function defined over a finite field.
OUTPUT:
- absolute automorphism group of
rational_function
and a ring of definition.
EXAMPLES:
sage: R.<z> = PolynomialRing(GF(7^2,'t')) sage: f = (3*z^3 - z^2)/(z-1) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_FF_alg2 sage: automorphism_group_FF_alg2(f) [Univariate Polynomial Ring in w over Finite Field in b of size 7^2, [w, (3*b + 2)/((2*b + 6)*w)]]
sage: R.<z> = PolynomialRing(GF(5^3,'t')) sage: f = (3456*z^(4)) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_FF_alg2 sage: automorphism_group_FF_alg2(f) [Univariate Polynomial Ring in w over Finite Field in b of size 5^6, [w, (3*b^5 + 4*b^4 + 3*b^2 + 2*b + 1)*w, (2*b^5 + b^4 + 2*b^2 + 3*b + 3)*w, (3*b^5 + 4*b^4 + 3*b^2 + 2*b)/((3*b^5 + 4*b^4 + 3*b^2 + 2*b)*w), (4*b^5 + 2*b^4 + 4*b^2 + b + 2)/((3*b^5 + 4*b^4 + 3*b^2 + 2*b)*w), (3*b^5 + 4*b^4 + 3*b^2 + 2*b + 3)/((3*b^5 + 4*b^4 + 3*b^2 + 2*b)*w)]]
-
sage.schemes.projective.endPN_automorphism_group.
automorphism_group_FF_alg3
(rational_function)¶ Implementation of Algorithm 3 in the paper by Faber/Manes/Viray [FMV] for computing the automorphism group over a finite field.
INPUT:
rational_function
–a rational function defined over a finite field \(F\).
OUTPUT:
- list of \(F\)-rational automorphisms of
rational_function
.
EXAMPLES:
sage: R.<z> = PolynomialRing(GF(5^3,'t')) sage: f = (3456*z^4) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_FF_alg3 sage: automorphism_group_FF_alg3(f) [z, 3/(3*z)]
-
sage.schemes.projective.endPN_automorphism_group.
automorphism_group_QQ_CRT
(rational_function, prime_lower_bound=4, return_functions=True, iso_type=False)¶ Determines the complete group of rational automorphisms (under the conjugation action of \(PGL(2,\QQ)\)) for a rational function of one variable.
See [FMV] for details.
INPUT:
rational_function
- a rational function of a univariate polynomial ring over \(\QQ\).prime_lower_bound
– a positive integer - a lower bound for the primes to use for the Chinese Remainder Theorem step. default: 4 (optional).return_functions
– Boolean - True returns linear fractional transformations False returns elements of \(PGL(2,\QQ)\) default: True (optional).iso_type
– Boolean - True returns the isomorphism type of the automorphism group.- default: False (optional).
OUTPUT:
- a complete list of automorphisms of
rational_function
.
EXAMPLES:
sage: R.<z> = PolynomialRing(QQ) sage: f = (3*z^2 - 1)/(z^3 - 3*z) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_QQ_CRT sage: automorphism_group_QQ_CRT(f, 4, True) [z, -z, 1/z, -1/z, (-z + 1)/(z + 1), (z + 1)/(z - 1), (z - 1)/(z + 1), (-z - 1)/(z - 1)]
sage: R.<z> = PolynomialRing(QQ) sage: f = (3*z^2 - 1)/(z^3 - 3*z) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_QQ_CRT sage: automorphism_group_QQ_CRT(f, 4, False) [ [1 0] [-1 0] [0 1] [ 0 -1] [-1 1] [ 1 1] [ 1 -1] [-1 -1] [0 1], [ 0 1], [1 0], [ 1 0], [ 1 1], [ 1 -1], [ 1 1], [ 1 -1] ]
-
sage.schemes.projective.endPN_automorphism_group.
automorphism_group_QQ_fixedpoints
(rational_function, return_functions=False, iso_type=False)¶ This function will compute the automorphism group for
rational_function
via the method of fixed pointsALGORITHM:
See Algorithm 3 in Faber-Manes-Viray [FMV].INPUT:
rational_function
- Rational Function defined over \(\mathbb{Z}\) or \(\mathbb{Q}\)return_functions
- Boolean Value, True will return elements in the automorphism group- as linear fractional transformations. False will return elements as \(PGL2\) matrices.
iso_type
- Boolean - True will cause the classification of the finite automorphism- group to also be returned
OUTPUT:
- List of automorphisms that make up the Automorphism Group
of
rational_function
.
EXAMPLES:
sage: F.<z> = PolynomialRing(QQ) sage: rational_function = (z^2 - 2*z - 2)/(-2*z^2 - 2*z + 1) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_QQ_fixedpoints sage: automorphism_group_QQ_fixedpoints(rational_function, True) [z, 2/(2*z), -z - 1, -2*z/(2*z + 2), (-z - 1)/z, -1/(z + 1)]
sage: F.<z> = PolynomialRing(QQ) sage: rational_function = (z^2 + 2*z)/(-2*z - 1) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_QQ_fixedpoints sage: automorphism_group_QQ_fixedpoints(rational_function) [ [1 0] [-1 -1] [-2 0] [0 2] [-1 -1] [ 0 -1] [0 1], [ 0 1], [ 2 2], [2 0], [ 1 0], [ 1 1] ]
sage: F.<z> = PolynomialRing(QQ) sage: rational_function = (z^2 - 4*z -3)/(-3*z^2 - 2*z + 2) sage: from sage.schemes.projective.endPN_automorphism_group import automorphism_group_QQ_fixedpoints sage: automorphism_group_QQ_fixedpoints(rational_function, True, True) ([z, (-z - 1)/z, -1/(z + 1)], 'Cyclic of order 3')
-
sage.schemes.projective.endPN_automorphism_group.
automorphisms_fixing_pair
(rational_function, pair, quad)¶ Compute the set of automorphisms with order prime to the characteristic that fix the pair, excluding the identity.
INPUT:
rational_function
– rational function defined over finite field \(E\).pair
– a pair of points of \(\mathbb{P}^1(E)\).quad
– Boolean: an indicator if this is a quadratic pair of points.
OUTPUT:
- set of automorphisms with order prime to characteristic defined over \(E\) that fix
- the pair, excluding the identity.
EXAMPLES:
sage: R.<z> = PolynomialRing(GF(7^2, 't')) sage: f = (z^2 + 5*z + 5)/(5*z^2 + 5*z + 1) sage: L = [[4, 1], [2, 1]] sage: from sage.schemes.projective.endPN_automorphism_group import automorphisms_fixing_pair sage: automorphisms_fixing_pair(f, L, False) [(6*z + 6)/z, 4/(3*z + 3)]
-
sage.schemes.projective.endPN_automorphism_group.
field_descent
(sigma, y)¶ Function for descending an element in a field E to a subfield F.
Here F, E must be finite fields or number fields. This function determines the unique image of subfield which is
y
by the embeddingsigma
if it exists. Otherwise returnsNone
. This functionality is necessary because Sage does not keep track of subfields.INPUT:
sigma
– an embedding sigma: \(F\) -> \(E\) of fields.y
–an element of the field \(E\).
OUTPUT:
- the unique element of the subfield if it exists, otherwise
None
.
EXAMPLE:
sage: R = GF(11^2,'b') sage: RR = GF(11) sage: s = RR.Hom(R)[0] sage: from sage.schemes.projective.endPN_automorphism_group import field_descent sage: field_descent(s, R(1)) 1
-
sage.schemes.projective.endPN_automorphism_group.
height_bound
(polynomial)¶ Compute the maximum height of the coefficients of an automorphism.
This bounds sets the termination criteria for the Chinese Remainder Theorem step.
Let \(f\) be a square-free polynomial with coefficients in \(K\) Let \(F\) be an automorphism of \(\mathbb{P}^1_{Frac(R)}\) that permutes the roots of \(f\) This function returns a bound on the height of \(F\), when viewed as an element of \(\mathbb{P}^3\)
In [FMV] it is proven that \(ht(F) <= 6^{[K:Q]}*M\), where \(M\) is the Mahler measure of \(f\) M is bounded above by \(H(f)\), so we return the floor of \(6*H(f)\) (since \(ht(F)\) is an integer)
INPUT:
polynomial
– a univariate polynomial.
OUTPUT:
- a positive integer.
EXAMPLES:
sage: R.<z> = PolynomialRing(QQ) sage: f = (z^3+2*z+6) sage: from sage.schemes.projective.endPN_automorphism_group import height_bound sage: height_bound(f) 413526
-
sage.schemes.projective.endPN_automorphism_group.
order_p_automorphisms
(rational_function, pre_image)¶ Determine the order-p automorphisms given the input data.
This is algorithm 4 in Faber-Manes-Viray [FMV].
INPUT:
rational_function
–rational function defined over finite field \(F\).pre_image
–set of triples \([x, L, f]\), where \(x\) is an \(F\)-rational- fixed point of
rational_function
, \(L\) is the list of \(F\)-rational pre-images of \(x\) (excluding \(x\)), and \(f\) is the polynomial defining the full set of pre-images of \(x\) (again excluding \(x\) itself).
OUTPUT:
- set of automorphisms of order \(p\) defined over \(F\).
EXAMPLES:
sage: R.<x> = PolynomialRing(GF(11)) sage: f = x^11 sage: L = [[[0, 1], [], 1], [[10, 1], [], 1], [[9, 1], [], 1], ....: [[8, 1], [],1], [[7, 1], [], 1], [[6, 1], [], 1], [[5, 1], [], 1], ....: [[4, 1], [], 1],[[3, 1], [], 1], [[2, 1], [], 1], [[1, 1], [], 1], ....: [[1, 0], [], 1]] sage: from sage.schemes.projective.endPN_automorphism_group import order_p_automorphisms sage: order_p_automorphisms(f,L) [x/(x + 1), 6*x/(x + 6), 3*x/(x + 3), 7*x/(x + 7), 9*x/(x + 9), 10*x/(x + 10), 5*x/(x + 5), 8*x/(x + 8), 4*x/(x + 4), 2*x/(x + 2), 10/(x + 2), (5*x + 10)/(x + 7), (2*x + 10)/(x + 4), (6*x + 10)/(x + 8), (8*x + 10)/(x + 10), (9*x + 10)/x, (4*x + 10)/(x + 6), (7*x + 10)/(x + 9), (3*x + 10)/(x + 5), (x + 10)/(x + 3), (10*x + 7)/(x + 3), (4*x + 7)/(x + 8), (x + 7)/(x + 5), (5*x + 7)/(x + 9), (7*x + 7)/x, (8*x + 7)/(x + 1), (3*x + 7)/(x + 7), (6*x + 7)/(x + 10), (2*x + 7)/(x + 6), 7/(x + 4), (9*x + 2)/(x + 4), (3*x + 2)/(x + 9), 2/(x + 6), (4*x + 2)/(x + 10), (6*x + 2)/(x + 1), (7*x + 2)/(x + 2), (2*x + 2)/(x + 8), (5*x + 2)/x, (x + 2)/(x + 7), (10*x + 2)/(x + 5), (8*x + 6)/(x + 5), (2*x + 6)/(x + 10), (10*x + 6)/(x + 7), (3*x + 6)/x, (5*x + 6)/(x + 2), (6*x + 6)/(x + 3), (x + 6)/(x + 9), (4*x + 6)/(x + 1), 6/(x + 8), (9*x + 6)/(x + 6), (7*x + 8)/(x + 6), (x + 8)/x, (9*x + 8)/(x + 8), (2*x + 8)/(x + 1), (4*x + 8)/(x + 3), (5*x + 8)/(x + 4), 8/(x + 10), (3*x + 8)/(x + 2), (10*x + 8)/(x + 9), (8*x + 8)/(x + 7), (6*x + 8)/(x + 7), 8/(x + 1), (8*x + 8)/(x + 9), (x + 8)/(x + 2), (3*x + 8)/(x + 4), (4*x + 8)/(x + 5), (10*x + 8)/x, (2*x + 8)/(x + 3), (9*x + 8)/(x + 10), (7*x + 8)/(x + 8), (5*x + 6)/(x + 8), (10*x + 6)/(x + 2), (7*x + 6)/(x + 10), 6/(x + 3), (2*x + 6)/(x + 5), (3*x + 6)/(x + 6), (9*x + 6)/(x + 1), (x + 6)/(x + 4), (8*x + 6)/x, (6*x + 6)/(x + 9), (4*x + 2)/(x + 9), (9*x + 2)/(x + 3), (6*x + 2)/x, (10*x + 2)/(x + 4), (x + 2)/(x + 6), (2*x + 2)/(x + 7), (8*x + 2)/(x + 2), 2/(x + 5), (7*x + 2)/(x + 1), (5*x + 2)/(x + 10), (3*x + 7)/(x + 10), (8*x + 7)/(x + 4), (5*x + 7)/(x + 1), (9*x + 7)/(x + 5), 7/(x + 7), (x + 7)/(x + 8), (7*x + 7)/(x + 3), (10*x + 7)/(x + 6), (6*x + 7)/(x + 2), (4*x + 7)/x, (2*x + 10)/x, (7*x + 10)/(x + 5), (4*x + 10)/(x + 2), (8*x + 10)/(x + 6), (10*x + 10)/(x + 8), 10/(x + 9), (6*x + 10)/(x + 4), (9*x + 10)/(x + 7), (5*x + 10)/(x + 3), (3*x + 10)/(x + 1), x + 1, x + 2, x + 4, x + 8, x + 5, x + 10, x + 9, x + 7, x + 3, x + 6]
-
sage.schemes.projective.endPN_automorphism_group.
rational_function_coefficient_descent
(rational_function, sigma, poly_ring)¶ Function for descending the coefficients of a rational function from field \(E\) to a subfield \(F\).
Here \(F\), \(E\) must be finite fields or number fields. It determines the unique rational function in fraction field of
poly_ring
which is the image ofrational_function
byssigma
, if it exists, and otherwise returnsNone
.INPUT:
rational_function
–a rational function with coefficients in a field \(E\).sigma
– a field embedding sigma: \(F\) -> \(E\).poly_ring
– a polynomial ring \(R\) with coefficients in \(F\).
OUTPUT:
- a rational function with coefficients in the fraction field of
poly_ring
if it exists, and otherwiseNone
.
EXAMPLES:
sage: T.<z> = PolynomialRing(GF(11^2,'b')) sage: S.<y> = PolynomialRing(GF(11)) sage: s = S.base_ring().hom(T.base_ring()) sage: f = (3*z^3 - z^2)/(z-1) sage: from sage.schemes.projective.endPN_automorphism_group import rational_function_coefficient_descent sage: rational_function_coefficient_descent(f,s,S) (3*y^3 + 10*y^2)/(y + 10)
-
sage.schemes.projective.endPN_automorphism_group.
rational_function_coerce
(rational_function, sigma, S_polys)¶ Function for coercing a rational function defined over a ring \(R\) to have coefficients in a second ring
S_polys
.The fraction field of polynomial ring
S_polys
will contain the new rational function.INPUT:
rational_function
– rational function with coefficients in \(R\).sigma
– a ring homomorphism sigma: \(R\) ->S_polys
.S_polys
– a polynomial ring.
OUTPUT:
- a rational function with coefficients in
S_polys
.
EXAMPLES:
sage: R.<y> = PolynomialRing(QQ) sage: S.<z> = PolynomialRing(ZZ) sage: s = S.hom([z],R) sage: f = (3*z^2 + 1)/(z^3-1) sage: from sage.schemes.projective.endPN_automorphism_group import rational_function_coerce sage: rational_function_coerce(f,s,R) (3*y^2 + 1)/(y^3 - 1)
-
sage.schemes.projective.endPN_automorphism_group.
rational_function_reduce
(rational_function)¶ Force Sage to divide out common factors in numerator and denominator of rational function.
INPUT:
rational_function
– rational function \(= F/G\) in univariate polynomial ring.
OUTPUT:
- rational function – \((F/gcd(F,G) ) / (G/gcd(F,G))\).
EXAMPLES:
sage: R.<z> = PolynomialRing(GF(7)) sage: f = ((z-1)*(z^2+z+1))/((z-1)*(z^3+1)) sage: from sage.schemes.projective.endPN_automorphism_group import rational_function_reduce sage: rational_function_reduce(f) (z^2 + z + 1)/(z^3 + 1)
-
sage.schemes.projective.endPN_automorphism_group.
remove_redundant_automorphisms
(automorphisms, order_elts, moduli, integral_autos)¶ If an element of \(Aut_{F_p}\) has been lifted to \(\QQ\) remove that element from \(Aut_{F_p}\).
We don’t want to attempt to lift that element again unnecessarily.
INPUT:
automorphisms
– a list of lists of automorphisms.order_elts
– a list of lists of the orders of the elements ofautomorphisms
.moduli
– a list of prime powers.integral_autos
– list of known automorphisms.
OUTPUT:
- a list of automorphisms.
EXAMPLES:
sage: auts = [[matrix([[1,0],[0,1]]), matrix([[6,0],[0,1]]), matrix([[0,1],[1,0]]), ....: matrix([[6,1],[1,1]]), matrix([[1,1],[1,6]]), matrix([[0,6],[1,0]]), ....: matrix([[1,6],[1,1]]), matrix([[6,6],[1,6]])]] sage: ord_elts = [[1, 2, 2, 2, 2, 2, 4, 4]] sage: mods = [7] sage: R.<x> = PolynomialRing(QQ) sage: int_auts = [-1/x] sage: from sage.schemes.projective.endPN_automorphism_group import remove_redundant_automorphisms sage: remove_redundant_automorphisms(auts, ord_elts, mods, int_auts) [[ [1 0] [6 0] [0 1] [6 1] [1 1] [1 6] [6 6] [0 1], [0 1], [1 0], [1 1], [1 6], [1 1], [1 6] ]]
-
sage.schemes.projective.endPN_automorphism_group.
three_stable_points
(rational_function, invariant_list)¶ Implementation of Algorithm 1 for automorphism groups from Faber-Manes-Viray [FMV].
INPUT:
rational_function
–rational function \(phi\) defined over finite field \(E\).invariant_list
– a list of at least \(3\) points of \(\mathbb{P}^1(E)\) that is stable under \(Aut_{phi}(E)\).
OUTPUT:
- list of automorphisms.
EXAMPLES:
sage: R.<z> = PolynomialRing(GF(5^2,'t')) sage: f = z^3 sage: L = [[0,1],[4,1],[1,1],[1,0]] sage: from sage.schemes.projective.endPN_automorphism_group import three_stable_points sage: three_stable_points(f,L) [z, 4*z, 2/(2*z), 3/(2*z)]
-
sage.schemes.projective.endPN_automorphism_group.
valid_automorphisms
(automorphisms_CRT, rational_function, ht_bound, M, return_functions=False)¶ Check if automorphism mod \(p^k\) lifts to automorphism over \(\ZZ\).
Checks whether an element that is an automorphism of
rational_function
modulo \(p^k\) for various \(p\) s and \(k\) s can be lifted to an automorphism over \(\ZZ\). It uses the fact that every automorphism has height at mostht_bound
INPUT:
automorphisms
– a list of lists of automorphisms over various \(Zmod(p^k)\).rational_function
– A one variable rational function.ht_bound
- a positive integer.M
– a positive integer, a product of prime powers.return_functions
– Boolean. default: False (optional).
OUTPUT:
- a list of automorphisms over \(\ZZ\).
EXAMPLES:
sage: R.<z> = PolynomialRing(QQ) sage: F = z^2 sage: from sage.schemes.projective.endPN_automorphism_group import valid_automorphisms sage: valid_automorphisms([matrix(GF(5),[[0,1],[1,0]])], F, 48, 5, True) [1/z]
-
sage.schemes.projective.endPN_automorphism_group.
which_group
(list_of_elements)¶ Given a finite subgroup of \(PGL2\) determine its isomorphism class.
This function makes heavy use of the classification of finite subgroups of \(PGL(2,K)\).
INPUT:
list_of_elements
– a finite list of elements of \(PGL(2,K)\)- that we know a priori form a group.
OUTPUT:
- String – the isomorphism type of the group.
EXAMPLES:
sage: R.<x> = PolynomialRing(GF(7,'t')) sage: G = [x, 6*x/(x + 1), 6*x + 6, 1/x, (6*x + 6)/x, 6/(x + 1)] sage: from sage.schemes.projective.endPN_automorphism_group import which_group sage: which_group(G) 'Dihedral of order 6'