The output is the homogeneous coordinate ring of the canonical image of the normalization the given curve.
For example, a plane sextic with 4 nodes is a curve of genus 10-4 = 6, so its canonical image is a curve of degree 10 in P5
i1 : P5 = ZZ/101[x_0..x_5]
o1 = P5
o1 : PolynomialRing
|
i2 : P2 = ZZ/101[a,b,c]
o2 = P2
o2 : PolynomialRing
|
i3 : fourPoints = {{1,0,0},{0,1,0},{0,0,1},{1,1,1}}
o3 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 1, 1}}
o3 : List
|
i4 : nodes = fromCoordinates(fourPoints, P2)
3 2 2 3 2 2 2 3 2 2 2
o4 = ideal (- a b + a b , - a b + a b*c, - a b + a*b , - a b + a*b c, -
------------------------------------------------------------------------
2 2 2 2 2 3 2 2 2 3
a b*c + a*b c, - a b*c + a*b*c , - a*b c + b c, - a*b c + b c , - a c +
------------------------------------------------------------------------
2 3 2 2 2 2 2 2 2 2 2
a b*c, - a c + a c , - a b*c + a*b c, - a b*c + a*b*c , - a c + a*b*c ,
------------------------------------------------------------------------
2 2 3 2 2 2 2 3
- a c + a*c , - a*b*c + b c , - a*b*c + b*c )
o4 : Ideal of P2
|
i5 : sings' = intersect apply(fourPoints, p -> (fromCoordinates(p,P2))^2)
2 2 2 2 2 2 2 2 2 2 2 2
o5 = ideal (a c - 2a*b*c + b c , a b*c - a*b c - a*b*c + b c , a b -
------------------------------------------------------------------------
2 2 2
2a*b c + b c )
o5 : Ideal of P2
|
i6 : C0 = P2/(ideal random(6, sings'))
o6 = C0
o6 : QuotientRing
|
i7 : sings = sub (sings', C0)
2 2 2 2 2 2 2 2 2 2 2 2
o7 = ideal (a c - 2a*b*c + b c , a b*c - a*b c - a*b*c + b c , a b -
------------------------------------------------------------------------
2 2 2
2a*b c + b c )
o7 : Ideal of C0
|
i8 : conductor C0 == sub(nodes, C0)
o8 = false
|
i9 : C = canonicalImage C0
o9 = C
o9 : QuotientRing
|
i10 : betti res ideal C
0 1 2 3 4
o10 = total: 1 6 10 6 1
0: 1 . . . .
1: . 6 5 . .
2: . . 5 6 .
3: . . . . 1
o10 : BettiTally
|
i11 : B' = gens image basis (3,intersect nodes)
o11 = 0
1
o11 : Matrix P2 <-- 0
|