Theorem: LinearMap.BilinForm.dualBasis_dualBasis_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
ι✝ : Type u_10
inst✝³ : DecidableEq ι✝
inst✝² : Finite ι✝
B : BilinForm K V
hB : B.Nondegenerate
ι : Type u_11
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
b : Basis ι K V
⊢ B.dualBasis hB (B.flip.dualBasis ⋯ b) = b
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
ι✝ : Type u_10
inst✝³ : DecidableEq ι✝
inst✝² : Finite ι✝
B : BilinForm K V
hB : B.Nondegenerate
ι : Type u_11
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
b : Basis ι K V
i : ι
⊢ (B.dualBasis hB (B.flip.dualBasis ⋯ b)) i = b i
tactic: ext i
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
ι✝ : Type u_10
inst✝³ : DecidableEq ι✝
inst✝² : Finite ι✝
B : BilinForm K V
hB : B.Nondegenerate
ι : Type u_11
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
b : Basis ι K V
i : ι
⊢ (B.dualBasis hB (B.flip.dualBasis ⋯ b)) i = b i
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
ι✝ : Type u_10
inst✝³ : DecidableEq ι✝
inst✝² : Finite ι✝
B : BilinForm K V
hB : B.Nondegenerate
ι : Type u_11
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
b : Basis ι K V
i j : ι
⊢ (B ((B.dualBasis hB (B.flip.dualBasis ⋯ b)) i)) ((B.flip.dualBasis ⋯ b) j) = (B (b i)) ((B.flip.dualBasis ⋯ b) j)
tactic: refine LinearMap.ker_eq_bot.mp hB.ker_eq_bot ((B.flip.dualBasis hB.flip b).ext (fun j ↦ ?_))
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
ι✝ : Type u_10
inst✝³ : DecidableEq ι✝
inst✝² : Finite ι✝
B : BilinForm K V
hB : B.Nondegenerate
ι : Type u_11
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
b : Basis ι K V
i j : ι
⊢ (B ((B.dualBasis hB (B.flip.dualBasis ⋯ b)) i)) ((B.flip.dualBasis ⋯ b) j) = (B (b i)) ((B.flip.dualBasis ⋯ b) j)
state_after: no goals
tactic: simp_rw [apply_dualBasis_left, ← B.flip_apply, apply_dualBasis_left, @eq_comm _ i j]