Zulip Chat Archive
Stream: maths
Topic: Quadratic Maps
Christopher Hoskin (Oct 08 2023 at 10:41):
I'd like to introduce Quadratic Maps over a (commutative) Ring to Mathlib. This is in order to be able to define such things as quadratic Jordan Algebras and Jordan Pairs.
Currently Mathlib has Quadratic Forms. These are defined over a non-commutative semiring.
There are a number of possible ways of proceeding:
- Develop
QuadraticMap
andQuadraticForm
as separate (but very similar) theories, with the former over a commutative ring and the latter over a non-commutative ring - Have
QuadraticForm
as a special case ofQuadraticMap
, but both over a commutative ring. This would result in aQuadraticForm
that is less general than what we currently have - Develop a theory of
QuadraticMap
over a non-commutative ring that specialises to the currentQuadraticForm
Option 1. seems undesirable to me. I made a start on 3. in this PR https://github.com/leanprover-community/mathlib4/pull/7569 but it requires more bi-module theory than we currently have.
@Eric Wieser is suggesting that we try 2. instead, but we thought it might be worth asking here first.
Possibly @Anne Baanen may have an opinion as their PR first introduced Quadratic Forms https://github.com/leanprover-community/mathlib/pull/2480
Eric Wieser (Oct 08 2023 at 10:54):
In particular, 2 would start with un-generalizing docs#QuadraticForm from Semiring
to CommSemiring
Eric Wieser (Oct 08 2023 at 10:55):
But I claim that the axiom we currently have is nonsense in the non-commutative case anyway, so we'd not be losing anything of value
Yaël Dillies (Oct 08 2023 at 11:09):
What's the correct axiom then? ?
Christopher Hoskin (Oct 08 2023 at 11:20):
Yaël Dillies said:
What's the correct axiom then? ?
We've already ruled that out: https://github.com/leanprover-community/mathlib4/pull/7538#issuecomment-1751785216
Eric Wieser (Oct 08 2023 at 11:29):
I think it's , but I don't think that generalization is worth the effort yet
Eric Wieser (Oct 08 2023 at 11:44):
(in that the generalization that Christopher wants now is more important than fixing the incorrect one that we already have but no one wants yet)
Jireh Loreaux (Oct 08 2023 at 13:09):
This is relevant: https://eudml.org/doc/257900
Eric Wieser (Oct 08 2023 at 14:08):
That looks consistent with my guess above, though it's nice to have a reference now
Anne Baanen (Oct 09 2023 at 08:24):
I have very little use for the noncommutative case, so I think we should go for whatever works best in the commutative case, and is easy enough to make work noncommutatively. My slight preference goes towards 2 since you've convinced me that our noncommutative quadratic form isn't really a quadratic form (yet).
Eric Wieser (Oct 09 2023 at 09:30):
Are we concluding that docs#BilinForm is also nonsense when R is non-commutative?
Eric Wieser (Oct 09 2023 at 09:36):
@Heather Macbeth made some generalization in that direction in #6824, but it seems we've had
structure bilin_form (α : Type u) (β : Type v) [ring α] [add_comm_group β] [module α β] :=
right from the very beginning in #1300
Eric Wieser (Oct 09 2023 at 09:47):
#7581 removes support for non-commutative rings from docs#QuadraticForm
Eric Wieser (Oct 09 2023 at 09:47):
I guess the questions about BilinForm
become irrelevant once we finish the refactor to replace it with nested linear maps
Julian Külshammer (Oct 09 2023 at 10:06):
Yes, pulling out both scalars on the left seems non-standard in the non-commutative setting, see e.g. Morita's "A theorem on Frobenius extensions" (1969), where a generalisation of Frobenius algebras appears.
Eric Wieser (Oct 09 2023 at 15:46):
Now that #7581 is merged, you can start on 2 @Christopher Hoskin without having to worry about non-commutativity
Christopher Hoskin (Oct 09 2023 at 21:52):
Thanks! It seems to be working. :)
Eric Wieser (Oct 09 2023 at 21:57):
It's starting to look like maybe we should finish the def BilinForm R M := M →ₗ[R] M →ₗ[R] R
refactor before going ahead too far with this one
Christopher Hoskin (Oct 10 2023 at 05:04):
Eric Wieser said:
It's starting to look like maybe we should finish the
def BilinForm R M := M →ₗ[R] M →ₗ[R] R
refactor before going ahead too far with this one
Okay, is there an issue or PR I can track for that, so I know when the refactor is done?
Last updated: Dec 20 2023 at 11:08 UTC