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.

theorem Submodule.smul_le_right {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} :
I N N
theorem Submodule.map_le_smul_top {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (I : Ideal R) (f : R →ₗ[R] M) :
map f I I
@[simp]
theorem Submodule.top_smul {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (N : Submodule R M) :
N = N
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) :
x I x I 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) :
I comap f S comap f (I S)
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) yI, y m = x
theorem Submodule.span_smul_span {R : Type u} {M : Type v} [Semiring R] [AddCommMonoid M] [Module R M] (S : Set R) (T : Set M) [(Ideal.span S).IsTwoSided] :
Ideal.span S span R T = span R (S T)
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.smul_eq_map₂ {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {I : Ideal R} {N : Submodule R M} :
I N = map₂ (LinearMap.lsmul R M) I N
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) :
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 = IJ
@[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) :
s.sum f = s.sup f
@[simp]
theorem Ideal.one_eq_top {R : Type u} [Semiring R] :
1 =
theorem Ideal.add_eq_one_iff {R : Type u} [Semiring R] {I J : Ideal R} :
I + J = 1 iI, jJ, 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.bot_pow {R : Type u} [Semiring R] {n : } (hn : n 0) :
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 rI, sJ, r * s K
theorem Ideal.mul_le_left {R : Type u} [Semiring R] {I J : Ideal R} :
I * J J
@[simp]
theorem Ideal.sup_mul_left_self {R : Type u} [Semiring R] {I J : Ideal R} :
IJ * I = I
@[simp]
theorem Ideal.mul_left_self_sup {R : Type u} [Semiring R] {I J : Ideal R} :
J * II = I
theorem Ideal.mul_le_right {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] :
I * J I
@[simp]
theorem Ideal.sup_mul_right_self {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] :
II * J = I
@[simp]
theorem Ideal.mul_right_self_sup {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] :
I * JI = I
theorem Ideal.mul_assoc {R : Type u} [Semiring R] {I J K : Ideal R} :
I * J * K = I * (J * K)
theorem Ideal.mul_bot {R : Type u} [Semiring R] (I : Ideal R) :
theorem Ideal.bot_mul {R : Type u} [Semiring R] (I : Ideal R) :
@[simp]
theorem Ideal.top_mul {R : Type u} [Semiring R] (I : Ideal R) :
* I = I
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 * (JK) = I * JI * K
theorem Ideal.sup_mul {R : Type u} [Semiring R] (I J K : Ideal R) :
(IJ) * K = I * KJ * 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.mul_one {R : Type u} [Semiring R] {I : Ideal R} [I.IsTwoSided] :
I * 1 = I
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
@[simp]
theorem Ideal.mul_eq_bot {R : Type u} [Semiring R] {I J : Ideal R} [NoZeroDivisors R] :
I * J = I = J =
instance Ideal.instIsTorsionFreeSubtypeMemSubmodule {R : Type u} [Semiring R] {S : Type u_1} {A : Type u_2} [Semiring S] [SMul R S] [AddCommMonoid A] [Module R A] [Module S A] [IsScalarTower R S A] [Module.IsTorsionFree R A] {I : Submodule S A} :
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.span_singleton_pow {R : Type u} [Semiring R] (s : R) [(span {s}).IsTwoSided] (n : ) :
span {s} ^ n = span {s ^ n}
theorem Ideal.mem_mul_span_singleton {R : Type u} [Semiring R] {x y : R} {I : Ideal R} [I.IsTwoSided] :
x I * span {y} zI, z * y = x
theorem Ideal.span_singleton_mul_left_mono {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.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 IJ
theorem Ideal.sup_mul_eq_of_coprime_left {R : Type u} [Semiring R] {I J K : Ideal R} [I.IsTwoSided] (h : IJ = ) :
IJ * K = IK
theorem Ideal.sup_mul_eq_of_coprime_right {R : Type u} [Semiring R] {I J K : Ideal R} [J.IsTwoSided] (h : IK = ) :
IJ * K = IJ
theorem Ideal.mul_sup_eq_of_coprime_left {R : Type u} [Semiring R] {I J K : Ideal R} [J.IsTwoSided] (h : IJ = ) :
I * KJ = KJ
theorem Ideal.mul_sup_eq_of_coprime_right {R : Type u} [Semiring R] {I J K : Ideal R} [I.IsTwoSided] (h : KJ = ) :
I * KJ = IJ
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 : is, IJ i = ) :
Iis, 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 : is, J iI = ) :
(⨅ is, J i)I =
theorem Ideal.sup_pow_eq_top {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] {n : } (h : IJ = ) :
IJ ^ n =
theorem Ideal.sup_pow_eq_top' {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] {n : } (h : IJ = ) :
IJ ^ n =
theorem Ideal.pow_sup_eq_top {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] {n : } (h : IJ = ) :
I ^ nJ =
theorem Ideal.pow_sup_eq_top' {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] {n : } (h : IJ = ) :
I ^ nJ =
theorem Ideal.pow_sup_pow_eq_top {R : Type u} [Semiring R] {I J : Ideal R} [I.IsTwoSided] {m n : } (h : IJ = ) :
I ^ mJ ^ n =
theorem Ideal.pow_sup_pow_eq_top' {R : Type u} [Semiring R] {I J : Ideal R} [J.IsTwoSided] {m n : } (h : IJ = ) :
I ^ mJ ^ n =
@[simp]
theorem Ideal.mul_top {R : Type u} [Semiring R] (I : Ideal R) [I.IsTwoSided] :
I * = I
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.top_pow (R : Type u) [Semiring R] (n : ) :
@[simp]
theorem Ideal.pow_eq_top_iff {R : Type u} [Semiring R] {I : Ideal R} {n : } :
I ^ n = I = n = 0
theorem Ideal.natCast_eq_top {R : Type u} [Semiring R] {n : } (hn : n 0) :
n =
theorem Ideal.ofNat_eq_top {R : Type u} [Semiring R] {n : } [n.AtLeastTwo] :

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} :
(∀ is, x i I i)is, x i is, I i
theorem Ideal.sup_pow_add_le_pow_sup_pow {R : Type u} [CommSemiring R] {I J : Ideal R} {n m : } :
(IJ) ^ (n + m) I ^ nJ ^ 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 zI, 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.range_mul' {R : Type u} [CommSemiring R] (a : R) :
theorem Ideal.le_span_singleton_mul_iff {R : Type u} [CommSemiring R] {x : R} {I J : Ideal R} :
I span {x} * J zII, zJJ, 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 zI, 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 zII, zJJ, x * zI = y * zJ
theorem Ideal.span_singleton_mul_right_mono {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.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.span_singleton_mul_right_injective {R : Type u} [CommSemiring R] [IsDomain R] {x : R} (hx : x 0) :
Function.Injective fun (x_1 : Ideal R) => 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 * span {x}
theorem Ideal.eq_span_singleton_mul {R : Type u} [CommSemiring R] {x : R} (I J : Ideal R) :
I = span {x} * J (∀ zII, zJJ, x * zJ = zI) zJ, 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 (∀ zII, zJJ, x * zI = y * zJ) zJJ, zII, x * zI = y * zJ
theorem Ideal.prod_span {R : Type u} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (I : ιSet R) :
is, span (I i) = span (∏ is, I i)
theorem Ideal.prod_span_singleton {R : Type u} [CommSemiring R] {ι : Type u_2} (s : Finset ι) (I : ιR) :
is, span {I i} = span {is, I i}
@[simp]
theorem Ideal.multiset_prod_span_singleton {R : Type u} [CommSemiring R] (m : Multiset R) :
(Multiset.map (fun (x : R) => span {x}) m).prod = span {m.prod}
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 {is, 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 : ι), 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 : IJ = ) :
I * J = IJ
theorem Ideal.sup_prod_eq_top {R : Type u} {ι : Type u_1} [CommSemiring R] {I : Ideal R} {s : Finset ι} {J : ιIdeal R} (h : is, IJ i = ) :
Iis, J i =
theorem Ideal.sup_multiset_prod_eq_top {R : Type u} [CommSemiring R] {I : Ideal R} {s : Multiset (Ideal R)} (h : ps, Ip = ) :
Is.prod =
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 iI = ) :
(∏ is, 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_of_isMaximal {R : Type u} [CommSemiring R] {I J : Ideal R} [I.IsMaximal] [J.IsMaximal] (ne : I J) :
theorem Ideal.isCoprime_iff_add {R : Type u} [CommSemiring R] {I J : Ideal R} :
IsCoprime I J I + J = 1
theorem Ideal.isCoprime_iff_exists {R : Type u} [CommSemiring R] {I J : Ideal R} :
IsCoprime I J iI, jJ, i + j = 1
theorem Ideal.isCoprime_iff_sup_eq {R : Type u} [CommSemiring R] {I J : Ideal R} :
IsCoprime I J IJ =
theorem Ideal.coprime_of_no_prime_ge {R : Type u} [CommSemiring R] {I J : Ideal R} (h : ∀ (P : Ideal R), I PJ 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, iI, jJ, i + j = 1, IJ = ].TFAE
theorem IsCoprime.codisjoint {R : Type u} [CommSemiring R] {I J : Ideal R} (h : IsCoprime I J) :
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) :
iI, jJ, i + j = 1
theorem IsCoprime.sup_eq {R : Type u} [CommSemiring R] {I J : Ideal R} (h : IsCoprime I J) :
IJ =
theorem Ideal.inf_eq_mul_of_isCoprime {R : Type u} [CommSemiring R] {I J : Ideal R} (coprime : IsCoprime I J) :
IJ = 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 (⨅ js, 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
  • I.radical = { 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 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
      theorem Ideal.le_radical {R : Type u} [CommSemiring R] {I : Ideal R} :
      theorem Ideal.radical_eq_iff {R : Type u} [CommSemiring R] {I : Ideal R} :

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

      theorem Ideal.IsRadical.radical {R : Type u} [CommSemiring R] {I : Ideal R} :
      I.IsRadicalI.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 Ir I
      theorem Ideal.radical_mono {R : Type u} [CommSemiring R] {I J : Ideal R} (H : I J) :
      @[simp]
      theorem Ideal.IsRadical.radical_le_iff {R : Type u} [CommSemiring R] {I J : Ideal R} (hJ : J.IsRadical) :
      I.radical J I J
      @[simp]
      theorem Ideal.radical_eq_top {R : Type u} [CommSemiring R] {I : Ideal R} :
      theorem Ideal.IsPrime.isRadical {R : Type u} [CommSemiring R] {I : Ideal R} (H : I.IsPrime) :
      theorem Ideal.IsPrime.radical {R : Type u} [CommSemiring R] {I : Ideal R} (H : I.IsPrime) :
      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) :
      theorem Ideal.radical_sup {R : Type u} [CommSemiring R] (I J : Ideal R) :
      (IJ).radical = (I.radicalJ.radical).radical
      theorem Ideal.radical_inf {R : Type u} [CommSemiring R] (I J : Ideal R) :
      (IJ).radical = I.radicalJ.radical
      theorem Ideal.IsRadical.inf {R : Type u} [CommSemiring R] {I J : Ideal R} (hI : I.IsRadical) (hJ : J.IsRadical) :
      (IJ).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.radicalJ.radical
        theorem Ideal.IsPrime.radical_le_iff {R : Type u} [CommSemiring R] {I J : Ideal R} (hJ : J.IsPrime) :
        I.radical J I J
        theorem Ideal.radical_pow {R : Type u} [CommSemiring R] (I : Ideal R) {n : } :
        n 0(I ^ n).radical = I.radical
        theorem Ideal.IsPrime.mul_le {R : Type u} [CommSemiring R] {I J P : Ideal R} (hp : P.IsPrime) :
        I * J P I P J P
        theorem Ideal.IsPrime.inf_le {R : Type u} [CommSemiring R] {I J P : Ideal R} (hp : P.IsPrime) :
        IJ 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 Is, 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 is, f i P
        theorem Ideal.IsPrime.multiset_prod_mem_iff_exists_mem {R : Type u} [CommSemiring R] {I : Ideal R} (hI : I.IsPrime) (s : Multiset R) :
        s.prod I ps, p I
        theorem Ideal.IsPrime.pow_le_iff {R : Type u} [CommSemiring R] {I P : Ideal R} [hP : P.IsPrime] {n : } (hn : n 0) :
        I ^ n P I P
        theorem Ideal.IsPrime.le_of_pow_le {R : Type u} [CommSemiring R] {I P : Ideal R} [hP : P.IsPrime] {n : } (h : I ^ n P) :
        I 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 is, 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] :
        is, x i p is, 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) :
        xs, x I ps, 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 is, 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) :
        is, 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) :
        yI
        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 : is, (f i).IsPrime) {I : Ideal R} :
        I (f a) (f b) is, (f i) I f a I f b is, 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 b(f i).IsPrime) {I : Ideal R} :
        I is, (f i) is, 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 : is, i ai b(f i).IsPrime) {I : Ideal R} :
        I is, (f i) is, 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 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.dvd_bot {R : Type u} [CommSemiring R] {I : Ideal R} :
        @[simp]
        theorem Ideal.isUnit_iff {R : Type u} [CommSemiring R] {I : Ideal R} :

        See also isUnit_iff_eq_one.

        @[implicit_reducible]
        Equations
        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} :
          @[implicit_reducible]
          noncomputable instance Ideal.instDecidableEqAssociates {R : Type u_1} [CommSemiring R] :

          Associates (Ideal R) almost never has decidable equality. We add a global instance that Associates (Ideal R) has decidable equality, coming from the choice axiom, so that we don't have to provide [DecidableEq (Associates (Ideal R))] arguments in lemma statements.

          Equations
          @[implicit_reducible]

          Associates (Ideal R) almost never has a decidable reducibility check. We add a global instance that members of Associates (Ideal R) have decidable reducibility, coming from the choice axiom, so that we don't have to provide this as an arguments in lemma statements.

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

          @[implicit_reducible]
          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) :
          @[simp]
          theorem Submodule.smul_le_span {R : Type u} [CommSemiring R] (s : Set R) (I : Ideal R) :
          @[implicit_reducible]
          instance Submodule.algebraIdeal {R : Type u} [CommSemiring R] {A : Type u_1} [Semiring A] [Algebra R A] :
          Equations
          • One or more equations did not get rendered due to their size.
          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
            • One or more equations did not get rendered due to their size.
            Instances For
              @[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✝
              @[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
              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 (IJ).radical) :
              ∃ (t : sR), Set.range t I s (span (Set.range t)J).radical