Theorem: mem_pairSelfAdjointMatricesSubmodule
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: simp only [pairSelfAdjointMatricesSubmodule, LinearEquiv.coe_coe, LinearMap.toMatrix'_apply,
  Submodule.mem_map, mem_isPairSelfAdjointSubmodule]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ A₁ ∈ pairSelfAdjointMatricesSubmodule J J₂ ↔ J.IsAdjointPair J₂ A₁ A₁
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ (∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁) ↔ J.IsAdjointPair J₂ A₁ A₁

tactic: constructor
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ (∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁) ↔ J.IsAdjointPair J₂ A₁ A₁
state_after: case mp
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ (∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁) → J.IsAdjointPair J₂ A₁ A₁

case mpr
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ J.IsAdjointPair J₂ A₁ A₁ → ∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁

tactic: rintro ⟨f, hf, hA⟩
state_before: case mp
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ (∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁) → J.IsAdjointPair J₂ A₁ A₁
state_after: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) f
hA : toMatrix' f = A₁
⊢ J.IsAdjointPair J₂ A₁ A₁

tactic: have hf' : f = toLin' A₁ := by rw [← hA, Matrix.toLin'_toMatrix']
state_before: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) f
hA : toMatrix' f = A₁
⊢ J.IsAdjointPair J₂ A₁ A₁
state_after: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) f
hA : toMatrix' f = A₁
hf' : f = toLin' A₁
⊢ J.IsAdjointPair J₂ A₁ A₁

tactic: rw [hf'] at hf
state_before: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) f
hA : toMatrix' f = A₁
hf' : f = toLin' A₁
⊢ J.IsAdjointPair J₂ A₁ A₁
state_after: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) (toLin' A₁)
hA : toMatrix' f = A₁
hf' : f = toLin' A₁
⊢ J.IsAdjointPair J₂ A₁ A₁

tactic: rw [← isAdjointPair_toLinearMap₂']
state_before: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) (toLin' A₁)
hA : toMatrix' f = A₁
hf' : f = toLin' A₁
⊢ J.IsAdjointPair J₂ A₁ A₁
state_after: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) (toLin' A₁)
hA : toMatrix' f = A₁
hf' : f = toLin' A₁
⊢ (toLinearMap₂' J).IsAdjointPair (toLinearMap₂' J₂) (toLin' A₁) (toLin' A₁)

tactic: exact hf
state_before: case mp.intro.intro
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) (toLin' A₁)
hA : toMatrix' f = A₁
hf' : f = toLin' A₁
⊢ (toLinearMap₂' J).IsAdjointPair (toLinearMap₂' J₂) (toLin' A₁) (toLin' A₁)
state_after: no goals

tactic: rw [← hA, Matrix.toLin'_toMatrix']
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
f : Module.End R (n → R)
hf : (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) f
hA : toMatrix' f = A₁
⊢ f = toLin' A₁
state_after: no goals

tactic: intro h
state_before: case mpr
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ J.IsAdjointPair J₂ A₁ A₁ → ∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁
state_after: case mpr
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
h : J.IsAdjointPair J₂ A₁ A₁
⊢ ∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁

tactic: refine ⟨toLin' A₁, ?_, LinearMap.toMatrix'_toLin' _⟩
state_before: case mpr
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
h : J.IsAdjointPair J₂ A₁ A₁
⊢ ∃ y, (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) y ∧ toMatrix' y = A₁
state_after: case mpr
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
h : J.IsAdjointPair J₂ A₁ A₁
⊢ (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) (toLin' A₁)

tactic: exact (isAdjointPair_toLinearMap₂' _ _ _ _).mpr h
state_before: case mpr
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
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₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
h : J.IsAdjointPair J₂ A₁ A₁
⊢ (toLinearMap₂' J).IsPairSelfAdjoint (toLinearMap₂' J₂) (toLin' A₁)
state_after: no goals