Theorem: LinearMap.isPairSelfAdjoint_equiv
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: have hₗ :
  (F.compl₁₂ (↑e : M₁ →ₗ[R] M) (↑e : M₁ →ₗ[R] M)).comp (e.symm.conj f) =
    (F.comp f).compl₁₂ (↑e : M₁ →ₗ[R] M) (↑e : M₁ →ₗ[R] M) := by
  ext
  simp only [LinearEquiv.symm_conj_apply, coe_comp, LinearEquiv.coe_coe, compl₁₂_apply,
    LinearEquiv.apply_symm_apply, Function.comp_apply]
state_before: R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
⊢ IsPairSelfAdjoint B F f ↔
    IsPairSelfAdjoint (compl₁₂ B ↑e ↑e) (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f)

tactic: have hᵣ :
  (B.compl₁₂ (↑e : M₁ →ₗ[R] M) (↑e : M₁ →ₗ[R] M)).compl₂ (e.symm.conj f) =
    (B.compl₂ f).compl₁₂ (↑e : M₁ →ₗ[R] M) (↑e : M₁ →ₗ[R] M) := by
  ext
  simp only [LinearEquiv.symm_conj_apply, compl₂_apply, coe_comp, LinearEquiv.coe_coe,
    compl₁₂_apply, LinearEquiv.apply_symm_apply, Function.comp_apply]
state_before: R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
hₗ : comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (comp F f) ↑e ↑e
⊢ IsPairSelfAdjoint B F f ↔
    IsPairSelfAdjoint (compl₁₂ B ↑e ↑e) (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f)

tactic: have he : Function.Surjective (⇑(↑e : M₁ →ₗ[R] M) : M₁ → M) := e.surjective
state_before: R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
hₗ : comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (comp F f) ↑e ↑e
hᵣ : compl₂ (compl₁₂ B ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (compl₂ B f) ↑e ↑e
⊢ IsPairSelfAdjoint B F f ↔
    IsPairSelfAdjoint (compl₁₂ B ↑e ↑e) (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f)

tactic: simp_rw [IsPairSelfAdjoint, isAdjointPair_iff_comp_eq_compl₂, hₗ, hᵣ, compl₁₂_inj he he]
state_before: R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
hₗ : comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (comp F f) ↑e ↑e
hᵣ : compl₂ (compl₁₂ B ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (compl₂ B f) ↑e ↑e
he : Function.Surjective ↑↑e
⊢ IsPairSelfAdjoint B F f ↔
    IsPairSelfAdjoint (compl₁₂ B ↑e ↑e) (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f)

tactic: ext
state_before: R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
⊢ comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (comp F f) ↑e ↑e

tactic: simp only [LinearEquiv.symm_conj_apply, coe_comp, LinearEquiv.coe_coe, compl₁₂_apply,
  LinearEquiv.apply_symm_apply, Function.comp_apply]
state_before: case h.h
R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
x✝¹ x✝ : M₁
⊢ ↑(↑(comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f)) x✝¹) x✝ =
    ↑(↑(compl₁₂ (comp F f) ↑e ↑e) x✝¹) x✝

tactic: ext
state_before: R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
hₗ : comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (comp F f) ↑e ↑e
⊢ compl₂ (compl₁₂ B ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (compl₂ B f) ↑e ↑e

tactic: simp only [LinearEquiv.symm_conj_apply, compl₂_apply, coe_comp, LinearEquiv.coe_coe,
  compl₁₂_apply, LinearEquiv.apply_symm_apply, Function.comp_apply]
state_before: case h.h
R : Type u_1
R₁ : Type ?u.395006
R₂ : Type ?u.395009
R₃ : Type ?u.395012
M : Type u_3
M₁ : Type u_2
M₂ : Type ?u.395021
Mₗ₁ : Type ?u.395024
Mₗ₁' : Type ?u.395027
Mₗ₂ : Type ?u.395030
Mₗ₂' : Type ?u.395033
K : Type ?u.395036
K₁ : Type ?u.395039
K₂ : Type ?u.395042
V : Type ?u.395045
V₁ : Type ?u.395048
V₂ : Type ?u.395051
n : Type ?u.395054
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
B F : M →ₗ[R] M →ₗ[R] R
e : M₁ ≃ₗ[R] M
f : Module.End R M
hₗ : comp (compl₁₂ F ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f) = compl₁₂ (comp F f) ↑e ↑e
x✝¹ x✝ : M₁
⊢ ↑(↑(compl₂ (compl₁₂ B ↑e ↑e) (↑(LinearEquiv.conj (LinearEquiv.symm e)) f)) x✝¹) x✝ =
    ↑(↑(compl₁₂ (compl₂ B f) ↑e ↑e) x✝¹) x✝