Documentation

Mathlib.RingTheory.Ideal.Operations

More operations on modules and ideals #

theorem Submodule.coe_span_smul {R' : Type u_1} {M' : Type u_2} [CommSemiring R'] [AddCommMonoid M'] [Module R' M'] (s : Set R') (N : Submodule R' M') :
โ†‘(Ideal.span s) โ€ข N = s โ€ข N
theorem Ideal.smul_eq_mul {R : Type u} [Semiring R] (I 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.

@[simp]
theorem Submodule.top_smul {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (N : Submodule R M) :
theorem Submodule.mul_smul {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (I J : Ideal R) (N : Submodule R M) :
(I * J) โ€ข N = I โ€ข J โ€ข N
theorem Submodule.mem_of_span_top_of_smul_mem {R : Type u} {M : Type v} [Semiring 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'
@[simp]
theorem Submodule.map_smul'' {R : Type u} {M : Type v} [Semiring 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') :
map f (I โ€ข N) = I โ€ข map f N
theorem Submodule.mem_smul_top_iff {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (N : Submodule R M) (x : โ†ฅN) :
@[simp]
theorem Submodule.smul_comap_le_comap_smul {R : Type u} {M : Type v} [Semiring 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) :
theorem Submodule.comap_smul'' {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {M' : Type w} [AddCommMonoid M'] [Module R M'] {f : M โ†’โ‚—[R] M'} (hf : Function.Injective โ‡‘f) {p : Submodule R M'} (hp : p โ‰ค f.range) {I : Ideal R} :
comap f (I โ€ข p) = I โ€ข comap f p
theorem Submodule.mem_smul_span_singleton {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} [I.IsTwoSided] {m x : M} :
x โˆˆ I โ€ข (R โˆ™ m) โ†” โˆƒ y โˆˆ I, y โ€ข m = x
theorem Submodule.mem_smul_span {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} [I.IsTwoSided] {s : Set M} {x : M} :
x โˆˆ I โ€ข span R s โ†” x โˆˆ span R (โ†‘I โ€ข s)
theorem Submodule.mem_ideal_smul_span_iff_exists_sum {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) [I.IsTwoSided] {ฮน : Type u_4} (f : ฮน โ†’ M) (x : M) :
x โˆˆ I โ€ข span R (Set.range f) โ†” โˆƒ (a : ฮน โ†’โ‚€ R) (_ : โˆ€ (i : ฮน), a i โˆˆ I), (a.sum 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} [Semiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) [I.IsTwoSided] {ฮน : Type u_4} (s : Set ฮน) (f : ฮน โ†’ M) (x : M) :
x โˆˆ I โ€ข span R (f '' s) โ†” โˆƒ (a : โ†‘s โ†’โ‚€ R) (_ : โˆ€ (i : โ†‘s), a i โˆˆ I), (a.sum fun (i : โ†‘s) (c : R) => c โ€ข f โ†‘i) = x
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.

@[simp]
theorem Submodule.map_pointwise_smul {R : Type u} {M : Type v} {M' : Type u_1} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M'] [Module R M'] (r : R) (N : Submodule R M) (f : M โ†’โ‚—[R] M') :
map f (r โ€ข N) = r โ€ข map f N
@[simp]
theorem Ideal.add_eq_sup {R : Type u} [Semiring R] {I J : Ideal R} :
I + J = I โŠ” J
@[simp]
theorem Ideal.sum_eq_sup {R : Type u} [Semiring R] {ฮน : Type u_1} (s : Finset ฮน) (f : ฮน โ†’ Ideal R) :
s.sum f = s.sup f
theorem Ideal.add_eq_one_iff {R : Type u} [Semiring R] {I J : Ideal R} :
I + J = 1 โ†” โˆƒ i โˆˆ I, โˆƒ j โˆˆ J, i + j = 1
theorem Ideal.mul_mem_mul {R : Type u} [Semiring R] {I J : Ideal R} {r s : R} (hr : r โˆˆ I) (hs : s โˆˆ J) :
r * s โˆˆ I * J
theorem Ideal.pow_mem_pow {R : Type u} [Semiring R] {I : Ideal R} {x : R} (hx : x โˆˆ I) (n : โ„•) :
x ^ n โˆˆ I ^ n
theorem Ideal.mul_le {R : Type u} [Semiring R] {I J K : Ideal R} :
I * J โ‰ค K โ†” โˆ€ r โˆˆ I, โˆ€ s โˆˆ J, r * s โˆˆ K
@[simp]
theorem Ideal.sup_mul_left_self {R : Type u} [Semiring R] {I J : Ideal R} :
I โŠ” J * I = I
@[simp]
theorem Ideal.mul_left_self_sup {R : Type u} [Semiring R] {I J : Ideal R} :
J * I โŠ” I = I
@[simp]
theorem Ideal.sup_mul_right_self {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] :
I โŠ” I * J = I
@[simp]
theorem Ideal.mul_right_self_sup {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] :
I * J โŠ” I = I
theorem Ideal.mul_assoc {R : Type u} [Semiring R] {I J K : Ideal R} :
I * J * K = I * (J * K)
@[simp]
theorem Ideal.top_mul {R : Type u} [Semiring R] (I : Ideal R) :
theorem Ideal.mul_mono {R : Type u} [Semiring R] {I J K L : Ideal R} (hik : I โ‰ค K) (hjl : J โ‰ค L) :
I * J โ‰ค K * L
theorem Ideal.mul_mono_left {R : Type u} [Semiring R] {I J K : Ideal R} (h : I โ‰ค J) :
I * K โ‰ค J * K
theorem Ideal.mul_mono_right {R : Type u} [Semiring R] {I J K : Ideal R} (h : J โ‰ค K) :
I * J โ‰ค I * K
theorem Ideal.mul_sup {R : Type u} [Semiring R] (I J K : Ideal R) :
I * (J โŠ” K) = I * J โŠ” I * K
theorem Ideal.sup_mul {R : Type u} [Semiring R] (I J K : Ideal R) :
(I โŠ” J) * K = I * K โŠ” J * K
theorem Ideal.mul_iSup {R : Type u} [Semiring R] (I : Ideal R) {ฮน : Sort u_1} (J : ฮน โ†’ Ideal R) :
I * โจ† (i : ฮน), J i = โจ† (i : ฮน), I * J i
theorem Ideal.iSup_mul {R : Type u} [Semiring R] {ฮน : Sort u_1} (J : ฮน โ†’ Ideal R) (I : Ideal R) :
(โจ† (i : ฮน), J i) * I = โจ† (i : ฮน), J i * I
theorem Ideal.pow_le_pow_right {R : Type u} [Semiring R] {I : Ideal R} {m n : โ„•} (h : m โ‰ค n) :
I ^ n โ‰ค I ^ m
theorem Ideal.pow_le_self {R : Type u} [Semiring R] {I : Ideal R} {n : โ„•} (hn : n โ‰  0) :
I ^ n โ‰ค I
theorem Ideal.pow_right_mono {R : Type u} [Semiring R] {I J : Ideal R} (e : I โ‰ค J) (n : โ„•) :
I ^ n โ‰ค J ^ n
@[instance 100]
instance Ideal.IsTwoSided.instHMul {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] :
@[instance 100]
instance Ideal.IsTwoSided.instHPowNat {R : Type u} [Semiring R] {I : Ideal R} [I.IsTwoSided] (n : โ„•) :
theorem Ideal.IsTwoSided.pow_add {R : Type u} [Semiring R] {I : Ideal R} [I.IsTwoSided] (m n : โ„•) :
I ^ (m + n) = I ^ m * I ^ n
theorem Ideal.IsTwoSided.pow_succ {R : Type u} [Semiring R] {I : Ideal R} [I.IsTwoSided] (n : โ„•) :
I ^ (n + 1) = I * I ^ n
theorem Ideal.span_mul_span {R : Type u} [Semiring R] (S T : Set R) [(span S).IsTwoSided] :
span S * span T = span (S * T)
theorem Ideal.span_mul_span' {R : Type u} [Semiring R] (S T : Set R) [(span S).IsTwoSided] :
span S * span T = span (S * T)
theorem Ideal.mem_mul_span_singleton {R : Type u} [Semiring R] {x y : R} {I : Ideal R} [I.IsTwoSided] :
x โˆˆ I * span {y} โ†” โˆƒ z โˆˆ I, z * y = x
theorem Ideal.span_singleton_mul_left_inj {R : Type u} [Semiring R] {I J : Ideal R} [IsDomain R] [I.IsTwoSided] [J.IsTwoSided] {x : R} (hx : x โ‰  0) :
I * span {x} = J * span {x} โ†” I = J
theorem Ideal.mul_le_inf {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] :
I * J โ‰ค I โŠ“ J
theorem Ideal.sup_mul_eq_of_coprime_left {R : Type u} [Semiring R] {I J K : Ideal R} [I.IsTwoSided] (h : I โŠ” J = โŠค) :
I โŠ” J * K = I โŠ” K
theorem Ideal.sup_mul_eq_of_coprime_right {R : Type u} [Semiring R] {I J K : Ideal R} [J.IsTwoSided] (h : I โŠ” K = โŠค) :
I โŠ” J * K = I โŠ” J
theorem Ideal.mul_sup_eq_of_coprime_left {R : Type u} [Semiring R] {I J K : Ideal R} [J.IsTwoSided] (h : I โŠ” J = โŠค) :
I * K โŠ” J = K โŠ” J
theorem Ideal.mul_sup_eq_of_coprime_right {R : Type u} [Semiring R] {I J K : Ideal R} [I.IsTwoSided] (h : K โŠ” J = โŠค) :
I * K โŠ” J = I โŠ” J
theorem Ideal.sup_iInf_eq_top {R : Type u} [Semiring R] {I : Ideal R} {ฮน : Type u_1} {s : Finset ฮน} {J : ฮน โ†’ Ideal R} [โˆ€ (i : ฮน), (J i).IsTwoSided] (h : โˆ€ i โˆˆ s, I โŠ” J i = โŠค) :
I โŠ” โจ… i โˆˆ s, J i = โŠค
theorem Ideal.iInf_sup_eq_top {R : Type u} [Semiring R] {I : Ideal R} {ฮน : Type u_1} {s : Finset ฮน} {J : ฮน โ†’ Ideal R} [โˆ€ (i : ฮน), (J i).IsTwoSided] (h : โˆ€ i โˆˆ s, J i โŠ” I = โŠค) :
(โจ… i โˆˆ s, J i) โŠ” I = โŠค
theorem Ideal.sup_pow_eq_top {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] {n : โ„•} (h : I โŠ” J = โŠค) :
I โŠ” J ^ n = โŠค
theorem Ideal.sup_pow_eq_top' {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] {n : โ„•} (h : I โŠ” J = โŠค) :
I โŠ” J ^ n = โŠค
theorem Ideal.pow_sup_eq_top {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] {n : โ„•} (h : I โŠ” J = โŠค) :
I ^ n โŠ” J = โŠค
theorem Ideal.pow_sup_eq_top' {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] {n : โ„•} (h : I โŠ” J = โŠค) :
I ^ n โŠ” J = โŠค
theorem Ideal.pow_sup_pow_eq_top {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] {m n : โ„•} (h : I โŠ” J = โŠค) :
I ^ m โŠ” J ^ n = โŠค
theorem Ideal.pow_sup_pow_eq_top' {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] {m n : โ„•} (h : I โŠ” J = โŠค) :
I ^ m โŠ” J ^ n = โŠค
@[simp]
theorem Ideal.mul_top {R : Type u} [Semiring R] (I : Ideal R) [I.IsTwoSided] :
theorem Ideal.span_pair_mul_span_pair {R : Type u} [Semiring R] (w x y z : R) [(span {w, x}).IsTwoSided] :
span {w, x} * span {y, z} = span {w * y, w * z, x * y, x * z}
theorem Ideal.natCast_eq_top {R : Type u} [Semiring R] {n : โ„•} (hn : n โ‰  0) :
โ†‘n = โŠค

3 : Ideal R is not the ideal generated by 3 (which would be spelt Ideal.span {3}), it is simply 1 + 1 + 1 = โŠค.

theorem Ideal.pow_eq_zero_of_mem {R : Type u} [Semiring R] {I : Ideal R} {n m : โ„•} (hnI : I ^ n = 0) (hmn : n โ‰ค m) {x : R} (hx : x โˆˆ I) :
x ^ m = 0
theorem Ideal.mul_mem_mul_rev {R : Type u} [CommSemiring R] {I J : Ideal R} {r s : R} (hr : r โˆˆ I) (hs : s โˆˆ J) :
s * r โˆˆ I * J
theorem Ideal.prod_mem_prod {R : Type u} [CommSemiring R] {ฮน : Type u_2} {s : Finset ฮน} {I : ฮน โ†’ Ideal R} {x : ฮน โ†’ R} :
(โˆ€ i โˆˆ s, x i โˆˆ I i) โ†’ โˆ i โˆˆ s, x i โˆˆ โˆ i โˆˆ s, I i
theorem Ideal.sup_pow_add_le_pow_sup_pow {R : Type u} [CommSemiring R] {I J : Ideal R} {n m : โ„•} :
(I โŠ” J) ^ (n + m) โ‰ค I ^ n โŠ” J ^ m
theorem Ideal.mul_comm {R : Type u} [CommSemiring R] (I J : Ideal R) :
I * J = J * I
theorem Ideal.mem_span_singleton_mul {R : Type u} [CommSemiring R] {x y : R} {I : Ideal R} :
x โˆˆ span {y} * I โ†” โˆƒ z โˆˆ I, y * z = x
@[simp]
theorem Ideal.range_mul {R : Type u} [CommSemiring R] (A : Type u_2) [CommSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (a : A) :
theorem Ideal.le_span_singleton_mul_iff {R : Type u} [CommSemiring R] {x : R} {I J : Ideal R} :
I โ‰ค span {x} * J โ†” โˆ€ zI โˆˆ I, โˆƒ zJ โˆˆ J, x * zJ = zI
theorem Ideal.span_singleton_mul_le_iff {R : Type u} [CommSemiring R] {x : R} {I J : Ideal R} :
span {x} * I โ‰ค J โ†” โˆ€ z โˆˆ I, x * z โˆˆ J
theorem Ideal.span_singleton_mul_le_span_singleton_mul {R : Type u} [CommSemiring R] {x y : R} {I J : Ideal R} :
span {x} * I โ‰ค span {y} * J โ†” โˆ€ zI โˆˆ I, โˆƒ zJ โˆˆ J, x * zI = y * zJ
theorem Ideal.span_singleton_mul_right_inj {R : Type u} [CommSemiring R] {I J : Ideal R} [IsDomain R] {x : R} (hx : x โ‰  0) :
span {x} * I = span {x} * J โ†” I = J
theorem Ideal.eq_span_singleton_mul {R : Type u} [CommSemiring R] {x : R} (I J : Ideal R) :
I = span {x} * J โ†” (โˆ€ zI โˆˆ I, โˆƒ zJ โˆˆ J, x * zJ = zI) โˆง โˆ€ z โˆˆ J, x * z โˆˆ I
theorem Ideal.span_singleton_mul_eq_span_singleton_mul {R : Type u} [CommSemiring R] {x y : R} (I J : Ideal R) :
span {x} * I = span {y} * J โ†” (โˆ€ zI โˆˆ I, โˆƒ zJ โˆˆ J, x * zI = y * zJ) โˆง โˆ€ zJ โˆˆ J, โˆƒ zI โˆˆ I, x * zI = y * zJ
theorem Ideal.prod_span {R : Type u} [CommSemiring R] {ฮน : Type u_2} (s : Finset ฮน) (I : ฮน โ†’ Set R) :
โˆ i โˆˆ s, span (I i) = span (โˆ i โˆˆ s, I i)
theorem Ideal.prod_span_singleton {R : Type u} [CommSemiring R] {ฮน : Type u_2} (s : Finset ฮน) (I : ฮน โ†’ R) :
โˆ i โˆˆ s, span {I i} = span {โˆ i โˆˆ s, I i}
theorem Ideal.finset_inf_span_singleton {R : Type u} [CommSemiring R] {ฮน : Type u_2} (s : Finset ฮน) (I : ฮน โ†’ R) (hI : (โ†‘s).Pairwise (Function.onFun IsCoprime I)) :
(s.inf fun (i : ฮน) => span {I i}) = span {โˆ i โˆˆ s, I i}
theorem Ideal.iInf_span_singleton {R : Type u} [CommSemiring R] {ฮน : Type u_2} [Fintype ฮน] {I : ฮน โ†’ R} (hI : โˆ€ (i j : ฮน), i โ‰  j โ†’ IsCoprime (I i) (I j)) :
โจ… (i : ฮน), span {I i} = span {โˆ 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 : ฮน) => (I i).Coprime (I j)) :
โจ… (i : ฮน), span {โ†‘(I i)} = span {โ†‘(โˆ i : ฮน, I i)}
theorem Ideal.prod_le_inf {R : Type u} {ฮน : Type u_1} [CommSemiring R] {s : Finset ฮน} {f : ฮน โ†’ Ideal R} :
s.prod f โ‰ค s.inf f
theorem Ideal.mul_eq_inf_of_coprime {R : Type u} [CommSemiring R] {I J : Ideal R} (h : I โŠ” J = โŠค) :
I * 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 : โˆ€ i โˆˆ s, I โŠ” J i = โŠค) :
I โŠ” โˆ i โˆˆ s, J i = โŠค
theorem Ideal.sup_multiset_prod_eq_top {R : Type u} [CommSemiring R] {I : Ideal R} {s : Multiset (Ideal R)} (h : โˆ€ p โˆˆ s, I โŠ” p = โŠค) :
I โŠ” s.prod = โŠค
theorem Ideal.prod_sup_eq_top {R : Type u} {ฮน : Type u_1} [CommSemiring R] {I : Ideal R} {s : Finset ฮน} {J : ฮน โ†’ Ideal R} (h : โˆ€ i โˆˆ s, J i โŠ” I = โŠค) :
(โˆ i โˆˆ s, J i) โŠ” I = โŠค
@[simp]

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

theorem Ideal.isCoprime_iff_exists {R : Type u} [CommSemiring R] {I J : Ideal R} :
IsCoprime I J โ†” โˆƒ i โˆˆ I, โˆƒ j โˆˆ J, i + j = 1
theorem Ideal.coprime_of_no_prime_ge {R : Type u} [CommSemiring R] {I J : Ideal R} (h : โˆ€ (P : Ideal R), I โ‰ค P โ†’ J โ‰ค P โ†’ ยฌP.IsPrime) :
theorem Ideal.isCoprime_tfae {R : Type u} [CommSemiring R] {I J : Ideal R} :
[IsCoprime I J, Codisjoint I J, I + J = 1, โˆƒ i โˆˆ I, โˆƒ j โˆˆ J, i + j = 1, I โŠ” J = โŠค].TFAE
theorem IsCoprime.add_eq {R : Type u} [CommSemiring R] {I J : Ideal R} (h : IsCoprime I J) :
I + J = 1
theorem IsCoprime.exists {R : Type u} [CommSemiring R] {I J : Ideal R} (h : IsCoprime I J) :
โˆƒ i โˆˆ I, โˆƒ j โˆˆ J, i + j = 1
theorem IsCoprime.sup_eq {R : Type u} [CommSemiring R] {I J : Ideal R} (h : IsCoprime I J) :
I โŠ” J = โŠค
theorem Ideal.inf_eq_mul_of_isCoprime {R : Type u} [CommSemiring R] {I J : Ideal R} (coprime : IsCoprime I J) :
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 : โˆ€ j โˆˆ s, 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
    Instances For
      theorem Ideal.mem_radical_iff {R : Type u} [CommSemiring R] {I : Ideal R} {r : R} :
      r โˆˆ I.radical โ†” โˆƒ (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.

          theorem Ideal.IsRadical.radical {R : Type u} [CommSemiring R] {I : Ideal R} :
          I.IsRadical โ†’ I.radical = I

          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) :
          I.IsRadical โ†” โˆ€ (r : R), r ^ k โˆˆ I โ†’ r โˆˆ I
          theorem Ideal.mem_radical_of_pow_mem {R : Type u} [CommSemiring R] {I : Ideal R} {x : R} {m : โ„•} (hx : x ^ m โˆˆ I.radical) :
          theorem Ideal.disjoint_powers_iff_notMem {R : Type u} [CommSemiring R] {I : Ideal R} (y : R) (hI : I.IsRadical) :
          Disjoint โ†‘(Submonoid.powers y) โ†‘I โ†” y โˆ‰ I.toAddSubmonoid
          theorem Ideal.radical_sup {R : Type u} [CommSemiring R] (I J : Ideal R) :
          (I โŠ” J).radical = (I.radical โŠ” J.radical).radical
          theorem Ideal.radical_inf {R : Type u} [CommSemiring R] (I J : Ideal R) :
          (I โŠ“ J).radical = I.radical โŠ“ J.radical
          theorem Ideal.IsRadical.inf {R : Type u} [CommSemiring R] {I J : Ideal R} (hI : I.IsRadical) (hJ : J.IsRadical) :
          (I โŠ“ J).IsRadical

          Ideal.radical as an InfTopHom, bundling in that it distributes over inf.

          Equations
            Instances For
              theorem Ideal.radical_finset_inf {R : Type u} [CommSemiring R] {ฮน : Type u_2} {s : Finset ฮน} {f : ฮน โ†’ Ideal R} {i : ฮน} (hi : i โˆˆ s) (hs : โˆ€ โฆƒy : ฮนโฆ„, y โˆˆ s โ†’ (f y).radical = (f i).radical) :
              (s.inf f).radical = (f i).radical
              theorem Ideal.radical_iInf_le {R : Type u} [CommSemiring R] {ฮน : Sort u_2} (I : ฮน โ†’ Ideal R) :
              (โจ… (i : ฮน), I i).radical โ‰ค โจ… (i : ฮน), (I i).radical

              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 : ฮน), (I i).IsRadical) :
              (โจ… (i : ฮน), I i).IsRadical
              theorem Ideal.radical_mul {R : Type u} [CommSemiring R] (I J : Ideal R) :
              (I * J).radical = I.radical โŠ“ J.radical
              theorem Ideal.radical_pow {R : Type u} [CommSemiring R] (I : Ideal R) {n : โ„•} :
              n โ‰  0 โ†’ (I ^ n).radical = I.radical
              theorem Ideal.IsPrime.inf_le {R : Type u} [CommSemiring R] {I J P : Ideal R} (hp : P.IsPrime) :
              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 : P.IsPrime) :
              s.prod โ‰ค 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 : P.IsPrime) :
              (Multiset.map f s).prod โ‰ค P โ†” โˆƒ i โˆˆ s, f i โ‰ค P
              theorem Ideal.IsPrime.pow_le_iff {R : Type u} [CommSemiring R] {I P : Ideal R} [hP : P.IsPrime] {n : โ„•} (hn : n โ‰  0) :
              theorem Ideal.IsPrime.le_of_pow_le {R : Type u} [CommSemiring R] {I P : Ideal R} [hP : P.IsPrime] {n : โ„•} (h : I ^ n โ‰ค P) :
              theorem Ideal.IsPrime.prod_le {R : Type u} {ฮน : Type u_1} [CommSemiring R] {s : Finset ฮน} {f : ฮน โ†’ Ideal R} {P : Ideal R} (hp : P.IsPrime) :
              s.prod f โ‰ค P โ†” โˆƒ i โˆˆ s, f i โ‰ค P
              theorem Ideal.IsPrime.prod_mem_iff {R : Type u} {ฮน : Type u_1} [CommSemiring R] {s : Finset ฮน} {x : ฮน โ†’ R} {p : Ideal R} [hp : p.IsPrime] :
              โˆ i โˆˆ s, x i โˆˆ p โ†” โˆƒ i โˆˆ s, x i โˆˆ p

              The product of a finite number of elements in the commutative semiring R lies in the prime ideal p if and only if at least one of those elements is in p.

              theorem Ideal.IsPrime.prod_mem_iff_exists_mem {R : Type u} [CommSemiring R] {I : Ideal R} (hI : I.IsPrime) (s : Finset R) :
              โˆ x โˆˆ s, 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 : P.IsPrime) :
              s.inf f โ‰ค P โ†” โˆƒ i โˆˆ s, f i โ‰ค P
              theorem Ideal.eq_inf_of_isPrime_inf {R : Type u} {ฮน : Type u_1} [CommSemiring R] {s : Finset ฮน} {f : ฮน โ†’ Ideal R} (hp : (s.inf f).IsPrime) :
              โˆƒ i โˆˆ s, f i = s.inf f
              theorem Ideal.IsPrime.notMem_of_isCoprime_of_mem {R : Type u} [CommSemiring R] {I : Ideal R} [I.IsPrime] {x y : R} (h : IsCoprime x y) (hx : x โˆˆ I) :
              y โˆ‰ I
              theorem Ideal.subset_union {R : Type u} [Ring R] {I J 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 : โˆ€ i โˆˆ s, (f i).IsPrime) {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 : โˆ€ i โˆˆ s, i โ‰  a โ†’ i โ‰  b โ†’ (f i).IsPrime) {I : Ideal R} :
              โ†‘I โІ โ‹ƒ i โˆˆ โ†‘s, โ†‘(f i) โ†” โˆƒ i โˆˆ s, I โ‰ค f i

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

              theorem Ideal.subset_union_prime_finite {R : Type u_2} {ฮน : Type u_3} [CommRing R] {s : Set ฮน} (hs : s.Finite) {f : ฮน โ†’ Ideal R} (a b : ฮน) (hp : โˆ€ i โˆˆ s, i โ‰  a โ†’ i โ‰  b โ†’ (f i).IsPrime) {I : Ideal R} :
              โ†‘I โІ โ‹ƒ i โˆˆ s, โ†‘(f i) โ†” โˆƒ i โˆˆ s, I โ‰ค f i

              Another version of prime avoidance using Set.Finite instead of Finset.

              theorem Ideal.le_of_dvd {R : Type u} [CommSemiring R] {I J : Ideal R} :
              I โˆฃ J โ†’ J โ‰ค I

              If I divides J, then I contains J.

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

              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.linearCombination 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) :
                  (finsuppTotal ฮน M I v) f = f.sum 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) :
                  (finsuppTotal ฮน M I v) f = โˆ‘ 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} :
                  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), (c.sum fun (i : ฮฑ) (a : R) => a * v i) = x
                  theorem Ideal.mem_span_range_iff_exists_fun {ฮฑ : Type u_1} {R : Type u_2} [Semiring R] [Fintype ฮฑ] {x : R} {v : ฮฑ โ†’ R} :
                  x โˆˆ span (Set.range v) โ†” โˆƒ (c : ฮฑ โ†’ R), โˆ‘ 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.

                  instance Submodule.algebraIdeal {R : Type u} [CommSemiring R] {A : Type u_1} [Semiring A] [Algebra R A] :
                  Equations
                    def Submodule.mapAlgHom {R : Type u} [CommSemiring R] {A : Type u_1} {B : Type u_2} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A โ†’โ‚[R] B) :

                    Submonoid.map as an AlgHom, when applied to an AlgHom.

                    Equations
                      Instances For
                        @[simp]
                        theorem Submodule.coe_mapAlgHom_apply {R : Type u} [CommSemiring R] {A : Type u_1} {B : Type u_2} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A โ†’โ‚[R] B) (p : Submodule R A) :
                        โ†‘((mapAlgHom f) p) = โ‡‘f '' โ†‘p
                        def Submodule.mapAlgEquiv {R : Type u} [CommSemiring R] {A : Type u_1} {B : Type u_2} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A โ‰ƒโ‚[R] B) :

                        Submonoid.map as an AlgEquiv, when applied to an AlgEquiv.

                        Equations
                          Instances For
                            @[simp]
                            theorem Submodule.coe_mapAlgEquiv_symm_apply {R : Type u} [CommSemiring R] {A : Type u_1} {B : Type u_2} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A โ‰ƒโ‚[R] B) (a : Submodule R B) :
                            โ†‘((mapAlgEquiv f).symm a) = (fun (a : B) => f.symm a) '' โ†‘a
                            @[simp]
                            theorem Submodule.coe_mapAlgEquiv_apply {R : Type u} [CommSemiring R] {A : Type u_1} {B : Type u_2} [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A โ‰ƒโ‚[R] B) (aโœ : Submodule R A) :
                            โ†‘((mapAlgEquiv f) aโœ) = (fun (a : A) => f a) '' โ†‘aโœ
                            theorem Ideal.exists_subset_radical_span_sup_of_subset_radical_sup {R : Type u_1} [CommSemiring R] (s : Set R) (I J : Ideal R) (hs : s โІ โ†‘(I โŠ” J).radical) :
                            โˆƒ (t : โ†‘s โ†’ R), Set.range t โІ โ†‘I โˆง s โІ โ†‘(span (Set.range t) โŠ” J).radical