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 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 ↔ ∀ (n : M), n ∈ N → 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 ↔ ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → r • n ∈ P
    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 : M → Prop} {x : M} (H : x ∈ I • N) (Hb : (r : R) → r ∈ I → (n : M) → n ∈ N → p (r • n)) (H1 : (x y : M) → p x → p y → p (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 • N → Prop} (Hb : (r : R) → (hr : r ∈ I) → (n : M) → (hn : n ∈ N) → p (r • n) (_ : r • n ∈ I • N)) (H1 : (x : M) → (hx : x ∈ I • N) → (y : M) → (hy : y ∈ I • N) → p x hx → p y hy → p (x + y) (_ : x + y ∈ I • N)) :
    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, 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_3} {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_3} {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 : R) (_ : s ∈ S) (t : M) (_ : 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 : R) (_ : a ∈ I) (b : M) (_ : 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_3} (f : ι → M) (x : M) :
    x ∈ I • Submodule.span R (Set.range f) ↔ ∃ a x, (Finsupp.sum a fun i c => 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_3} (s : Set ι) (f : ι → M) (x : M) :
    x ∈ I • Submodule.span R (f '' s) ↔ ∃ a x, (Finsupp.sum a fun i c => 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 : { x // 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 ↔ ∀ (p : M), p ∈ P → 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
      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 => x • x_1 }
      @[simp]
      theorem Ideal.one_eq_top {R : Type u} [CommSemiring R] :
      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} :
      (∀ (i : ι), i ∈ s → 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 ↔ ∀ (r : R), r ∈ I → ∀ (s : R), s ∈ J → 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 : R) (_ : s ∈ S) (t : R) (_ : 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, 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, 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 ↔ ∀ (zI : R), zI ∈ I → ∃ zJ, 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 ↔ ∀ (z : R), z ∈ I → 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 ↔ ∀ (zI : R), zI ∈ I → ∃ zJ, 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 x_1 => x * x_1) (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 ↔ (∀ (zI : R), zI ∈ I → ∃ zJ, zJ ∈ J ∧ x * zJ = zI) ∧ ∀ (z : R), z ∈ J → 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 ↔ (∀ (zI : R), zI ∈ I → ∃ zJ, zJ ∈ J ∧ x * zI = y * zJ) ∧ ∀ (zJ : R), zJ ∈ J → ∃ zI, 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 ≠ j → IsCoprime (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 : ∀ (i : ι), i ∈ s → 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 : ∀ (i : ι), i ∈ s → I ⊔ J i = ⊤) :
      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 : ∀ (i : ι), i ∈ s → 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 : ∀ (i : ι), i ∈ s → J i ⊔ 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 {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_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (e : I ≤ J) (n : ℕ) :
      I ^ n ≤ J ^ n
      theorem Ideal.mul_eq_bot {R : Type u_2} [CommSemiring R] [NoZeroDivisors R] {I : Ideal R} {J : Ideal R} :
      I * J = ⊥ ↔ I = ⊥ ∨ J = ⊥
      theorem Ideal.prod_eq_bot {R : Type u_2} [CommRing R] [IsDomain R] {s : Multiset (Ideal R)} :
      Multiset.prod s = ⊥ ↔ ∃ I, 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}
      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
      • One or more equations did not get rendered due to their size.
      Instances For
        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.radical_mono {R : Type u} [CommSemiring R] {I : Ideal R} {J : Ideal R} (H : I ≤ J) :
          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 : ℕ) (H : n > 0) :
          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) (hne : s ≠ 0) :
          Multiset.prod s ≤ P ↔ ∃ I, 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) (hne : s ≠ 0) :
          Multiset.prod (Multiset.map f s) ≤ P ↔ ∃ i, 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) (hne : Finset.Nonempty s) :
          Finset.prod s f ≤ P ↔ ∃ i, i ∈ s ∧ f i ≤ P
          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) (hsne : Finset.Nonempty s) :
          Finset.inf s f ≤ P ↔ ∃ i, 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 : ∀ (i : ι), i ∈ s → Ideal.IsPrime (f i)) {I : Ideal R} :
          ↑I ⊆ ↑(f a) ∪ ↑(f b) ∪ ⋃ (i : ι) (_ : i ∈ ↑s), ↑(f i) ↔ I ≤ f a ∨ I ≤ f b ∨ ∃ i, 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 : ι), i ∈ s → i ≠ a → i ≠ b → Ideal.IsPrime (f i)) {I : Ideal R} :
          ↑I ⊆ ⋃ (i : ι) (_ : i ∈ ↑s), ↑(f i) ↔ ∃ 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 ∣ 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.

          theorem Ideal.isUnit_iff {R : Type u} [CommSemiring R] {I : Ideal R} :
          Equations
          • Ideal.uniqueUnits = { toInhabited := { default := 1 }, uniq := (_ : ∀ (u : (Ideal R)ˣ), u = default) }
          def Ideal.map {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [rc : RingHomClass 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] [rc : RingHomClass F R S] (f : F) (I : Ideal S) :

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

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Ideal.coe_comap {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring 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] [rc : RingHomClass 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] [rc : RingHomClass 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] [rc : RingHomClass F R S] (f : F) (I : Ideal R) (x : { x // 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] [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] [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] [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] [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] [rc : RingHomClass F R S] (f : F) {G : Type u_2} [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] [rc : RingHomClass F R S] (f : F) {G : Type u_2} [rcg : RingHomClass 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] [rc : RingHomClass F R S] (f : F) {G : Type u_2} [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] [rc : RingHomClass F R S] (f : F) {G : Type u_2} [rcg : RingHomClass 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] [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] [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] [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] [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] [rc : RingHomClass F R S] {f : F} {I : Ideal R} {K : Ideal S} :
              I ≤ Ideal.comap f K → Ideal.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] [rc : RingHomClass F R S] {f : F} {I : Ideal R} {K : Ideal S} :
              Ideal.map f I ≤ K → I ≤ Ideal.comap f K
              theorem Ideal.le_comap_map {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring 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] [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] [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] [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] [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] [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] [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] [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] [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] [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] [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] [rc : RingHomClass F R S] (f : F) (s : Set (Ideal R)) :
              Ideal.map f (sSup s) = ⨆ (I : Ideal R) (_ : I ∈ s), Ideal.map f I
              theorem Ideal.comap_sInf {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring S] [rc : RingHomClass F R S] (f : F) (s : Set (Ideal S)) :
              Ideal.comap f (sInf s) = ⨅ (I : Ideal 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] [rc : RingHomClass F R S] (f : F) (s : Set (Ideal S)) :
              Ideal.comap f (sInf s) = ⨅ (I : Ideal R) (_ : I ∈ Ideal.comap f '' s), I
              theorem Ideal.comap_isPrime {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring 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] [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] [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] [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] [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
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem Ideal.map_surjective_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Semiring R] [Semiring 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] [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] [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] [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] [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] [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] [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] [rc : RingHomClass F R S] (f : F) (hf : Function.Surjective ↑f) {I : Ideal R} {y : S} :
                y ∈ Ideal.map f I ↔ ∃ x, 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] [rc : RingHomClass F R S] (f : F) {I : Ideal R} {K : Ideal S} (hf : Function.Surjective ↑f) :
                Ideal.comap f K ≤ I → K ≤ 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] [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] [rc : RingHomClass F R S] (f : F) (hf : Function.Injective ↑f) :
                theorem Ideal.comap_map_of_surjective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring 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] [RingHomClass F R S] (f : F) (hf : Function.Surjective ↑f) :
                Ideal S ≃o { p // 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] [RingHomClass F R S] (f : F) (hf : Function.Surjective ↑f) :

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

                  Equations
                  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] [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] [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] [RingHomClass F R S] (f : F) (hf : Function.Surjective ↑f) (I : Ideal S) (J : Ideal S) :
                    @[simp]
                    theorem Ideal.map_of_equiv {R : Type u} {S : Type v} [Ring R] [Ring 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 (map f.symm) = I.

                    @[simp]
                    theorem Ideal.comap_of_equiv {R : Type u} {S : Type v} [Ring R] [Ring 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.symm (comap f) = I.

                    theorem Ideal.map_comap_of_equiv {R : Type u} {S : Type v} [Ring R] [Ring 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.

                    def Ideal.relIsoOfBijective {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [RingHomClass F R S] (f : F) (hf : Function.Bijective ↑f) :

                    Special case of the correspondence theorem for isomorphic rings

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem Ideal.comap_le_iff_le_map {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring 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] [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] [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] [rc : RingHomClass F R S] (f : F) (I : Ideal R) :
                      ↑(Ideal.mapHom f) I = Ideal.map f I
                      def Ideal.mapHom {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing S] [rc : RingHomClass F R S] (f : F) :

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

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem Ideal.map_pow {R : Type u} {S : Type v} {F : Type u_1} [CommRing R] [CommRing 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] [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] [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] [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] [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] [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) :
                          (ι →₀ { x // x ∈ 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 : ι →₀ { x // x ∈ I }) :
                            ↑(Ideal.finsuppTotal ι M I v) f = Finsupp.sum f fun i x => ↑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 : ι →₀ { x // x ∈ 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 { x // x ∈ 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) :
                              AddHom.toFun (↑(Basis.constr b N)).toAddHom (Subtype.val ∘ ↑(Ideal.basisSpanSingleton b hx)) = ↑(Algebra.lmul R S) 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 { x // x ∈ I }) {x : S} :
                              x ∈ I ↔ ∃ c, x = Finsupp.sum c fun i x => 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 { x // x ∈ I }) {x : S} :
                              x ∈ I ↔ ∃ c, 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] [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] [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] [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] [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] [rcf : RingHomClass F R S] [Nontrivial S] (f : 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] [rcf : RingHomClass F R S] [Nontrivial S] (f : F) :
                                theorem RingHom.injective_iff_ker_eq_bot {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Semiring 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] [rc : RingHomClass F R S] (f : F) :
                                RingHom.ker f = ⊥ ↔ ∀ (x : R), ↑f x = 0 → x = 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} [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] [rc : RingHomClass F R S] (f : F) {x : R} {y : R} :
                                x - y ∈ RingHom.ker f ↔ ↑f x = ↑f y
                                theorem RingHom.ker_isPrime {R : Type u} {S : Type v} {F : Type u_1} [Ring R] [Ring S] [IsDomain 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] [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] [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] [rc : RingHomClass F R S] {K : Ideal S} (f : F) :
                                theorem Ideal.map_sInf {R : Type u_1} {S : Type u_2} {F : Type u_3} [Ring R] [Ring S] [rc : RingHomClass F R S] {A : Set (Ideal R)} {f : F} (hf : Function.Surjective ↑f) :
                                (∀ (J : Ideal R), J ∈ A → 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] [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] [rc : RingHomClass F R S] {I : Ideal R} {f : F} (hf : Function.Injective ↑f) :
                                theorem Ideal.map_isPrime_of_equiv {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] {F' : Type u_4} [RingEquivClass F' R S] (f : F') {I : Ideal R} [Ideal.IsPrime I] :
                                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
                                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 : B → A) (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 : B → A) (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 : B → A) (hf : Function.RightInverse f_inv ↑f) :
                                  { g // 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 // 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 : B → A) (hf : Function.RightInverse f_inv ↑f) (g : { g // 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 : B → A) (hf : Function.RightInverse f_inv ↑f) (g : { g // 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 : B → A) (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 }