Zulip Chat Archive

Stream: new members

Topic: Maximal submodule


Haruhisa Enomoto (May 31 2022 at 02:12):

I'm now defining the Jacobson radical of a (sub)module related to #13862, which is the intersection of all maximal submodules (containing a given submodule).
For ideal.jacobson, the definition uses the typeclass ideal.is_maximal. So if we want to generalize it to modules, maybe we want a new typeclass submodule.is_maximal, but we don't need it at least for defining the Jacobson radical (because a submodule N is maximal if is_coatom N is true).
I'm not sure whether we need submodule.is_maximal, and if so, also I can't see how this should be compatible with the already defined class ideal.is_maximal. Maybe if we define submodule.is_maximal, then for I : ideal R one can use is_maximal I since ideal R is defined to be submodule R R, so ideal.is_maximal will not be needed.

Julian Külshammer (May 31 2022 at 05:45):

In my opinion we should have both (maybe defined in terms of each other, so defining submodule.is_maximal N as is_coatom N, but then defininig ideal.is_maximal I as submodule.is_maximal I? Both concepts are widely used and some people will get confused seeing is_coatom instead.

Haruhisa Enomoto (May 31 2022 at 10:52):

I tried that, namely, define the typeclass submodule.is_maximal and put something like @[class] def ideal.is_maximal := submodule.is_maximal, but I got an ambiguity error for I : ideal R:

ambiguous overload, possible interpretations
  I.is_maximal
  submodule.is_maximal I

so problem is that is_maximal I has two interpretations, submodule.is_maximal I and ideal.is_maximal I, but of course they are equal (in some sense). How can I avoid it?

Yaël Dillies (May 31 2022 at 10:54):

Why are you even defining ideal.is_maximal in the first place? ideal is a thin wrapper around submodule, so you can use submodule.is_maximal directly.

Haruhisa Enomoto (May 31 2022 at 11:09):

I think we want ideal.is_maximal when using e.g. ideal.is_maximal.is_prime and dot notation. If we have h : is_maximal I for I : ideal R, some proofs in mathlib use the notation h.is_prime, but for this to work we need ideal.is_maximal.

Yaël Dillies (May 31 2022 at 11:15):

Well, you can rename ideal.is_maximal.is_prime to submodule.is_maximal.is_prime.

Haruhisa Enomoto (Jun 01 2022 at 01:11):

That renaming looks a little strange to me, because it seems to claim "submodule which is maximal is prime", but "is_prime" is only defined for ideals. Is it OK?

Yaël Dillies (Jun 01 2022 at 07:32):

This is not such a problem. Allowing dot notation usually takes priority over strict semantical meaning, because it is so nice having it.


Last updated: Dec 20 2023 at 11:08 UTC