Splice Diagrams

Splice diagrams are graphs decorated with integer labels at each end of each edge and a number of arrows, often none at all, attached to each vertex. They are fully described in [EN85]. No description of the meaning of splice diagrams will be given here, only the functions that Magma has for manipulating them. (There are two common features of splice diagrams that cannot yet be realised. First, omitting edge labels which are 1 is common but is not allowed. Second, and less trivially, arrow weights are not allowed.

Other data that is also stored with the diagram are vertex multiplicities, canonical multiplicities, and total linking numbers of vertices. The distinction between a splice diagram and its underlying directed graph, as well as that between a splice diagram vertex and its underlying vertex, is often left implicit.

Contents

Creation of Splice Diagrams

Splice diagrams are usually created from geometric objects like plane curve singularities or jacobian pencils. They can also be built explicitly by hand. The section on translations between graphs describes functions which create splice diagrams associated to resolution graphs.

SpliceDiagram(C,p) : Sch,Pt -> GrphSpl
The splice diagram of the plane curve singularity of C at the point p.
RegularSpliceDiagram(P) : LinearSys -> GrphSpl
The regular splice diagram at infinity of the jacobian pencil P. This diagram is considered to be rooted at vertex 1 corresponding to the line at infinity of the ambient plane of P. Its underlying graph is directed away from this root.
MakeSpliceDiagram(g,e,a) : GrphDir,SeqEnum,SeqEnum -> GrphSpl
A splice diagram on directed graph g. The edge labels are taken from the sequence e. The elements of this sequence are sequences of pairs of integers [a, b]. The i-th element of e will be assigned to the i-th edge of g (in the order returned by Edges(g)) with a as the near label and b as the far label (with respect to the directions of the edges of g). The number of arrows at each vertex are taken from the sequence of integers a.
MakeSpliceDiagram(e,l,a) : SeqEnum,SeqEnum,SeqEnum -> GrphSpl
The splice diagram described by the data in the sequences e, l, a. The first two contain sequences of two integers: e is interpreted as a set of directed edges, the integers appearing in it being the vertex indices of the resulting graph. Edge labels are determined by the sequence l as in the previous function. The number of arrows at each vertex are taken from the sequence of integers a.
SpliceDiagramVertex(s,i) : GrphSpl,RngIntElt -> GrphSplVert
The vertex of the splice diagram s having index i.
SpliceDiagram(v) : GrphSplVert -> GrphSpl
The splice diagram containing the vertex v.
UnderlyingGraph(s) : GrphSpl -> GrphDir
The underlying directed graph of the splice diagram s.
UnderlyingVertex(v) : GrphSplVert -> GrphVert
Vertex(v) : GrphSplVert -> GrphVert
The vertex of the underlying graph corresponding to the vertex v of a splice diagram.
Vertices(s) : GrphSpl -> SeqEnum
The vertices of the splice diagram s.
RootVertex(s) : GrphSpl -> GrphSplVert
The root vertex of the splice diagram s as a rooted tree directed away from its root by the directions on the edges.
Index(v) : GrphSplVert -> RngIntElt
The index of the vertex v of a splice diagram.
s eq t : GrphSpl,GrphSpl -> BoolElt
v eq w : GrphSplVert, GrphSplVert -> BoolElt
Returns true if and only if the splice diagrams s and t are the same object in Magma. This can also be applied to a pair of vertices of a splice diagram.

Numerical Functions of Splice Diagrams

The raw numerical data of a splice diagram is the collection of labels on its edges and vertices together with data recovered from the underlying graph. First we list functions to get hold of this data, and then some more substantial functions which derive many of the natural conclusions of this data, linking number, euler characteristic and so on.

EdgeLabels(s) : GrphSpl -> SeqEnum
The integer labels on the edges of the splice diagram s.
VertexLabels(s) : GrphSpl -> SeqEnum
The integer labels on the vertices of the splice diagram s.
TotalLinking(v) : GrphSplVert -> RngIntElt
The total linking number of the vertex v of a splice diagram.
LinkingNumbers(s) : GrphSpl -> SeqEnum
The total linking numbers of the vertices of the splice diagram s.
Linking(u,v) : GrphSplVert,GrphSplVert -> RngIntElt
The linking number of vertices u and v of a splice diagram.
EdgeDeterminant(u,v) : GrphSplVert,GrphSplVert -> RngIntElt
The edge determinant of the edge joining the vertex u to the vertex v of a splice diagram.
Valency(v) : GrphSplVert -> RngIntElt
The splice valency of the vertex v of a splice diagram. This is the valency of v in the underlying graph plus the number of arrows at v.
IsRegular(s) : GrphSpl -> BoolElt
Returns true if and only if the splice diagram s is regular.
IsReduced(s) : GrphSpl -> BoolElt
Returns true if and only if the splice diagram s is reduced, that is, it has no valency 2 nodes and no weight 1 leaves.
HasIrregularFibres(s) : GrphSpl -> BoolElt
Returns true if and only if the splice diagram s has a vertex with zero linking number.
Degree(s) : GrphSpl -> RngIntElt
The linking number of the first vertex of the splice diagram s.
EulerCharacteristic(s) : GrphSpl -> RngIntElt
The Euler characteristic of the splice diagram s.
Size(s) : GrphRes -> RngIntElt
The number of vertices of the splice diagram s.
Arrows(s) : GrphRes -> SeqEnum
A sequence of integers containing the number of arrows of the splice diagram s: the i-th sequence entry is the number of arrows at the vertex of index i. This function can also be applied to a single vertex returning a single integer.
VertexPath(u,v) : GrphSplVert,GrphSplVert -> SeqEnum,SeqEnum
A sequence of vertices on the path from the vertex u to the vertex v of a splice diagram. The second return value is the sequence of products of off-path weights at each vertex.
V2.28, 13 July 2023