Localized Module #
Given a commutative semiring R
, a multiplicative subset S ⊆ R
and an R
-module M
, we can
localize M
by S
. This gives us a Localization S
-module.
Main definitions #
LocalizedModule.r
: the equivalence relation defining this localization, namely(m, s) ≈ (m', s')
if and only if there is someu : S
such thatu • s' • m = u • s • m'
.LocalizedModule M S
: the localized module byS
.LocalizedModule.mk
: the canonical map sending(m, s) : M × S ↦ m/s : LocalizedModule M S
LocalizedModule.liftOn
: any well defined functionf : M × S → α
respectingr
descents to a functionLocalizedModule M S → α
LocalizedModule.liftOn₂
: any well defined functionf : M × S → M × S → α
respectingr
descents to a functionLocalizedModule M S → LocalizedModule M S
LocalizedModule.mk_add_mk
: in the localized modulemk m s + mk m' s' = mk (s' • m + s • m') (s * s')
LocalizedModule.mk_smul_mk
: in the localized module, for anyr : R
,s t : S
,m : M
, we havemk r s • mk m t = mk (r • m) (s * t)
wheremk r s : Localization S
is localized ring byS
.LocalizedModule.isModule
:LocalizedModule M S
is aLocalization S
-module.
Future work #
- Redefine
Localization
for monoids and rings to coincide withLocalizedModule
.
The equivalence relation on M × S
where (m1, s1) ≈ (m2, s2)
if and only if
for some (u : S), u * (s2 • m1 - s1 • m2) = 0
Instances For
Equations
- LocalizedModule.r.setoid S M = { r := LocalizedModule.r S M, iseqv := ⋯ }
If S
is a multiplicative subset of a ring R
and M
an R
-module, then
we can localize M
by S
.
Equations
- LocalizedModule S M = Quotient (LocalizedModule.r.setoid S M)
Instances For
The canonical map sending (m, s) ↦ m/s
Equations
- LocalizedModule.mk m s = Quotient.mk' (m, s)
Instances For
If f : M × S → α
respects the equivalence relation LocalizedModule.r
, then
f
descents to a map LocalizedModule M S → α
.
Equations
- x.liftOn f wd = Quotient.liftOn x f wd
Instances For
If f : M × S → M × S → α
respects the equivalence relation LocalizedModule.r
, then
f
descents to a map LocalizedModule M S → LocalizedModule M S → α
.
Equations
- x.liftOn₂ y f wd = Quotient.liftOn₂ x y f wd
Instances For
Equations
- LocalizedModule.instZero = { zero := LocalizedModule.mk 0 1 }
If S
contains 0
then the localization at S
is trivial.
Equations
- LocalizedModule.instAdd = { add := fun (p1 p2 : LocalizedModule S M) => p1.liftOn₂ p2 (fun (x y : M × ↥S) => LocalizedModule.mk (y.2 • x.1 + x.2 • y.1) (x.2 * y.2)) ⋯ }
Equations
- LocalizedModule.instAddCommMonoid = AddCommMonoid.mk ⋯
Equations
- LocalizedModule.instNeg = { neg := fun (p : LocalizedModule S M) => p.liftOn (fun (x : M × ↥S) => LocalizedModule.mk (-x.1) x.2) ⋯ }
Equations
- LocalizedModule.instAddCommGroup = let __src := let_fun this := inferInstance; this; AddCommGroup.mk ⋯
Equations
- LocalizedModule.instSemiring = let __src := let_fun this := inferInstance; this; let __src_1 := let_fun this := inferInstance; this; Semiring.mk ⋯ ⋯ ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- LocalizedModule.instCommSemiring = let __src := let_fun this := inferInstance; this; CommSemiring.mk ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- LocalizedModule.instCommRing = let __src := let_fun this := inferInstance; this; CommRing.mk ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- LocalizedModule.isModule' = let __src := Module.compHom (LocalizedModule S M) (algebraMap R (Localization S)); Module.mk ⋯ ⋯
Equations
Equations
- ⋯ = ⋯
Equations
- One or more equations did not get rendered due to their size.
The function m ↦ m / 1
as an R
-linear map.
Equations
- LocalizedModule.mkLinearMap S M = { toFun := fun (m : M) => LocalizedModule.mk m 1, map_add' := ⋯, map_smul' := ⋯ }
Instances For
For any s : S
, there is an R
-linear map given by a/b ↦ a/(b*s)
.
Equations
- LocalizedModule.divBy s = { toFun := fun (p : LocalizedModule S M) => p.liftOn (fun (p : M × ↥S) => LocalizedModule.mk p.1 (p.2 * s)) ⋯, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The characteristic predicate for localized module.
IsLocalizedModule S f
describes that f : M ⟶ M'
is the localization map identifying M'
as
LocalizedModule S M
.
- map_units : ∀ (x : ↥S), IsUnit ((algebraMap R (Module.End R M')) ↑x)
Instances
Equations
- ⋯ = ⋯
If g
is a linear map M → M''
such that all scalar multiplication by s : S
is invertible, then
there is a linear map LocalizedModule S M → M''
.
Equations
- LocalizedModule.lift' S g h m = m.liftOn (fun (p : M × ↥S) => ↑⋯.unit⁻¹ (g p.1)) ⋯
Instances For
If g
is a linear map M → M''
such that all scalar multiplication by s : S
is invertible, then
there is a linear map LocalizedModule S M → M''
.
Equations
- LocalizedModule.lift S g h = { toFun := LocalizedModule.lift' S g h, map_add' := ⋯, map_smul' := ⋯ }
Instances For
If g
is a linear map M → M''
such that all scalar multiplication by s : S
is invertible, then
lift g m s = s⁻¹ • g m
.
If g
is a linear map M → M''
such that all scalar multiplication by s : S
is invertible, then
there is a linear map lift g ∘ mkLinearMap = g
.
If g
is a linear map M → M''
such that all scalar multiplication by s : S
is invertible and
l
is another linear map LocalizedModule S M ⟶ M''
such that l ∘ mkLinearMap = g
then
l = lift g
Equations
- ⋯ = ⋯
If (M', f : M ⟶ M')
satisfies universal property of localized module, there is a canonical
map LocalizedModule S M ⟶ M'
.
Equations
- IsLocalizedModule.fromLocalizedModule' S f p = p.liftOn (fun (x : M × ↥S) => ↑⋯.unit⁻¹ (f x.1)) ⋯
Instances For
If (M', f : M ⟶ M')
satisfies universal property of localized module, there is a canonical
map LocalizedModule S M ⟶ M'
.
Equations
- IsLocalizedModule.fromLocalizedModule S f = { toFun := IsLocalizedModule.fromLocalizedModule' S f, map_add' := ⋯, map_smul' := ⋯ }
Instances For
If (M', f : M ⟶ M')
satisfies universal property of localized module, then M'
is isomorphic to
LocalizedModule S M
as an R
-module.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If M'
is a localized module and g
is a linear map M → M''
such that all scalar multiplication
by s : S
is invertible, then there is a linear map M' → M''
.
Equations
- IsLocalizedModule.lift S f g h = LocalizedModule.lift S g h ∘ₗ ↑(IsLocalizedModule.iso S f).symm
Instances For
Universal property from localized module:
If (M', f : M ⟶ M')
is a localized module then it satisfies the following universal property:
For every R
-module M''
which every s : S
-scalar multiplication is invertible and for every
R
-linear map g : M ⟶ M''
, there is a unique R
-linear map l : M' ⟶ M''
such that
l ∘ f = g
.
M -----f----> M'
| /
|g /
| / l
v /
M''
If (M', f)
and (M'', g)
both satisfy universal property of localized module, then M', M''
are isomorphic as R
-module
Equations
- IsLocalizedModule.linearEquiv S f g = (IsLocalizedModule.iso S f).symm.trans (IsLocalizedModule.iso S g)
Instances For
mk' f m s
is the fraction m/s
with respect to the localization map f
.
Equations
- IsLocalizedModule.mk' f m s = (IsLocalizedModule.fromLocalizedModule S f) (LocalizedModule.mk m s)
Instances For
Porting note (#10618): simp can prove this @[simp]
A linear map M →ₗ[R] N
gives a map between localized modules Mₛ →ₗ[R] Nₛ
.
Equations
- IsLocalizedModule.map S f g = { toFun := fun (h : M →ₗ[R] N) => IsLocalizedModule.lift S f (g ∘ₗ h) ⋯, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The linear map (LocalizedModule S M) → (LocalizedModule S M)
from iso
is the identity.
Formula for IsLocalizedModule.map
when each localized module is a LocalizedModule
.
Localization of modules is an exact functor, proven here for LocalizedModule
.
See IsLocalizedModule.map_exact
for the more general version.
Localization of modules is an exact functor.