Hey all,
I have been trying to work on a fix for scalar multiplication of points on elliptic curves over finite fields. The issue at the moment is that when we multiply by a Sage type, such as an Integer, the coercion system discovers the action via `_acted_upon_` and a fast method via Pari is called.
However, when the scalar multiplication is called with a Python `int`, then this falls through to `IntegerMulAction` which instead performs the scalar multiplication using Sage defined addition and doubling which is much slower (about 10x slower by the timing I have in the PR).
My initial fix was to simply add a `__mul__` method for elliptic curve points, but through conversations with the reviewers of the PR, instead a fix was proposed within the `discover_action()` method, which attempts a precomposition from python `int` to Sage `Integer` which then allows for the discovery of the action for `_acted_upon_`.
This fix "worked" in that the action works fine for my elliptic curve example and the speed for `int` and `Integer` now are both fast, but the CI tests run and it seems my change has totally broken Sage.
I really want to do the correct fix here, but I don't understand how much change could have broken so much internally as I thought my fix would only discover good actions... I would really appreciate some support in finding the right solution for this.
Thank you!