SageMath: сокращение в частных кольцах (x ^ 2 - x = 0) - PullRequest
0 голосов
/ 30 ноября 2018

Спасибо, что нашли время прочитать это, это очень ценится.

Мой вопрос касается того, как обеспечить, чтобы полином в фактор-кольце имел следующее свойство:

(x^2)k = 0

, где x - любая переменная в фактор-кольце, а k - положительное целое число.

Так я пытался разобраться в ситуации: я создал кольцо полиномов

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

Поскольку я не работаю в фактор-кольце, x ^ 2 (или любой издругие три переменные) не «становятся» 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

Но, как вы можете видеть, ничего не произошло ... Спасибо!

1 Ответ

0 голосов
/ 01 декабря 2018

Вместо 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?

...