Tower of field extensions

72 views
Skip to first unread message

Conrado PLG

unread,
May 11, 2009, 3:19:31 PM5/11/09
to sage-support
Hello,

I'm trying to build a "tower" of field extensions but an error occurs.
This is the code:

p = 0xb640000000008c6352000000288d94aa50000534d459922940402af3364b031b
R = GF(p)
_.<X> = PolynomialRing(R)
R2.<X> = R.extension(X^2+1, 'X')
_.<Y> = PolynomialRing(R2)
xi = -X + 1
R6.<Y> = R2.extension(Y^3-xi, 'Y')
_.<Z> = PolynomialRing(R6)
R12.<Z> = R6.extension(Z^2-(Y), 'Z')

An "NotImplementedError" is raised on the "_.<Z> = PolynomialRing(R6)"
line. Is there any other way to accomplish this, or it's just a Sage
limitation? From the traceback, I see it tries to factor the modulus
of R6 but it fails.

Traceback:


/home/conrado/.sage/temp/matamune/8922/
_home_conrado_workspace_sage_bn_sage_14.py in bn_create(p)
80 xi = -X + _sage_const_1
81 R6 = R2.extension(Y**_sage_const_3 -xi, 'Y', names=
('Y',)); (Y,) = R6._first_ngens(1)
---> 82 _ = PolynomialRing(R6, names=('Z',)); (Z,) = _._first_ngens
(1)
83 R12 = R6.extension(Z**_sage_const_2 -(Y), 'Z', names=
('Z',)); (Z,) = R12._first_ngens(1)
84 return R, R2, R6, R12, X, Y, Z

/home/conrado/sage-3.4.1-linux-Ubuntu_8.10-sse2-i686-Linux/local/lib/
python2.5/site-packages/sage/rings/polynomial/
polynomial_ring_constructor.pyc in PolynomialRing(base_ring, arg1,
arg2, sparse, order, names, name, implementation)
281 raise TypeError, "if second arguments is a
string with no commas, then there must be no other non-optional
arguments"
282 name = arg1
--> 283 R = _single_variate(base_ring, name, sparse,
implementation)
284 else:
285 # 2-4. PolynomialRing(base_ring, names,
order='degrevlex'):

/home/conrado/sage-3.4.1-linux-Ubuntu_8.10-sse2-i686-Linux/local/lib/
python2.5/site-packages/sage/rings/polynomial/
polynomial_ring_constructor.pyc in _single_variate(base_ring, name,
sparse, implementation)
368 R = m.PolynomialRing_dense_padic_ring_fixed_mod
(base_ring, name)
369
--> 370 elif base_ring.is_field():
371 R = m.PolynomialRing_field(base_ring, name,
sparse)
372

/home/conrado/sage-3.4.1-linux-Ubuntu_8.10-sse2-i686-Linux/local/lib/
python2.5/site-packages/sage/rings/polynomial/
polynomial_quotient_ring.pyc in is_field(self)
454 True
455 """
--> 456 return self.base_ring().is_field() and self.modulus
().is_irreducible()
457
458 def krull_dimension(self):

/home/conrado/sage-3.4.1-linux-Ubuntu_8.10-sse2-i686-Linux/local/lib/
python2.5/site-packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial.is_irreducible
(sage/rings/polynomial/polynomial_element.c:37402)()

/home/conrado/sage-3.4.1-linux-Ubuntu_8.10-sse2-i686-Linux/local/lib/
python2.5/site-packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial.factor (sage/rings/
polynomial/polynomial_element.c:25443)()

NotImplementedError:

William Stein

unread,
May 11, 2009, 4:17:21 PM5/11/09
to sage-s...@googlegroups.com
On Mon, May 11, 2009 at 12:19 PM, Conrado PLG <conra...@gmail.com> wrote:
>
> Hello,
>
> I'm trying to build a "tower" of field extensions but an error occurs.
> This is the code:
>
> p = 0xb640000000008c6352000000288d94aa50000534d459922940402af3364b031b
> R = GF(p)
> _.<X> = PolynomialRing(R)
> R2.<X> = R.extension(X^2+1, 'X')
> _.<Y> = PolynomialRing(R2)
> xi = -X + 1
> R6.<Y> = R2.extension(Y^3-xi, 'Y')
> _.<Z> = PolynomialRing(R6)
> R12.<Z> = R6.extension(Z^2-(Y), 'Z')
>
> An "NotImplementedError" is raised on the "_.<Z> = PolynomialRing(R6)"
> line. Is there any other way to accomplish this, or it's just a Sage
> limitation? From the traceback, I see it tries to factor the modulus
> of R6 but it fails.

Here's a total hack to get around the problem:

sage: p = 0xb640000000008c6352000000288d94aa50000534d459922940402af3364b031b
sage: R = GF(p)
sage: _.<X> = PolynomialRing(R)
sage: R2.<X> = R.extension(X^2+1, 'X')
sage: _.<Y> = PolynomialRing(R2)
sage: xi = -X + 1
sage: R6.<Y> = R2.extension(Y^3-xi, 'Y')
sage: R6.is_field = lambda : True
sage: _.<Z> = PolynomialRing(R6)
sage: R12.<Z> = R6.extension(Z^2-(Y), 'Z')
sage: R12
Univariate Quotient Polynomial Ring in Z over Univariate Quotient
Polynomial Ring in Y over Univariate Quotient Polynomial Ring in X
over Finite Field of size
82434016654300524875808230406429140937527925673742161687619861377398365422363
with modulus X^2 + 1 with modulus Y^3 + X +
82434016654300524875808230406429140937527925673742161687619861377398365422362
with modulus Z^2 +
82434016654300524875808230406429140937527925673742161687619861377398365422362*Y
--
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

Conrado Porto Lopes Gouvêa

unread,
May 11, 2009, 7:05:13 PM5/11/09
to sage-s...@googlegroups.com
On Mon, May 11, 2009 at 17:17, William Stein <wst...@gmail.com> wrote:
>
> Here's a total hack to get around the problem:
>

Thanks, what matters is that it works :)

Conrado

Reply all
Reply to author
Forward
0 new messages