Compute the ramification divisor corresponding the finite inclusion of normal domains. If you pass it a non-finite map, it will compute the divisorial part of the locus where the map is not smooth. If IsGraded is set to false (the default value), then the coefficient ring of both the source and target of f must be equal.
i1 : R = QQ[x]; |
i2 : S = QQ[y]; |
i3 : f = map(S, R, {y^3}); o3 : RingMap S <--- R |
i4 : ramificationDivisor(f) o4 = 2*Div(y) o4 : WeilDivisor on S |
The next example is a Veronese which is etale in codimension 1.
i5 : R = QQ[x,y]; |
i6 : T = QQ[a,b,c,d]; |
i7 : h = map(R, T, {x^3, x^2*y, x*y^2, y^3}); o7 : RingMap R <--- T |
i8 : S = T/ker h; |
i9 : f = map(R, S, {x^3, x^2*y, x*y^2, y^3}); o9 : RingMap R <--- S |
i10 : ramificationDivisor(f) o10 = 0, the zero divisor o10 : WeilDivisor on R |
Here is an example with wild ramification.
i11 : R = ZZ/2[t]; |
i12 : S = ZZ/2[x]; |
i13 : f = map(S, R, {x^2*(1+x)}); o13 : RingMap S <--- R |
i14 : ramificationDivisor(f) o14 = 2*Div(x) o14 : WeilDivisor on S |