Theorem: IsFractionRing.isFractionRing_iff_of_base_ringEquiv
File: Mathlib/RingTheory/Localization/FractionRing.lean

tactic: delta IsFractionRing
state_before: R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
⊢ IsFractionRing R S ↔ IsFractionRing P S

tactic: convert isLocalization_iff_of_base_ringEquiv (nonZeroDivisors R) S h
state_before: R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
⊢ IsLocalization (nonZeroDivisors R) S ↔ IsLocalization (nonZeroDivisors P) S

tactic: ext x
state_before: case h.e'_2.h.e'_3
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
⊢ nonZeroDivisors P = Submonoid.map (RingEquiv.toMonoidHom h) (nonZeroDivisors R)

tactic: erw [Submonoid.map_equiv_eq_comap_symm]
state_before: case h.e'_2.h.e'_3.h
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
⊢ x ∈ nonZeroDivisors P ↔ x ∈ Submonoid.map (RingEquiv.toMonoidHom h) (nonZeroDivisors R)

tactic: simp only [MulEquiv.coe_toMonoidHom, RingEquiv.toMulEquiv_eq_coe, Submonoid.mem_comap]
state_before: case h.e'_2.h.e'_3.h
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
⊢ x ∈ nonZeroDivisors P ↔
    x ∈ Submonoid.comap (MulEquiv.toMonoidHom (MulEquiv.symm (RingEquiv.toMulEquiv h))) (nonZeroDivisors R)

tactic: constructor
state_before: case h.e'_2.h.e'_3.h
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
⊢ x ∈ nonZeroDivisors P ↔ ↑(MulEquiv.symm ↑h) x ∈ nonZeroDivisors R

tactic: rintro hx z (hz : z * h.symm x = 0)
state_before: case h.e'_2.h.e'_3.h.mp
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
⊢ x ∈ nonZeroDivisors P → ↑(MulEquiv.symm ↑h) x ∈ nonZeroDivisors R

tactic: rw [← h.map_eq_zero_iff]
state_before: case h.e'_2.h.e'_3.h.mp
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
hx : x ∈ nonZeroDivisors P
z : R
hz : z * ↑(RingEquiv.symm h) x = 0
⊢ z = 0

tactic: apply hx
state_before: case h.e'_2.h.e'_3.h.mp
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
hx : x ∈ nonZeroDivisors P
z : R
hz : z * ↑(RingEquiv.symm h) x = 0
⊢ ↑h z = 0

tactic: simpa only [h.map_zero, h.apply_symm_apply, h.map_mul] using congr_arg h hz
state_before: case h.e'_2.h.e'_3.h.mp.a
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
hx : x ∈ nonZeroDivisors P
z : R
hz : z * ↑(RingEquiv.symm h) x = 0
⊢ ↑h z * x = 0

tactic: rintro (hx : h.symm x ∈ _) z hz
state_before: case h.e'_2.h.e'_3.h.mpr
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
⊢ ↑(MulEquiv.symm ↑h) x ∈ nonZeroDivisors R → x ∈ nonZeroDivisors P

tactic: rw [← h.symm.map_eq_zero_iff]
state_before: case h.e'_2.h.e'_3.h.mpr
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
hx : ↑(RingEquiv.symm h) x ∈ nonZeroDivisors R
z : P
hz : z * x = 0
⊢ z = 0

tactic: apply hx
state_before: case h.e'_2.h.e'_3.h.mpr
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
hx : ↑(RingEquiv.symm h) x ∈ nonZeroDivisors R
z : P
hz : z * x = 0
⊢ ↑(RingEquiv.symm h) z = 0

tactic: rw [← h.symm.map_mul, hz, h.symm.map_zero]
state_before: case h.e'_2.h.e'_3.h.mpr.a
R : Type u_1
inst✝¹¹ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁰ : CommRing S
inst✝⁹ : Algebra R S
P : Type u_2
inst✝⁸ : CommRing P
A : Type ?u.377174
inst✝⁷ : CommRing A
inst✝⁶ : IsDomain A
K : Type ?u.377348
B : Type ?u.377351
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Field K
L : Type ?u.377528
inst✝² : Field L
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
g : A →+* L
h : R ≃+* P
x : P
hx : ↑(RingEquiv.symm h) x ∈ nonZeroDivisors R
z : P
hz : z * x = 0
⊢ ↑(RingEquiv.symm h) z * ↑(RingEquiv.symm h) x = 0