Zulip Chat Archive
Stream: Is there code for X?
Topic: Aₚ ≃ₗ[Aₚ] Aₚ (Localization vs LocalizedModule)
Jz Pan (Apr 18 2025 at 15:59):
Suppose p
is a prime ideal of A
, do we have LocalizedModule p.primeCompl A ≃ₗ[Localization p.primeCompl] Localization p.primeCompl
? i.e. Aₚ ≃ₗ[Aₚ] Aₚ
but the first Aₚ
is LocalizedModule
while the second is Localization
.
It could be constructed by LocalizedModule.equivTensorProduct p.primeCompl A ≪≫ₗ TensorProduct.AlgebraTensorModule.rid _ _ _
. But it's better if it is in mathlib and has more properties.
For example, I need Aₚ / pAₚ ≃ₗ[Aₚ] Aₚ / pAₚ
where the first pAₚ
is Submodule.localized p.primeCompl p
while the second is IsLocalRing.maximalIdeal (Localization p.primeCompl)
(or something else equal to this). To do this I need to use the above isomorphism together with docs#Submodule.Quotient.equiv. Then I need to check some trivial but tedious things.
This is happen in https://github.com/acmepjz/lean-iwasawa/blob/dca0cd3a332776e7b2aa232764b26d3cc4426d6a/Iwasawalib/RingTheory/CharacteristicIdeal/Basic.lean#L399 and subsequent lines.
Does anyone have better solution for this?
Andrew Yang (Apr 18 2025 at 16:02):
I really wanted to make the two defeq but I gave up. If you need to you could try to redo #13156 (or I could try again if I have some time).
Jz Pan (Apr 18 2025 at 16:07):
From the current design they cannot be defeq since Localization
is more general (it works for non-rings?).
I think maybe one solution is add an IsLocalizedModule
property to Localization
, then one can use docs#IsLocalizedModule.mapEquiv to construct this Aₚ
-linear isomorphism (docs#IsLocalizedModule.iso and docs#IsLocalizedModule.linearEquiv are similar but they are only A
-linear).
Andrew Yang (Apr 18 2025 at 16:10):
The current Localization
(or docs#OreLocalization) allows you to localize a set with a monoid acting on it and both localization of rings and modules are a specific instance of this.
Andrew Yang (Apr 18 2025 at 16:11):
But currently the right way might be
import Mathlib
noncomputable section
variable {A : Type} [CommRing A] (S : Submonoid A)
example : LocalizedModule S A ≃ₗ[Localization S] Localization S :=
IsLocalizedModule.linearEquiv S (LocalizedModule.mkLinearMap S A) (Algebra.linearMap A _)
|>.extendScalarsOfIsLocalization S _
Jz Pan (Apr 18 2025 at 16:24):
Or maybe one can use this
noncomputable example {A : Type*} [CommRing A] (S : Submonoid A) :
LocalizedModule S A ≃ₗ[Localization S] Localization S :=
IsLocalizedModule.mapEquiv S (LocalizedModule.mkLinearMap S A) (Algebra.linearMap A _)
(Localization S) (LinearEquiv.refl A A)
Does it have better apply
lemmas?
Jz Pan (Apr 18 2025 at 16:44):
Give up. Seems that my original approach has slightly shorter code.
Last updated: May 02 2025 at 03:31 UTC