Opened 9 years ago

Closed 7 years ago

#12194 closed enhancement (duplicate)

Enhancing function field capabilities: collapse a tower of function field extensions to a simple extension and more

Reported by: saraedum Owned by: malb
Priority: minor Milestone: sage-duplicate/invalid/wontfix
Component: commutative algebra Keywords: function fields
Cc: sydahmad, mderickx, minz Merged in:
Authors: Reviewers: Julian Rueth
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #9054 Stopgaps:

Status badges

Description (last modified by sydahmad)

The aim of this ticket is changed to merge Julian's function field personal codes into function field package which includes the initial purpose of the ticket:

  • Implement a method absolute_field() for function fields, i.e., collapse a tower of separable extensions to one simple extension.

and

  • primitive_element: compute a primitive element of the function field over base.
  • change_generators: changing the base rational function field over which the function field is defined.
  • inversion for function field homomorphisms

Attachments (1)

trac_12194_julian_func_field_enhancements.patch (64.5 KB) - added by sydahmad 9 years ago.
All functions are included and passes the sage -t but need more work

Download all attachments as: .zip

Change History (11)

comment:1 Changed 9 years ago by sydahmad

  • Cc mderickx minz added
  • Description modified (diff)
  • Summary changed from Method to collapse a tower of function field extensions to a simple extension to Enhancing function field capabilities: collapse a tower of function field extensions to a simple extension and more

Changed 9 years ago by sydahmad

All functions are included and passes the sage -t but need more work

comment:2 Changed 9 years ago by sydahmad

  • Status changed from new to needs_info

I know this still incomplete and at least needs more testing and more complete documentation besides housekeeping and other stuff. But I uploaded it, so I can have some inputs from people before taking further steps. The current codes passes all the tests but I had to apply quite few changes to it. Many of them, I think were routine but I would like to share some other one that I'm not sure was ok:

  1. The check for validity of construction of !FunctionField_polymod has been entirely moved to its constructor, as a result one can not check for the stuff like this:
sage: kx.<x> = FunctionField(FiniteField(5))
sage: kz.<z> = FunctionField(FiniteField(7))
sage: kzY.<Y> = kz[]
sage: kxy.<y> = kx.extension(Y^2 - z^3 -1)
sage: kxy.base_field() == kx
False
sage: kxy.base_field() == kz
True

So I had to put the code for preventing above situation in "extension" function.

  1. Apparently (polynomial) generator functions do not accept lists of variables anymore raising "not hashable" error, so I changed all calls to these functions from names=[name] to names=(name). However the functions in the patches still accepts the variables in list, but I think we should change those as well.
  1. Few test examples were failing due to the strange reason that the example line had comments: like this
K.<x> = FunctionField(QQ) #optional x

I couldn't figure out what is the real cause so I just ommited these comments to pass the tests.

  1. In some cases the code computes different result from examples expectations, but in those cases, I found that the expectaion doesn't make much of sense. For example we have:
(Function field in y defined by -y^4 + x, Morphism of function fields defined by y^4 |--> x,  y |--> y, Morphism of function fields defined by y |--> y,  x |--> y^4)
But, I think a morphisim should take a generator to somewhere, not a power of it as in y^4> x. In these cases, I check the result of the code in Magma and it seemed to be correct (the field where isomorphics and the computed isomorphism was one of the possible isomorphism).
  1. There was confusion in order of isomorphisms which was stopping the code from working at the beginning. All functions were returning the From_self_to_simpleField first then its inverse, except for the make_simple. So, I changed the order of return vars in make_simple and everthing seems to work fine.

That is for now and happy new year!

comment:3 Changed 9 years ago by sydahmad

And one more thing:

  1. There was no function to compute the inverse of morphisms with RationalFunctionField domain, so I cooked one using the inversion of morphisims with FunctionField_polymod domain, but I think we can probably do better.

comment:4 Changed 9 years ago by sydahmad

I think I  found a bug in change_generators(t,w) , I think if t isn't integral over k[x], it doesn't work properly. I think we need to multiply the elements of [t^e*w^d] matrix with the lcm of their denominators and that's enough for a cure. In few cases, that I checked I got the correct result.

Also, I don't understand how do we know that dimension of the kernel of the above matrix is always one. Doesn't it mean that we should know the dimension of the Riemman-Roch space generated by the by poles of t and w with some multiplicity? Is it easy to be computed? If it's that easy, can't we use it to compute the genus?

comment:5 Changed 8 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:6 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:7 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.2 to sage-6.3

comment:8 Changed 7 years ago by saraedum

  • Milestone changed from sage-6.3 to sage-duplicate/invalid/wontfix
  • Status changed from needs_info to positive_review

This is now superseded by #16518, #16530, #16561, #16562, #16563, #16564, #16565, #16572, #16575, #16576.

Last edited 7 years ago by saraedum (previous) (diff)

comment:9 Changed 7 years ago by saraedum

  • Reviewers set to Julian Rueth

comment:10 Changed 7 years ago by vbraun

  • Resolution set to duplicate
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.