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) (A : Type u_4) [CommSemiring R] [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) {A : Type u_4} [CommSemiring R] [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] [AddCommMonoid M] [AddCommMonoid N] [Module R M] [Module R N] [Module.Invertible R M] [CommSemiring A] [Algebra R A] (S : Submonoid R) [IsLocalization S A] (f : M →ₗ[R] N) [IsLocalizedModule S f] [Module A N] [IsScalarTower R A N] :
                      def CommRing.Pic (R : Type u) [CommSemiring R] :

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

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

                        A representative of an element in the Picard group.

                        Equations
                        Instances For
                          noncomputable def CommRing.Pic.mk (R : Type u) [CommSemiring R] (M : Type u_5) [AddCommMonoid 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) [CommSemiring R] (M : Type u_5) [AddCommMonoid 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} [CommSemiring R] {M : Type u_5} [AddCommMonoid M] [Module R M] [Module.Invertible R M] {N : Pic R} :
                              theorem CommRing.Pic.mk_eq_one (R : Type u) [CommSemiring R] (M : Type u_5) [AddCommMonoid 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} [CommSemiring R] {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [Module R M] [AddCommMonoid 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.subsingleton_iffₛ {R : Type u} [CommSemiring R] :
                              Subsingleton (Pic R) ∀ (M : Type u) [inst : AddCommMonoid M] [inst_1 : Module R M], Module.Invertible R MModule.Free 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

                              The Picard group of a semilocal ring is trivial.

                              noncomputable def CommRing.Pic.mapAlgebra (R : Type u) [CommSemiring R] (A : Type u_7) [CommSemiring A] [Algebra R A] :

                              Every R-algebra A gives rise to a homomorphism between Picard groups of R and A.

                              Equations
                              Instances For
                                @[simp]
                                theorem CommRing.Pic.mapAlgebra_apply (R : Type u) [CommSemiring R] (A : Type u_7) [CommSemiring A] [Algebra R A] (M : Pic R) :
                                theorem CommRing.Pic.mapAlgebra_mapAlgebra {R : Type u} [CommSemiring R] {A : Type u_7} {B : Type u_8} [CommSemiring A] [CommSemiring B] [Algebra R A] [Algebra R B] [Algebra A B] [IsScalarTower R A B] {M : Pic R} :
                                (mapAlgebra A B) ((mapAlgebra R A) M) = (mapAlgebra R B) M
                                noncomputable def CommRing.Pic.mapRingHom {R : Type u} [CommSemiring R] {S : Type u_9} [CommSemiring S] (f : R →+* S) :

                                Every ring homomorphism between commutative semirings induces a homomorphism between Picard groups.

                                Equations
                                Instances For
                                  theorem CommRing.Pic.mapRingHom_comp_mapRingHom {R : Type u} [CommSemiring R] {S : Type u_9} {T : Type u_10} [CommSemiring S] [CommSemiring T] {f : R →+* S} {g : S →+* T} :
                                  theorem CommRing.Pic.mapRingHom_mapRingHom {R : Type u} [CommSemiring R] {S : Type u_9} {T : Type u_10} [CommSemiring S] [CommSemiring T] {f : R →+* S} {g : S →+* T} {M : Pic R} :
                                  (mapRingHom g) ((mapRingHom f) M) = (mapRingHom (g.comp f)) M

                                  Picard group as a functor from the category of commutative semirings to the category of abelian groups.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    noncomputable def CommRing.relPic (R : Type u) [CommSemiring R] (A : Type u_7) [CommSemiring A] [Algebra R A] :

                                    The relative Picard group of an R-algebra A, denoted Pic(A/R), defined to be the kernel of Pic.mapAlgebra R A.

                                    Equations
                                    Instances For
                                      theorem Module.Invertible.tmul_comm {R : Type u_5} {M : Type u_6} [CommRing R] [AddCommGroup M] [Module R M] [Module.Invertible R M] {m₁ m₂ : M} :
                                      m₁ ⊗ₜ[R] m₂ = m₂ ⊗ₜ[R] m₁
                                      instance Submodule.projective_units {R : Type u} {A : Type u_4} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] (I : (Submodule R A)ˣ) :
                                      theorem Submodule.projective_of_isUnit {R : Type u} {A : Type u_4} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] {I : Submodule R A} (hI : IsUnit I) :
                                      noncomputable def Submodule.tensorEquivMul {R : Type u} {A : Type u_4} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R 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} {A : Type u_4} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R 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
                                          noncomputable def Submodule.unitsToPic (R : Type u) (A : Type u_4) [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] :

                                          The group homomorphism from the invertible submodules in a faithful algebra over R to the Picard group of R. See Lemma 2.2 in [Rob93].

                                          Equations
                                          Instances For
                                            @[simp]
                                            theorem Submodule.unitsToPic_apply (R : Type u) (A : Type u_4) [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] (I : (Submodule R A)ˣ) :
                                            (unitsToPic R A) I = CommRing.Pic.mk R I
                                            noncomputable def Submodule.unitsToPicEquiv {R : Type u} {A : Type u_4} [CommSemiring R] [Semiring A] [Algebra R A] [FaithfulSMul R A] (I : (Submodule R A)ˣ) :
                                            ((unitsToPic R A) I).AsModule ≃ₗ[R] I

                                            The image of an invertible R-submodule I ⊆ A under unitsToPic is isomorphic to I.

                                            Equations
                                            Instances For

                                              Exactness of the sequence 1 → Rˣ → Aˣ → (Submodule R A)ˣ → Pic R → Pic A at (Submodule R A)ˣ.

                                              noncomputable def Module.Flat.toAlgebra {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) :

                                              If a flat R-module becomes free of rank 1 after base-changing to a faithful R-algebra A, then it embeds into A.

                                              Equations
                                              Instances For
                                                theorem Module.Flat.toAlgebra_injective {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) [Flat R M] [FaithfulSMul R A] :
                                                @[reducible, inline]
                                                noncomputable abbrev Module.Flat.submoduleAlgebra {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) :

                                                A flat R-module as a R-submodule of a faithful R-algebra.

                                                Equations
                                                Instances For
                                                  noncomputable def Module.Flat.submoduleAlgebraEquiv {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) [Flat R M] [FaithfulSMul R A] :

                                                  An isomorphism between a flat R-module and its realization as a submodule in a faithful R-algebra.

                                                  Equations
                                                  Instances For
                                                    noncomputable def Module.Flat.tensorSubmoduleAlgebraEquiv {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) [Flat R M] [FaithfulSMul R A] :

                                                    When a flat R-module M is embedded as a submodule of a faithful R-algebra A, the multiplication map induces an isomorphism A ⊗[R] M ≃ₗ[A] A.

                                                    Equations
                                                    Instances For
                                                      noncomputable def Module.Flat.tensorSubmoduleAlgebraEquivMul {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) [Flat R M] [FaithfulSMul R A] (I : Submodule R A) :

                                                      When a flat R-module M is embedded as a submodule of a faithful R-algebra A, we have I ⊗[R] M ≃ₗ[R] I * M for any R-submodule I of A.

                                                      Equations
                                                      Instances For
                                                        @[deprecated Module.Flat.toAlgebra (since := "2025-11-23")]
                                                        def Module.Invertible.embAlgebra {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) :

                                                        Alias of Module.Flat.toAlgebra.


                                                        If a flat R-module becomes free of rank 1 after base-changing to a faithful R-algebra A, then it embeds into A.

                                                        Equations
                                                        Instances For
                                                          @[deprecated Module.Flat.toAlgebra_injective (since := "2025-11-23")]

                                                          Alias of Module.Flat.toAlgebra_injective.

                                                          @[deprecated Module.Flat.submoduleAlgebra (since := "2025-11-23")]
                                                          def Module.Invertible.toSubmodule {R : Type u} {M : Type v} {A : Type u_4} [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring A] [Algebra R A] (e : TensorProduct R A M ≃ₗ[A] A) :

                                                          Alias of Module.Flat.submoduleAlgebra.


                                                          A flat R-module as a R-submodule of a faithful R-algebra.

                                                          Equations
                                                          Instances For

                                                            Exactness of the sequence 1 → Rˣ → Aˣ → (Submodule R A)ˣ → Pic R → Pic A at Pic R.

                                                            noncomputable def Submodule.unitsQuotEquivRelPic (R : Type u) (A : Type u_4) [CommSemiring R] [CommSemiring A] [Algebra R A] [FaithfulSMul R A] :

                                                            If A is a faithful R-algebra, the relative Picard group Pic(A/R) is isomorphic to the group of the invertible R-submodules in A modulo the principal submodules.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              noncomputable def ClassGroup.equivPic (R : Type u_5) [CommRing R] [IsDomain R] :

                                                              The class group of a domain is isomorphic to the Picard group.

                                                              Equations
                                                              Instances For

                                                                If FractionRing R has trivial Picard group, every invertible R-module is isomorphic to an ideal.

                                                                theorem Ideal.eq_top_of_mk_tensor_eq_one {R : Type u_5} [CommRing R] [IsFractionRing R R] (I J : Ideal R) [Module.Invertible R I] [Module.Invertible R J] (h : CommRing.Pic.mk R (TensorProduct R I J) = 1) :
                                                                I = J =

                                                                In a total ring of fractions, if two ideals are inverse to each other in the Picard group, the only possibility is that they are both the whole ring.