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_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✝
              @[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))

              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.

                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