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

tactic: by_cases hI : I = ⊥
state_before: R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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) { val := L, property := (_ : L ∣ I) }) ∈ normalizedFactors J

tactic: exfalso
state_before: case pos
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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) { val := L, property := (_ : L ∣ I) }) ∈ normalizedFactors J

tactic: rw [hI, bot_eq_zero, normalizedFactors_zero, ← Multiset.empty_eq_zero] at hL
state_before: case pos.h
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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: exact Finset.not_mem_empty _ hL
state_before: case pos.h
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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: refine mem_normalizedFactors_factor_dvd_iso_of_mem_normalizedFactors hI hJ hL
  (d := (idealFactorsEquivOfQuotEquiv f).toEquiv) ?_
state_before: case neg
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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) { val := L, property := (_ : L ∣ I) }) ∈ normalizedFactors J

tactic: rintro ⟨l, hl⟩ ⟨l', hl'⟩
state_before: case neg
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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: rw [Subtype.coe_mk, Subtype.coe_mk]
state_before: case neg.mk.mk
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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 { val := l, property := hl }) ∣
      ↑(↑(idealFactorsEquivOfQuotEquiv f).toEquiv { val := l', property := hl' }) ↔
    ↑{ val := l, property := hl } ∣ ↑{ val := l', property := hl' }

tactic: apply idealFactorsEquivOfQuotEquiv_is_dvd_iso f
state_before: case neg.mk.mk
R : Type u_2
A : Type u_1
K : Type ?u.1123265
inst✝¹¹ : CommRing R
inst✝¹⁰ : CommRing A
inst✝⁹ : Field K
inst✝⁸ : IsDomain A
inst✝⁷ : IsDedekindDomain A
I : Ideal R
J : Ideal A
B : Type ?u.1123802
inst✝⁶ : CommRing B
inst✝⁵ : IsDomain B
inst✝⁴ : IsDedekindDomain B
L✝ : Ideal B
inst✝³ : IsDomain R
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 { val := l, property := hl }) ∣
      ↑(↑(idealFactorsEquivOfQuotEquiv f).toEquiv { val := l', property := hl' }) ↔
    ↑{ val := l, property := hl } ∣ ↑{ val := l', property := hl' }