Theorem: RingHom.isIntegralElem_localization_at_leadingCoeff
File: Mathlib/RingTheory/Localization/Integral.lean

tactic: by_cases triv : (1 : Rₘ) = 0
state_before: R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)
state_after: case pos
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : 1 = 0
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)

case neg
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)

tactic: haveI : Nontrivial Rₘ := nontrivial_of_ne 1 0 triv
state_before: case neg
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)
state_after: case neg
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)

tactic: obtain ⟨b, hb⟩ := isUnit_iff_exists_inv.mp (map_units Rₘ ⟨p.leadingCoeff, hM⟩)
state_before: case neg
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)
state_after: case neg.intro
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)

tactic: refine ⟨p.map (algebraMap R Rₘ) * C b, ⟨?_, ?_⟩⟩
state_before: case neg.intro
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)
state_after: case neg.intro.refine_1
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (Polynomial.map (algebraMap R Rₘ) p * C b).Monic

case neg.intro.refine_2
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ eval₂ (IsLocalization.map Sₘ f ⋯) ((algebraMap S Sₘ) x) (Polynomial.map (algebraMap R Rₘ) p * C b) = 0

tactic: exact ⟨0, ⟨_root_.trans leadingCoeff_zero triv.symm, eval₂_zero _ _⟩⟩
state_before: case pos
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : 1 = 0
⊢ (IsLocalization.map Sₘ f ⋯).IsIntegralElem ((algebraMap S Sₘ) x)
state_after: no goals

tactic: refine monic_mul_C_of_leadingCoeff_mul_eq_one ?_
state_before: case neg.intro.refine_1
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (Polynomial.map (algebraMap R Rₘ) p * C b).Monic
state_after: case neg.intro.refine_1
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (Polynomial.map (algebraMap R Rₘ) p).leadingCoeff * b = 1

tactic: rwa [leadingCoeff_map_of_leadingCoeff_ne_zero (algebraMap R Rₘ)]
state_before: case neg.intro.refine_1
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (Polynomial.map (algebraMap R Rₘ) p).leadingCoeff * b = 1
state_after: case neg.intro.refine_1
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (algebraMap R Rₘ) p.leadingCoeff ≠ 0

tactic: refine fun hfp => zero_ne_one
  (_root_.trans (zero_mul b).symm (hfp ▸ hb) : (0 : Rₘ) = 1)
state_before: case neg.intro.refine_1
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (algebraMap R Rₘ) p.leadingCoeff ≠ 0
state_after: no goals

tactic: refine eval₂_mul_eq_zero_of_left _ _ _ ?_
state_before: case neg.intro.refine_2
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ eval₂ (IsLocalization.map Sₘ f ⋯) ((algebraMap S Sₘ) x) (Polynomial.map (algebraMap R Rₘ) p * C b) = 0
state_after: case neg.intro.refine_2
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ eval₂ (IsLocalization.map Sₘ f ⋯) ((algebraMap S Sₘ) x) (Polynomial.map (algebraMap R Rₘ) p) = 0

tactic: erw [eval₂_map, IsLocalization.map_comp, ← hom_eval₂ _ f (algebraMap S Sₘ) x]
state_before: case neg.intro.refine_2
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ eval₂ (IsLocalization.map Sₘ f ⋯) ((algebraMap S Sₘ) x) (Polynomial.map (algebraMap R Rₘ) p) = 0
state_after: case neg.intro.refine_2
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (algebraMap S Sₘ) (eval₂ f x p) = 0

tactic: exact _root_.trans (congr_arg (algebraMap S Sₘ) hf) (RingHom.map_zero _)
state_before: case neg.intro.refine_2
R✝ : Type u_1
inst✝¹⁷ : CommRing R✝
M✝ : Submonoid R✝
S✝ : Type u_2
inst✝¹⁶ : CommRing S✝
inst✝¹⁵ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁴ : CommRing P
Rₘ✝ : Type u_4
Sₘ✝ : Type u_5
inst✝¹³ : CommRing Rₘ✝
inst✝¹² : CommRing Sₘ✝
inst✝¹¹ : Algebra R✝ Rₘ✝
inst✝¹⁰ : IsLocalization M✝ Rₘ✝
inst✝⁹ : Algebra S✝ Sₘ✝
inst✝⁸ : IsLocalization (Algebra.algebraMapSubmonoid S✝ M✝) Sₘ✝
R : Type u_6
S : Type u_7
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
f : R →+* S
x : S
p : R[X]
hf : eval₂ f x p = 0
M : Submonoid R
hM : p.leadingCoeff ∈ M
Rₘ : Type u_8
Sₘ : Type u_9
inst✝⁵ : CommRing Rₘ
inst✝⁴ : CommRing Sₘ
inst✝³ : Algebra R Rₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : Algebra S Sₘ
inst✝ : IsLocalization (Submonoid.map f M) Sₘ
triv : ¬1 = 0
this : Nontrivial Rₘ
b : Rₘ
hb : (algebraMap R Rₘ) ↑⟨p.leadingCoeff, hM⟩ * b = 1
⊢ (algebraMap S Sₘ) (eval₂ f x p) = 0
state_after: no goals