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) RMvPolynomial ( × M) RProp

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.

    Equations
    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.

      Equations
      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.

        Equations
        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 MProp} (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 fP gP (f + g)) (h_dp : ∀ (f : DividedPowerAlgebra R M) (n : ) (m : M), P fP (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 MProp} (f : DividedPowerAlgebra R M) (C : ∀ (a : R), P ((algebraMap R (DividedPowerAlgebra R M)) a)) (add : ∀ (f g : DividedPowerAlgebra R M), P fP gP (f + g)) (dp : ∀ (f : DividedPowerAlgebra R M) (n : ) (m : M), P fP (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) = kFinset.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) = ks.sym q, is, 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 (∑ is, a i x i) = ks.sym q, (∏ is, a i ^ Multiset.count i k) is, 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} :
          is, 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.

          Equations
          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)) =