Theorem: Ideal.isPrime_ideal_prod_top
File: Mathlib/RingTheory/Ideal/Prod.lean

tactic: constructor
state_before: R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ (I.prod ⊤).IsPrime
state_after: case ne_top'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ I.prod ⊤ ≠ ⊤

case mem_or_mem'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ ∀ {x y : R × S}, x * y ∈ I.prod ⊤ → x ∈ I.prod ⊤ ∨ y ∈ I.prod ⊤

tactic: rintro ⟨r₁, s₁⟩ ⟨r₂, s₂⟩ ⟨h₁, _⟩
state_before: case mem_or_mem'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ ∀ {x y : R × S}, x * y ∈ I.prod ⊤ → x ∈ I.prod ⊤ ∨ y ∈ I.prod ⊤
state_after: case mem_or_mem'.mk.mk.intro
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤

tactic: cases' h.mem_or_mem h₁ with h h
state_before: case mem_or_mem'.mk.mk.intro
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤
state_after: case mem_or_mem'.mk.mk.intro.inl
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h✝ : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
h : (r₁, s₁).1 ∈ I
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤

case mem_or_mem'.mk.mk.intro.inr
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h✝ : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
h : (r₂, s₂).1 ∈ I
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤

tactic: rcases h with ⟨h, -⟩
state_before: case ne_top'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ I.prod ⊤ ≠ ⊤
state_after: case ne_top'.mk
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I ≠ ⊤
⊢ I.prod ⊤ ≠ ⊤

tactic: contrapose! h
state_before: case ne_top'.mk
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I ≠ ⊤
⊢ I.prod ⊤ ≠ ⊤
state_after: case ne_top'.mk
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.prod ⊤ = ⊤
⊢ I = ⊤

tactic: rw [← prod_top_top, prod.ext_iff] at h
state_before: case ne_top'.mk
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.prod ⊤ = ⊤
⊢ I = ⊤
state_after: case ne_top'.mk
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I = ⊤ ∧ ⊤ = ⊤
⊢ I = ⊤

tactic: exact h.1
state_before: case ne_top'.mk
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I = ⊤ ∧ ⊤ = ⊤
⊢ I = ⊤
state_after: no goals

tactic: exact Or.inl ⟨h, trivial⟩
state_before: case mem_or_mem'.mk.mk.intro.inl
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h✝ : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
h : (r₁, s₁).1 ∈ I
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤
state_after: no goals

tactic: exact Or.inr ⟨h, trivial⟩
state_before: case mem_or_mem'.mk.mk.intro.inr
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h✝ : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
h : (r₂, s₂).1 ∈ I
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤
state_after: no goals