Theorem: Ideal.le_mul_of_no_prime_factors
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
I J K : Ideal R
coprime : ∀ (P : Ideal R), J ≤ P → K ≤ P → ¬P.IsPrime
hJ : I ≤ J
hK : I ≤ K
⊢ I ≤ J * K
state_after: R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
I J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ : J ∣ I
hK : K ∣ I
⊢ J * K ∣ I
tactic: simp only [← Ideal.dvd_iff_le] at coprime hJ hK ⊢
state_before: R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
I J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ : J ∣ I
hK : K ∣ I
⊢ J * K ∣ I
state_after: case pos
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
I J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ : J ∣ I
hK : K ∣ I
hJ0 : J = 0
⊢ J * K ∣ I

case neg
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
I J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ : J ∣ I
hK : K ∣ I
hJ0 : ¬J = 0
⊢ J * K ∣ I
tactic: by_cases hJ0 : J = 0
state_before: case neg
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
I J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ : J ∣ I
hK : K ∣ I
hJ0 : ¬J = 0
⊢ J * K ∣ I
state_after: case neg.intro
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ0 : ¬J = 0
I' : Ideal R
hJ : J ∣ K * I'
⊢ J * K ∣ K * I'
tactic: obtain ⟨I', rfl⟩ := hK
state_before: case neg.intro
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ0 : ¬J = 0
I' : Ideal R
hJ : J ∣ K * I'
⊢ J * K ∣ K * I'
state_after: case neg.intro
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ0 : ¬J = 0
I' : Ideal R
hJ : J ∣ K * I'
⊢ K * J ∣ K * I'
tactic: rw [mul_comm]
state_before: case neg.intro
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ0 : ¬J = 0
I' : Ideal R
hJ : J ∣ K * I'
⊢ K * J ∣ K * I'
state_after: case neg.intro
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ0 : ¬J = 0
I' : Ideal R
hJ : J ∣ K * I'
⊢ ∀ {d : Ideal R}, d ∣ J → d ∣ K → ¬Prime d
tactic: refine mul_dvd_mul_left K
    (UniqueFactorizationMonoid.dvd_of_dvd_mul_right_of_no_prime_factors (b := K) hJ0 ?_ hJ)
state_before: case neg.intro
R : Type u_1
A : Type u_2
K✝ : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K✝
inst✝ : IsDedekindDomain R
J K : Ideal R
coprime : ∀ (P : Ideal R), P ∣ J → P ∣ K → ¬P.IsPrime
hJ0 : ¬J = 0
I' : Ideal R
hJ : J ∣ K * I'
⊢ ∀ {d : Ideal R}, d ∣ J → d ∣ K → ¬Prime d
state_after: no goals
tactic: exact fun hPJ hPK => mt Ideal.isPrime_of_prime (coprime _ hPJ hPK)