Given R = S/I, where S is a polynomial ring, the function testElement finds an element of the ambient ring S whose image in R is a test element of R. This is done by finding a minor of the jacobian of I that does not lie in any minimal prime of I. This function considers random minors until one is found, instead of computing all minors. Thus, repeated calls will not always produce the same answer.
i1 : R = ZZ/11[x,y,z]/(x^3 + y^3 + z^3); |
i2 : apply(1..5, i -> testElement(R)) 2 2 2 2 2 o2 = (-2y , -2z , -y , 2y , 4x ) o2 : Sequence |
If the option AssumeDomain (default value false) is set to true, then testElement does not compute the minimal primes of I. This can result in a substantial speedup in some cases.