Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor(algebra/{dual_number,triv_sq_zero_ext}): support non-commuta…
…tive rings (#18384) This changes the definition of multiplication on `triv_sq_zero_ext R M` as follows ```diff -x * y = (x.1 * y.1, x.1 • y.2 + y.1 • x.2) +x * y = (x.1 * y.1, x.1 • y.2 + op y.1 • x.2) ``` which for `R=M` gives the more natural `x.1 * y.2 + x.2 * y.1` in the second term instead of `x.1 * y.2 + y.1 * x.2`. This adds some slightly annoying typeclass arguments that could eventually be cleaned up by #10716; but that PR has rotted under the mathlib4 tide. Either way, the weird typeclass arguments needed with `triv_sq_zero_ext R M` are all invisible when working with `dual_number R`. This is motivated by wanting to talk about `dual_number (quaternion R)` or `dual_number (matrix n n R)`. Unfortunately this breaks the `topological_semiring` instance (making it need an `@` and trigger the `fails_quickly` linter), but this instance isn't really interesting anyway.
- Loading branch information