Theorem: isAdjointPair_toLinearMap₂
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: rw [isAdjointPair_iff_comp_eq_compl₂]
state_before: R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ LinearMap.IsAdjointPair (↑(toLinearMap₂ b₁ b₁) J) (↑(toLinearMap₂ b₂ b₂) J') (↑(toLin b₁ b₂) A) (↑(toLin b₂ b₁) A') ↔
    Matrix.IsAdjointPair J J' A A'

tactic: simp_rw [h, LinearMap.toMatrix₂_comp b₂ b₂, LinearMap.toMatrix₂_compl₂ b₁ b₁,
  LinearMap.toMatrix_toLin, LinearMap.toMatrix₂_toLinearMap₂]
state_before: R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
h : ∀ (B B' : M₁ →ₗ[R] M₂ →ₗ[R] R), B = B' ↔ ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁ b₂) B'
⊢ comp (↑(toLinearMap₂ b₂ b₂) J') (↑(toLin b₁ b₂) A) = compl₂ (↑(toLinearMap₂ b₁ b₁) J) (↑(toLin b₂ b₁) A') ↔
    Matrix.IsAdjointPair J J' A A'

tactic: rfl
state_before: R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
h : ∀ (B B' : M₁ →ₗ[R] M₂ →ₗ[R] R), B = B' ↔ ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁ b₂) B'
⊢ Aᵀ ⬝ J' = J ⬝ A' ↔ Matrix.IsAdjointPair J J' A A'

tactic: intro B B'
state_before: R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ ∀ (B B' : M₁ →ₗ[R] M₂ →ₗ[R] R), B = B' ↔ ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁ b₂) B'

tactic: constructor <;> intro h
state_before: R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
B B' : M₁ →ₗ[R] M₂ →ₗ[R] R
⊢ B = B' ↔ ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁ b₂) B'

tactic: rw [h]
state_before: case mp
R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
B B' : M₁ →ₗ[R] M₂ →ₗ[R] R
h : B = B'
⊢ ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁ b₂) B'

tactic: exact (LinearMap.toMatrix₂ b₁ b₂).injective h
state_before: case mpr
R : Type u_1
R₁ : Type ?u.2189106
R₂ : Type ?u.2189109
M : Type ?u.2189112
M₁ : Type u_2
M₂ : Type u_3
M₁' : Type ?u.2189121
M₂' : Type ?u.2189124
n : Type u_4
m : Type ?u.2189130
n' : Type u_5
m' : Type ?u.2189136
ι : Type ?u.2189139
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
B B' : M₁ →ₗ[R] M₂ →ₗ[R] R
h : ↑(toMatrix₂ b₁ b₂) B = ↑(toMatrix₂ b₁ b₂) B'
⊢ B = B'