Theorem: IsLocalizedModule.mkOfAlgebra
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: replace h₃ := fun x =>
  Iff.intro (h₃ x) fun ⟨⟨m, hm⟩, e⟩ =>
    (h₁ m hm).mul_left_cancel <| by
      rw [← Algebra.smul_def]
      simpa [Submonoid.smul_def] using f.congr_arg e
state_before: R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 → ∃ m, m • x = 0
⊢ IsLocalizedModule M (AlgHom.toLinearMap f)

tactic: constructor
state_before: R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
⊢ IsLocalizedModule M (AlgHom.toLinearMap f)

tactic: rw [← Algebra.smul_def]
state_before: R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 → ∃ m, m • x = 0
x : S
x✝ : ∃ m, m • x = 0
m : R
hm : m ∈ M
e : { val := m, property := hm } • x = 0
⊢ ↑(algebraMap R S') m * ↑f x = ↑(algebraMap R S') m * 0

tactic: simpa [Submonoid.smul_def] using f.congr_arg e
state_before: R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 → ∃ m, m • x = 0
x : S
x✝ : ∃ m, m • x = 0
m : R
hm : m ∈ M
e : { val := m, property := hm } • x = 0
⊢ m • ↑f x = ↑(algebraMap R S') m * 0

tactic: intro x
state_before: case map_units
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
⊢ ∀ (x : { x // x ∈ M }), IsUnit (↑(algebraMap R (Module.End R S')) ↑x)

tactic: rw [Module.End_isUnit_iff]
state_before: case map_units
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
⊢ IsUnit (↑(algebraMap R (Module.End R S')) ↑x)

tactic: constructor
state_before: case map_units
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
⊢ Function.Bijective ↑(↑(algebraMap R (Module.End R S')) ↑x)

tactic: rintro a b (e : x • a = x • b)
state_before: case map_units.left
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
⊢ Function.Injective ↑(↑(algebraMap R (Module.End R S')) ↑x)

tactic: simp_rw [Submonoid.smul_def, Algebra.smul_def] at e
state_before: case map_units.left
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
a b : S'
e : x • a = x • b
⊢ a = b

tactic: exact (h₁ x x.2).mul_left_cancel e
state_before: case map_units.left
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
a b : S'
e : ↑(algebraMap R S') ↑x * a = ↑(algebraMap R S') ↑x * b
⊢ a = b

tactic: intro a
state_before: case map_units.right
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
⊢ Function.Surjective ↑(↑(algebraMap R (Module.End R S')) ↑x)

tactic: refine' ⟨((h₁ x x.2).unit⁻¹ : _) * a, _⟩
state_before: case map_units.right
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
a : S'
⊢ ∃ a_1, ↑(↑(algebraMap R (Module.End R S')) ↑x) a_1 = a

tactic: change (x : R) • (_ * a) = _
state_before: case map_units.right
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
a : S'
⊢ ↑(↑(algebraMap R (Module.End R S')) ↑x) (↑(IsUnit.unit (_ : IsUnit (↑(algebraMap R S') ↑x)))⁻¹ * a) = a

tactic: rw [Algebra.smul_def, ← mul_assoc, IsUnit.mul_val_inv, one_mul]
state_before: case map_units.right
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x : { x // x ∈ M }
a : S'
⊢ ↑x • (↑(IsUnit.unit (_ : IsUnit (↑(algebraMap R S') ↑x)))⁻¹ * a) = a

tactic: exact h₂
state_before: case surj'
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
⊢ ∀ (y : S'), ∃ x, x.snd • y = ↑(AlgHom.toLinearMap f) x.fst

tactic: intros
state_before: case eq_iff_exists'
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
⊢ ∀ {x₁ x₂ : S}, ↑(AlgHom.toLinearMap f) x₁ = ↑(AlgHom.toLinearMap f) x₂ ↔ ∃ c, c • x₂ = c • x₁

tactic: dsimp only [AlgHom.toLinearMap_apply]
state_before: case eq_iff_exists'
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x₁✝ x₂✝ : S
⊢ ↑(AlgHom.toLinearMap f) x₁✝ = ↑(AlgHom.toLinearMap f) x₂✝ ↔ ∃ c, c • x₂✝ = c • x₁✝

tactic: rw [eq_comm, ← sub_eq_zero, ← map_sub, h₃]
state_before: case eq_iff_exists'
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x₁✝ x₂✝ : S
⊢ ↑f x₁✝ = ↑f x₂✝ ↔ ∃ c, c • x₂✝ = c • x₁✝

tactic: simp_rw [smul_sub, sub_eq_zero]
state_before: case eq_iff_exists'
R✝ : Type ?u.939670
inst✝¹² : CommRing R✝
S✝ : Submonoid R✝
M✝ : Type ?u.939862
M' : Type ?u.939865
M'' : Type ?u.939868
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Module R✝ M'
inst✝⁶ : Module R✝ M''
f✝ : M✝ →ₗ[R✝] M'
g : M✝ →ₗ[R✝] M''
inst✝⁵ : IsLocalizedModule S✝ f✝
R : Type u_1
S : Type u_2
S' : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing S
inst✝² : CommRing S'
inst✝¹ : Algebra R S
inst✝ : Algebra R S'
M : Submonoid R
f : S →ₐ[R] S'
h₁ : ∀ (x : R), x ∈ M → IsUnit (↑(algebraMap R S') x)
h₂ : ∀ (y : S'), ∃ x, x.snd • y = ↑f x.fst
h₃ : ∀ (x : S), ↑f x = 0 ↔ ∃ m, m • x = 0
x₁✝ x₂✝ : S
⊢ (∃ m, m • (x₂✝ - x₁✝) = 0) ↔ ∃ c, c • x₂✝ = c • x₁✝