I have looked into some of the issues and
TODOs discussed in #14711, and put my thoughts under #37705. In
particular, to merge `SchemeMorphism` with `Morphism` (or at least
make SchemeMorphism inherit from Morphism), I think the coercion
model should be tweaked, so opinions from experts are very much
needed. In particular, the current (heuristic) algorithm for
`cm.discover_action` behaves badly when there is a "type diamond"
(a terminology borrowed from Lean), i.e. multiple type
inheritance. Take this for example,
SageObject (coercion model)
^ ^
| |
/ Map
/ \
ModuleElement Morphism
^ ^
\ /
\ /
SchemeMorphism
The coercion model has a special path for multiplying
ModuleElement by another Element, meaning the operation defined in
Morphism/Map will be ignored, which is undesirable since well a
SchemeMorphism should be more like a morphism not a module element
I guess
(Sorry for the spam on Easter holidays)