Automorphism Groups of K3 surfaces
A complex K3 surface is a compact complex surface $X$ with vanishing irregularity $h^1(X, \mathcal{O}_X)=0$ and trivial canonical bundle $\mathcal{O}_X\cong \omega_X$.
Much of the theory of (complex) K3 surfaces is governed by its Hodge structure and the $\mathbb{Z}$-lattices $NS(X) \subseteq H^2(X, \mathbb{Z})$.
See [Huy16] for the theory of K3 surfaces.
Automorphisms
K3_surface_automorphism_group
— MethodK3_surface_automorphism_group(S::ZZLat [, ample_class]) -> generators, rational curves, chambers
Compute the automorphism group of a very-general $S$-polarized K3 surface.
Further return representatives of the $\mathrm{Aut}(X)$-orbits of (-2)-curves on X
and a fundamental domain for the action of $\mathrm{Aut}(X)$ on the set of nef L|S chambers. This is almost a fundamental domain for $\mathrm{Aut}(X)$ on the nef cone.
Here very general means that $Num(X)$ is isomorphic to S
and the image of $\mathrm{Aut}(X) \to H^0(X,\Omega^2_X)$ is $\pm 1$.
The function returns generators for the image of
\[f\colon \mathrm{Aut}(X) \to O(Num(X))\]
The output is represented with respect to the basis of S
.
Note that under our genericity assumptions the kernel of $f$ is of order at most $2$ and it is equal to $2$ if and only if $S$ is $2$-elementary. If an ample class is given, then the generators returned preserve it.
This kind of computation can be very expensive. To print progress information use set_verbosity_level(:K3Auto, 2)
or higher.
Input
S
: a hyperbolic latticeample
: a row matrix or a vector given with respect to the ambient space of S.
borcherds_method
— Functionborcherds_method(S::ZZLat, n::Integer; compute_OR=true, entropy_abort=false, max_nchambers=-1)
borcherds_method(L::ZZLat, S::ZZLat, w::QQMatrix; compute_OR=true, entropy_abort=false, max_nchambers=-1)
Compute the symmetry group of a Weyl chamber up to finite index.
Arguments
w
: initial Weyl row vector represented with respect to the basis ofL
;L
: even, unimodular, hyperbolic lattice of rank n=10,18 or 26;S
: a primitive sublattice ofL
;compute_OR=true
: if false take asG
all isometries ofS
extending toL
;max_nchambers
: break the computation aftermax_nchambers
are found;entropy_abort
abort if an automorphism of positive entropy is found.
K3Chamber
— TypeK3Chamber
The $L|S$ chamber induced from a Weyl vector in L
.
Let $L$ be an even, unimodular and hyperbolic lattice of rank $10$, $18$ or $26$ and $S$ be a primitive sublattice. Any Weyl vector $w$ of $L$ defines a Weyl chamber $C(w)$ in the positive cone of $L$. The Weyl chamber is a rational locally polyhedral cone with infinitely many facets, i.e. walls. It is the intersection of the positive half-spaces defined by $\Delta_L(w) = \{r \in L | r^2=-2, r.w = 1\}$. We have
\[C(w)=\{x \in \mathcal{P}_L | \forall r \in \Delta_L(w): x.r \geq 0\}\]
The Weyl chamber is a fundamental domain for the action of the Weyl group on the positive cone. We say that $S \otimes \mathbb{R} \cap C(w)$ is the $L|S$-chamber induced by $w$.
Note that two Weyl vectors induce the same chamber if and only if their orthogonal projections to $S$ coincide.
chamber
— Functionchamber(data::BorcherdsCtx, weyl_vector::ZZMatrix, [parent_wall::ZZMatrix, walls::Vector{ZZMatrix}])
Return the $L|S$-chamber with the given Weyl vector.
The lattices $L$ and $S$ are stored in data
. Via the parent walls we can obtain a spanning tree of the chamber graph.
weyl_vector
— Methodweyl_vector(D::K3Chamber) -> ZZMatrix
Return the Weyl vector defining this chamber.
walls
— Methodwalls(D::K3Chamber) -> Vector{ZZMatrix}
Return the walls of the chamber D
, i.e. its facets.
The corresponding half space of the wall defined by v
in walls(D)
is
\[\{x \in S \otimes \mathbb{R} | \langle x,v \rangle \geq 0\}.\]
v
is given with respect to the basis of S
and is primitive in S
.
Note that [Shi15] follows a different convention and takes v
primitive in S^\vee
.
inner_point
— Methodinner_point(L::ZZLat, S::ZZLat, w::QQMatrix)
inner_point(C::K3Chamber)
Return a reasonably small integer inner point of the given L|S chamber.
rays
— Methodrays(D::K3Chamber)
Return the rays of the chamber D
.
They are represented as primitive row vectors with respect to the basis of S
.
aut
— Methodaut(E::K3Chamber) -> Vector{ZZMatrix}
Return the stabilizer $\mathrm{Aut}_G(E)$ of $E$ in $G$.
The elements are represented with respect to the basis of $S$.
hom
— Methodhom(D::K3Chamber, E::K3Chamber) -> Vector{ZZMatrix}
Return the set $\mathrm{Hom}_G(D, E)$ of elements of $G$ mapping D
to E
.
The elements are represented with respect to the basis of $S$.
adjacent_chamber
— Methodadjacent_chamber(D::K3Chamber, v::ZZMatrix) -> K3Chamber
Return return the $L|S$ chamber adjacent to D
via the wall defined by v
.
separating_hyperplanes
— Methodseparating_hyperplanes(S::ZZLat, v::QQMatrix, h::QQMatrix, d)
Return $\{x \in S | x^2=d, x.v>0, x.h<0\}$.
Arguments
S
: a hyperbolic latticed
: a negative integerv
,h
: vectors of positive square
has_zero_entropy
— Functionhas_zero_entropy(S::ZZLat; rank_unimod=26) ->
Compute if the symmetry group of a Weyl chamber is elliptic, parabolic or hyperbolic.
Output
1
- elliptic – the symmetry group is finite0
- parabolic – there is a unique cusp with infinite stabilizer-1
- hyperbolic – positive entropy
This calls borcherds_method
and breaks the computation as soon as a symmetry of a Weyl chamber with positive entrop is found.
Contact
Please direct questions about this part of OSCAR to the following people:
You can ask questions in the OSCAR Slack.
Alternatively, you can raise an issue on github.