Module docstring
{"# The lattice of ideals in a ring
Some basic results on lattice operations on ideals: ⊥, ⊤, ⊔, ⊓.
TODO
Support right ideals, and two-sided ideals over non-commutative rings. "}
{"# The lattice of ideals in a ring
Some basic results on lattice operations on ideals: ⊥, ⊤, ⊔, ⊓.
Support right ideals, and two-sided ideals over non-commutative rings. "}
Ideal.instIsTwoSidedBot
      instance
     : IsTwoSided (⊥ : Ideal α)
        instance (priority := low) : IsTwoSided (⊥ : Ideal α) :=
  ⟨fun _ h ↦ by rw [h, zero_mul]; exact zero_mem _⟩
        Ideal.instIsTwoSidedTop
      instance
     : IsTwoSided (⊤ : Ideal α)
        instance (priority := low) : IsTwoSided (⊤ : Ideal α) := ⟨fun _ _ ↦ trivial⟩
        Ideal.instIsTwoSidedIInf
      instance
     {ι} (I : ι → Ideal α) [∀ i, (I i).IsTwoSided] : (⨅ i, I i).IsTwoSided
        instance (priority := low) {ι} (I : ι → Ideal α) [∀ i, (I i).IsTwoSided] : (⨅ i, I i).IsTwoSided :=
  ⟨fun _ h ↦ (Submodule.mem_iInf _).mpr (mul_mem_right _ _ <| (Submodule.mem_iInf _).mp h ·)⟩
        Ideal.ne_top_iff_one
      theorem
     : I ≠ ⊤ ↔ (1 : α) ∉ I
        theorem ne_top_iff_one : I ≠ ⊤I ≠ ⊤ ↔ (1 : α) ∉ I :=
  not_congr I.eq_top_iff_one
        Ideal.mem_sup_left
      theorem
     {S T : Ideal R} : ∀ {x : R}, x ∈ S → x ∈ S ⊔ T
        theorem mem_sup_left {S T : Ideal R} : ∀ {x : R}, x ∈ S → x ∈ S ⊔ T :=
  @le_sup_left _ _ S T
        Ideal.mem_sup_right
      theorem
     {S T : Ideal R} : ∀ {x : R}, x ∈ T → x ∈ S ⊔ T
        theorem mem_sup_right {S T : Ideal R} : ∀ {x : R}, x ∈ T → x ∈ S ⊔ T :=
  @le_sup_right _ _ S T
        Ideal.mem_iSup_of_mem
      theorem
     {ι : Sort*} {S : ι → Ideal R} (i : ι) : ∀ {x : R}, x ∈ S i → x ∈ iSup S
        theorem mem_iSup_of_mem {ι : Sort*} {S : ι → Ideal R} (i : ι) : ∀ {x : R}, x ∈ S i → x ∈ iSup S :=
  @le_iSup _ _ _ S _
        Ideal.mem_sSup_of_mem
      theorem
     {S : Set (Ideal R)} {s : Ideal R} (hs : s ∈ S) : ∀ {x : R}, x ∈ s → x ∈ sSup S
        theorem mem_sSup_of_mem {S : Set (Ideal R)} {s : Ideal R} (hs : s ∈ S) :
    ∀ {x : R}, x ∈ s → x ∈ sSup S :=
  @le_sSup _ _ _ _ hs
        Ideal.mem_sInf
      theorem
     {s : Set (Ideal R)} {x : R} : x ∈ sInf s ↔ ∀ ⦃I⦄, I ∈ s → x ∈ I
        theorem mem_sInf {s : Set (Ideal R)} {x : R} : x ∈ sInf sx ∈ sInf s ↔ ∀ ⦃I⦄, I ∈ s → x ∈ I :=
  ⟨fun hx I his => hx I ⟨I, iInf_pos his⟩, fun H _I ⟨_J, hij⟩ => hij ▸ fun _S ⟨hj, hS⟩ => hS ▸ H hj⟩
        Ideal.mem_inf
      theorem
     {I J : Ideal R} {x : R} : x ∈ I ⊓ J ↔ x ∈ I ∧ x ∈ J
        @[simp 1001] -- Porting note: increased priority to appease `simpNF`
theorem mem_inf {I J : Ideal R} {x : R} : x ∈ I ⊓ Jx ∈ I ⊓ J ↔ x ∈ I ∧ x ∈ J :=
  Iff.rfl
        Ideal.mem_iInf
      theorem
     {ι : Sort*} {I : ι → Ideal R} {x : R} : x ∈ iInf I ↔ ∀ i, x ∈ I i
        @[simp 1001] -- Porting note: increased priority to appease `simpNF`
theorem mem_iInf {ι : Sort*} {I : ι → Ideal R} {x : R} : x ∈ iInf Ix ∈ iInf I ↔ ∀ i, x ∈ I i :=
  Submodule.mem_iInf _
        Ideal.mem_bot
      theorem
     {x : R} : x ∈ (⊥ : Ideal R) ↔ x = 0
        @[simp 1001] -- Porting note: increased priority to appease `simpNF`
theorem mem_bot {x : R} : x ∈ (⊥ : Ideal R)x ∈ (⊥ : Ideal R) ↔ x = 0 :=
  Submodule.mem_bot _