gh-37644: Corrections in `.normalize_basis_at_p` and `.maximal_order()` of `quaternion_algebra.py`
- Corrected in `.normalize_basis_at_p` the wrong assignments of `f0,
f1`: The idea is to replace `f0` by `f0 + f1` and `f1` by `f0`
_simultaneously_ - the original code, however, first replaced `f0` by
`f0 + f1` and then copied the value to `f1`, hence causing a decrease in
dimension
- Corrected an index error just before the recursive call of
`normalize_basis_at_p` in the off-diagnonal case for `p = 2` (the
`else`-block)
- In `.maximal_order()` the intermediate basis `e_n` might not define an
order anymore (as seen in the comments, this was known to the author(s)
of the method) - therefore we need to manually compute the discriminant
in the loop instead of relying on the `.discriminant()`-method of
quaternion orders
- Adapted an example in `.maximal_order()` to use the new method
`.is_maximal()`
Fixes #37217 (both parts) and #37417.
Disclaimer:
I am aware of #37239, but since progress on that PR seems to have
halted, I took the liberty to fix the issues myself :)
URL: https://github.com/sagemath/sage/pull/37644
Reported by: Sebastian A. Spindler
Reviewer(s): Matthias Köppe