Isomorphisms#

Isomorphisms and automorphisms of plane quartics have been implemented following the covariant method due to van Rijnswou [van Rijnswou, 2001] that is also used in another form in the reconstruction algorithms. Let \(C_1\) and \(C_2\) be two plane quartic curves over a field \(k\). The present algorithm first checks for equality of normalized Dixmier–Ohno invariants of \(C_1\) and \(C_2\), since if this equality does not hold, no isomorphisms can exist.

If this condition is satisfied, the algorithms first try to find the actual isomorphisms \(C_1 \to C_2\) under the assumption that \(I_{12} \neq 0\). In this case, [van Rijnswou, 2001] shows that the use of a suitable covariant reduces this question to finding transformations between certain binary forms associated to \(C_1\) and \(C_2\), which leads us to the same computation of elements in \({\rm GL}_2 (k)\). In non-generic cases, a direct Gröbner basis method due to Michael Stoll is used.

Once again the algorithms admit both a version over the base field and a geometric version, with the latter finding the isomorphisms over the algebraic closure of \(k\). Both versions are very efficient over finite fields, and the version over the base field is also reasonably fast for \(k = {\mathbb{Q}}\). By contrast, finding geometric isomorphisms between plane quartic curves over the rationals can still take a fair amount of time. For more general fields, the implementation still takes too long, and our functions therefore restrict considerations to the cases where \(k\) is either finite or the rational field.

IsIsomorphicPlaneQuartics(X1, X2): CrvPln, CrvPln -> BoolElt, SeqEnum#
IsIsomorphicTernaryQuartics(f1, f2): RngMPolElt, RngMPolElt -> BoolElt, SeqEnum#
geometric: BoolElt                    Default: false

Determine if the plane quartic curves \(X_1\) and \(X_2\) or the ternary quartics \(f_1\) and \(f_2\) are isomorphic, and return the isomorphism between them. If the flag geometric is set to true, then test is performed over the algebraic closure of the base field, over which the isomorphisms are then determined as well.

IsomorphismsOfPlaneQuartics(X1, X2): CrvPln, CrvPln -> SeqEnum#
IsomorphismsOfTernaryQuartics(f1, f2): RngMPolElt, RngMPolElt -> SeqEnum#
geometric: BoolElt                    Default: false

Return the isomorphisms between the plane quartic curves \(X_1\) and \(X_2\) or between then ternary quartic forms \(f_1\) and \(f_2\). If the flag geometric is set to true, then the isomorphisms over the algebraic closure of the base field are returned.

AutomorphismsOfPlaneQuartic(X): CrvPln -> SeqEnum#
AutomorphismsOfTernaryQuartic(f): RngMPolElt -> SeqEnum#
geometric: BoolElt                    Default: false

Return the automorphisms of the plane quartic curve \(X\) or the ternary quartic form \(f\) as matrices. If the flag geometric is set to true, then the automorphisms over the algebraic closure of the base field are returned.

AutomorphismGroupOfPlaneQuartic(X): CrvPln -> GrpPerm, Map#
AutomorphismGroupOfTernaryQuartic(f): RngMPolElt -> GrpPerm, Map#
geometric: BoolElt                    Default: false
explicit : BoolElt                    Default: false

Return the automorphisms of the plane quartic curve \(X\) or the ternary quartic form \(f\) as an abstract group, along with a map from said group to a matrix group if the flag explicit is set to true. If the flag geometric is set to true, then the automorphisms over the algebraic closure of the base field are returned.

Example: Auts Ex (ex-153f49)#

We determine the automorphisms of a plane quartic over the rationals.

> P<x,y,z> := PolynomialRing(Rationals(), 3);
> PP := ProjectiveSpace(P);
> C := Curve(PP, x^3*y+y^3*z+z^3*x);
> aut, phi := AutomorphismGroupOfPlaneQuartic(C : geometric:=true,
>                  explicit := true);
> aut;
Permutation group aut acting on a set of cardinality 8
Order = 168 = 2^3 * 3 * 7
    (2, 3, 4)(5, 8, 7)
    (2, 4, 5)(3, 6, 7)
    (1, 2)(3, 7)(4, 5)(6, 8)
> GroupName(aut);
PSL(2,7)
> [phi(aut.i) : i in [1..Ngens(aut)]];
[
    [0 0 1]
    [1 0 0]
    [0 1 0],

    [0 0 -r1^5 - r1^4 - r1^3 - r1^2 - r1 - 1]
    [1 0 0]
    [0 r1^4 0],

    [1 r1^2 + r1 -r1^5 - r1^4 - r1^3]
    [-r1^4 - r1^3 - r1^2 - r1 - 1 r1^5 + r1^4 + r1^3 + r1^2 -r1^5 - r1^4 - r1^3
        - r1^2 - r1 - 1]
    [-r1^4 - r1^3 - r1^2 r1 r1^4 + r1^3]
]

Run in calculator

AutomorphismGroupOfPlaneQuartic(X, Autos): CrvPln, SeqEnum -> GrpPerm, Map#
AutomorphismGroupOfTernaryQuartic(f, Autos): RngMPolElt, SeqEnum -> GrpPerm, Map#
explicit: BoolElt                    Default: false

Return the automorphisms Autos of the plane quartic curve \(X\) or the ternary quartic form \(f\) as an abstract group, along with a map from said group to a matrix group if the flag explicit is set to true.

GeometricAutomorphismGroup(C): Crv -> GrpPerm#

Compute the geometric automorphism group of the elliptic, hyperelliptic, or plane quartic curve \(C\).