Theorem: LocalizedModule.lift_unique
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: ext x
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
⊢ lift S g h = l

tactic: induction' x using LocalizedModule.induction_on with m s
state_before: case h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
x : LocalizedModule S M
⊢ ↑(lift S g h) x = ↑l x

tactic: rw [LocalizedModule.lift_mk]
state_before: case h.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ ↑(lift S g h) (mk m s) = ↑l (mk m s)

tactic: erw [Module.End_algebraMap_isUnit_inv_apply_eq_iff, ← hl, LinearMap.coe_comp,
  Function.comp_apply, LocalizedModule.mkLinearMap_apply, ← l.map_smul, LocalizedModule.smul'_mk]
state_before: case h.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ ↑↑(IsUnit.unit (_ : IsUnit (↑(algebraMap R (Module.End R M'')) ↑s)))⁻¹ (↑g m) = ↑l (mk m s)

tactic: congr 1
state_before: case h.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ ↑l (mk m 1) = ↑l (mk (↑s • m) s)

tactic: rw [LocalizedModule.mk_eq]
state_before: case h.h.h.e_6.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ mk m 1 = mk (↑s • m) s

tactic: refine' ⟨1, _⟩
state_before: case h.h.h.e_6.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ ∃ u, u • s • m = u • 1 • ↑s • m

tactic: simp only [one_smul]
state_before: case h.h.h.e_6.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ 1 • s • m = 1 • 1 • ↑s • m

tactic: rfl
state_before: case h.h.h.e_6.h
R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type ?u.570900
M'' : Type u_3
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✝ g : M →ₗ[R] M''
h : ∀ (x : { x // x ∈ S }), IsUnit (↑(algebraMap R (Module.End R M'')) ↑x)
l : LocalizedModule S M →ₗ[R] M''
hl : LinearMap.comp l (mkLinearMap S M) = g
m : M
s : { x // x ∈ S }
⊢ s • m = ↑s • m