#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: Implement
Branch: | backtracking properly
u/SimonKing/ticket/15303 | Commit:
Dependencies: #14711 | 74821fe5409c3104b5d6eb7407a8287d54170df9
| Stopgaps:
-------------------------------------+-------------------------------------
Comment (by nbruin):
Replying to [comment:53 SimonKing]:
> I think the following is both reasonable and reasonably close to the
status quo:
>
> - if `_coerce_map_from_` returns a map, then we trust that it is a good
choice.
> - if `_coerce_map_from_` returns True, then we do not necessarily trust
that `self._generic_convert_map(S)` is the best choice. So, we test if
backtracking yields anything better.
Unfortunately, that doesn't seem to be a very good heuristic because it's
not stable: `_coerce_map_from_` is supposed to do some backtracking on its
own, so if `A._coerce_map_from(B)` happens to consider another parent `C`
that coerces into `A` and find that `C._coerce_map_from(B)==True`, it
would return an explicit composite map, with the generic conversion from B
into C as one of the components. This map would receive preference, but
this map should be even less attractive because on top of a generic
conversion, it is also composed with some other map.
--
Ticket URL: <http://trac.sagemath.org/ticket/15303#comment:65>
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.