#14990: Implement algebraic closures of finite fields
-------------------------------------+-------------------------------------
       Reporter:  pbruin             |        Owner:
           Type:  enhancement        |       Status:  needs_info
       Priority:  major              |    Milestone:  sage-6.2
      Component:  algebra            |   Resolution:
       Keywords:  finite field       |    Merged in:
  algebraic closure                  |    Reviewers:
        Authors:  Peter Bruin        |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:  u/pbruin/14990     |  785c7b90031db8fc32b5a271e5bca538027bcfc1
   Dependencies:  #14958, #13214     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by pbruin):

 Hello Vincent,
 > Sorry, the story started already long time ago. I would be happy to
 finish the review of this ticket and work again on #15390 (no trouble
 about the possible rebase, I will try the cherry-pick proposed by Luca).
 Great!
 > In case you do not want to recompile your Sage over the 6.2.rc0, I put a
 version that merge the develop release at u/vdelecroix/14990 (with some
 extra, see below).
 OK, we should probably switch to that branch (although merging the latest
 development branch is only necessary in case of conflicts, and it clutters
 the history).
 > I am in trouble because of the `UniqueFactory`. Firstly, in some
 doctests there is a direct call to
 `AlgebraicClosureFiniteField_pseudo_conway` but in practice this should be
 avoided as we have
 > {{{
 > sage: F = AlgebraicClosureFiniteField_pseudo_conway(GF(5),'z')
 > sage: z = F.an_element()
 > sage: z == loads(dumps(z))
 > False
 > }}}
 > I had no idea how to make it clear.
 It is hopefully clear from the general structure, and the fact that these
 classes are not in the global namespace, that they are not meant to be
 called directly.  I do not find it too important, but we can add a remark
 if you think it is useful.  The above behaviour is quite bad, though...
 > On the other hand, what it the purpose of a factory if there is only one
 implementation? Note that there will be a problem with the generic
 `__reduce__` when there will be several implementations and I am pretty
 sure that many others trouble will show up.
 There are indeed problems here.  First, looking at the code again, I think
 that in the current implementation, the interaction between the factory
 and the pickling code is flawed.  Second, I have been thinking about
 unique representation in other contexts (e.g. number fields and elliptic
 curves), and there seems to be something more fundamentally problematic.

 From my perspective, the guiding philosophy should be that you can use
 `UniqueRepresentation` or `UniqueFactory` for objects that are defined
 ''up to unique isomorphism'' by a certain amount of "defining data", which
 corresponds to the arguments of the `__init__()` method of an object
 derived from `UniqueRepresentation`, resp. to the `key` used by a
 `UniqueFactory`.

 The problem with of algebraic closures of finite fields is that in
 principle they are ''not'' defined up to unique isomorphism by a finite
 amount of defining data.  This is exactly the reason why Conway
 polynomials were invented, and we could have unique representation if we
 only used Conway polynomials.  However, the idea of this implementation
 was to use ''pseudo''-Conway polynomials, which do not have the same
 uniqueness property.

 It is not clear to me at the moment that trying to get unique
 representation at all in this case is the right thing to do.  Especially
 with the current implementation, given that pseudo-Conway polynomials are
 not unique, it may be better to just (1) ensure that pickling works and
 (2) put some warnings in place that algebraic closures are not globally
 unique and that users should be careful if they want to ensure all
 elements live in the same algebraic closure.

--
Ticket URL: <http://trac.sagemath.org/ticket/14990#comment:58>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

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

Reply via email to