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

tactic: have hI : I ≠ ⊥ := by
  intro hI
  rw [hI, bot_eq_zero, normalizedFactors_zero, ← Multiset.empty_eq_zero] at hL
  exact Finset.not_mem_empty _ hL
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
⊢ ↑((idealFactorsEquivOfQuotEquiv f) ⟨L, ⋯⟩) ∈ normalizedFactors J
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I ≠ ⊥
⊢ ↑((idealFactorsEquivOfQuotEquiv f) ⟨L, ⋯⟩) ∈ normalizedFactors J

tactic: refine mem_normalizedFactors_factor_dvd_iso_of_mem_normalizedFactors hI hJ hL
  (d := (idealFactorsEquivOfQuotEquiv f).toEquiv) ?_
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I ≠ ⊥
⊢ ↑((idealFactorsEquivOfQuotEquiv f) ⟨L, ⋯⟩) ∈ normalizedFactors J
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I ≠ ⊥
⊢ ∀ (l l' : { l // l ∣ I }),
    ↑((idealFactorsEquivOfQuotEquiv f).toEquiv l) ∣ ↑((idealFactorsEquivOfQuotEquiv f).toEquiv l') ↔ ↑l ∣ ↑l'

tactic: rintro ⟨l, hl⟩ ⟨l', hl'⟩
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I ≠ ⊥
⊢ ∀ (l l' : { l // l ∣ I }),
    ↑((idealFactorsEquivOfQuotEquiv f).toEquiv l) ∣ ↑((idealFactorsEquivOfQuotEquiv f).toEquiv l') ↔ ↑l ∣ ↑l'
state_after: case mk.mk
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I ≠ ⊥
l : Ideal R
hl : l ∣ I
l' : Ideal R
hl' : l' ∣ I
⊢ ↑((idealFactorsEquivOfQuotEquiv f).toEquiv ⟨l, hl⟩) ∣ ↑((idealFactorsEquivOfQuotEquiv f).toEquiv ⟨l', hl'⟩) ↔
    ↑⟨l, hl⟩ ∣ ↑⟨l', hl'⟩

tactic: apply idealFactorsEquivOfQuotEquiv_is_dvd_iso f
state_before: case mk.mk
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Field K
inst✝⁵ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I ≠ ⊥
l : Ideal R
hl : l ∣ I
l' : Ideal R
hl' : l' ∣ I
⊢ ↑((idealFactorsEquivOfQuotEquiv f).toEquiv ⟨l, hl⟩) ∣ ↑((idealFactorsEquivOfQuotEquiv f).toEquiv ⟨l', hl'⟩) ↔
    ↑⟨l, hl⟩ ∣ ↑⟨l', hl'⟩
state_after: no goals

tactic: intro hI
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
⊢ I ≠ ⊥
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I = ⊥
⊢ False

tactic: rw [hI, bot_eq_zero, normalizedFactors_zero, ← Multiset.empty_eq_zero] at hL
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ normalizedFactors I
hI : I = ⊥
⊢ False
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ ∅
hI : I = ⊥
⊢ False

tactic: exact Finset.not_mem_empty _ hL
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 A
I : Ideal R
J : Ideal A
B : Type u_4
inst✝⁴ : CommRing B
inst✝³ : IsDedekindDomain B
L✝ : Ideal B
inst✝² : IsDedekindDomain R
f : R ⧸ I ≃+* A ⧸ J
inst✝¹ : DecidableEq (Ideal R)
inst✝ : DecidableEq (Ideal A)
hJ : J ≠ ⊥
L : Ideal R
hL : L ∈ ∅
hI : I = ⊥
⊢ False
state_after: no goals