Theorem: LinearPMap.ext
File: Mathlib/LinearAlgebra/LinearPMap.lean

Proof steps:
state_before: R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f g : E →ₗ.[R] F
h : f.domain = g.domain
h' : ∀ ⦃x : ↥f.domain⦄ ⦃y : ↥g.domain⦄, ↑x = ↑y → ↑f x = ↑g y
⊢ f = g
state_after: case mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
g : E →ₗ.[R] F
f_dom : Submodule R E
f : ↥f_dom →ₗ[R] F
h : { domain := f_dom, toFun := f }.domain = g.domain
h' :
  ∀ ⦃x : ↥{ domain := f_dom, toFun := f }.domain⦄ ⦃y : ↥g.domain⦄, ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑g y
⊢ { domain := f_dom, toFun := f } = g
tactic: rcases f with ⟨f_dom, f⟩
state_before: case mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
g : E →ₗ.[R] F
f_dom : Submodule R E
f : ↥f_dom →ₗ[R] F
h : { domain := f_dom, toFun := f }.domain = g.domain
h' :
  ∀ ⦃x : ↥{ domain := f_dom, toFun := f }.domain⦄ ⦃y : ↥g.domain⦄, ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑g y
⊢ { domain := f_dom, toFun := f } = g
state_after: case mk.mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f_dom : Submodule R E
f : ↥f_dom →ₗ[R] F
g_dom : Submodule R E
g : ↥g_dom →ₗ[R] F
h : { domain := f_dom, toFun := f }.domain = { domain := g_dom, toFun := g }.domain
h' :
  ∀ ⦃x : ↥{ domain := f_dom, toFun := f }.domain⦄ ⦃y : ↥{ domain := g_dom, toFun := g }.domain⦄,
    ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑{ domain := g_dom, toFun := g } y
⊢ { domain := f_dom, toFun := f } = { domain := g_dom, toFun := g }
tactic: rcases g with ⟨g_dom, g⟩
state_before: case mk.mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f_dom : Submodule R E
f : ↥f_dom →ₗ[R] F
g_dom : Submodule R E
g : ↥g_dom →ₗ[R] F
h : { domain := f_dom, toFun := f }.domain = { domain := g_dom, toFun := g }.domain
h' :
  ∀ ⦃x : ↥{ domain := f_dom, toFun := f }.domain⦄ ⦃y : ↥{ domain := g_dom, toFun := g }.domain⦄,
    ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑{ domain := g_dom, toFun := g } y
⊢ { domain := f_dom, toFun := f } = { domain := g_dom, toFun := g }
state_after: case mk.mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f_dom : Submodule R E
f g : ↥f_dom →ₗ[R] F
h' :
  ∀ ⦃x : ↥{ domain := f_dom, toFun := f }.domain⦄ ⦃y : ↥{ domain := f_dom, toFun := g }.domain⦄,
    ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑{ domain := f_dom, toFun := g } y
⊢ { domain := f_dom, toFun := f } = { domain := f_dom, toFun := g }
tactic: obtain rfl : f_dom = g_dom := h
state_before: case mk.mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f_dom : Submodule R E
f g : ↥f_dom →ₗ[R] F
h' :
  ∀ ⦃x : ↥{ domain := f_dom, toFun := f }.domain⦄ ⦃y : ↥{ domain := f_dom, toFun := g }.domain⦄,
    ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑{ domain := f_dom, toFun := g } y
⊢ { domain := f_dom, toFun := f } = { domain := f_dom, toFun := g }
state_after: case mk.mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f_dom : Submodule R E
f : ↥f_dom →ₗ[R] F
h' :
  ∀ ⦃x y : ↥{ domain := f_dom, toFun := f }.domain⦄,
    ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑{ domain := f_dom, toFun := f } y
⊢ { domain := f_dom, toFun := f } = { domain := f_dom, toFun := f }
tactic: obtain rfl : f = g := LinearMap.ext fun x => h' rfl
state_before: case mk.mk
R : Type u_1
inst✝⁶ : Ring R
E : Type u_2
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module R E
F : Type u_3
inst✝³ : AddCommGroup F
inst✝² : Module R F
G : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : Module R G
f_dom : Submodule R E
f : ↥f_dom →ₗ[R] F
h' :
  ∀ ⦃x y : ↥{ domain := f_dom, toFun := f }.domain⦄,
    ↑x = ↑y → ↑{ domain := f_dom, toFun := f } x = ↑{ domain := f_dom, toFun := f } y
⊢ { domain := f_dom, toFun := f } = { domain := f_dom, toFun := f }
state_after: no goals
tactic: rfl