Theorem: LinearMap.BilinForm.Nondegenerate.flip
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
⊢ B.flip.Nondegenerate
state_after: R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
⊢ x = 0
tactic: intro x hx
state_before: R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
⊢ x = 0
state_after: case a
R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
⊢ (Module.evalEquiv K V) x = (Module.evalEquiv K V) 0
tactic: apply (Module.evalEquiv K V).injective
state_before: case a
R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
⊢ (Module.evalEquiv K V) x = (Module.evalEquiv K V) 0
state_after: case a.h
R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
f : Module.Dual K V
⊢ ((Module.evalEquiv K V) x) f = ((Module.evalEquiv K V) 0) f
tactic: ext f
state_before: case a.h
R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
f : Module.Dual K V
⊢ ((Module.evalEquiv K V) x) f = ((Module.evalEquiv K V) 0) f
state_after: case a.h.intro
R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
y : V
⊢ ((Module.evalEquiv K V) x) ((B.toDual hB) y) = ((Module.evalEquiv K V) 0) ((B.toDual hB) y)
tactic: obtain ⟨y, rfl⟩ := (B.toDual hB).surjective f
state_before: case a.h.intro
R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
x : V
hx : ∀ (n : V), (B.flip x) n = 0
y : V
⊢ ((Module.evalEquiv K V) x) ((B.toDual hB) y) = ((Module.evalEquiv K V) 0) ((B.toDual hB) y)
state_after: no goals
tactic: simpa using hx y