i1 : wtR = matrix{{5,6,6},{3,6,0}}; 2 3 o1 : Matrix ZZ <--- ZZ |
i2 : Rq = ZZ/23[x,y,z,Weights=>entries weightGrevlex(wtR)]; |
i3 : GB = {x^6+x^3*z-y^3*z^2}; |
i4 : (fractions,relicR,icR,wticR) = qthIntegralClosure(wtR,Rq,GB) 2 2 5 2 4 3 2 2 2 2 2 2 o4 = ({y z, x*y z, x + x z, x y + x*y*z, x y , x y z}, {p - p p p + p p , p p + p - p p , p p - p p , p p - p p p , p p - 0 2 5 6 4 6 0 1 0 3 5 0 2 5 6 0 3 4 5 6 0 4 ---------------------------------------------------------------------------------------------------------------------------- 2 3 2 2 2 p p , p + p - p , p p - p p , p p - p p , p p - p p + p , p - p p - p , p p - p p - p , p p - p p , p - p p , 1 6 1 1 5 1 2 4 5 1 3 0 5 1 4 2 5 4 2 0 5 3 2 3 1 6 6 2 4 3 5 3 2 6 ---------------------------------------------------------------------------------------------------------------------------- 2 p p - p p , p - p }, icR, | 10 9 8 7 5 6 6 |) 3 4 5 6 4 0 | 6 9 6 3 3 6 0 | o4 : Sequence |
The presentation is therefore a quotient ring, icR ( with grevlex-over-weight monomial ordering implicit from wticR) modulo the ideal, relicR, of induced relations that define the P-algebra multiplication and possible P-linear dependencies. The fractions returned could be used to define a map from (fractions#0)icR to Rq. Note that if wtR*matrix{{6},{0},{0}} eq max{ wtR*matrix{{3},{0},{1}},wtR*matrix{{0},{3},{2}} in the example above, the algorithm will undoubtedly fail at some step.
The object qthIntegralClosure is a method function.