Re: [sage-support] Re: Extending a Finite Field second time

2015-05-04 Thread John Cremona
On 4 May 2015 at 15:22, Evrim Ulu evrim...@gmail.com wrote:

 Here it is:

 F16.extension(modulus=x^7+x+1)

To quote from the documentation of the extension() method used here:
Extensions of non-prime finite fields by polynomials are not yet
supported: we fall back to generic code:

follwed by an example.  In your case you get

Univariate Quotient Polynomial Ring in x over Finite Field in g of
size 2^4 with modulus x^7 + x + 1

which does at least know that it is  a field, but its type is not
FiniteField but  PolynomialQuatientRing .

There has been recent work to improve handling of relative extensions
of finite fields, and perhaps someone who has been involved with that
will comment further.

John Cremona



 On Monday, May 4, 2015 at 5:02:52 PM UTC+3, Evrim Ulu wrote:

 Hello,

 I'm having trouble extending a finite field. Any help would be
 appreciated.

 F16 = GF(16, 'g')
 F16_x.x = PolynomialRing(F16, 'x')
 HH = GF(F16^7, modulus=x^7 + x + 1, name='h')

 I basically try to extend 2^4 to 2^4*7 with a degree 7 irreducible.
 I get the following.

 best,
 evrim.


 sage: HH = FiniteField(F16^7, modulus=x^7 + x + g^15, name='h')

 ---
 TypeError Traceback (most recent call
 last)
 /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/all_cmdline.pyc
 in module()
  1 HH = FiniteField(F16**Integer(7), modulus=x**Integer(7) + x +
 g**Integer(15), name='h')

 /usr/lib/sagemath/src/sage/structure/factory.pyx in
 sage.structure.factory.UniqueFactory.__call__
 (build/cythonized/sage/structure/factory.c:1207)()
 362 False
 363 
 -- 364 key, kwds = self.create_key_and_extra_args(*args, **kwds)
 365 version = self.get_version(sage_version)
 366 return self.get_object(version, key, kwds)


 /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/rings/finite_rings/constructor.pyc
 in create_key_and_extra_args(self, order, name, modulus, names, impl, proof,
 check_irreducible, **kwds)
 426 proof = arithmetic()
 427 with WithProof('arithmetic', proof):
 -- 428 order = Integer(order)
 429 if order = 1:
 430 raise ValueError(the order of a finite field must
 be at least 2)

 /usr/lib/sagemath/src/sage/rings/integer.pyx in
 sage.rings.integer.Integer.__init__
 (build/cythonized/sage/rings/integer.c:6020)()
 688 return
 689
 -- 690 raise TypeError, unable to coerce %s to an
 integer % type(x)
 691
 692 def __reduce__(self):

 TypeError: unable to coerce class
 'sage.modules.free_module.FreeModule_ambient_field_with_category' to an
 integer

 --
 You received this message because you are subscribed to the Google Groups
 sage-support group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-support+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-support@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-support.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-support group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-support] Re: Extending a Finite Field second time

2015-05-04 Thread Evrim Ulu
I see that, thanks for the info.

Actually F16.extension(..).gen().multiplicative_order() gives
NotImplementedError

So basically, if i want to simulate the behaviour I can take two poly
f(x), g(x) and generate a field using modulus f(g(x)) composition i
guess.

best
evrim.

2015-05-04 17:55 GMT+03:00 John Cremona john.crem...@gmail.com:
 On 4 May 2015 at 15:22, Evrim Ulu evrim...@gmail.com wrote:

 Here it is:

 F16.extension(modulus=x^7+x+1)

 To quote from the documentation of the extension() method used here:
 Extensions of non-prime finite fields by polynomials are not yet
 supported: we fall back to generic code:

 follwed by an example.  In your case you get

 Univariate Quotient Polynomial Ring in x over Finite Field in g of
 size 2^4 with modulus x^7 + x + 1

 which does at least know that it is  a field, but its type is not
 FiniteField but  PolynomialQuatientRing .

 There has been recent work to improve handling of relative extensions
 of finite fields, and perhaps someone who has been involved with that
 will comment further.

 John Cremona



 On Monday, May 4, 2015 at 5:02:52 PM UTC+3, Evrim Ulu wrote:

 Hello,

 I'm having trouble extending a finite field. Any help would be
 appreciated.

 F16 = GF(16, 'g')
 F16_x.x = PolynomialRing(F16, 'x')
 HH = GF(F16^7, modulus=x^7 + x + 1, name='h')

 I basically try to extend 2^4 to 2^4*7 with a degree 7 irreducible.
 I get the following.

 best,
 evrim.


 sage: HH = FiniteField(F16^7, modulus=x^7 + x + g^15, name='h')

 ---
 TypeError Traceback (most recent call
 last)
 /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/all_cmdline.pyc
 in module()
  1 HH = FiniteField(F16**Integer(7), modulus=x**Integer(7) + x +
 g**Integer(15), name='h')

 /usr/lib/sagemath/src/sage/structure/factory.pyx in
 sage.structure.factory.UniqueFactory.__call__
 (build/cythonized/sage/structure/factory.c:1207)()
 362 False
 363 
 -- 364 key, kwds = self.create_key_and_extra_args(*args, **kwds)
 365 version = self.get_version(sage_version)
 366 return self.get_object(version, key, kwds)


 /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/rings/finite_rings/constructor.pyc
 in create_key_and_extra_args(self, order, name, modulus, names, impl, proof,
 check_irreducible, **kwds)
 426 proof = arithmetic()
 427 with WithProof('arithmetic', proof):
 -- 428 order = Integer(order)
 429 if order = 1:
 430 raise ValueError(the order of a finite field must
 be at least 2)

 /usr/lib/sagemath/src/sage/rings/integer.pyx in
 sage.rings.integer.Integer.__init__
 (build/cythonized/sage/rings/integer.c:6020)()
 688 return
 689
 -- 690 raise TypeError, unable to coerce %s to an
 integer % type(x)
 691
 692 def __reduce__(self):

 TypeError: unable to coerce class
 'sage.modules.free_module.FreeModule_ambient_field_with_category' to an
 integer

 --
 You received this message because you are subscribed to the Google Groups
 sage-support group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to sage-support+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-support@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-support.
 For more options, visit https://groups.google.com/d/optout.

 --
 You received this message because you are subscribed to a topic in the Google 
 Groups sage-support group.
 To unsubscribe from this topic, visit 
 https://groups.google.com/d/topic/sage-support/mVoFYqsfAAY/unsubscribe.
 To unsubscribe from this group and all its topics, send an email to 
 sage-support+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-support@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-support.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-support group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-support] Re: Extending a Finite Field second time

2015-05-04 Thread Nils Bruin
On Monday, May 4, 2015 at 7:58:19 AM UTC-7, Evrim Ulu wrote:

 I see that, thanks for the info. 

 Actually F16.extension(..).gen().multiplicative_order() gives 
 NotImplementedError 

 So basically, if i want to simulate the behaviour I can take two poly 
 f(x), g(x) and generate a field using modulus f(g(x)) composition i 
 guess. 

 
Only if you care about having that basis (is f(g(x)) guaranteed to be 
irreducible?) You can also just construct k=GF(2^(4*7),'a') and hope the 
underlying library takes a smart choice for its generator. You can then see 
how GF[x]/(x^7+x+1) embeds by asking for (k[x](x^7+x+1)).roots()

-- 
You received this message because you are subscribed to the Google Groups 
sage-support group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-support] Re: Extending a Finite Field second time

2015-05-04 Thread Evrim Ulu
Thats right f(g(x)) is not irreducible obviously, shame on me.

I did this to get the order:
sage: (k[x](x^7+x+1)).roots()[0][0].multiplicative_order()
127

First root, multiplicative order.

The real confusion comes from the notation I guess. When you said
k[x](x^7+x+1) i obviously thought we are generating an Ideal. This is
obviously untrue since k[x]() is a function who casts it into the
ring.

This is really confusing, Thanks for your help.

best,
evrim.


2015-05-04 18:27 GMT+03:00 Nils Bruin nbr...@sfu.ca:
 On Monday, May 4, 2015 at 7:58:19 AM UTC-7, Evrim Ulu wrote:

 I see that, thanks for the info.

 Actually F16.extension(..).gen().multiplicative_order() gives
 NotImplementedError

 So basically, if i want to simulate the behaviour I can take two poly
 f(x), g(x) and generate a field using modulus f(g(x)) composition i
 guess.


 Only if you care about having that basis (is f(g(x)) guaranteed to be
 irreducible?) You can also just construct k=GF(2^(4*7),'a') and hope the
 underlying library takes a smart choice for its generator. You can then see
 how GF[x]/(x^7+x+1) embeds by asking for (k[x](x^7+x+1)).roots()

 --
 You received this message because you are subscribed to a topic in the
 Google Groups sage-support group.
 To unsubscribe from this topic, visit
 https://groups.google.com/d/topic/sage-support/mVoFYqsfAAY/unsubscribe.
 To unsubscribe from this group and all its topics, send an email to
 sage-support+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-support@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-support.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-support group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-support] Re: Extending a Finite Field second time

2015-05-04 Thread Evrim Ulu
One more question If I may ask.

Is there a way to get the minimal poly of some conjugates over GF(2^4)?
I always end up degree 28 in this case, i want to see some of degree 7.
I've tried to embed it into GF(2^4)[x] and factor yet no luck.


Best,
evrim.

2015-05-04 20:04 GMT+03:00 Evrim Ulu evrim...@gmail.com:
 Thats right f(g(x)) is not irreducible obviously, shame on me.

 I did this to get the order:
 sage: (k[x](x^7+x+1)).roots()[0][0].multiplicative_order()
 127

 First root, multiplicative order.

 The real confusion comes from the notation I guess. When you said
 k[x](x^7+x+1) i obviously thought we are generating an Ideal. This is
 obviously untrue since k[x]() is a function who casts it into the
 ring.

 This is really confusing, Thanks for your help.

 best,
 evrim.


 2015-05-04 18:27 GMT+03:00 Nils Bruin nbr...@sfu.ca:
 On Monday, May 4, 2015 at 7:58:19 AM UTC-7, Evrim Ulu wrote:

 I see that, thanks for the info.

 Actually F16.extension(..).gen().multiplicative_order() gives
 NotImplementedError

 So basically, if i want to simulate the behaviour I can take two poly
 f(x), g(x) and generate a field using modulus f(g(x)) composition i
 guess.


 Only if you care about having that basis (is f(g(x)) guaranteed to be
 irreducible?) You can also just construct k=GF(2^(4*7),'a') and hope the
 underlying library takes a smart choice for its generator. You can then see
 how GF[x]/(x^7+x+1) embeds by asking for (k[x](x^7+x+1)).roots()

 --
 You received this message because you are subscribed to a topic in the
 Google Groups sage-support group.
 To unsubscribe from this topic, visit
 https://groups.google.com/d/topic/sage-support/mVoFYqsfAAY/unsubscribe.
 To unsubscribe from this group and all its topics, send an email to
 sage-support+unsubscr...@googlegroups.com.
 To post to this group, send email to sage-support@googlegroups.com.
 Visit this group at http://groups.google.com/group/sage-support.
 For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
sage-support group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.