Documentation

Mathlib.RingTheory.AdicCompletion.Functoriality

Functoriality of adic completions #

In this file we establish functorial properties of the adic completion.

Main definitions #

Main results #

noncomputable def LinearMap.reduceModIdeal {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) :

The induced linear map on the quotients mod I • ⊤.

Equations
Instances For
    @[simp]
    theorem LinearMap.reduceModIdeal_apply {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) (x : M) :
    theorem AdicCompletion.transitionMap_comp_reduceModIdeal {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) {m n : } (hmn : m n) :
    noncomputable def AdicCompletion.AdicCauchySequence.map {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) :

    A linear map induces a linear map on adic Cauchy sequences.

    Equations
    Instances For
      @[simp]
      theorem AdicCompletion.AdicCauchySequence.map_apply_coe {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) (a : AdicCauchySequence I M) (n : ) :
      ((map I f) a) n = f (a n)
      theorem AdicCompletion.AdicCauchySequence.map_comp {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {P : Type u_4} [AddCommGroup P] [Module R P] (f : M →ₗ[R] N) (g : N →ₗ[R] P) :
      map I g ∘ₗ map I f = map I (g ∘ₗ f)
      theorem AdicCompletion.AdicCauchySequence.map_comp_apply {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {P : Type u_4} [AddCommGroup P] [Module R P] (f : M →ₗ[R] N) (g : N →ₗ[R] P) (a : AdicCauchySequence I M) :
      (map I g) ((map I f) a) = (map I (g ∘ₗ f)) a
      @[simp]
      theorem AdicCompletion.AdicCauchySequence.map_zero {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] :
      map I 0 = 0
      noncomputable def AdicCompletion.map {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) :

      A linear map induces a map on adic completions.

      Equations
      Instances For
        @[simp]
        theorem AdicCompletion.map_val_apply {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) {n : } (x : AdicCompletion I M) :
        ((map I f) x) n = (LinearMap.reduceModIdeal (I ^ n) f) (x n)
        theorem AdicCompletion.map_ext {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Sort u_6} {f g : AdicCompletion I MN} (h : ∀ (a : AdicCauchySequence I M), f ((mk I M) a) = g ((mk I M) a)) :
        f = g

        Equality of maps out of an adic completion can be checked on Cauchy sequences.

        theorem AdicCompletion.map_ext' {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {T : Type u_5} [AddCommGroup T] [Module (AdicCompletion I R) T] {f g : AdicCompletion I M →ₗ[AdicCompletion I R] T} (h : ∀ (a : AdicCauchySequence I M), f ((mk I M) a) = g ((mk I M) a)) :
        f = g

        Equality of linear maps out of an adic completion can be checked on Cauchy sequences.

        theorem AdicCompletion.map_ext'_iff {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {T : Type u_5} [AddCommGroup T] [Module (AdicCompletion I R) T] {f g : AdicCompletion I M →ₗ[AdicCompletion I R] T} :
        f = g ∀ (a : AdicCauchySequence I M), f ((mk I M) a) = g ((mk I M) a)
        theorem AdicCompletion.map_ext'' {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {f g : AdicCompletion I M →ₗ[R] N} (h : f ∘ₗ mk I M = g ∘ₗ mk I M) :
        f = g

        Equality of linear maps out of an adic completion can be checked on Cauchy sequences.

        theorem AdicCompletion.map_ext''_iff {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {f g : AdicCompletion I M →ₗ[R] N} :
        f = g f ∘ₗ mk I M = g ∘ₗ mk I M
        @[simp]
        theorem AdicCompletion.map_id {R : Type u_1} [CommRing R] (I : Ideal R) (M : Type u_2) [AddCommGroup M] [Module R M] :
        theorem AdicCompletion.map_comp {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {P : Type u_4} [AddCommGroup P] [Module R P] (f : M →ₗ[R] N) (g : N →ₗ[R] P) :
        map I g ∘ₗ map I f = map I (g ∘ₗ f)
        theorem AdicCompletion.map_comp_apply {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {P : Type u_4} [AddCommGroup P] [Module R P] (f : M →ₗ[R] N) (g : N →ₗ[R] P) (x : AdicCompletion I M) :
        (map I g) ((map I f) x) = (map I (g ∘ₗ f)) x
        @[simp]
        theorem AdicCompletion.map_mk {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) (a : AdicCauchySequence I M) :
        (map I f) ((mk I M) a) = (mk I N) ((AdicCauchySequence.map I f) a)
        @[simp]
        theorem AdicCompletion.map_zero {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] :
        map I 0 = 0
        theorem AdicCompletion.map_of {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M →ₗ[R] N) (x : M) :
        (map I f) ((of I M) x) = (of I N) (f x)
        noncomputable def AdicCompletion.congr {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M ≃ₗ[R] N) :

        A linear equiv induces a linear equiv on adic completions.

        Equations
        Instances For
          @[simp]
          theorem AdicCompletion.congr_apply {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M ≃ₗ[R] N) (x : AdicCompletion I M) :
          (congr I f) x = (map I f) x
          @[simp]
          theorem AdicCompletion.congr_symm_apply {R : Type u_1} [CommRing R] (I : Ideal R) {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] (f : M ≃ₗ[R] N) (x : AdicCompletion I N) :
          (congr I f).symm x = (map I f.symm) x

          Adic completion in families #

          In this section we consider a family M : ι → Type* of R-modules. Purely from the formal properties of adic completions we obtain two canonical maps

          If ι is finite, both are isomorphisms and, modulo the equivalence ⨁ j, (AdicCompletion I (M j) and ∀ j, AdicCompletion I (M j), inverse to each other.

          noncomputable def AdicCompletion.pi {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] :
          AdicCompletion I ((j : ι) → M j) →ₗ[AdicCompletion I R] (j : ι) → AdicCompletion I (M j)

          The canonical map from the adic completion of the product to the product of the adic completions.

          Equations
          Instances For
            @[simp]
            theorem AdicCompletion.pi_apply_coe {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] (c : AdicCompletion I ((j : ι) → M j)) (i : ι) (n : ) :
            ((pi I M) c i) n = (LinearMap.reduceModIdeal (I ^ n) (LinearMap.proj i)) (c n)
            noncomputable def AdicCompletion.sum {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [DecidableEq ι] :
            (DirectSum ι fun (j : ι) => AdicCompletion I (M j)) →ₗ[AdicCompletion I R] AdicCompletion I (DirectSum ι fun (j : ι) => M j)

            The canonical map from the sum of the adic completions to the adic completion of the sum.

            Equations
            Instances For
              @[simp]
              theorem AdicCompletion.sum_lof {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [DecidableEq ι] (j : ι) (x : AdicCompletion I (M j)) :
              (sum I M) ((DirectSum.lof (AdicCompletion I R) ι (fun (i : ι) => AdicCompletion I (M i)) j) x) = (map I (DirectSum.lof R ι M j)) x
              @[simp]
              theorem AdicCompletion.sum_of {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [DecidableEq ι] (j : ι) (x : AdicCompletion I (M j)) :
              (sum I M) ((DirectSum.of (fun (i : ι) => AdicCompletion I (M i)) j) x) = (map I (DirectSum.lof R ι M j)) x
              noncomputable def AdicCompletion.sumInv {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] :
              AdicCompletion I (DirectSum ι fun (j : ι) => M j) →ₗ[AdicCompletion I R] DirectSum ι fun (j : ι) => AdicCompletion I (M j)

              If ι is finite, we use the equivalence of sum and product to obtain an inverse for AdicCompletion.sum from AdicCompletion.pi.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem AdicCompletion.component_sumInv {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] (x : AdicCompletion I (DirectSum ι fun (j : ι) => M j)) (j : ι) :
                (DirectSum.component (AdicCompletion I R) ι (fun (i : ι) => AdicCompletion I (M i)) j) ((sumInv I M) x) = (map I (DirectSum.component R ι M j)) x
                @[simp]
                theorem AdicCompletion.sumInv_apply {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] (x : AdicCompletion I (DirectSum ι fun (j : ι) => M j)) (j : ι) :
                ((sumInv I M) x) j = (map I (DirectSum.component R ι M j)) x
                theorem AdicCompletion.sumInv_comp_sum {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] [DecidableEq ι] :
                theorem AdicCompletion.sum_comp_sumInv {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] [DecidableEq ι] :
                noncomputable def AdicCompletion.sumEquivOfFintype {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] [DecidableEq ι] :
                (DirectSum ι fun (j : ι) => AdicCompletion I (M j)) ≃ₗ[AdicCompletion I R] AdicCompletion I (DirectSum ι fun (j : ι) => M j)

                If ι is finite, sum has sumInv as inverse.

                Equations
                Instances For
                  @[simp]
                  theorem AdicCompletion.sumEquivOfFintype_apply {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] [DecidableEq ι] (x : DirectSum ι fun (j : ι) => AdicCompletion I (M j)) :
                  (sumEquivOfFintype I M) x = (sum I M) x
                  @[simp]
                  theorem AdicCompletion.sumEquivOfFintype_symm_apply {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [Fintype ι] [DecidableEq ι] (x : AdicCompletion I (DirectSum ι fun (j : ι) => M j)) :
                  (sumEquivOfFintype I M).symm x = (sumInv I M) x
                  noncomputable def AdicCompletion.piEquivOfFintype {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [DecidableEq ι] [Fintype ι] :
                  AdicCompletion I ((j : ι) → M j) ≃ₗ[AdicCompletion I R] (j : ι) → AdicCompletion I (M j)

                  If ι is finite, pi is a linear equiv.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem AdicCompletion.piEquivOfFintype_apply {R : Type u_1} [CommRing R] (I : Ideal R) {ι : Type u_6} (M : ιType u_7) [(i : ι) → AddCommGroup (M i)] [(i : ι) → Module R (M i)] [DecidableEq ι] [Fintype ι] (x : AdicCompletion I ((j : ι) → M j)) :
                    (piEquivOfFintype I M) x = (pi I M) x
                    noncomputable def AdicCompletion.piEquivFin {R : Type u_1} [CommRing R] (I : Ideal R) (n : ) :

                    Adic completion of R^n is (AdicCompletion I R)^n.

                    Equations
                    Instances For
                      @[simp]
                      theorem AdicCompletion.piEquivFin_apply {R : Type u_1} [CommRing R] (I : Ideal R) (n : ) (x : AdicCompletion I (Fin nR)) :
                      (piEquivFin I n) x = (pi I fun (x : Fin n) => R) x
                      theorem AdicCompletion.exists_smodEq_pow_add_one_smul {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {f : M →ₗ[R] N} (h : Function.Surjective ((I ).mkQ ∘ₗ f)) {y : N} {n : } (hy : y I ^ n ) :
                      xI ^ n , f x y [SMOD I ^ (n + 1) ]
                      theorem AdicCompletion.exists_smodEq_pow_smul_top_and_smodEq_pow_add_one_smul_top {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {f : M →ₗ[R] N} (h : Function.Surjective ((I ).mkQ ∘ₗ f)) {x : M} {y : N} {n : } (hxy : f x y [SMOD I ^ n ]) :
                      ∃ (x' : M), x x' [SMOD I ^ n ] f x' y [SMOD I ^ (n + 1) ]
                      theorem AdicCompletion.exists_smodEq_pow_smul_top_and_mkQ_eq {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {f : M →ₗ[R] N} (h : Function.Surjective ((I ).mkQ ∘ₗ f)) {x : M} {n : } {y : N I ^ n } {y' : N I ^ (n + 1) } (hyy' : (Submodule.factor ) y' = y) (hxy : (I ^ n ).mkQ (f x) = y) :
                      ∃ (x' : M), x x' [SMOD I ^ n ] (I ^ (n + 1) ).mkQ (f x') = y'
                      theorem AdicCompletion.map_surjective_of_mkQ_comp_surjective {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] {f : M →ₗ[R] N} (h : Function.Surjective ((I ).mkQ ∘ₗ f)) :
                      theorem surjective_of_mkQ_comp_surjective {R : Type u_1} [CommRing R] {I : Ideal R} {M : Type u_2} [AddCommGroup M] [Module R M] {N : Type u_3} [AddCommGroup N] [Module R N] [IsPrecomplete I M] [IsHausdorff I N] {f : M →ₗ[R] N} (h : Function.Surjective ((I ).mkQ ∘ₗ f)) :
                      theorem surjective_of_mk_map_comp_surjective {R : Type u_1} [CommRing R] {I : Ideal R} {S : Type u_6} [CommRing S] (f : R →+* S) [IsPrecomplete I R] [haus : IsHausdorff (Ideal.map f I) S] (h : Function.Surjective ((Ideal.Quotient.mk (Ideal.map f I)).comp f)) :