Zulip Chat Archive

Stream: Is there code for X?

Topic: Simple algebra / ring


Eloi Torrents (Oct 14 2021 at 21:11):

Is there the definition of a simple ring?

Kevin Buzzard (Oct 14 2021 at 21:56):

Is this a concept from non-commutative ring theory? We're not very good at that yet, the algebraic geometers got here first

Eric Wieser (Oct 14 2021 at 22:05):

Yeah, it looks like it needs two-sided ideals, which we don't have

Eric Wieser (Oct 14 2021 at 22:07):

At a guess, maybe it's enough to have quotients by two-sided ideals (which we do have), as something awful like ∀ r : R → R → Prop, nonempty (ring_quot r ≃+* R ⊕ ring_quot r ≃+* unit).

Eric Wieser (Oct 14 2021 at 22:08):

Which at even more of a guess, is the same as ∀ r : R → R → Prop, (=) < r → subsingleton (ring_quot r)

Adam Topaz (Oct 14 2021 at 22:23):

We do have quotients. A simple ring is a ring whose only quotients are the trivial ring and the ring itself

Adam Topaz (Oct 14 2021 at 22:24):

:face_palm: just saw Eric's message

Eric Wieser (Oct 14 2021 at 22:26):

Maybe what I meant by the simplified version is ∀ r : setoid R, ⊥ < r → subsingleton (ring_quot r.rel)

Adam Topaz (Oct 14 2021 at 22:27):

We can also say that the quotient map associated to r is injective when the quotient is nontrivial

Adam Topaz (Oct 14 2021 at 22:29):

What sort of things do you want to prove about simple rings @Eloi Torrents ?

Eloi Torrents (Oct 14 2021 at 22:33):

At the moment I need an instance has_inv R given is_simple_ring R.

Kevin Buzzard (Oct 14 2021 at 22:38):

Are two by two matrices over the complexes a simple ring? They have no nontrivial two-sided ideals but they don't have inverses either

Eloi Torrents (Oct 14 2021 at 22:39):

(deleted)

Eloi Torrents (Oct 14 2021 at 22:43):

I messed this up, I want to prove that the center of a simple algebra is a field.

Adam Topaz (Oct 14 2021 at 22:47):

Sounds like you should prove that the center of a simple ring is simple

Adam Topaz (Oct 14 2021 at 22:52):

(I don't actually know if that's the most straightforward way to prove this)

Johan Commelin (Oct 15 2021 at 05:20):

Having is_simple_ring R would be really nice. It's time that we do some central simple algebras in Lean (-;

Eloi Torrents (Oct 15 2021 at 10:10):

Is there some way to write lemmas for left and right ideals at once?

Riccardo Brasca (Oct 15 2021 at 10:36):

I think that at the moment only left ideals are defined in mathlib.

Eric Wieser (Oct 15 2021 at 10:37):

Right ideals are submodule (opposite R) R, and ideal = submodule R R is a left-ideal

Eric Wieser (Oct 15 2021 at 10:37):

We only have API for the left ideals, but lots of it is just copied from the submodule API anyway.

Eric Wieser (Oct 15 2021 at 10:40):

You could declare a two-sided ideal as:

structure sub_bimodule (R S M : Type*) [semiring R] [semiring S] [add_comm_monoid M]
  [module R M] [module Sᵒᵖ M] extends
    submodule R M, submodule Sᵒᵖ M renaming smul_mem'  op_smul_mem'

def two_sided_ideal := sub_bimodule R R R

Matthew Ballard (Oct 15 2021 at 11:50):

Do you want commutation of the two actions (as the name bimodule evokes) or would it be better to put that elsewhere?

Adam Topaz (Oct 15 2021 at 12:09):

Something like the following should work:

import linear_algebra

set_option old_structure_cmd true

structure sub_bimodule (R S M : Type*) [semiring R] [semiring S] [add_comm_monoid M]
  [module R M] [module Sᵒᵖ M] extends
    submodule R M, submodule Sᵒᵖ M renaming smul_mem'  op_smul_mem' :=
(smul_comm' (r : R) (s : S) (m : M) : r  ((opposite.op s)  m) = (opposite.op s)  (r  m))

def two_sided_ideal (R : Type*) [semiring R] := sub_bimodule R R R

Matthew Ballard (Oct 15 2021 at 12:11):

Having two actions and being closed under both certainly seems like a useful notion in and of itself. Commutation just is a very common use case. Another one: ideals in additive categories

Adam Topaz (Oct 15 2021 at 12:12):

We should really just define bimodules already...

Matthew Ballard (Oct 15 2021 at 12:13):

Is RZSR\otimes_{\mathbb Z} S-modules a bad idea?

Adam Topaz (Oct 15 2021 at 12:13):

We played with that idea a little while ago. I don't remember what the conclusion was.

Matthew Ballard (Oct 15 2021 at 12:14):

I remember seeing it

Adam Topaz (Oct 15 2021 at 12:17):

I like this renaming trick:

import linear_algebra

set_option old_structure_cmd true

class bimodule (R S M : Type*) [semiring R] [semiring S] [add_comm_monoid M]
  extends module R M, module Sᵒᵖ M renaming
    _to_distrib_mul_action  _to_op_distrib_mul_action
    add_smul  add_op_smul
    zero_smul  zero_op_smul :=
(smul_comm (r : R) (s : S) (m : M) : r  (opposite.op s  m) = (opposite.op s)  (r  m))

Matthew Ballard (Oct 15 2021 at 12:20):

That seems like the least complex definition. One can then relate it to modules over the tensor product

Eric Wieser (Oct 15 2021 at 14:23):

Matthew Ballard said:

Do you want commutation of the two actions (as the name bimodule evokes) or would it be better to put that elsewhere?

That's already covered by smul_comm_class R Sᵒᵖ M, so we probably don't want to add a smul_comm' field like @Adam Topaz's message below yours does.

Eric Wieser (Oct 15 2021 at 14:24):

I didn't include that as a typeclass in my subbimodule definition because it's not needed for the definition

Eric Wieser (Oct 15 2021 at 14:25):

The question is whether it's actually useful to have [bimodule R S M] vs [module R M] [module Sᵒᵖ M] [smul_comm_class R Sᵒᵖ M]

Matthew Ballard (Oct 15 2021 at 14:31):

I think bimodule is a common enough thing that mathematicians would prefer the former over always invoking the latter. But I don't think there is anything beyond the existence of the notation

Eric Wieser (Oct 15 2021 at 15:25):

The downside is that any lemmas you write about [bimodule R S M] won't apply if you only have [module R M] [module Sᵒᵖ M] [smul_comm_class R Sᵒᵖ M] available

Eric Wieser (Oct 15 2021 at 15:25):

Whereas the reverse is not true. So having bimodule is a fine idea, but actually using it in lemmas makes them much harder to use

Eric Wieser (Oct 15 2021 at 15:26):

In particular, we would likely need to add an instance : bimodule in every place we currently have instance : smul_comm_class

Eric Wieser (Oct 15 2021 at 15:27):

And then the question becomes; do we also want bi_distrib_mul_action, bi_mul_action, etc...

Johan Commelin (Oct 15 2021 at 16:06):

I think before an biactions, we need to settle on a notation class for actions on the right. Eric had some suggestions in his "actions in mathlib" paper. I think •> and <•, right?

Eric Wieser (Oct 15 2021 at 16:33):

Yes, probably hidden behind a locale so that people who only care about left-actions can continue using and seeing in the infoview

Eric Wieser (Oct 15 2021 at 16:33):

We could also replace the <> with some kind of arrow symbol, since less-than/greater-than are not really semantically relevant.

Eric Wieser (Oct 15 2021 at 16:36):

m ⮈ s and r ⮊ mcould also work

Eric Wieser (Oct 15 2021 at 17:41):

Or maybe m •⃔ s and r •⃕ m, but those don't render on zulip (or vscode), even as plaintext: m •⃔ s and r •⃕ m

Eric Wieser (Oct 15 2021 at 17:42):

image.png

Yaël Dillies (Oct 15 2021 at 17:45):

I feel watched.


Last updated: Dec 20 2023 at 11:08 UTC