Documentation

Mathlib.RingTheory.DividedPowerAlgebra.Init

The universal divided power algebra #

Let R be a (commutative) semiring and M be an R-module. In this file we define Γ_R(M), the universal divided power algebra of M, as the ring quotient of the polynomial ring in the variables ℕ × M by the relation DividedPowerAlgebra.Rel.

DividedPowerAlgebra R M satisfies a weak universal property for morphisms to rings with divided powers.

Main definitions #

References #

TODO #

inductive DividedPowerAlgebra.Rel (R : Type u_1) (M : Type u_2) [CommSemiring R] [AddCommMonoid M] [Module R M] :
MvPolynomial (ℕ × M) R → MvPolynomial (ℕ × M) R → Prop

The type coding the basic relations that will give rise to the divided power algebra. The class of MvPolynomial.X (n, a) will be equal to dpow n a, for a ∈ M.

Instances For
    noncomputable def DividedPowerAlgebra.RelI (R : Type u_1) (M : Type u_2) [CommSemiring R] [AddCommMonoid M] [Module R M] :

    The ideal of MvPolynomial (ℕ × M) R generated by Rel.

    Instances For
      @[reducible, inline]
      abbrev DividedPowerAlgebra (R : Type u_1) (M : Type u_2) [CommSemiring R] [AddCommMonoid M] [Module R M] :
      Type (max u_1 u_2)

      The divided power algebra of a module M is defined as the ring quotient of the polynomial ring in the variables ℕ × M by the ring relation defined by DividedPowerAlgebra.Rel. We will later show that that DividedPowerAlgebra R M has divided powers. It satisfies a weak universal property for morphisms to rings with divided powers.

      Instances For
        noncomputable def DividedPowerAlgebra.dp (R : Type u_1) {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] (n : ℕ) (m : M) :

        dp R n m is the equivalence class of X (⟨n, m⟩) in DividedPowerAlgebra R M.

        Instances For
          theorem DividedPowerAlgebra.dp_def {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] (n : ℕ) (m : M) :
          theorem DividedPowerAlgebra.induction_on' {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {P : DividedPowerAlgebra R M → Prop} (f : DividedPowerAlgebra R M) (h_C : ∀ (a : R), P ((RingQuot.mkAlgHom R (Rel R M)) (MvPolynomial.C a))) (h_add : ∀ (f g : DividedPowerAlgebra R M), P f → P g → P (f + g)) (h_dp : ∀ (f : DividedPowerAlgebra R M) (n : ℕ) (m : M), P f → P (f * dp R n m)) :
          P f
          theorem DividedPowerAlgebra.induction_on {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {P : DividedPowerAlgebra R M → Prop} (f : DividedPowerAlgebra R M) (C : ∀ (a : R), P ((algebraMap R (DividedPowerAlgebra R M)) a)) (add : ∀ (f g : DividedPowerAlgebra R M), P f → P g → P (f + g)) (dp : ∀ (f : DividedPowerAlgebra R M) (n : ℕ) (m : M), P f → P (f * dp R n m)) :
          P f
          theorem DividedPowerAlgebra.dp_eq_mkRingHom {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] (n : ℕ) (m : M) :
          @[simp]
          theorem DividedPowerAlgebra.dp_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {m : M} :
          dp R 0 m = 1
          theorem DividedPowerAlgebra.dp_smul {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {r : R} {n : ℕ} {m : M} :
          dp R n (r • m) = r ^ n • dp R n m
          theorem DividedPowerAlgebra.dp_null {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n : ℕ} :
          dp R n 0 = if n = 0 then 1 else 0
          theorem DividedPowerAlgebra.dp_null_of_ne_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n : ℕ} (hn : n ≠ 0) :
          dp R n 0 = 0
          theorem DividedPowerAlgebra.dp_mul {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n p : ℕ} {m : M} :
          dp R n m * dp R p m = (n + p).choose n • dp R (n + p) m
          theorem DividedPowerAlgebra.dp_add {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n : ℕ} {x y : M} :
          dp R n (x + y) = ∑ k ∈ Finset.antidiagonal n, dp R k.1 x * dp R k.2 y
          theorem DividedPowerAlgebra.dp_sum {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Type u_3} [DecidableEq ι] (s : Finset ι) (q : ℕ) (x : ι → M) :
          dp R q (s.sum x) = ∑ k ∈ s.sym q, ∏ i ∈ s, dp R (Multiset.count i ↑k) (x i)
          theorem DividedPowerAlgebra.dp_sum_smul {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Type u_3} [DecidableEq ι] (s : Finset ι) (q : ℕ) (a : ι → R) (x : ι → M) :
          dp R q (∑ i ∈ s, a i • x i) = ∑ k ∈ s.sym q, (∏ i ∈ s, a i ^ Multiset.count i ↑k) • ∏ i ∈ s, dp R (Multiset.count i ↑k) (x i)
          theorem DividedPowerAlgebra.prod_dp {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Type u_3} {s : Finset ι} {n : ι → ℕ} {m : M} :
          ∏ i ∈ s, dp R (n i) m = ↑(Nat.multinomial s n) * dp R (s.sum n) m
          theorem DividedPowerAlgebra.natFactorial_mul_dp_eq {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] (n : ℕ) (x : M) :
          ↑n.factorial * dp R n x = dp R 1 x ^ n
          noncomputable def DividedPowerAlgebra.embed (R : Type u_1) (M : Type u_2) [CommSemiring R] [AddCommMonoid M] [Module R M] :

          The canonical linear map M →ₗ[R] DividedPowerAlgebra R M.

          Instances For
            theorem DividedPowerAlgebra.embed_def {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] (m : M) :
            (embed R M) m = dp R 1 m
            theorem DividedPowerAlgebra.algHom_ext_iff {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {A : Type u_3} [CommSemiring A] [Algebra R A] {f g : DividedPowerAlgebra R M →ₐ[R] A} :
            f = g ↔ ∀ (n : ℕ) (m : M), f (dp R n m) = g (dp R n m)
            theorem DividedPowerAlgebra.algHom_ext {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {A : Type u_3} [CommSemiring A] [Algebra R A] {f g : DividedPowerAlgebra R M →ₐ[R] A} (h : ∀ (n : ℕ) (m : M), f (dp R n m) = g (dp R n m)) :
            f = g
            theorem DividedPowerAlgebra.submodule_span_prod_dp_eq_top {R : Type u_3} {M : Type u_4} {ι : Type u_5} [CommRing R] [AddCommGroup M] [Module R M] {v : ι → M} (hv : Submodule.span R (Set.range v) = ⊤) :
            Submodule.span R (Set.range fun (n : ι →₀ ℕ) => n.prod fun (i : ι) (k : ℕ) => dp R k (v i)) = ⊤