Documentation

Mathlib.RingTheory.Ideal.Operations

More operations on modules and ideals #

instance Submodule.hasSMul' {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] :
SMul (Ideal R) (Submodule R M)
Equations
theorem Ideal.smul_eq_mul {R : Type u} [CommSemiring R] (I : Ideal R) (J : Ideal R) :
I J = I * J

This duplicates the global smul_eq_mul, but doesn't have to unfold anywhere near as much to apply.

def Module.annihilator (R : Type u) (M : Type v) [CommSemiring R] [AddCommMonoid M] [Module R M] :

Module.annihilator R M is the ideal of all elements r : R such that r • M = 0.

Equations
Instances For
    theorem Module.mem_annihilator {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {r : R} :
    r Module.annihilator R M ∀ (m : M), r m = 0
    theorem LinearEquiv.annihilator_eq {R : Type u} {M : Type v} {M' : Type u_1} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M'] [Module R M'] (e : M ≃ₗ[R] M') :
    @[inline, reducible]
    abbrev Submodule.annihilator {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (N : Submodule R M) :

    N.annihilator is the ideal of all elements r : R such that r • N = 0.

    Equations
    Instances For
      theorem Submodule.mem_annihilator {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {r : R} :
      r Submodule.annihilator N nN, r n = 0
      theorem Submodule.mem_annihilator' {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {N : Submodule R M} {r : R} :
      theorem Submodule.mem_annihilator_span {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (s : Set M) (r : R) :
      r Submodule.annihilator (Submodule.span R s) ∀ (n : s), r n = 0
      theorem Submodule.annihilator_iSup {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (ι : Sort w) (f : ιSubmodule R M) :
      Submodule.annihilator (⨆ (i : ι), f i) = ⨅ (i : ι), Submodule.annihilator (f i)
      theorem Submodule.smul_mem_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} {r : R} {n : M} (hr : r I) (hn : n N) :
      r n I N
      theorem Submodule.smul_le {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} {P : Submodule R M} :
      I N P rI, nN, r n P
      @[simp]
      theorem Submodule.coe_set_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} :
      I N = I N
      theorem Submodule.smul_induction_on {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} {p : MProp} {x : M} (H : x I N) (smul : rI, nN, p (r n)) (add : ∀ (x y : M), p xp yp (x + y)) :
      p x
      theorem Submodule.smul_induction_on' {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} {x : M} (hx : x I N) {p : (x : M) → x I NProp} (smul : ∀ (r : R) (hr : r I) (n : M) (hn : n N), p (r n) ) (add : ∀ (x : M) (hx : x I N) (y : M) (hy : y I N), p x hxp y hyp (x + y) ) :
      p x hx

      Dependent version of Submodule.smul_induction_on.

      theorem Submodule.mem_smul_span_singleton {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {m : M} {x : M} :
      x I Submodule.span R {m} ∃ y ∈ I, y m = x
      theorem Submodule.smul_le_right {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} :
      I N N
      theorem Submodule.smul_mono {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {J : Ideal R} {N : Submodule R M} {P : Submodule R M} (hij : I J) (hnp : N P) :
      I N J P
      theorem Submodule.smul_mono_left {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {J : Ideal R} {N : Submodule R M} (h : I J) :
      I N J N
      theorem Submodule.smul_mono_right {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} {P : Submodule R M} (h : N P) :
      I N I P
      theorem Submodule.map_le_smul_top {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (f : R →ₗ[R] M) :
      @[simp]
      theorem Submodule.smul_bot {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) :
      @[simp]
      theorem Submodule.bot_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (N : Submodule R M) :
      @[simp]
      theorem Submodule.top_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (N : Submodule R M) :
      N = N
      theorem Submodule.smul_sup {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (N : Submodule R M) (P : Submodule R M) :
      I (N P) = I N I P
      theorem Submodule.sup_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (J : Ideal R) (N : Submodule R M) :
      (I J) N = I N J N
      theorem Submodule.smul_assoc {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (J : Ideal R) (N : Submodule R M) :
      (I J) N = I J N
      theorem Submodule.smul_inf_le {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (M₁ : Submodule R M) (M₂ : Submodule R M) :
      I (M₁ M₂) I M₁ I M₂
      theorem Submodule.smul_iSup {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Sort u_4} {I : Ideal R} {t : ιSubmodule R M} :
      I iSup t = ⨆ (i : ι), I t i
      theorem Submodule.smul_iInf_le {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Sort u_4} {I : Ideal R} {t : ιSubmodule R M} :
      I iInf t ⨅ (i : ι), I t i
      theorem Submodule.span_smul_span {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (S : Set R) (T : Set M) :
      Ideal.span S Submodule.span R T = Submodule.span R (⋃ s ∈ S, ⋃ t ∈ T, {s t})
      theorem Submodule.ideal_span_singleton_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (r : R) (N : Submodule R M) :
      Ideal.span {r} N = r N
      theorem Submodule.mem_of_span_top_of_smul_mem {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (M' : Submodule R M) (s : Set R) (hs : Ideal.span s = ) (x : M) (H : ∀ (r : s), r x M') :
      x M'
      theorem Submodule.mem_of_span_eq_top_of_smul_pow_mem {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (M' : Submodule R M) (s : Set R) (hs : Ideal.span s = ) (x : M) (H : ∀ (r : s), ∃ (n : ), r ^ n x M') :
      x M'

      Given s, a generating set of R, to check that an x : M falls in a submodule M' of x, we only need to show that r ^ n • x ∈ M' for some n for each r : s.

      theorem Submodule.map_smul'' {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (N : Submodule R M) {M' : Type w} [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] M') :
      theorem Submodule.mem_smul_span {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {s : Set M} {x : M} :
      x I Submodule.span R s x Submodule.span R (⋃ a ∈ I, ⋃ b ∈ s, {a b})
      theorem Submodule.mem_ideal_smul_span_iff_exists_sum {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) {ι : Type u_4} (f : ιM) (x : M) :
      x I Submodule.span R (Set.range f) ∃ (a : ι →₀ R) (_ : ∀ (i : ι), a i I), (Finsupp.sum a fun (i : ι) (c : R) => c f i) = x

      If x is an I-multiple of the submodule spanned by f '' s, then we can write x as an I-linear combination of the elements of f '' s.

      theorem Submodule.mem_ideal_smul_span_iff_exists_sum' {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) {ι : Type u_4} (s : Set ι) (f : ιM) (x : M) :
      x I Submodule.span R (f '' s) ∃ (a : s →₀ R) (_ : ∀ (i : s), a i I), (Finsupp.sum a fun (i : s) (c : R) => c f i) = x
      theorem Submodule.mem_smul_top_iff {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (N : Submodule R M) (x : N) :
      x I x I N
      @[simp]
      theorem Submodule.smul_comap_le_comap_smul {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {M' : Type w} [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] M') (S : Submodule R M') (I : Ideal R) :
      def Submodule.colon {R : Type u} {M : Type v} [CommRing R] [AddCommGroup M] [Module R M] (N : Submodule R M) (P : Submodule R M) :

      N.colon P is the ideal of all elements r : R such that r • P ⊆ N.

      Equations
      Instances For
        theorem Submodule.mem_colon {R : Type u} {M : Type v} [CommRing R] [AddCommGroup M] [Module R M] {N : Submodule R M} {P : Submodule R M} {r : R} :
        r Submodule.colon N P pP, r p N
        theorem Submodule.mem_colon' {R : Type u} {M : Type v} [CommRing R] [AddCommGroup M] [Module R M] {N : Submodule R M} {P : Submodule R M} {r : R} :
        r Submodule.colon N P P Submodule.comap (r LinearMap.id) N
        @[simp]
        theorem Submodule.colon_top {R : Type u} [CommRing R] {I : Ideal R} :
        theorem Submodule.colon_mono {R : Type u} {M : Type v} [CommRing R] [AddCommGroup M] [Module R M] {N₁ : Submodule R M} {N₂ : Submodule R M} {P₁ : Submodule R M} {P₂ : Submodule R M} (hn : N₁ N₂) (hp : P₁ P₂) :
        Submodule.colon N₁ P₂ Submodule.colon N₂ P₁
        theorem Submodule.iInf_colon_iSup {R : Type u} {M : Type v} [CommRing R] [AddCommGroup M] [Module R M] (ι₁ : Sort w) (f : ι₁Submodule R M) (ι₂ : Sort x) (g : ι₂Submodule R M) :
        Submodule.colon (⨅ (i : ι₁), f i) (⨆ (j : ι₂), g j) = ⨅ (i : ι₁), ⨅ (j : ι₂), Submodule.colon (f i) (g j)
        @[simp]
        theorem Submodule.mem_colon_singleton {R : Type u} {M : Type v} [CommRing R] [AddCommGroup M] [Module R M] {N : Submodule R M} {x : M} {r : R} :
        @[simp]
        theorem Ideal.mem_colon_singleton {R : Type u} [CommRing R] {I : Ideal R} {x : R} {r : R} :
        @[simp]
        theorem Ideal.add_eq_sup {R : Type u} [Semiring R] {I : Ideal R} {J : Ideal R} :
        I + J = I J
        @[simp]
        theorem Ideal.zero_eq_bot {R : Type u} [Semiring R] :
        0 =
        @[simp]
        theorem Ideal.sum_eq_sup {R : Type u} [Semiring R] {ι : Type u_1} (s : Finset ι) (f : ιIdeal R) :
        Equations
        • Ideal.instMulIdealToSemiring = { mul := fun (x x_1 : Ideal R) => x x_1 }
        @[simp]
        theorem Ideal.one_eq_top {R : Type u} [CommSemiring R] :
        1 =
        theorem Ideal.add_eq_one_iff {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I + J = 1 ∃ i ∈ I, ∃ j ∈ J, i + j = 1
        theorem Ideal.mul_mem_mul {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {r : R} {s : R} (hr : r I) (hs : s J) :
        r * s I * J
        theorem Ideal.mul_mem_mul_rev {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {r : R} {s : R} (hr : r I) (hs : s J) :
        s * r I * J
        theorem Ideal.pow_mem_pow {R : Type u} [CommSemiring R] {I : Ideal R} {x : R} (hx : x I) (n : ) :
        x ^ n I ^ n
        theorem Ideal.prod_mem_prod {R : Type u} [CommSemiring R] {ι : Type u_2} {s : Finset ι} {I : ιIdeal R} {x : ιR} :
        (is, x i I i)(Finset.prod s fun (i : ι) => x i) Finset.prod s fun (i : ι) => I i
        theorem Ideal.mul_le {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} :
        I * J K rI, sJ, r * s K
        theorem Ideal.mul_le_left {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I * J J
        theorem Ideal.mul_le_right {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I * J I
        @[simp]
        theorem Ideal.sup_mul_right_self {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I I * J = I
        @[simp]
        theorem Ideal.sup_mul_left_self {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I J * I = I
        @[simp]
        theorem Ideal.mul_right_self_sup {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I * J I = I
        @[simp]
        theorem Ideal.mul_left_self_sup {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        J * I I = I
        theorem Ideal.mul_comm {R : Type u} [CommSemiring R] (I : Ideal R) (J : Ideal R) :
        I * J = J * I
        theorem Ideal.mul_assoc {R : Type u} [CommSemiring R] (I : Ideal R) (J : Ideal R) (K : Ideal R) :
        I * J * K = I * (J * K)
        theorem Ideal.span_mul_span {R : Type u} [CommSemiring R] (S : Set R) (T : Set R) :
        Ideal.span S * Ideal.span T = Ideal.span (⋃ s ∈ S, ⋃ t ∈ T, {s * t})
        theorem Ideal.span_mul_span' {R : Type u} [CommSemiring R] (S : Set R) (T : Set R) :
        theorem Ideal.span_singleton_pow {R : Type u} [CommSemiring R] (s : R) (n : ) :
        Ideal.span {s} ^ n = Ideal.span {s ^ n}
        theorem Ideal.mem_mul_span_singleton {R : Type u} [CommSemiring R] {x : R} {y : R} {I : Ideal R} :
        x I * Ideal.span {y} ∃ z ∈ I, z * y = x
        theorem Ideal.mem_span_singleton_mul {R : Type u} [CommSemiring R] {x : R} {y : R} {I : Ideal R} :
        x Ideal.span {y} * I ∃ z ∈ I, y * z = x
        theorem Ideal.le_span_singleton_mul_iff {R : Type u} [CommSemiring R] {x : R} {I : Ideal R} {J : Ideal R} :
        I Ideal.span {x} * J zII, ∃ zJ ∈ J, x * zJ = zI
        theorem Ideal.span_singleton_mul_le_iff {R : Type u} [CommSemiring R] {x : R} {I : Ideal R} {J : Ideal R} :
        Ideal.span {x} * I J zI, x * z J
        theorem Ideal.span_singleton_mul_le_span_singleton_mul {R : Type u} [CommSemiring R] {x : R} {y : R} {I : Ideal R} {J : Ideal R} :
        Ideal.span {x} * I Ideal.span {y} * J zII, ∃ zJ ∈ J, x * zI = y * zJ
        theorem Ideal.span_singleton_mul_right_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} [IsDomain R] {x : R} (hx : x 0) :
        Ideal.span {x} * I Ideal.span {x} * J I J
        theorem Ideal.span_singleton_mul_left_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} [IsDomain R] {x : R} (hx : x 0) :
        I * Ideal.span {x} J * Ideal.span {x} I J
        theorem Ideal.span_singleton_mul_right_inj {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} [IsDomain R] {x : R} (hx : x 0) :
        Ideal.span {x} * I = Ideal.span {x} * J I = J
        theorem Ideal.span_singleton_mul_left_inj {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} [IsDomain R] {x : R} (hx : x 0) :
        I * Ideal.span {x} = J * Ideal.span {x} I = J
        theorem Ideal.span_singleton_mul_right_injective {R : Type u} [CommSemiring R] [IsDomain R] {x : R} (hx : x 0) :
        Function.Injective fun (x_1 : Ideal R) => Ideal.span {x} * x_1
        theorem Ideal.span_singleton_mul_left_injective {R : Type u} [CommSemiring R] [IsDomain R] {x : R} (hx : x 0) :
        Function.Injective fun (I : Ideal R) => I * Ideal.span {x}
        theorem Ideal.eq_span_singleton_mul {R : Type u} [CommSemiring R] {x : R} (I : Ideal R) (J : Ideal R) :
        I = Ideal.span {x} * J (zII, ∃ zJ ∈ J, x * zJ = zI) zJ, x * z I
        theorem Ideal.span_singleton_mul_eq_span_singleton_mul {R : Type u} [CommSemiring R] {x : R} {y : R} (I : Ideal R) (J : Ideal R) :
        Ideal.span {x} * I = Ideal.span {y} * J (zII, ∃ zJ ∈ J, x * zI = y * zJ) zJJ, ∃ zI ∈ I, x * zI = y * zJ
        theorem Ideal.prod_span {R : Type u} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (I : ιSet R) :
        (Finset.prod s fun (i : ι) => Ideal.span (I i)) = Ideal.span (Finset.prod s fun (i : ι) => I i)
        theorem Ideal.prod_span_singleton {R : Type u} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (I : ιR) :
        (Finset.prod s fun (i : ι) => Ideal.span {I i}) = Ideal.span {Finset.prod s fun (i : ι) => I i}
        theorem Ideal.finset_inf_span_singleton {R : Type u} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (I : ιR) (hI : Set.Pairwise (s) (IsCoprime on I)) :
        (Finset.inf s fun (i : ι) => Ideal.span {I i}) = Ideal.span {Finset.prod s fun (i : ι) => I i}
        theorem Ideal.iInf_span_singleton {R : Type u} [CommSemiring R] {ι : Type u_2} [Fintype ι] {I : ιR} (hI : ∀ (i j : ι), i jIsCoprime (I i) (I j)) :
        ⨅ (i : ι), Ideal.span {I i} = Ideal.span {Finset.prod Finset.univ fun (i : ι) => I i}
        theorem Ideal.iInf_span_singleton_natCast {R : Type u_2} [CommRing R] {ι : Type u_3} [Fintype ι] {I : ι} (hI : Pairwise fun (i j : ι) => Nat.Coprime (I i) (I j)) :
        ⨅ (i : ι), Ideal.span {(I i)} = Ideal.span {(Finset.prod Finset.univ fun (i : ι) => I i)}
        theorem Ideal.mul_le_inf {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        I * J I J
        theorem Ideal.prod_le_inf {R : Type u} {ι : Type u_1} [CommSemiring R] {s : Finset ι} {f : ιIdeal R} :
        theorem Ideal.mul_eq_inf_of_coprime {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (h : I J = ) :
        I * J = I J
        theorem Ideal.sup_mul_eq_of_coprime_left {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} (h : I J = ) :
        I J * K = I K
        theorem Ideal.sup_mul_eq_of_coprime_right {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} (h : I K = ) :
        I J * K = I J
        theorem Ideal.mul_sup_eq_of_coprime_left {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} (h : I J = ) :
        I * K J = K J
        theorem Ideal.mul_sup_eq_of_coprime_right {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} (h : K J = ) :
        I * K J = I J
        theorem Ideal.sup_prod_eq_top {R : Type u} {ι : Type u_1} [CommSemiring R] {I : Ideal R} {s : Finset ι} {J : ιIdeal R} (h : is, I J i = ) :
        (I Finset.prod s fun (i : ι) => J i) =
        theorem Ideal.sup_iInf_eq_top {R : Type u} {ι : Type u_1} [CommSemiring R] {I : Ideal R} {s : Finset ι} {J : ιIdeal R} (h : is, I J i = ) :
        I ⨅ i ∈ s, J i =
        theorem Ideal.prod_sup_eq_top {R : Type u} {ι : Type u_1} [CommSemiring R] {I : Ideal R} {s : Finset ι} {J : ιIdeal R} (h : is, J i I = ) :
        (Finset.prod s fun (i : ι) => J i) I =
        theorem Ideal.iInf_sup_eq_top {R : Type u} {ι : Type u_1} [CommSemiring R] {I : Ideal R} {s : Finset ι} {J : ιIdeal R} (h : is, J i I = ) :
        (⨅ i ∈ s, J i) I =
        theorem Ideal.sup_pow_eq_top {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {n : } (h : I J = ) :
        I J ^ n =
        theorem Ideal.pow_sup_eq_top {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {n : } (h : I J = ) :
        I ^ n J =
        theorem Ideal.pow_sup_pow_eq_top {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {m : } {n : } (h : I J = ) :
        I ^ m J ^ n =
        theorem Ideal.mul_bot {R : Type u} [CommSemiring R] (I : Ideal R) :
        theorem Ideal.bot_mul {R : Type u} [CommSemiring R] (I : Ideal R) :
        @[simp]
        theorem Ideal.mul_top {R : Type u} [CommSemiring R] (I : Ideal R) :
        I * = I
        @[simp]
        theorem Ideal.top_mul {R : Type u} [CommSemiring R] (I : Ideal R) :
        * I = I
        theorem Ideal.mul_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} {L : Ideal R} (hik : I K) (hjl : J L) :
        I * J K * L
        theorem Ideal.mul_mono_left {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} (h : I J) :
        I * K J * K
        theorem Ideal.mul_mono_right {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} (h : J K) :
        I * J I * K
        theorem Ideal.mul_sup {R : Type u} [CommSemiring R] (I : Ideal R) (J : Ideal R) (K : Ideal R) :
        I * (J K) = I * J I * K
        theorem Ideal.sup_mul {R : Type u} [CommSemiring R] (I : Ideal R) (J : Ideal R) (K : Ideal R) :
        (I J) * K = I * K J * K
        theorem Ideal.pow_le_pow_right {R : Type u} [CommSemiring R] {I : Ideal R} {m : } {n : } (h : m n) :
        I ^ n I ^ m
        theorem Ideal.pow_le_self {R : Type u} [CommSemiring R] {I : Ideal R} {n : } (hn : n 0) :
        I ^ n I
        theorem Ideal.pow_right_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (e : I J) (n : ) :
        I ^ n J ^ n
        @[simp]
        theorem Ideal.mul_eq_bot {R : Type u_2} [CommSemiring R] [NoZeroDivisors R] {I : Ideal R} {J : Ideal R} :
        I * J = I = J =
        @[simp]

        A product of ideals in an integral domain is zero if and only if one of the terms is zero.

        @[deprecated Ideal.multiset_prod_eq_bot]
        theorem Ideal.prod_eq_bot {R : Type u_2} [CommRing R] [IsDomain R] {s : Multiset (Ideal R)} :
        Multiset.prod s = ∃ I ∈ s, I =

        A product of ideals in an integral domain is zero if and only if one of the terms is zero.

        theorem Ideal.span_pair_mul_span_pair {R : Type u} [CommSemiring R] (w : R) (x : R) (y : R) (z : R) :
        Ideal.span {w, x} * Ideal.span {y, z} = Ideal.span {w * y, w * z, x * y, x * z}
        theorem Ideal.isCoprime_iff_add {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        IsCoprime I J I + J = 1
        theorem Ideal.isCoprime_iff_exists {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        IsCoprime I J ∃ i ∈ I, ∃ j ∈ J, i + j = 1
        theorem Ideal.isCoprime_iff_sup_eq {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        theorem Ideal.isCoprime_tfae {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
        List.TFAE [IsCoprime I J, Codisjoint I J, I + J = 1, ∃ i ∈ I, ∃ j ∈ J, i + j = 1, I J = ]
        theorem IsCoprime.codisjoint {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (h : IsCoprime I J) :
        theorem IsCoprime.add_eq {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (h : IsCoprime I J) :
        I + J = 1
        theorem IsCoprime.exists {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (h : IsCoprime I J) :
        ∃ i ∈ I, ∃ j ∈ J, i + j = 1
        theorem IsCoprime.sup_eq {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (h : IsCoprime I J) :
        I J =
        theorem Ideal.isCoprime_biInf {R : Type u} {ι : Type u_1} [CommSemiring R] {I : Ideal R} {J : ιIdeal R} {s : Finset ι} (hf : js, IsCoprime I (J j)) :
        IsCoprime I (⨅ j ∈ s, J j)
        def Ideal.radical {R : Type u} [CommSemiring R] (I : Ideal R) :

        The radical of an ideal I consists of the elements r such that r ^ n ∈ I for some n.

        Equations
        • Ideal.radical I = { toAddSubmonoid := { toAddSubsemigroup := { carrier := {r : R | ∃ (n : ), r ^ n I}, add_mem' := }, zero_mem' := }, smul_mem' := }
        Instances For
          theorem Ideal.mem_radical_iff {R : Type u} [CommSemiring R] {I : Ideal R} {r : R} :
          r Ideal.radical I ∃ (n : ), r ^ n I
          def Ideal.IsRadical {R : Type u} [CommSemiring R] (I : Ideal R) :

          An ideal is radical if it contains its radical.

          Equations
          Instances For

            An ideal is radical iff it is equal to its radical.

            Alias of the reverse direction of Ideal.radical_eq_iff.


            An ideal is radical iff it is equal to its radical.

            theorem Ideal.isRadical_iff_pow_one_lt {R : Type u} [CommSemiring R] {I : Ideal R} (k : ) (hk : 1 < k) :
            Ideal.IsRadical I ∀ (r : R), r ^ k Ir I
            theorem Ideal.radical_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (H : I J) :
            theorem Ideal.IsRadical.inf {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (hI : Ideal.IsRadical I) (hJ : Ideal.IsRadical J) :
            theorem Ideal.radical_iInf_le {R : Type u} [CommSemiring R] {ι : Sort u_2} (I : ιIdeal R) :
            Ideal.radical (⨅ (i : ι), I i) ⨅ (i : ι), Ideal.radical (I i)

            The reverse inclusion does not hold for e.g. I := fun n : ℕ ↦ Ideal.span {(2 ^ n : ℤ)}.

            theorem Ideal.isRadical_iInf {R : Type u} [CommSemiring R] {ι : Sort u_2} (I : ιIdeal R) (hI : ∀ (i : ι), Ideal.IsRadical (I i)) :
            Ideal.IsRadical (⨅ (i : ι), I i)
            Equations
            • Ideal.instIdemCommSemiringIdealToSemiring = inferInstance
            theorem Ideal.top_pow (R : Type u) [CommSemiring R] (n : ) :
            theorem Ideal.radical_pow {R : Type u} [CommSemiring R] (I : Ideal R) {n : } :
            theorem Ideal.IsPrime.mul_le {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {P : Ideal R} (hp : Ideal.IsPrime P) :
            I * J P I P J P
            theorem Ideal.IsPrime.inf_le {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} {P : Ideal R} (hp : Ideal.IsPrime P) :
            I J P I P J P
            theorem Ideal.IsPrime.multiset_prod_le {R : Type u} [CommSemiring R] {s : Multiset (Ideal R)} {P : Ideal R} (hp : Ideal.IsPrime P) :
            Multiset.prod s P ∃ I ∈ s, I P
            theorem Ideal.IsPrime.multiset_prod_map_le {R : Type u} {ι : Type u_1} [CommSemiring R] {s : Multiset ι} (f : ιIdeal R) {P : Ideal R} (hp : Ideal.IsPrime P) :
            Multiset.prod (Multiset.map f s) P ∃ i ∈ s, f i P
            theorem Ideal.IsPrime.prod_le {R : Type u} {ι : Type u_1} [CommSemiring R] {s : Finset ι} {f : ιIdeal R} {P : Ideal R} (hp : Ideal.IsPrime P) :
            Finset.prod s f P ∃ i ∈ s, f i P
            theorem Ideal.IsPrime.prod_mem_iff_exists_mem {R : Type u} [CommSemiring R] {I : Ideal R} (hI : Ideal.IsPrime I) (s : Finset R) :
            (Finset.prod s fun (x : R) => x) I ∃ p ∈ s, p I
            theorem Ideal.IsPrime.inf_le' {R : Type u} {ι : Type u_1} [CommSemiring R] {s : Finset ι} {f : ιIdeal R} {P : Ideal R} (hp : Ideal.IsPrime P) :
            Finset.inf s f P ∃ i ∈ s, f i P
            theorem Ideal.subset_union {R : Type u} [Ring R] {I : Ideal R} {J : Ideal R} {K : Ideal R} :
            I J K I J I K
            theorem Ideal.subset_union_prime' {ι : Type u_1} {R : Type u} [CommRing R] {s : Finset ι} {f : ιIdeal R} {a : ι} {b : ι} (hp : is, Ideal.IsPrime (f i)) {I : Ideal R} :
            I (f a) (f b) ⋃ i ∈ s, (f i) I f a I f b ∃ i ∈ s, I f i
            theorem Ideal.subset_union_prime {ι : Type u_1} {R : Type u} [CommRing R] {s : Finset ι} {f : ιIdeal R} (a : ι) (b : ι) (hp : is, i ai bIdeal.IsPrime (f i)) {I : Ideal R} :
            I ⋃ i ∈ s, (f i) ∃ i ∈ s, I f i

            Prime avoidance. Atiyah-Macdonald 1.11, Eisenbud 3.3, Stacks 00DS, Matsumura Ex.1.6.

            theorem Ideal.le_of_dvd {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} :
            I JJ I

            If I divides J, then I contains J.

            In a Dedekind domain, to divide and contain are equivalent, see Ideal.dvd_iff_le.

            @[simp]
            theorem Ideal.isUnit_iff {R : Type u} [CommSemiring R] {I : Ideal R} :
            Equations
            • Ideal.uniqueUnits = { toInhabited := { default := 1 }, uniq := }
            def Ideal.map {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] (f : F) (I : Ideal R) :

            I.map f is the span of the image of the ideal I under f, which may be bigger than the image itself.

            Equations
            Instances For
              def Ideal.comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal S) :

              I.comap f is the preimage of I under f.

              Equations
              • Ideal.comap f I = { toAddSubmonoid := { toAddSubsemigroup := { carrier := f ⁻¹' I, add_mem' := }, zero_mem' := }, smul_mem' := }
              Instances For
                theorem Ideal.coe_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal S) :
                (Ideal.comap f I) = f ⁻¹' I
                theorem Ideal.map_mono {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] {f : F} {I : Ideal R} {J : Ideal R} (h : I J) :
                theorem Ideal.mem_map_of_mem {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] (f : F) {I : Ideal R} {x : R} (h : x I) :
                f x Ideal.map f I
                theorem Ideal.apply_coe_mem_map {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] (f : F) (I : Ideal R) (x : I) :
                f x Ideal.map f I
                theorem Ideal.map_le_iff_le_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {I : Ideal R} {K : Ideal S} :
                @[simp]
                theorem Ideal.mem_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {K : Ideal S} {x : R} :
                x Ideal.comap f K f x K
                theorem Ideal.comap_mono {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {K : Ideal S} {L : Ideal S} (h : K L) :
                theorem Ideal.comap_ne_top {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {K : Ideal S} (hK : K ) :
                theorem Ideal.map_le_comap_of_inv_on {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] (f : F) {G : Type u_2} [FunLike G S R] [rcg : RingHomClass G S R] (g : G) (I : Ideal R) (hf : Set.LeftInvOn g f I) :
                theorem Ideal.comap_le_map_of_inv_on {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {G : Type u_2} [FunLike G S R] (g : G) (I : Ideal S) (hf : Set.LeftInvOn (g) (f) (f ⁻¹' I)) :
                theorem Ideal.map_le_comap_of_inverse {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] (f : F) {G : Type u_2} [FunLike G S R] [rcg : RingHomClass G S R] (g : G) (I : Ideal R) (h : Function.LeftInverse g f) :

                The Ideal version of Set.image_subset_preimage_of_inverse.

                theorem Ideal.comap_le_map_of_inverse {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {G : Type u_2} [FunLike G S R] (g : G) (I : Ideal S) (h : Function.LeftInverse g f) :

                The Ideal version of Set.preimage_subset_image_of_inverse.

                instance Ideal.IsPrime.comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {K : Ideal S} [hK : Ideal.IsPrime K] :
                Equations
                • =
                theorem Ideal.map_top {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) :
                theorem Ideal.gc_map_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) :
                @[simp]
                theorem Ideal.comap_id {R : Type u} [Semiring R] (I : Ideal R) :
                @[simp]
                theorem Ideal.map_id {R : Type u} [Semiring R] (I : Ideal R) :
                theorem Ideal.comap_comap {R : Type u} {S : Type v} [Semiring R] [Semiring S] {T : Type u_3} [Semiring T] {I : Ideal T} (f : R →+* S) (g : S →+* T) :
                theorem Ideal.map_map {R : Type u} {S : Type v} [Semiring R] [Semiring S] {T : Type u_3} [Semiring T] {I : Ideal R} (f : R →+* S) (g : S →+* T) :
                theorem Ideal.map_span {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (s : Set R) :
                theorem Ideal.map_le_of_le_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {I : Ideal R} {K : Ideal S} :
                I Ideal.comap f KIdeal.map f I K
                theorem Ideal.le_comap_of_map_le {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {I : Ideal R} {K : Ideal S} :
                Ideal.map f I KI Ideal.comap f K
                theorem Ideal.le_comap_map {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {I : Ideal R} :
                theorem Ideal.map_comap_le {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {K : Ideal S} :
                @[simp]
                theorem Ideal.comap_top {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} :
                @[simp]
                theorem Ideal.comap_eq_top_iff {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} {I : Ideal S} :
                @[simp]
                theorem Ideal.map_bot {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} :
                @[simp]
                theorem Ideal.map_comap_map {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal R) :
                @[simp]
                theorem Ideal.comap_map_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (K : Ideal S) :
                theorem Ideal.map_sup {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal R) (J : Ideal R) :
                theorem Ideal.comap_inf {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (K : Ideal S) (L : Ideal S) :
                theorem Ideal.map_iSup {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {ι : Sort u_3} (K : ιIdeal R) :
                Ideal.map f (iSup K) = ⨆ (i : ι), Ideal.map f (K i)
                theorem Ideal.comap_iInf {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {ι : Sort u_3} (K : ιIdeal S) :
                Ideal.comap f (iInf K) = ⨅ (i : ι), Ideal.comap f (K i)
                theorem Ideal.map_sSup {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (s : Set (Ideal R)) :
                Ideal.map f (sSup s) = ⨆ I ∈ s, Ideal.map f I
                theorem Ideal.comap_sInf {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (s : Set (Ideal S)) :
                Ideal.comap f (sInf s) = ⨅ I ∈ s, Ideal.comap f I
                theorem Ideal.comap_sInf' {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (s : Set (Ideal S)) :
                Ideal.comap f (sInf s) = ⨅ I ∈ Ideal.comap f '' s, I
                theorem Ideal.comap_isPrime {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (K : Ideal S) [H : Ideal.IsPrime K] :
                theorem Ideal.map_inf_le {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {I : Ideal R} {J : Ideal R} :
                theorem Ideal.le_comap_sup {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {K : Ideal S} {L : Ideal S} :
                @[simp]
                @[simp]
                theorem Ideal.coe_restrictScalars {R : Type u_4} {S : Type u_5} [CommSemiring R] [Semiring S] [Algebra R S] (I : Ideal S) :
                @[simp]

                The smallest S-submodule that contains all x ∈ I * y ∈ J is also the smallest R-submodule that does so.

                theorem Ideal.map_comap_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) (I : Ideal S) :
                def Ideal.giMapComap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) :

                map and comap are adjoint, and the composition map f ∘ comap f is the identity

                Equations
                Instances For
                  theorem Ideal.map_surjective_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) :
                  theorem Ideal.comap_injective_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) :
                  theorem Ideal.map_sup_comap_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) (I : Ideal S) (J : Ideal S) :
                  theorem Ideal.map_iSup_comap_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {ι : Sort u_3} (hf : Function.Surjective f) (K : ιIdeal S) :
                  Ideal.map f (⨆ (i : ι), Ideal.comap f (K i)) = iSup K
                  theorem Ideal.map_inf_comap_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) (I : Ideal S) (J : Ideal S) :
                  theorem Ideal.map_iInf_comap_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {ι : Sort u_3} (hf : Function.Surjective f) (K : ιIdeal S) :
                  Ideal.map f (⨅ (i : ι), Ideal.comap f (K i)) = iInf K
                  theorem Ideal.mem_image_of_mem_map_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) {I : Ideal R} {y : S} (H : y Ideal.map f I) :
                  y f '' I
                  theorem Ideal.mem_map_iff_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective f) {I : Ideal R} {y : S} :
                  y Ideal.map f I ∃ x ∈ I, f x = y
                  theorem Ideal.le_map_of_comap_le_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {I : Ideal R} {K : Ideal S} (hf : Function.Surjective f) :
                  Ideal.comap f K IK Ideal.map f I
                  theorem Ideal.comap_bot_le_of_injective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {I : Ideal R} (hf : Function.Injective f) :
                  theorem Ideal.comap_bot_of_injective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (hf : Function.Injective f) :
                  @[simp]
                  theorem Ideal.map_of_equiv {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (f : R ≃+* S) :
                  Ideal.map ((RingEquiv.symm f)) (Ideal.map (f) I) = I

                  If f : R ≃+* S is a ring isomorphism and I : Ideal R, then map f.symm (map f I) = I.

                  @[simp]
                  theorem Ideal.comap_of_equiv {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (f : R ≃+* S) :
                  Ideal.comap (f) (Ideal.comap ((RingEquiv.symm f)) I) = I

                  If f : R ≃+* S is a ring isomorphism and I : Ideal R, then comap f (comap f.symm I) = I.

                  theorem Ideal.map_comap_of_equiv {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (f : R ≃+* S) :

                  If f : R ≃+* S is a ring isomorphism and I : Ideal R, then map f I = comap f.symm I.

                  @[simp]
                  theorem Ideal.comap_symm {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (f : R ≃+* S) :

                  If f : R ≃+* S is a ring isomorphism and I : Ideal R, then comap f.symm I = map f I.

                  @[simp]
                  theorem Ideal.map_symm {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal S) (f : R ≃+* S) :

                  If f : R ≃+* S is a ring isomorphism and I : Ideal R, then map f.symm I = comap f I.

                  theorem Ideal.comap_map_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Surjective f) (I : Ideal R) :
                  def Ideal.relIsoOfSurjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Surjective f) :
                  Ideal S ≃o { p : Ideal R // Ideal.comap f p }

                  Correspondence theorem

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    def Ideal.orderEmbeddingOfSurjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Surjective f) :

                    The map on ideals induced by a surjective map preserves inclusion.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem Ideal.map_eq_top_or_isMaximal_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Surjective f) {I : Ideal R} (H : Ideal.IsMaximal I) :
                      theorem Ideal.comap_isMaximal_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Surjective f) {K : Ideal S} [H : Ideal.IsMaximal K] :
                      theorem Ideal.comap_le_comap_iff_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Surjective f) (I : Ideal S) (J : Ideal S) :
                      def Ideal.relIsoOfBijective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Bijective f) :

                      Special case of the correspondence theorem for isomorphic rings

                      Equations
                      Instances For
                        theorem Ideal.comap_le_iff_le_map {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Bijective f) {I : Ideal R} {K : Ideal S} :
                        theorem Ideal.map.isMaximal {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [RingHomClass F R S] (f : F) (hf : Function.Bijective f) {I : Ideal R} (H : Ideal.IsMaximal I) :
                        theorem Ideal.map_mul {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal R) (J : Ideal R) :
                        Ideal.map f (I * J) = Ideal.map f I * Ideal.map f J
                        @[simp]
                        theorem Ideal.mapHom_apply {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal R) :
                        def Ideal.mapHom {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) :

                        The pushforward Ideal.map as a monoid-with-zero homomorphism.

                        Equations
                        • Ideal.mapHom f = { toZeroHom := { toFun := Ideal.map f, map_zero' := }, map_one' := , map_mul' := }
                        Instances For
                          theorem Ideal.map_pow {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (I : Ideal R) (n : ) :
                          Ideal.map f (I ^ n) = Ideal.map f I ^ n
                          theorem Ideal.comap_radical {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) (K : Ideal S) :
                          theorem Ideal.IsRadical.comap {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {K : Ideal S} (hK : Ideal.IsRadical K) :
                          theorem Ideal.map_radical_le {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {I : Ideal R} :
                          theorem Ideal.le_comap_mul {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {K : Ideal S} {L : Ideal S} :
                          theorem Ideal.le_comap_pow {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {K : Ideal S} (n : ) :
                          Ideal.comap f K ^ n Ideal.comap f (K ^ n)
                          def Ideal.IsPrimary {R : Type u} [CommSemiring R] (I : Ideal R) :

                          A proper ideal I is primary iff xy ∈ I implies x ∈ I or y ∈ radical I.

                          Equations
                          Instances For
                            theorem Ideal.mem_radical_of_pow_mem {R : Type u} [CommSemiring R] {I : Ideal R} {x : R} {m : } (hx : x ^ m Ideal.radical I) :
                            theorem Ideal.isPrimary_inf {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (hi : Ideal.IsPrimary I) (hj : Ideal.IsPrimary J) (hij : Ideal.radical I = Ideal.radical J) :
                            noncomputable def Ideal.finsuppTotal (ι : Type u_1) (M : Type u_2) [AddCommGroup M] {R : Type u_3} [CommRing R] [Module R M] (I : Ideal R) (v : ιM) :
                            (ι →₀ I) →ₗ[R] M

                            A variant of Finsupp.total that takes in vectors valued in I.

                            Equations
                            Instances For
                              theorem Ideal.finsuppTotal_apply {ι : Type u_1} {M : Type u_2} [AddCommGroup M] {R : Type u_3} [CommRing R] [Module R M] (I : Ideal R) {v : ιM} (f : ι →₀ I) :
                              (Ideal.finsuppTotal ι M I v) f = Finsupp.sum f fun (i : ι) (x : I) => x v i
                              theorem Ideal.finsuppTotal_apply_eq_of_fintype {ι : Type u_1} {M : Type u_2} [AddCommGroup M] {R : Type u_3} [CommRing R] [Module R M] (I : Ideal R) {v : ιM} [Fintype ι] (f : ι →₀ I) :
                              (Ideal.finsuppTotal ι M I v) f = Finset.sum Finset.univ fun (i : ι) => (f i) v i
                              theorem Ideal.range_finsuppTotal {ι : Type u_1} {M : Type u_2} [AddCommGroup M] {R : Type u_3} [CommRing R] [Module R M] (I : Ideal R) {v : ιM} :
                              noncomputable def Ideal.basisSpanSingleton {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommRing S] [IsDomain S] [Algebra R S] (b : Basis ι R S) {x : S} (hx : x 0) :
                              Basis ι R (Ideal.span {x})

                              A basis on S gives a basis on Ideal.span {x}, by multiplying everything by x.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem Ideal.basisSpanSingleton_apply {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommRing S] [IsDomain S] [Algebra R S] (b : Basis ι R S) {x : S} (hx : x 0) (i : ι) :
                                ((Ideal.basisSpanSingleton b hx) i) = x * b i
                                @[simp]
                                theorem Ideal.constr_basisSpanSingleton {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommRing S] [IsDomain S] [Algebra R S] {N : Type u_4} [Semiring N] [Module N S] [SMulCommClass R N S] (b : Basis ι R S) {x : S} (hx : x 0) :
                                (Basis.constr b N).toFun (Subtype.val (Ideal.basisSpanSingleton b hx)) = (Algebra.lmul R S) x
                                theorem Finsupp.mem_ideal_span_range_iff_exists_finsupp {α : Type u_1} {R : Type u_2} [Semiring R] {x : R} {v : αR} :
                                x Ideal.span (Set.range v) ∃ (c : α →₀ R), (Finsupp.sum c fun (i : α) (a : R) => a * v i) = x
                                theorem mem_ideal_span_range_iff_exists_fun {α : Type u_1} {R : Type u_2} [Semiring R] [Fintype α] {x : R} {v : αR} :
                                x Ideal.span (Set.range v) ∃ (c : αR), (Finset.sum Finset.univ fun (i : α) => c i * v i) = x

                                An element x lies in the span of v iff it can be written as sum ∑ cᵢ • vᵢ = x.

                                theorem Basis.mem_ideal_iff {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommRing R] [CommRing S] [Algebra R S] {I : Ideal S} (b : Basis ι R I) {x : S} :
                                x I ∃ (c : ι →₀ R), x = Finsupp.sum c fun (i : ι) (x : R) => x (b i)

                                If I : Ideal S has a basis over R, x ∈ I iff it is a linear combination of basis vectors.

                                theorem Basis.mem_ideal_iff' {ι : Type u_1} {R : Type u_2} {S : Type u_3} [Fintype ι] [CommRing R] [CommRing S] [Algebra R S] {I : Ideal S} (b : Basis ι R I) {x : S} :
                                x I ∃ (c : ιR), x = Finset.sum Finset.univ fun (i : ι) => c i (b i)

                                If I : Ideal S has a finite basis over R, x ∈ I iff it is a linear combination of basis vectors.

                                def RingHom.ker {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rcf : RingHomClass F R S] (f : F) :

                                Kernel of a ring homomorphism as an ideal of the domain.

                                Equations
                                Instances For
                                  theorem RingHom.mem_ker {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rcf : RingHomClass F R S] (f : F) {r : R} :
                                  r RingHom.ker f f r = 0

                                  An element is in the kernel if and only if it maps to zero.

                                  theorem RingHom.ker_eq {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rcf : RingHomClass F R S] (f : F) :
                                  (RingHom.ker f) = f ⁻¹' {0}
                                  theorem RingHom.ker_eq_comap_bot {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rcf : RingHomClass F R S] (f : F) :
                                  theorem RingHom.comap_ker {R : Type u} {S : Type v} {T : Type w} [Semiring R] [Semiring S] [Semiring T] (f : S →+* R) (g : T →+* S) :
                                  theorem RingHom.not_one_mem_ker {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rcf : RingHomClass F R S] [Nontrivial S] (f : F) :
                                  1RingHom.ker f

                                  If the target is not the zero ring, then one is not in the kernel.

                                  theorem RingHom.ker_ne_top {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [FunLike F R S] [rcf : RingHomClass F R S] [Nontrivial S] (f : F) :
                                  theorem Pi.ker_ringHom {S : Type v} [Semiring S] {ι : Type u_3} {R : ιType u_4} [(i : ι) → Semiring (R i)] (φ : (i : ι) → S →+* R i) :
                                  RingHom.ker (Pi.ringHom φ) = ⨅ (i : ι), RingHom.ker (φ i)
                                  theorem RingHom.injective_iff_ker_eq_bot {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) :
                                  theorem RingHom.ker_eq_bot_iff_eq_zero {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) :
                                  RingHom.ker f = ∀ (x : R), f x = 0x = 0
                                  @[simp]
                                  theorem RingHom.ker_coe_equiv {R : Type u} {S : Type v} [Ring R] [Semiring S] (f : R ≃+* S) :
                                  @[simp]
                                  theorem RingHom.ker_equiv {R : Type u} {S : Type v} [Ring R] [Semiring S] {F' : Type u_2} [EquivLike F' R S] [RingEquivClass F' R S] (f : F') :
                                  theorem RingHom.sub_mem_ker_iff {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [FunLike F R S] [rc : RingHomClass F R S] (f : F) {x : R} {y : R} :
                                  x - y RingHom.ker f f x = f y
                                  @[simp]
                                  theorem RingHom.ker_isPrime {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [IsDomain S] [FunLike F R S] [RingHomClass F R S] (f : F) :

                                  The kernel of a homomorphism to a domain is a prime ideal.

                                  theorem RingHom.ker_isMaximal_of_surjective {R : Type u_1} {K : Type u_2} {F : Type u_3} [Ring R] [Field K] [FunLike F R K] [RingHomClass F R K] (f : F) (hf : Function.Surjective f) :

                                  The kernel of a homomorphism to a field is a maximal ideal.

                                  theorem Ideal.map_eq_bot_iff_le_ker {R : Type u_1} {S : Type u_2} {F : Type u_3} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {I : Ideal R} (f : F) :
                                  theorem Ideal.ker_le_comap {R : Type u_1} {S : Type u_2} {F : Type u_3} [Semiring R] [Semiring S] [FunLike F R S] [rc : RingHomClass F R S] {K : Ideal S} (f : F) :
                                  theorem Ideal.map_isPrime_of_equiv {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] {F' : Type u_4} [EquivLike F' R S] [RingEquivClass F' R S] (f : F') {I : Ideal R} [Ideal.IsPrime I] :
                                  theorem Ideal.map_sInf {R : Type u_1} {S : Type u_2} {F : Type u_3} [Ring R] [Ring S] [FunLike F R S] [rc : RingHomClass F R S] {A : Set (Ideal R)} {f : F} (hf : Function.Surjective f) :
                                  (JA, RingHom.ker f J)Ideal.map f (sInf A) = sInf (Ideal.map f '' A)
                                  theorem Ideal.map_isPrime_of_surjective {R : Type u_1} {S : Type u_2} {F : Type u_3} [Ring R] [Ring S] [FunLike F R S] [rc : RingHomClass F R S] {f : F} (hf : Function.Surjective f) {I : Ideal R} [H : Ideal.IsPrime I] (hk : RingHom.ker f I) :
                                  theorem Ideal.map_eq_bot_iff_of_injective {R : Type u_1} {S : Type u_2} {F : Type u_3} [Ring R] [Ring S] [FunLike F R S] [rc : RingHomClass F R S] {I : Ideal R} {f : F} (hf : Function.Injective f) :
                                  theorem Ideal.map_eq_iff_sup_ker_eq_of_surjective {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {I : Ideal R} {J : Ideal R} (f : R →+* S) (hf : Function.Surjective f) :
                                  theorem Ideal.map_radical_of_surjective {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {f : R →+* S} (hf : Function.Surjective f) {I : Ideal R} (h : RingHom.ker f I) :
                                  instance Submodule.moduleSubmodule {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] :
                                  Equations
                                  theorem Submodule.span_smul_eq {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (s : Set R) (N : Submodule R M) :
                                  def RingHom.liftOfRightInverseAux {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (f_inv : BA) (hf : Function.RightInverse f_inv f) (g : A →+* C) (hg : RingHom.ker f RingHom.ker g) :
                                  B →+* C

                                  Auxiliary definition used to define liftOfRightInverse

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[simp]
                                    theorem RingHom.liftOfRightInverseAux_comp_apply {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (f_inv : BA) (hf : Function.RightInverse f_inv f) (g : A →+* C) (hg : RingHom.ker f RingHom.ker g) (a : A) :
                                    (RingHom.liftOfRightInverseAux f f_inv hf g hg) (f a) = g a
                                    def RingHom.liftOfRightInverse {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (f_inv : BA) (hf : Function.RightInverse f_inv f) :
                                    { g : A →+* C // RingHom.ker f RingHom.ker g } (B →+* C)

                                    liftOfRightInverse f hf g hg is the unique ring homomorphism φ

                                    See RingHom.eq_liftOfRightInverse for the uniqueness lemma.

                                       A .
                                       |  \
                                     f |   \ g
                                       |    \
                                       v     \⌟
                                       B ----> C
                                          ∃!φ
                                    
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[inline, reducible]
                                      noncomputable abbrev RingHom.liftOfSurjective {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (hf : Function.Surjective f) :
                                      { g : A →+* C // RingHom.ker f RingHom.ker g } (B →+* C)

                                      A non-computable version of RingHom.liftOfRightInverse for when no computable right inverse is available, that uses Function.surjInv.

                                      Equations
                                      Instances For
                                        theorem RingHom.liftOfRightInverse_comp_apply {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (f_inv : BA) (hf : Function.RightInverse f_inv f) (g : { g : A →+* C // RingHom.ker f RingHom.ker g }) (x : A) :
                                        ((RingHom.liftOfRightInverse f f_inv hf) g) (f x) = g x
                                        theorem RingHom.liftOfRightInverse_comp {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (f_inv : BA) (hf : Function.RightInverse f_inv f) (g : { g : A →+* C // RingHom.ker f RingHom.ker g }) :
                                        RingHom.comp ((RingHom.liftOfRightInverse f f_inv hf) g) f = g
                                        theorem RingHom.eq_liftOfRightInverse {A : Type u_1} {B : Type u_2} {C : Type u_3} [Ring A] [Ring B] [Ring C] (f : A →+* B) (f_inv : BA) (hf : Function.RightInverse f_inv f) (g : A →+* C) (hg : RingHom.ker f RingHom.ker g) (h : B →+* C) (hh : RingHom.comp h f = g) :
                                        h = (RingHom.liftOfRightInverse f f_inv hf) { val := g, property := hg }
                                        theorem AlgHom.coe_ker {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                                        theorem AlgHom.coe_ideal_map {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) (I : Ideal A) :
                                        Ideal.map f I = Ideal.map (f) I