Theorem: BilinForm.compLeft_injective
File: Mathlib/LinearAlgebra/BilinearForm.lean

tactic: ext w
state_before: R : Type ?u.1793734
M : Type ?u.1793737
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type u_1
M₁ : Type u_2
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.1794385
M₂ : Type ?u.1794388
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.1794575
M₃ : Type ?u.1794578
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.1795166
K : Type ?u.1795169
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1796383
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R₂ M₂'
B : BilinForm R₁ M₁
b : Nondegenerate B
φ ψ : M₁ →ₗ[R₁] M₁
h : compLeft B φ = compLeft B ψ
⊢ φ = ψ

tactic: refine' eq_of_sub_eq_zero (b _ _)
state_before: case h
R : Type ?u.1793734
M : Type ?u.1793737
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type u_1
M₁ : Type u_2
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.1794385
M₂ : Type ?u.1794388
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.1794575
M₃ : Type ?u.1794578
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.1795166
K : Type ?u.1795169
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1796383
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R₂ M₂'
B : BilinForm R₁ M₁
b : Nondegenerate B
φ ψ : M₁ →ₗ[R₁] M₁
h : compLeft B φ = compLeft B ψ
w : M₁
⊢ ↑φ w = ↑ψ w

tactic: intro v
state_before: case h
R : Type ?u.1793734
M : Type ?u.1793737
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type u_1
M₁ : Type u_2
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.1794385
M₂ : Type ?u.1794388
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.1794575
M₃ : Type ?u.1794578
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.1795166
K : Type ?u.1795169
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1796383
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R₂ M₂'
B : BilinForm R₁ M₁
b : Nondegenerate B
φ ψ : M₁ →ₗ[R₁] M₁
h : compLeft B φ = compLeft B ψ
w : M₁
⊢ ∀ (n : M₁), bilin B (↑φ w - ↑ψ w) n = 0

tactic: rw [sub_left, ← compLeft_apply, ← compLeft_apply, ← h, sub_self]
state_before: case h
R : Type ?u.1793734
M : Type ?u.1793737
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type u_1
M₁ : Type u_2
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.1794385
M₂ : Type ?u.1794388
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.1794575
M₃ : Type ?u.1794578
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.1795166
K : Type ?u.1795169
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type ?u.1796383
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R₂ M₂'
B : BilinForm R₁ M₁
b : Nondegenerate B
φ ψ : M₁ →ₗ[R₁] M₁
h : compLeft B φ = compLeft B ψ
w v : M₁
⊢ bilin B (↑φ w - ↑ψ w) v = 0