#15303: Coercion discovery fails to be transitive
-------------------------------------+-------------------------------------
Reporter: nbruin | Owner:
Type: defect | Status: needs_work
Priority: major | Milestone: sage-5.13
Component: coercion | Resolution:
Keywords: | Merged in:
Authors: Simon King | Reviewers:
Report Upstream: N/A | Work issues: Analyse recursion
Branch: | error
u/SimonKing/ticket/15303 | Commit:
Dependencies: #14711 | 74821fe5409c3104b5d6eb7407a8287d54170df9
| Stopgaps:
-------------------------------------+-------------------------------------
Comment (by SimonKing):
I observe that the example sometimes works and sometimes fails. This seems
to indicate that one "randomness" in my code is problematic.
Namely, with the current commits, the coercions that are used by the
backtracking algorithm are stored in a `MonoDict`
(`codomain._coerce_from_backtracking`). The hash depends on the id of the
keys and is thus susceptible to change between different runs of Sage, and
therefore the order in which the arrows of the coerce digraph are
considered in the backtracking algorithm also changes between different
runs of Sage.
I am not sure what I shall think of it. My first impulse: It does not
matter ''what'' map is returned as result of backtracking, but in any case
it must be a ''valid'' map. In the example of comment:32, it seems that
some arrows in the coerce graph make assumptions on other arrows of the
coerce graph (therefore the recursion), which is a bug.
--
Ticket URL: <http://trac.sagemath.org/ticket/15303#comment:35>
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/groups/opt_out.