9 | | I see in line 2394 of `src/sage/structure/element.pyx` that `_rmul_` falls back to `_lmul_`, which is not implemented at the `ModuleElement` level (actually returns `None`). This leaves the impression that when implementing a new module element class over a commutative ring, one shall actually implement `_lmul_` and not `_rmul_`... |
| 9 | I see in line 2394 of `src/sage/structure/element.pyx` that `_rmul_` falls back to `_lmul_`, which is not implemented at the `ModuleElement` level (actually returns `None`). This leaves the impression that when implementing a new module element class over a commutative ring, one shall actually implement `_lmul_` and not `_rmul_`... Accordingly, my understanding at the moment is that in Sage, we have |
| 10 | - `_mul_(self, other)` when `self` and `other` have the same parent |
| 11 | - `_lmul_(self, other)` when `self` and `other` have distinct parents |
| 12 | - `_rmul_(self, other)` is inherited from `ModuleElement` (if not redefined) and falls back to `_lmul_` |
| 13 | |
| 14 | Travis, do you confirm? |