Theorem: FractionalIdeal.mul_generator_self_inv
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
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
⊢ I * spanSingleton R₁⁰ (generator ↑I)⁻¹ = 1
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
⊢ spanSingleton R₁⁰ (generator ↑I) * spanSingleton R₁⁰ (generator ↑I)⁻¹ = 1
tactic: conv_lhs => congr; rw [eq_spanSingleton_of_principal I]
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
⊢ spanSingleton R₁⁰ (generator ↑I) * spanSingleton R₁⁰ (generator ↑I)⁻¹ = 1
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
⊢ generator ↑I ≠ 0
tactic: rw [spanSingleton_mul_spanSingleton, mul_inv_cancel, spanSingleton_one]
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
⊢ generator ↑I ≠ 0
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
generator_I_eq_zero : generator ↑I = 0
⊢ False
tactic: intro generator_I_eq_zero
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
generator_I_eq_zero : generator ↑I = 0
⊢ False
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
generator_I_eq_zero : generator ↑I = 0
⊢ I = 0
tactic: apply h
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝¹³ : CommRing R
inst✝¹² : CommRing A
inst✝¹¹ : Field K
R₁✝ : Type u_4
inst✝¹⁰ : CommRing R₁✝
inst✝⁹ : IsDomain R₁✝
inst✝⁸ : Algebra R₁✝ K
inst✝⁷ : IsFractionRing R₁✝ K
I✝ J : FractionalIdeal R₁✝⁰ K
K' : Type u_5
inst✝⁶ : Field K'
inst✝⁵ : Algebra R₁✝ K'
inst✝⁴ : IsFractionRing R₁✝ K'
R₁ : Type u_6
inst✝³ : CommRing R₁
inst✝² : Algebra R₁ K
inst✝¹ : IsLocalization R₁⁰ K
I : FractionalIdeal R₁⁰ K
inst✝ : (↑I).IsPrincipal
h : I ≠ 0
generator_I_eq_zero : generator ↑I = 0
⊢ I = 0
state_after: no goals
tactic: rw [eq_spanSingleton_of_principal I, generator_I_eq_zero, spanSingleton_zero]