Theorem: Ideal.sInf_isPrime_of_isChain
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: rw [Ideal.mem_sInf] at hx e ⊢
state_before: α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : x✝ * y✝ ∈ sInf s
hx : x✝ ∉ sInf s
⊢ y✝ ∈ sInf s
state_after: α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
hx : ¬∀ ⦃I : Ideal α⦄, I ∈ s → x✝ ∈ I
⊢ ∀ ⦃I : Ideal α⦄, I ∈ s → y✝ ∈ I

tactic: push_neg at hx
state_before: α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
hx : ¬∀ ⦃I : Ideal α⦄, I ∈ s → x✝ ∈ I
⊢ ∀ ⦃I : Ideal α⦄, I ∈ s → y✝ ∈ I
state_after: α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
hx : ∃ I ∈ s, x✝ ∉ I
⊢ ∀ ⦃I : Ideal α⦄, I ∈ s → y✝ ∈ I

tactic: obtain ⟨I, hI, hI'⟩ := hx
state_before: α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
hx : ∃ I ∈ s, x✝ ∉ I
⊢ ∀ ⦃I : Ideal α⦄, I ∈ s → y✝ ∈ I
state_after: case intro.intro
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
⊢ ∀ ⦃I : Ideal α⦄, I ∈ s → y✝ ∈ I

tactic: intro J hJ
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
⊢ ∀ ⦃I : Ideal α⦄, I ∈ s → y✝ ∈ I
state_after: case intro.intro
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
J : Ideal α
hJ : J ∈ s
⊢ y✝ ∈ J

tactic: cases' hs'.total hI hJ with h h
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
J : Ideal α
hJ : J ∈ s
⊢ y✝ ∈ J
state_after: case intro.intro.inl
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
J : Ideal α
hJ : J ∈ s
h : I ≤ J
⊢ y✝ ∈ J

case intro.intro.inr
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
J : Ideal α
hJ : J ∈ s
h : J ≤ I
⊢ y✝ ∈ J

tactic: exact h (((H I hI).mem_or_mem (e hI)).resolve_left hI')
state_before: case intro.intro.inl
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
J : Ideal α
hJ : J ∈ s
h : I ≤ J
⊢ y✝ ∈ J
state_after: no goals

tactic: exact ((H J hJ).mem_or_mem (e hJ)).resolve_left fun x => hI' <| h x
state_before: case intro.intro.inr
α : Type u
β : Type v
inst✝ : Semiring α
I✝ : Ideal α
a b : α
s : Set (Ideal α)
hs : s.Nonempty
hs' : IsChain (fun x x_1 => x ≤ x_1) s
H : ∀ p ∈ s, p.IsPrime
x✝ y✝ : α
e : ∀ ⦃I : Ideal α⦄, I ∈ s → x✝ * y✝ ∈ I
I : Ideal α
hI : I ∈ s
hI' : x✝ ∉ I
J : Ideal α
hJ : J ∈ s
h : J ≤ I
⊢ y✝ ∈ J
state_after: no goals