SageMath:减少商环 (x^2 - x = 0)

SageMath: Reduction In Quotient Rings (x^2 - x = 0)

感谢您花时间阅读本文,非常感谢。

我的问题是如何确保商环内的多项式具有以下 属性:

(x^2)k = 0

其中x为商环中的任意变量,k为正整数。

这是我尝试处理这种情况的方法:我创建了一个多项式环

P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')

由于我不在商环内工作,x^2(或任何其他三个变量)不 'become' 0。因为我想要 x^2 的 属性 = 0,我决定用一些场方程创建一个商环:

Q = P.quotient_ring(ideal([var**q - var for var in P.gens()]))

据此 q = P.base_ring.order() 。 然而,当我创建以下多项式时,它的父级仍然是 P,所以我改变了它的环:

f1 = y*z + y*w + w^2
f1 = f1.change_ring(Q)

但是,当我打印f1时,w^2仍然是w^2,并没有减少到0。请问我是否遗漏了什么?这很烦人,因为我将要使用麦考利矩阵,因此,我必须在商环中工作。也许我遗漏了一些数学知识,因为这对我来说都是全新的...

这是我的贤者输入:

sage: P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')
sage: q = P.base_ring().order()
sage: Q = P.quotient_ring(ideal([var**q - var for var in P.gens()]))
sage: f1 = y*z + y*w + w^2
sage: f1
y*z + y*w + w^2
sage: f1 = f1.change_ring(Q)
sage: f1
y*z + y*w + w^2

如何确保 w^2 = 0?我已经尝试在创建商环并随后更改其环时将原始多项式添加到场方程中,如下所示:

sage: P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')
sage: q = P.base_ring().order()
sage: f1 = y*z + y*w + w^2
sage: Q = P.quotient_ring(ideal([f1] + [var**q - var for var in P.gens()]))
sage: f1 = f1.change_ring(Q)
sage: f1
y*z + y*w + w^2

但是如您所见,什么也没发生... 谢谢!

而不是f1 = change_ring(Q),你应该f1 = Q(f1)change_ring 只影响系数,不影响不确定项,而 Q(f1) 强制多项式 f1 存在于 Q 中,将每个变量转换为 Q 中的图像。例如:

sage: P.<x,y,z,w> = PolynomialRing(GF(2), 4, order = 'degrevlex')
sage: q = P.base_ring().order()
sage: Q = P.quotient_ring(ideal([var**q - var for var in P.gens()]))
sage: f1 = y*z + y*w + w^2
sage: f1
y*z + y*w + w^2
sage: f1.change_ring(Q)
y*z + y*w + w^2
sage: Q(f1)
ybar*zbar + ybar*wbar + wbar

后加bar的变量为Q中的图片。

另一种选择,定义后Q

sage: x,y,z,w = Q.gens()
sage: f1 = y*z + y*w + w^2 # now living in Q, since x,y,z,w are in Q
sage: f1
ybar*zbar + ybar*wbar + wbar

顺便说一句,如果您希望 w^2 为零,您不应该强加关系 w**2 而不是 w**2 - w 吗?