How to make Sage know that a set is an ideal
I have constructed the following ideal
J = {0, x*y*z - x*y - x*z + y*z - x + y - z, x*z - y*z - x + y - 1, x*y*z + x*y + x*z + y*z - z - 1, x*y + x*z + x - y + z, -x*y*z - x*y + x*z - y*z - x - y - z, ....}
in the ring
R=F[X,Y,Z]/(X2−1,Y2−1,Z2−1)
where F=GF(3) and x (resp; y, z) is the residue class of X (resp. Y, Z) modulo the ideal (X2−1,Y2−1,Z2−1). By its construction, the set J is indeed an ideal, containing 2187 elements, so it is hard to write or copy all its elements. I want to find a Groebner basis of J, by writing
B = J.groebner_basis(),
but Sage returns
TypeError: R must be a commutative ring.
This error seems to mean that Sage doesn' t remember that J is the above set anymore and consider J as an inappropriate new objet of a new ring R!
I must first construct the ideal
H = ideal(0, x*y*z - x*y - x*z + y*z - x + y - z, x*z - y*z - x + y - 1, x*y*z + x*y + x*z + y*z - z - 1, x*y + x*z + x - y + z, -x*y*z - x*y + x*z - y*z - x - y - z, ....)
and then compute
B = H.groebner_basis().
That works, but, as I previously said, it is not easy to construct the ideal H because that needs copy and paste 2187 elements!
Therefore I'd like to know whether there is another way to the task, without copying and pasting all of the elements of J, and declaring the ideal of these elements, is there a way to convert a set of elements in a ring (which is already an ideal) to the underlying ideal?
I have updatet the question because it contained some syntax errors
The computation
B=H.groebner_basis()
answers my preeceding question "Does sage allow computation of a groebner basis of an ideal J in the quotient ring Z/pZ[X_1,...X_r]/I?". The answer is "YES".
Please provide enough code for anyone to reproduce in a fresh Sage session. For instance what is
F
?If the question is not self-contained, at least provide an explicit reference to a previous question where things are defined.
From your previous questions it would seem this is the context.
Construct a finite field, a multivariate polynomial ring over it, and the quotient by the ideal generated by three polynomials:
Check what we have so far:
Now how do you construct the ideal
J
?Thank for your remarks, the set F is the finite field GF(3) as you knew. The ideal J is a "multicyclic code" of dimension 3, and is equal the set of polynomials of R which vanishes on a finite subset of F3. Here is the code :
def code(POLS,ZER):
In my case, POLS is the set of polynomials of R ( of degree ⩽(1,1), using the lexicographical order) and ZER a subset of F3 consisting of a unique element. More time is needed to provide the codes for constructing POLS, I will provide these latter on.