#14990: Implement algebraic closures of finite fields
-------------------------------------+-------------------------------------
Reporter: pbruin | Owner:
Type: enhancement | Status: needs_work
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 | f9162dbae92551a67aea7a489d96591141fdebc8
Dependencies: #14958, #13214 | Stopgaps:
-------------------------------------+-------------------------------------
Comment (by pbruin):
Hi Vincent,
> Either I badly explained something or there is something contradictory
in your argument.
Or I badly explained something...
> First of all you said
>
> > The main use for it [the equality] is in deciding whether
> > to allow coercion from one `AlgebraicClosureFiniteField`
> > to another.
>
> Fine. But that was my point, equality is broken
I don't see in what sense you can really say that equality is broken,
since it is not designed to be a mathematically meaningful property in
this case. I think we should use the most restrictive notion possible
that still allows non-identical fields to compare equal. (In this way we
stay as close to unique representation as possible, in the sense that two
non-identical objects only compare equal under very precise
circumstances.)
> So depending in which stage of the computation you are, there will or
will not be a coercion between your fields! Do you agree that there is a
problem here?
No, I don't think there is a problem. Nobody forces us to have all kinds
of coercions that could possibly make sense. We should encourage the user
to do all computations in the ''same'' field; making `algebraic_closure()`
a cached method (as in one of the two new commits) is meant to help with
this. As far as I'm concerned, coercion between equal but non-identical
fields is only useful to make the "sanity check" `loads(dumps(x)) == x`
work. I think it would be a mistake to make efforts to make different
instances "synchronized" in some way, e.g. by keeping coercion once the
underlying pseudo-Conway lattices of two instances start to diverge.
> > we do definitely want to check "only" equality, not identity [of PCL].
>
> Here it depends on what you mean by "equality". If it is equality as
mathematical object I do agree if it is equality as Python comparison I
strongly disagree.
In this context I really think that the only sensible notion of equality
is to compare the finite sublattices that have already been computed. I
understand that this does not fit the idea of "equality as mathematical
object", but this is out of necessity, because an
`AlgebraicClosureFiniteField_pseudo_conway` object simply doesn't define a
unique mathematical object. There is no guarantee that two partially
computed PCL's will evolve in the same way. Think of a situation where
the user pickles one instance, loads it in a newer Sage version where the
algorithm for computing pseudo-Conway polynomials has changed, and
computes another instance of "the same" field in that Sage version. Then
as a consequence of the non-uniqueness of pseudo-Conway polynomials, the
results may disagree even if the commands used to create them were exactly
the same.
> The Python equality of PCL currently is: "two PCL are equal if they
agree on their already made computations". And, as Jean-Pierre mentioned,
it is not the purpose of that ticket to improve that.
I think it is not even desirable in principle to improve this, because
PCL's are non-unique by design. If you want a mathematically well-defined
notion of equality (that is preserved under future extension of the
lattices), you have to stick to (non-pseudo) Conway polynomials or use
other canonical lattices of finite fields.
--
Ticket URL: <http://trac.sagemath.org/ticket/14990#comment:72>
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.