Documentation

Mathlib.RingTheory.PicardGroup

The Picard group of a commutative ring #

This file defines the Picard group CommRing.Pic R of a commutative ring R as the type of invertible R-modules (in the sense that M is invertible if there exists another R-module N such that M ⊗[R] N ≃ₗ[R] R) up to isomorphism, equipped with tensor product as multiplication.

Main definition #

Main results #

References #

TODO #

Show:

class Module.Invertible (R : Type u) (M : Type v) [CommSemiring R] [AddCommMonoid M] [Module R M] :

An R-module M is invertible if the canonical map Mᵛ ⊗[R] M → R is an isomorphism, where Mᵛ is the R-dual of M.

Instances
    noncomputable def Module.Invertible.linearEquiv (R : Type u) (M : Type v) [CommSemiring R] [AddCommMonoid M] [Module R M] [Module.Invertible R M] :

    Promote the canonical map Mᵛ ⊗[R] M → R to a linear equivalence for invertible M.

    Equations
    Instances For
      @[reducible, inline]
      noncomputable abbrev Module.Invertible.leftCancelEquiv {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (e : TensorProduct R M N ≃ₗ[R] R) :

      The canonical isomorphism between a module and the result of tensoring it from the left by two mutually dual invertible modules.

      Equations
      Instances For
        @[reducible, inline]
        noncomputable abbrev Module.Invertible.rightCancelEquiv {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [Module R M] [Module R N] [Module R P] (e : TensorProduct R M N ≃ₗ[R] R) :

        The canonical isomorphism between a module and the result of tensoring it from the right by two mutually dual invertible modules.

        Equations
        Instances For
          noncomputable def Module.Invertible.rTensorInv {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) (Q : Type u_3) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (e : TensorProduct R M N ≃ₗ[R] R) :

          If M is invertible, rTensorHom M admits an inverse.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Module.Invertible.rTensorInv_leftInverse {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) (Q : Type u_3) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (e : TensorProduct R M N ≃ₗ[R] R) :
            theorem Module.Invertible.rTensorInv_injective {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) (Q : Type u_3) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (e : TensorProduct R M N ≃ₗ[R] R) :
            noncomputable def Module.Invertible.rTensorEquiv {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) (Q : Type u_3) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (e : TensorProduct R M N ≃ₗ[R] R) :

            If M is an invertible R-module, (· ⊗[R] M) is an auto-equivalence of the category of R-modules.

            Equations
            Instances For
              @[simp]
              theorem Module.Invertible.rTensorEquiv_symm_apply_apply {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) (Q : Type u_3) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (e : TensorProduct R M N ≃ₗ[R] R) (a : TensorProduct R P M →ₗ[R] TensorProduct R Q M) (a✝ : P) :
              ((rTensorEquiv P Q e).symm a) a✝ = ((rightCancelEquiv Q e).congrRight (LinearMap.rTensor N a)) ((TensorProduct.assoc R P M N).symm (a✝ ⊗ₜ[R] e.symm 1))
              @[simp]
              theorem Module.Invertible.rTensorEquiv_apply_apply {R : Type u} {M : Type v} {N : Type u_1} (P : Type u_2) (Q : Type u_3) [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] [AddCommMonoid Q] [Module R M] [Module R N] [Module R P] [Module R Q] (e : TensorProduct R M N ≃ₗ[R] R) (f : P →ₗ[R] Q) (a✝ : TensorProduct R P M) :
              ((rTensorEquiv P Q e) f) a✝ = (TensorProduct.liftAux (TensorProduct.mk R Q M ∘ₗ f)) a✝

              If there is an R-isomorphism between M ⊗[R] N and R, the induced map M → Nᵛ is an isomorphism.

              noncomputable def Module.Invertible.linearEquivDual {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (e : TensorProduct R M N ≃ₗ[R] R) :
              M ≃ₗ[R] Dual R N

              Given M ⊗[R] N ≃ₗ[R] R, this is the induced isomorphism M ≃ₗ[R] Nᵛ.

              Equations
              Instances For
                theorem Module.Invertible.right {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (e : TensorProduct R M N ≃ₗ[R] R) :
                theorem Module.Invertible.left {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] (e : TensorProduct R M N ≃ₗ[R] R) :
                theorem Module.Invertible.congr {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] (e : M ≃ₗ[R] N) :

                An invertible module is free iff it is isomorphic to the ring, i.e. its class is trivial in the Picard group.

                def Module.Invertible.linearEquivOfLeftInverse {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [Module.Invertible R N] {f : M →ₗ[R] N} {g : N →ₗ[R] M} (hfg : Function.LeftInverse f g) :

                If f : M →ₗ[R] N and g : N →ₗ[R] M where M and N are invertible R-modules, and f is a left inverse of g, then in fact f is also the right inverse of g, and we promote this to an R-module isomorphism.

                Equations
                Instances For
                  @[simp]
                  theorem Module.Invertible.linearEquivOfLeftInverse_apply {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [Module.Invertible R N] {f : M →ₗ[R] N} {g : N →ₗ[R] M} (hfg : Function.LeftInverse f g) (x : M) :
                  @[simp]
                  theorem Module.Invertible.linearEquivOfLeftInverse_symm_apply {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [Module.Invertible R N] {f : M →ₗ[R] N} {g : N →ₗ[R] M} (hfg : Function.LeftInverse f g) (x : N) :
                  def Module.Invertible.linearEquivOfRightInverse {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [Module.Invertible R N] {f : M →ₗ[R] N} {g : N →ₗ[R] M} (hfg : Function.RightInverse f g) :

                  If f : M →ₗ[R] N and g : N →ₗ[R] M where M and N are invertible R-modules, and f is a right inverse of g, then in fact f is also the left inverse of g, and we promote this to an R-module isomorphism.

                  Equations
                  Instances For
                    @[simp]
                    theorem Module.Invertible.linearEquivOfRightInverse_apply {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [Module.Invertible R N] {f : M →ₗ[R] N} {g : N →ₗ[R] M} (hfg : Function.RightInverse f g) (x : M) :
                    @[simp]
                    theorem Module.Invertible.linearEquivOfRightInverse_symm_apply {R : Type u} {M : Type v} {N : Type u_1} [CommSemiring R] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [Module.Invertible R N] {f : M →ₗ[R] N} {g : N →ₗ[R] M} (hfg : Function.RightInverse f g) (x : N) :
                    noncomputable def Module.Invertible.algEquivOfRing (R : Type u) [CommSemiring R] (A : Type u_5) [Semiring A] [Algebra R A] [Module.Invertible R A] :

                    If an R-algebra A is also an invertible R-module, then it is in fact isomorphic to the base ring R. The algebra structure gives us a map A ⊗ A → A, which after tensoring by Aᵛ becomes a map A → R, which is the inverse map we seek.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem Module.Invertible.algEquivOfRing_apply (R : Type u) [CommSemiring R] {A : Type u_5} [Semiring A] [Algebra R A] [Module.Invertible R A] (x : R) :
                      (algEquivOfRing R A) x = (algebraMap R A) x
                      theorem Module.Invertible.of_isLocalization {R : Type u} {M : Type v} {N : Type u_1} {A : Type u_4} [CommSemiring R] [CommSemiring A] [AddCommMonoid M] [AddCommMonoid N] [Algebra R A] [Module R M] [Module R N] [Module.Invertible R M] (S : Submonoid R) [IsLocalization S A] (f : M →ₗ[R] N) [IsLocalizedModule S f] [Module A N] [IsScalarTower R A N] :
                      noncomputable def Module.Invertible.embAlgebra (R : Type u) (M : Type v) (A : Type u_4) [CommSemiring R] [CommSemiring A] [AddCommMonoid M] [Algebra R A] [Module R M] [Module.Invertible R M] [Free A (TensorProduct R A M)] :

                      An invertible R-module embeds into an R-algebra that R injects into, provided A ⊗[R] M is a free A-module.

                      Equations
                      Instances For
                        noncomputable def Module.Invertible.toSubmodule (R : Type u) (M : Type v) (A : Type u_4) [CommSemiring R] [CommSemiring A] [AddCommMonoid M] [Algebra R A] [Module R M] [Module.Invertible R M] [Free A (TensorProduct R A M)] :

                        An invertible R-module as a R-submodule of an R-algebra.

                        Equations
                        Instances For
                          def CommRing.Pic (R : Type u) [CommRing R] :

                          The Picard group of a commutative ring R consists of the invertible R-modules, up to isomorphism.

                          Equations
                          Instances For
                            @[reducible, inline]
                            abbrev CommRing.Pic.AsModule {R : Type u} [CommRing R] (M : Pic R) :

                            A representative of an element in the Picard group.

                            Equations
                            Instances For
                              noncomputable def CommRing.Pic.mk (R : Type u) [CommRing R] (M : Type u_1) [AddCommGroup M] [Module R M] [Module.Invertible R M] :
                              Pic R

                              The class of an invertible module in the Picard group.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                noncomputable def CommRing.Pic.mk.linearEquiv (R : Type u) [CommRing R] (M : Type u_1) [AddCommGroup M] [Module R M] [Module.Invertible R M] :

                                mk R M is indeed the class of M.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem CommRing.Pic.mk_eq_iff {R : Type u} [CommRing R] {M : Type u_1} [AddCommGroup M] [Module R M] [Module.Invertible R M] {N : Pic R} :
                                  theorem CommRing.Pic.mk_eq_self {R : Type u} [CommRing R] {M : Pic R} :
                                  theorem CommRing.Pic.mk_eq_mk_iff {R : Type u} [CommRing R] {M : Type u_1} {N : Type u_2} [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Invertible R M] [Module.Invertible R N] :
                                  theorem CommRing.Pic.mk_self {R : Type u} [CommRing R] :
                                  Pic.mk R R = 1
                                  theorem CommRing.Pic.mk_eq_one {R : Type u} [CommRing R] {M : Type u_1} [AddCommGroup M] [Module R M] [Module.Invertible R M] [Module.Free R M] :
                                  Pic.mk R M = 1
                                  theorem CommRing.Pic.mk_tensor {R : Type u} [CommRing R] {M : Type u_1} {N : Type u_2} [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Invertible R M] [Module.Invertible R N] :
                                  Pic.mk R (TensorProduct R M N) = Pic.mk R M * Pic.mk R N
                                  theorem CommRing.Pic.mk_dual {R : Type u} [CommRing R] {M : Type u_1} [AddCommGroup M] [Module R M] [Module.Invertible R M] :
                                  theorem CommRing.Pic.subsingleton_iff {R : Type u} [CommRing R] :
                                  Subsingleton (Pic R) ∀ (M : Type u) [inst : AddCommGroup M] [inst_1 : Module R M], Module.Invertible R MModule.Free R M
                                  instance Submodule.projective_unit {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] (I : (Submodule R A)ˣ) :
                                  theorem Submodule.projective_of_isUnit {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] {I : Submodule R A} (hI : IsUnit I) :
                                  noncomputable def Submodule.tensorEquivMul {R : Type u_1} {A : Type u_2} [CommSemiring R] [CommSemiring A] [Algebra R A] [FaithfulSMul R A] (S : Submonoid R) [IsLocalization S A] (I J : (Submodule R A)ˣ) :
                                  TensorProduct R I J ≃ₗ[R] ↑(I * J)

                                  Given two invertible R-submodules in an R-algebra A, the R-linear map from I ⊗[R] J to I * J induced by multiplication is an isomorphism.

                                  Equations
                                  Instances For
                                    noncomputable def Submodule.tensorInvEquiv {R : Type u_1} {A : Type u_2} [CommSemiring R] [CommSemiring A] [Algebra R A] [FaithfulSMul R A] (S : Submonoid R) [IsLocalization S A] (I : (Submodule R A)ˣ) :
                                    TensorProduct R I I⁻¹ ≃ₗ[R] R

                                    Given an invertible R-submodule I in an R-algebra A, the R-linear map from I ⊗[R] I⁻¹ to R induced by multiplication is an isomorphism.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      theorem Units.submodule_invertible {R : Type u_1} {A : Type u_2} [CommSemiring R] [CommSemiring A] [Algebra R A] [FaithfulSMul R A] (S : Submonoid R) [IsLocalization S A] (I : (Submodule R A)ˣ) :
                                      noncomputable def Submodule.unitsToPic (R : Type u_3) (A : Type u_4) [CommRing R] [CommRing A] [Algebra R A] [FaithfulSMul R A] (S : Submonoid R) [IsLocalization S A] :

                                      The group homomorphism from the invertible submodules in a localization of R to the Picard group of R.

                                      Equations
                                      Instances For
                                        @[simp]
                                        theorem Submodule.unitsToPic_apply (R : Type u_3) (A : Type u_4) [CommRing R] [CommRing A] [Algebra R A] [FaithfulSMul R A] (S : Submonoid R) [IsLocalization S A] (I : (Submodule R A)ˣ) :
                                        (unitsToPic R A S) I = CommRing.Pic.mk R I