[Next][Prev] [Right] [Left] [Up] [Index] [Root]

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 -> P^2, where P^2 is the projective plane. Such maps arise during the resolution process by blowups of a curve singularity, say p in C where C is a curve in P^2. 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) + E_C

where widetilde(C) is the birational transform of C and E_C 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 E_v. 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 E_v and E_w. 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 E_vE_w 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 = E_v: the selfintersection E^2; the coefficient of E in some pullback divisor, often E_C 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 s_v, m_v, k_v, t_v 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.

Subsections

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 g and h are the same object in Magma.
ResolutionGraphVertex(g,i) : GrphRes,RngIntElt -> GrphResVert
g ! i : GrphRes,RngIntElt -> GrphResVert
The vertex of g with index i.
Vertex(v) : GrphResVert -> GrphVert
The underlying directed graph vertex of 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 g.
Index(v) : GrphResVert -> RngIntElt
The index of the underlying graph vertex; 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 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 PLANE 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 -> P^2 of projective surfaces; P^2 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
Calculate a transverse resolution graph of the plane curve singularity of C at 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 [ m_v ] 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) + sum m_vE_v

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

The parameter `K' refers to the canonical multiplicities along g. It returns a sequence [ k_v ] 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 K_S has a representative

K_S = sum k_vE_v

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 E_v corresponding to a vertex v is (a patch on) L_y, 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 m_vL_y 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.

ResolutionGraph(p) : Grm -> GrphRes
    M: RngIntElt                        Default: 1
    K: RngIntElt                        Default: 1
The resolution graph of a representative of the germ p. Parameters work in the same way as previous resolution intrinsics.

Example GrphRes_singularity (H83E1)

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 E_1 is the first exceptional curve, E_3 is the second and so on until finally E_5 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 E_5, 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 A^2, 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 A^2) to the projective line. However, other resolution graphs can be constructed using more explicit creation functions.

ResolutionGraph(P) : PnclJac -> 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) : PnclJac,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 (H83E2)

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 E_v 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 3E_1 + E_2 + 2E_5 + E_6 as shown in the second column. The third column gives the multiplicities of a canonical divisor on the blownup surface: K_S can be represented by the divisor -3E_1 - 2E_2 - 2E_3 - E_4 - 2E_5 - E_6.

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) : NewtonPgon -> GrphRes
The resolution graph corresponding to the Newton polygon N.
UnderlyingGraph(g) : GrphRes -> GrphDir
The underlying directed graph of 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 g using the selfintersections of the E_v and the assumption that the E_v are nonsingular rational curves meeting transversely. Note that this calculation uses only the selfintersections already associated to g.
Disconnect(v,w) : 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 g using the selfintersections of the E_v, the assumption that the E_v are nonsingular rational curves meeting transversely, and the number of transverse intersections of widetilde(C) with the E_v. 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 E_v on the basis of their selfintersection numbers and multiplicities in g.
ModifySelfintersection(~v,n) : GrphResVert,RngIntElt ->
Change the selfintersection at vertex v to n.
ModifyTransverseIntersection(~v,n) : GrphResVert,RngIntElt ->
Change the number of transverse intersections at v 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 g. Typically, this is the number of exceptional curves in the resolution.
SelfIntersections(g) : GrphRes -> SeqEnum
The selfintersections of the vertices of g.
Multiplicities(g) : GrphRes -> SeqEnum
The multiplicities of the vertices of g in some divisor.
CanonicalClass(g) : GrphRes -> SeqEnum
The multiplicities of the vertices of 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 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 g with selfintersections on the diagonal.
Determinant(g) : GrphRes -> RngElt
The determinant of the Cartan matrix of g.
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]