Resolution Graphs

A resolution graph g is a graph with data associated to its vertices. The underlying graph is the dual graph of a blowup process. The vertices correspond to rational curves E, "exceptional curves", on some surface S which are contracted by some map f: S -> P2, where P2 is the projective plane. Such maps arise during the resolution process by blowups of a curve singularity, say p∈C where C is a curve in P2. In that context, C can be pulled back to S using f and the pullback can be decomposed (as an effective divisor on S) as

f * C = widetilde(C) + EC

where widetilde(C) is the birational transform of C and EC is an effective divisor supported on the union of the exceptional curves. The surface S is never realised as a geometric object.

For a vertex v of g, the corresponding rational curve is often denoted Ev. The edges of g correspond to the intersections between different E: vertices v and w are joined by edges corresponding in some way to the points of intersection of the curves Ev and Ew. In the contexts used below, any two curves will meet at most in one point and that will be a transverse intersection. So the intersection number EvEw on S will be the number of edges between v and w, either zero or one, if they are distinct vertices and a selfintersection number associated to v otherwise. Thus the graph enables basic intersection calculations to be carried out implicitly on S.

The data associated to each vertex v is the following where E = Ev: the selfintersection E2; the coefficient of E in some pullback divisor, often EC but this depends on the context; the coefficient of E in a representative of the canonical class of S locally supported on the exceptional curves; the number of transverse intersections of the birational transform widetilde(C) of C with E. At each vertex v, this data is often denoted sv, mv, kv, tv respectively. This is the coarsest kind data one could want. It enables basic intersection theory calculations (including calculating the contribution of a singularity p of a curve C to the genus of C). For more detailed calculations, the map f and the equation of the birational transform of C are held on patches along each E. In each case, the patch is an affine xy-plane with E as the line y=0 in it (although it is actually the closure of this patch and map that is recorded).

Resolution graphs are usually created implicitly by some geometrical algorithm like the resolution of a plane curve singularity. The first creation methods below are of this nature. But graphs can also be created explicitly by providing the required data. How much data is required varies according to the purpose of the graph; some common alternatives are included here.

Contents

Graphs, Vertices and Printing

Resolution graphs are less complicated as a type than the other graphs in Magma. They do not have associated vertex and edge sets. However, there is a resolution graph vertex type so that vertices can be passed between intrinsics.

Graph printing is similar to that of the underlying directed graph. An example is

The resolution graph on the Digraph
Vertex  Neighbours
1 ([ -2, 9, 1, 0 ])     2 ;
2 ([ -4, 18, 2, 0 ])    3 ;
3 ([ -2, 63, 9, 0 ])    4 6 ;
4 ([ -2, 42, 6, 0 ])    5 ;
5 ([ -2, 21, 3, 0 ])    ;
6 ([ -1, 66, 10, 3 ])   ;
This is a graph on 6 vertices --- they are listed as one of the integers 1, ..., 6 down the left. The integer corresponding to a vertex is called the index of the vertex. In brackets by each vertex v is a label of the form [s, m, k, t] where s is the selfintersection, m is the multiplicity (the interpretation of which is dependent on the context), k is the canonical multiplicity and t is the number of transverse intersections at v as described in the introduction. Next comes a space-separated list of the vertices at the far end of edges directed away from v. Until one is used to reading graphs in this way, and also even then, drawing the graph by hand is recommended.

The vertex labels can be shorter if some data is missing. The alternatives are [s], [s, t] and [s, m, t] in the previous notation. The most data consistent with what has been calculated for the graph will be displayed.

Notice that, although these really are printed as graph labels, the data in them should not be accessed as such. These labels are often unassigned, or assigned in an unexpected way. They are only intended for printing. There are dedicated functions below for retrieving data associated to a graph.

g eq h : GrphRes,GrphRes -> BoolElt
Returns true if and only if the resolution graphs g and h are the same object in Magma.
ResolutionGraphVertex(g,i) : GrphRes,RngIntElt -> GrphResVert
g ! i : GrphRes,RngIntElt -> GrphResVert
The vertex of the resolution graph g with index i.
Vertex(v) : GrphResVert -> GrphVert
The underlying directed graph vertex of the resolution graph vertex v.
ResolutionGraph(v) : GrphResVert -> GrphRes
The resolution graph of which v is a vertex.
IsVertex(g,v) : GrphRes,GrphResVert -> BoolElt
Returns true if and only if v is a vertex of the resolution graph g.
Index(v) : GrphResVert -> RngIntElt
The index of the underlying graph vertex of the resolution graph vertex v; this is the integer appearing as the vertex identifier when the graph is printed.
v eq w : GrphResVert,GrphResVert -> BoolElt
Returns true if and only if the resolution graph vertices v and w are the same object in Magma.

Creation from Curve Singularities

Let C be a reduced plane curve, either affine or projective. See Chapter ALGEBRAIC CURVES for details of how to create such a curve. Let p be a singular point of C. The intrinsic below calculates the dual graph of the resolution of p on C together with some auxiliary data. As in the introduction, the sequence of blowups required in the resolution is thought of as a morphism f: S -> P2 of projective surfaces; P2 is the projective plane (which is the closure of the ambient plane of C if it is affine) while S is a surface not realised explicitly in Magma.

The target resolution is the minimum transverse resolution, sometimes called the log resolution, a resolution in which the birational transform widetilde(C) of C on S is nonsingular and transverse to the exceptional locus. However, there are circumstances under which a larger resolution will be calculated. This makes no difference to the geometric data arising from the resolution.

ResolutionGraph(C, p) : Sch, Pt -> GrphRes
    M: RngIntElt                        Default: 1
    K: RngIntElt                        Default: 1
ResolutionGraph(C, p) : Sch, Pt -> GrphRes
Calculate a transverse resolution graph of the plane curve singularity of C at the point p. If the point argument is missing and C is affine, the resolution is calculated at the origin, but in that case parameters cannot be assigned and take the default values.

The numerical parameters determine whether additional data is calculated: value 1, the default, enables the calculation while value 0 omits it.

The parameter M refers to the pullback multiplicities of C. It returns a sequence [ mv ] of rational numbers (although always integral in the current algorithms) corresponding to the vertices of the graph. These numbers have the following meaning: on the blownup surface S, as divisors,

f * C = widetilde(C) + ∑mvEv

where the sum is taken over the vertices v of the graph and Ev is the corresponding exceptional curve.

The parameter K refers to the canonical multiplicities along g. It returns a sequence [ kv ] of rational numbers (although again always integral) corresponding to the vertices of the graph. On the blownup surface S in a neighbourhood of the union of exceptional curves E the canonical class KS has a representative

KS = ∑kvEv

where the sum is taken over the vertices of the graph.

The surface S is covered by affine plane patches. The map f to the projective plane can be calculated when restricted to these patches. In fact, the closure of these maps is calculated as a birational automorphism of the projective plane. All blowup algorithms arrange that the exceptional curve Ev corresponding to a vertex v is (a patch on) Ly, the second coordinate line "y=0", in the projective plane. So pulling C back to the plane using the patch map at v will produce a curve having mvLy as a component.

The calculation of maps and pullbacks is expensive so some precautions are taken. First, the maps are only calculated at significant vertices of the graph: significant here means that the blowup procedure branches at that vertex, or that widetilde(C) meets the exceptional locus there. Second, the maps are calculated as a sequence of maps: the map required is the composition of these. The composition will be carried out automatically if needed. (In the current code, this can only be carried out if no field extensions have been made. This will be updated in due course.)

The calculation is carried out by tying together strings of blowups (done recursively in one go using a standard Newton polygon argument). The Newton polygon argument used automatically makes a curve transverse to all axes, not just to exceptional curves. These extra blowups do not invalidate numerical calculations made with the resolution graph (since minimality is never a condition) and they are essential when resolving irregular fibres of pencils.

Example GrphRes_singularity (H122E1)

First make a curve with a singularity. The following curve demonstrates the typical way singularities with more than one Puiseux pair --- those which need the Newton algorithm to be repeated when calculating a resolution or local parametrisation --- arise.
> A<x,y> := AffineSpace(Rationals(),2);
> C := Curve(A,(x^2 - y^3)^2 + x*y^6);
The interesting singularity is at the origin. The next two lines calculate the resolution graph of this singularity and display it.
> g := ResolutionGraph(C,Origin(A));
> g;
The resolution graph on the Digraph
Vertex  Neighbours
1 ([ -3, 4, 1, 0 ])     2 ;
2 ([ -2, 12, 4, 0 ])    3 4 ;
3 ([ -2, 6, 2, 0 ])     ;
4 ([ -3, 14, 5, 0 ])    5 ;
5 ([ -1, 30, 12, 1 ])   6 ;
6 ([ -2, 15, 6, 0 ])    ;
The resulting graph has 6 vertices. So the transverse resolution of this singularity is achieved by 6 blowups. The order of blowup can be determined by the third column, the canonical class: this number strictly increases throughout the process, so curve E1 is the first exceptional curve, E3 is the second and so on until finally E5 is extracted. This could also be deduced from the sequence of selfintersections, the first column. See how the birational image of C after blowing up only intersects E5, and then only in a single transverse point. In other words, C has a single place at the origin.

Creation from Pencils

Let P be a jacobian pencil in the affine plane A2, that is, a pencil of the form f(x, y) = c as c varies. See Chapter SCHEMES for details of how to create jacobian pencils. The resolution graph which can be created automatically is the regular resolution graph: that is, the minimal sequence of transverse blowups which resolve the rational map determined by P from the projective plane (the closure of A2) to the projective line. However, other resolution graphs can be constructed using more explicit creation functions.

ResolutionGraph(P) : LinearSys -> GrphRes
The resolution at infinity of the jacobian pencil P: f = c of some polynomial f as the value c varies defined on some affine space A. This resolution graph is thought of as being rooted with root vertex corresponding to the line at infinity of A. The multiplicities are those of the fibre of f at infinity.
ResolutionGraph(P,a,b) : LinearSys,RngElt,RngElt -> GrphRes
The resolution graph at infinity of the union of the two fibres of P above a and b. The multiplicities and canonical class are not calculated automatically for this graph.

Example GrphRes_pencil (H122E2)

The following is a simple example of a pencil exhibiting interesting behaviour at infinity. It is taken from [Neu99].

First a pencil in some affine plane is made.

> A<x,y> := AffineSpace(Rationals(),2);
> f := x^2*y - x;
> P := Pencil(A,f);
> P;
The pencil defined by x^2*y - x
Then the regular resolution graph at infinity is calculated.
> ResolutionGraph(P);
The resolution graph on the Digraph
Vertex  Neighbours
1 ([ -1, 3, -3, 0 ])    2 5 ;
2 ([ -3, 1, -2, 0 ])    3 ;
3 ([ -1, 0, -2, 1 ])    4 ;
4 ([ -2, 0, -1, 0 ])    ;
5 ([ -2, 2, -2, 0 ])    6 ;
6 ([ -2, 1, -1, 0 ])    7 ;
7 ([ -1, 0, 0, 1 ])     ;
The resulting graph has 7 vertices. Vertex 1 corresponds to the line at infinity of the plane, or more properly to its birational image after blowing up. The pencil meets this line at two points, each of which have undergone three blowups in the resolution process. The vertex labels carry auxiliary data. The first column lists the selfintersections of the curves Ev corresponding to the vertices v. The general fibre of the pencil meets a single exceptional curve above each of the points as shown by the fourth column. The fibre at infinity is 3E1 + E2 + 2E5 + E6 as shown in the second column. The third column gives the multiplicities of a canonical divisor on the blownup surface: KS can be represented by the divisor -3E1 - 2E2 - 2E3 - E4 - 2E5 - E6.

It is known that the pencil P is irregular at infinity above 0. This can be seen by calculating the explicit resolution of the union of two fibres, f=0 and a general one, say f=1.

> ResolutionGraph(P,0,1);
The resolution graph on the Digraph
Vertex  Neighbours
1 ([ -1, 0 ])   2 5 ;
2 ([ -3, 0 ])   3 ;
3 ([ -1, 1 ])   4 ;
4 ([ -2, 2 ])   ;
5 ([ -2, 0 ])   6 ;
6 ([ -2, 0 ])   7 ;
7 ([ -1, 2 ])   ;
The multiplicities and canonical class have not been calculated by this function. Later in this chapter there are functions which will do this, although the multiplicities require some interpretation. The selfintersections have been calculated as before (and notice that the blowups at least appear to be exactly those of the previous resolution procedure; in fact they are indeed the same). The number of transverse intersections are now those of the union of the two fibres. Since the fibre above 1 is general it contributes one intersection at vertex 3 and one at vertex 7. So the intersections of the irregular fibre can be deduced, namely two at vertex 4 and one at vertex 7.

Creation by Hand

A resolution graph can be created by hand. This can be fiddly if the underlying graph is complicated. See Chapter GRAPHS for details on how to create a directed graph.

MakeResolutionGraph(g,s,t) : GrphDir,SeqEnum,SeqEnum -> GrphRes
MakeResolutionGraph(g,s) : GrphDir,SeqEnum -> GrphRes
The resolution graph on underlying directed graph g. Although it is not checked, the graph g should usually be a directed tree otherwise some reduction algorithms which might be invoked later might not work. In that case, moreover, its root must be the vertex of index 1.

The selfintersections of vertices correspond to the integer entries of the sequence s. If used, the number of transverse intersections of the putative resolved curve with each vertex correspond to the integer entries of the sequence t.

MakeResolutionGraph(N) : NwtnPgon -> GrphRes
The resolution graph corresponding to the Newton polygon N.
UnderlyingGraph(g) : GrphRes -> GrphDir
The underlying directed graph of the resolution graph g.

Modifying Resolution Graphs

Any resolution graph, whether created by hand or not, can have its numerical data calculated or modified. There are also some functions for performing surgery on the underlying graph.

There are also functions which do the linear algebra calculations typical of the numerical calculations associated with resolution graphs. But beware: they each base their calculation on some part of the data of the graph but make no check that all numerical data is consistent at the end of calculation.

Connect(v,w) : GrphResVert,GrphResVert -> GrphRes
If v and w are vertices of distinct resolution graphs, return the graph comprising the union of these graphs joined by an edge from v to w. Selfintersections are inherited by the graph from its two components. Multiplicities, canonical class and transverse intersections will be inherited if calculated on both components.
CalculateCanonicalClass(~g) : GrphRes ->
Calculate the canonical class supported on the resolution graph g using the selfintersections of the Ev and the assumption that the Ev are nonsingular rational curves meeting transversely. Note that this calculation uses only the selfintersections already associated to g.
Disconnect(v,w) : GrphResVert, GrphResVert -> GrphRes
If v and w are vertices of a resolution graph g, return the resolution graph with any edge joining them removed. The resulting graph may well be disconnected. The only data preserved is the selfintersections and transverse intersections.
Component(v) : GrphResVert -> GrphRes
The connected component of the resolution graph containing vertex v.
CalculateMultiplicities(~g) : GrphRes ->
Calculate the pullback multiplicities of the resolution graph g using the selfintersections of the Ev, the assumption that the Ev are nonsingular rational curves meeting transversely, and the number of transverse intersections of widetilde(C) with the Ev. It is assumed that g is the resolution graph of a curve singularity during this calculation, although that need not be the case. In general there will be some choice of multiplicities. If g is the resolution of a curve singularity, and if the multiplicity of that singularity is cached, then the correct multiplicities can be identified: the multiplicity along the first blownup curve is the same as that of the singularity; the curve which was blown up first can be identified since it alone has canonical multiplicity 1.

However, if g arose as the resolution at infinity of two fibres of a pencil, for instance, the multiplicities calculated here would depend on which two fibres were used. The result would be the unique divisor supported on g which when added to the birational transform of the two affine fibre patches was linearly equivalent to the zero divisor. In particular, if the two fibres were general, the calculation here would return -2 times the fibre at infinity. Otherwise the calculation will return a combination of that and the exceptional components of irregular finite fibres. The intrinsic which calculates the regular resolution graph of a pencil already takes this into account.

CalculateTransverseIntersections(~g) : GrphRes ->
Calculate the number of transverse intersections of widetilde(C) with each Ev on the basis of their selfintersection numbers and multiplicities in the resolution graph g.
ModifySelfintersection(~v,n) : GrphResVert,RngIntElt ->
Change the selfintersection at vertex v of a resolution graph to n.
ModifyTransverseIntersection(~v,n) : GrphResVert,RngIntElt ->
Change the number of transverse intersections at vertex v of a resolution graph to n.

Numerical Data Associated to a Graph

The meaning of the data given here depends on the context in which the graph was created. The case already discussed of a configuration of rational curves arising from the resolution of a curve singularity is the prototype.

Many of these functions can also be applied to a single vertex of a graph:

Selfintersection, CanonicalMultiplicity and so on.

Size(g) : GrphRes -> RngIntElt
The number of vertices of the underlying graph of the resolution graph g. Typically, this is the number of exceptional curves in the resolution.
SelfIntersections(g) : GrphRes -> SeqEnum
The selfintersections of the vertices of the resolution graph g.
Multiplicities(g) : GrphRes -> SeqEnum
The multiplicities of the vertices of the resolution graph g in some divisor.
CanonicalClass(g) : GrphRes -> SeqEnum
The multiplicities of the vertices of the resolution graph g in a local representative of the canonical class.
TransverseIntersections(g) : GrphRes -> SeqEnum
The number of transverse intersections of some curve (usually used to create g) with the vertices of the resolution graph g.
GenusContribution(g) : GrphRes -> RngIntElt
The contribution to the genus of a plane curve of a singularity having g as its resolution graph.
CartanMatrix(g) : GrphRes -> Mtrx
The incidence matrix of the (undirected) graph underlying the resolution graph g with selfintersections on the diagonal.
Determinant(g) : GrphRes -> RngElt
The determinant of the Cartan matrix of the resolution graph g.
V2.28, 13 July 2023