Theorem: LinearMap.eq_adjoint_iff_basis
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: refine' ⟨fun h x y => by rw [h, adjoint_inner_left], fun h => _⟩
state_before: 𝕜 : Type u_3
E : Type u_4
F : Type u_5
G : Type ?u.1971189
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
ι₁ : Type u_1
ι₂ : Type u_2
b₁ : Basis ι₁ 𝕜 E
b₂ : Basis ι₂ 𝕜 F
A : E →ₗ[𝕜] F
B : F →ₗ[𝕜] E
⊢ A = ↑adjoint B ↔ ∀ (i₁ : ι₁) (i₂ : ι₂), inner (↑A (↑b₁ i₁)) (↑b₂ i₂) = inner (↑b₁ i₁) (↑B (↑b₂ i₂))

tactic: refine' Basis.ext b₁ fun i₁ => _
state_before: 𝕜 : Type u_3
E : Type u_4
F : Type u_5
G : Type ?u.1971189
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
ι₁ : Type u_1
ι₂ : Type u_2
b₁ : Basis ι₁ 𝕜 E
b₂ : Basis ι₂ 𝕜 F
A : E →ₗ[𝕜] F
B : F →ₗ[𝕜] E
h : ∀ (i₁ : ι₁) (i₂ : ι₂), inner (↑A (↑b₁ i₁)) (↑b₂ i₂) = inner (↑b₁ i₁) (↑B (↑b₂ i₂))
⊢ A = ↑adjoint B

tactic: exact ext_inner_right_basis b₂ fun i₂ => by simp only [adjoint_inner_left, h i₁ i₂]
state_before: 𝕜 : Type u_3
E : Type u_4
F : Type u_5
G : Type ?u.1971189
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
ι₁ : Type u_1
ι₂ : Type u_2
b₁ : Basis ι₁ 𝕜 E
b₂ : Basis ι₂ 𝕜 F
A : E →ₗ[𝕜] F
B : F →ₗ[𝕜] E
h : ∀ (i₁ : ι₁) (i₂ : ι₂), inner (↑A (↑b₁ i₁)) (↑b₂ i₂) = inner (↑b₁ i₁) (↑B (↑b₂ i₂))
i₁ : ι₁
⊢ ↑A (↑b₁ i₁) = ↑(↑adjoint B) (↑b₁ i₁)

tactic: rw [h, adjoint_inner_left]
state_before: 𝕜 : Type u_3
E : Type u_4
F : Type u_5
G : Type ?u.1971189
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
ι₁ : Type u_1
ι₂ : Type u_2
b₁ : Basis ι₁ 𝕜 E
b₂ : Basis ι₂ 𝕜 F
A : E →ₗ[𝕜] F
B : F →ₗ[𝕜] E
h : A = ↑adjoint B
x : ι₁
y : ι₂
⊢ inner (↑A (↑b₁ x)) (↑b₂ y) = inner (↑b₁ x) (↑B (↑b₂ y))

tactic: simp only [adjoint_inner_left, h i₁ i₂]
state_before: 𝕜 : Type u_3
E : Type u_4
F : Type u_5
G : Type ?u.1971189
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : FiniteDimensional 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 F
inst✝ : FiniteDimensional 𝕜 G
ι₁ : Type u_1
ι₂ : Type u_2
b₁ : Basis ι₁ 𝕜 E
b₂ : Basis ι₂ 𝕜 F
A : E →ₗ[𝕜] F
B : F →ₗ[𝕜] E
h : ∀ (i₁ : ι₁) (i₂ : ι₂), inner (↑A (↑b₁ i₁)) (↑b₂ i₂) = inner (↑b₁ i₁) (↑B (↑b₂ i₂))
i₁ : ι₁
i₂ : ι₂
⊢ inner (↑A (↑b₁ i₁)) (↑b₂ i₂) = inner (↑(↑adjoint B) (↑b₁ i₁)) (↑b₂ i₂)