Module admcycles¶
-
admcycles.admcycles.Biell(g, n=0, m=0)[source]¶ Returns the cycle class of the bielliptic locus of genus
gcurves withnmarked fixed points andmpairs of conjugate points in bar M_{g,n+2m}.TESTS:
sage: B=Biell(2) # long time sage: B.toTautbasis() # long time (15/2, -9/4)
-
admcycles.admcycles.DRpoly(g, r, n, dplus=0, tautout=True, basis=False, ring=None, gens=None)[source]¶
-
admcycles.admcycles.Hain_divisor(g, A)[source]¶ Returns a divisor class D extending the pullback of the theta-divisor under the Abel-Jacobi map (on compact type) given by partition A of zero. Note: D^g/g! agrees with the Double-Ramification cycle in compact type.
EXAMPLES:
sage: from admcycles import * sage: R=PolynomialRing(QQ,'z',3) sage: z0,z1,z2=R.gens() sage: u=Hain_divisor(2,(z0,z1,z2)) sage: g=DRpoly(2,1,3) #u,g should agree inside compact type # long time sage: (u.toTautvect()-g.toTautvect()).subs({z0:-z1-z2}) # long time (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/24)
-
admcycles.admcycles.Hidentify(g, dat, method='pull', vecout=False, redundancy=False, markings=None)[source]¶
-
admcycles.admcycles.Hpullpush(g, dat, alpha)[source]¶ Pulls the class alpha to the space bar H_{g,dat} via map i forgetting the action, then pushes forward under delta.
-
admcycles.admcycles.Hyperell(g, n=0, m=0)[source]¶ Returns the cycle class of the hyperelliptic locus of genus g curves with n marked fixed points and m pairs of conjugate points in barM_{g,n+2m}.
- TESTS::
- sage: H=Hyperell(3) # long time sage: H.toTautbasis() # long time (3/4, -9/4, -1/8)
-
admcycles.admcycles.barH(g, dat, markings=None)[source]¶ Returns bar H on genus g with Hurwitz datum dat as a prodHclass on the trivial graph, remembering only the marked points given in markings
-
class
admcycles.admcycles.decHstratum(gamma, spaces, vertdata, dicv0=None, dicl0=None, poly=None)[source]¶
-
admcycles.admcycles.irrbdiv(g=None, n=None)[source]¶ Returns the pushforward of the fundamental class under the irreducible boundary gluing map bar M_{g-1,n+2} -> bar M_{g,n}.
INPUT:
- g : integer
- The total genus g of the graph.
- n : integer
- The total number of markings n of the graph.
EXAMPLES:
sage: from admcycles import * sage: irrbdiv(2,5) Graph : [1] [[1, 2, 3, 4, 5, 6, 7]] [(6, 7)] Polynomial : 1*
When working with fixed g and n for the moduli space bar M_{g,n} it is possible specify the desired value of the global variables g and n to avoid giving them as an argument each time:
sage: g=3; n=0; irrbdiv() Graph : [2] [[1, 2]] [(1, 2)] Polynomial : 1*
-
admcycles.admcycles.kappaclass(a, g=None, n=None)[source]¶ Returns the (Arbarello-Cornalba) kappa-class kappa_a on bar M_{g,n} defined by
kappa_a= pi_*(psi_{n+1}^{a+1})where pi is the morphism bar M_{g,n+1} –> bar M_{g,n}.
INPUT:
- a : integer
- The degree a of the kappa class.
- g : integer
- Genus g of curves in bar M_{g,n}.
- n : integer
- Number of markings n of curves in bar M_{g,n}.
EXAMPLES:
sage: from admcycles import * sage: kappaclass(2,3,1) Graph : [3] [[1]] [] Polynomial : 1*(kappa_2^1 )_0
When working with fixed g and n for the moduli space bar M_{g,n} it is possible specify the desired value of the global variables g and n to avoid giving them as an argument each time:
sage: g=1;n=2;kappaclass(1) Graph : [1] [[1, 2]] [] Polynomial : 1*(kappa_1^1 )_0
-
admcycles.admcycles.lambdaclass(d, g=None, n=None)[source]¶ Returns the tautological class lambda_d on bar M_{g,n} defined as the d-th Chern class
lambda_d = c_d(E)of the Hodge bundle E. The result is represented as a sum of stable graphs with kappa and psi classes.
INPUT:
- d : integer
- The degree d.
- g : integer
- Genus g of curves in bar M_{g,n}.
- n : integer
- Number of markings n of curves in bar M_{g,n}.
EXAMPLES:
sage: from admcycles import * sage: lambdaclass(1,2,1) Graph : [2] [[1]] [] Polynomial : 1/12*(kappa_1^1 )_0 Graph : [2] [[1]] [] Polynomial : (-1/12)*psi_1^1 Graph : [1, 1] [[3], [1, 4]] [(3, 4)] Polynomial : 1/12* Graph : [1] [[3, 4, 1]] [(3, 4)] Polynomial : 1/24*
When working with fixed g and n for the moduli space bar M_{g,n} it is possible specify the desired value of the global variables g and n to avoid giving them as an argument each time:
sage: g=1;n=1;lambdaclass(1) Graph : [1] [[1]] [] Polynomial : 1/12*(kappa_1^1 )_0 Graph : [1] [[1]] [] Polynomial : (-1/12)*psi_1^1 Graph : [0] [[3, 4, 1]] [(3, 4)] Polynomial : 1/24*
-
admcycles.admcycles.list_tautgens(g, n, r)[source]¶ Lists all tautological classes of degree r on bar M_{g,n}.
INPUT:
- g : integer
- Genus g of curves in bar M_{g,n}.
- n : integer
- Number of markings n of curves in bar M_{g,n}.
- r : integer
- The degree r of of the classes.
EXAMPLES:
sage: from admcycles import * sage: list_tautgens(2,0,2) [0] : Graph : [2] [[]] [] Polynomial : 1*(kappa_2^1 )_0 [1] : Graph : [2] [[]] [] Polynomial : 1*(kappa_1^2 )_0 [2] : Graph : [1, 1] [[2], [3]] [(2, 3)] Polynomial : 1*(kappa_1^1 )_0 [3] : Graph : [1, 1] [[2], [3]] [(2, 3)] Polynomial : 1*psi_2^1 [4] : Graph : [1] [[2, 3]] [(2, 3)] Polynomial : 1*(kappa_1^1 )_0 [5] : Graph : [1] [[2, 3]] [(2, 3)] Polynomial : 1*psi_2^1 [6] : Graph : [0, 1] [[3, 4, 5], [6]] [(3, 4), (5, 6)] Polynomial : 1* [7] : Graph : [0] [[3, 4, 5, 6]] [(3, 4), (5, 6)] Polynomial : 1*
-
admcycles.admcycles.psiclass(i, g=None, n=None)[source]¶ Returns the class psi_i on bar M_{g,n}.
INPUT:
- i : integer
- The leg i associated to the psi class.
- g : integer
- Genus g of curves in bar M_{g,n}.
- n : integer
- Number of markings n of curves in bar M_{g,n}.
EXAMPLES:
sage: from admcycles import * sage: psiclass(2,2,3) Graph : [2] [[1, 2, 3]] [] Polynomial : 1*psi_2^1
When working with fixed g and n for the moduli space bar M_{g,n} it is possible specify the desired value of the global variables g and n to avoid giving them as an argument each time:
sage: g=3;n=2;psiclass(1) Graph : [3] [[1, 2]] [] Polynomial : 1*psi_1^1
-
admcycles.admcycles.pullpushtest(g, dat, r)[source]¶ Test if for Hurwitz space specified by (g,dat), pulling back codimension r relations under the source map and pushing forward under the target map gives relations.
-
admcycles.admcycles.sepbdiv(g1, A, g=None, n=None)[source]¶ Returns the pushforward of the fundamental class under the boundary gluing map bar M_{g1,A} X bar M_{g-g1,{1,…,n} A} –> bar M_{g,n}.
INPUT:
- g1 : integer
- The genus g1 of the first vertex.
- A: list
- The list A of markings on the first vertex.
- g : integer
- The total genus g of the graph.
- n : integer
- The total number of markings n of the graph.
EXAMPLES:
sage: from admcycles import * sage: sepbdiv(1,(1,3,4),2,5) Graph : [1, 1] [[1, 3, 4, 6], [2, 5, 7]] [(6, 7)] Polynomial : 1*
When working with fixed g and n for the moduli space bar M_{g,n} it is possible specify the desired value of the global variables g and n to avoid giving them as an argument each time:
sage: g=3;n=3;sepbdiv(1,(2,)) Graph : [1, 2] [[2, 4], [1, 3, 5]] [(4, 5)] Polynomial : 1*
-
class
admcycles.admcycles.stgraph(genera, legs, edges)[source]¶ Create a stable graph.
Represents a stable graph by a list of genera of its vertices, a list of legs at each vertex and a list of pairs of legs forming edges.
INPUT:
- genera : list
- List of genera of the vertices of length m.
- legs : list
- List of length m, where ith entry is list of legs attached to vertex i. By convention, legs are unique positive integers.
- edges : list
- List of edges of the graph. Each edge is a 2-tuple of legs.
EXAMPLES:
Creating a stable graph with two vertices of genera 3,5 joined by an edge with a self-loop at the genus 3 vertex:
sage: from admcycles import * sage: stgraph([3,5],[[1,3,5],[2]],[(1,2),(3,5)]) [3, 5] [[1, 3, 5], [2]] [(1, 2), (3, 5)]
It is also possible to create graphs which are not neccesarily stable:
sage: stgraph([1,0],[[1],[2,3]],[(1,2)]) [1, 0] [[1], [2, 3]] [(1, 2)]
sage: stgraph([0],[[1]],[]) [0] [[1]] []
-
dim(v=None)[source]¶ Return dimension of moduli space at vertex v. If v=None, return dimension of entire stratum parametrized by graph.
-
g()[source]¶ Returns the genus of the stable graph.
EXAMPLES:
sage: from admcycles import * sage: G=stgraph([1,2],[[1,2],[3,4]],[(1,3),(2,4)]);G.g() 4
-
list_markings(v=None)[source]¶ Return the list of markings (non-edge legs) of self at vertex v.
EXAMPLES:
sage: from admcycles import * sage: gam = stgraph([3,5],[[1,3,7],[2,4]],[(1,2)]) sage: gam.list_markings(0) (3, 7) sage: gam.list_markings() (3, 7, 4)
-
class
admcycles.admcycles.tautclass(terms)[source]¶ -
FZsimplify(r=None)[source]¶ Returns representation of self as a tautclass formed by a linear combination of the preferred tautological basis. If r is given, only take degree r part.
-
coeff_subs(dic)[source]¶ If coefficients of self are polynomials, it tries to substitute variable assignments given by dic.
-
forgetful_pullback(legs, rename=True)[source]¶ Returns the pullback of a given tautological class under the map pi : bar M_{g,A cup B} –> bar M_{g,A}.
INPUT:
- legs : list
- List B of legs that are forgotten by the map pi.
EXAMPLES:
sage: from admcycles import * sage: psiclass(2,1,2).forgetful_pullback([3]) Graph : [1] [[1, 2, 3]] [] Polynomial : 1*psi_2^1 Graph : [1, 0] [[1, 4], [5, 3, 2]] [(4, 5)] Polynomial : (-1)*
-
forgetful_pushforward(legs)[source]¶ Returns the pushforward of a given tautological class under the map pi : bar M_{g,n} –> bar M_{g,{1,…,n} A}.
INPUT:
- legs : list
- List A of legs that are forgotten by the map pi.
EXAMPLES:
sage: from admcycles import * sage: s1=psiclass(3,1,3)^2;s1.forgetful_pushforward([2,3]) Graph : [1] [[1]] [] Polynomial : 1*
sage: t=tautgens(2,2,1)[1]+2*tautgens(2,2,1)[3] sage: t.forgetful_pushforward([1]) Graph : [2] [[2]] [] Polynomial : 3* Graph : [2] [[2]] [] Polynomial : 2*
-
-
admcycles.admcycles.tautgens(g, n, r, decst=False)[source]¶ Returns a lists of all tautological classes of degree r on bar M_{g,n}.
INPUT:
- g : integer
- Genus g of curves in bar M_{g,n}.
- n : integer
- Number of markings n of curves in bar M_{g,n}.
- r : integer
- The degree r of of the classes.
- decst : boolean
- If set to True returns generators as decorated strata, else as tautological classes.
EXAMPLES:
sage: from admcycles import * sage: tautgens(2,0,2)[1] Graph : [2] [[]] [] Polynomial : 1*(kappa_1^2 )_0
sage: L=tautgens(2,0,2);2*L[3]+L[4] Graph : [1, 1] [[2], [3]] [(2, 3)] Polynomial : 2*psi_2^1 Graph : [1] [[2, 3]] [(2, 3)] Polynomial : 1*(kappa_1^1 )_0