Theorem: LinearMap.SeparatingLeft.congr
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: intro x hx
state_before: R : Type u_1
R₁ : Type ?u.476585
R₂ : Type ?u.476588
R₃ : Type ?u.476591
M : Type ?u.476594
M₁ : Type ?u.476597
M₂ : Type ?u.476600
Mₗ₁ : Type u_2
Mₗ₁' : Type u_4
Mₗ₂ : Type u_3
Mₗ₂' : Type u_5
K : Type ?u.476615
K₁ : Type ?u.476618
K₂ : Type ?u.476621
V : Type ?u.476624
V₁ : Type ?u.476627
V₂ : Type ?u.476630
n : Type ?u.476633
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring R₁
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : Module R₁ M₁
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
inst✝⁷ : AddCommMonoid Mₗ₁
inst✝⁶ : AddCommMonoid Mₗ₂
inst✝⁵ : AddCommMonoid Mₗ₁'
inst✝⁴ : AddCommMonoid Mₗ₂'
inst✝³ : Module R Mₗ₁
inst✝² : Module R Mₗ₂
inst✝¹ : Module R Mₗ₁'
inst✝ : Module R Mₗ₂'
B : Mₗ₁ →ₗ[R] Mₗ₂ →ₗ[R] R
e₁ : Mₗ₁ ≃ₗ[R] Mₗ₁'
e₂ : Mₗ₂ ≃ₗ[R] Mₗ₂'
h : SeparatingLeft B
⊢ SeparatingLeft (↑(LinearEquiv.arrowCongr e₁ (LinearEquiv.arrowCongr e₂ (LinearEquiv.refl R R))) B)

tactic: rw [← e₁.symm.map_eq_zero_iff]
state_before: R : Type u_1
R₁ : Type ?u.476585
R₂ : Type ?u.476588
R₃ : Type ?u.476591
M : Type ?u.476594
M₁ : Type ?u.476597
M₂ : Type ?u.476600
Mₗ₁ : Type u_2
Mₗ₁' : Type u_4
Mₗ₂ : Type u_3
Mₗ₂' : Type u_5
K : Type ?u.476615
K₁ : Type ?u.476618
K₂ : Type ?u.476621
V : Type ?u.476624
V₁ : Type ?u.476627
V₂ : Type ?u.476630
n : Type ?u.476633
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring R₁
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : Module R₁ M₁
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
inst✝⁷ : AddCommMonoid Mₗ₁
inst✝⁶ : AddCommMonoid Mₗ₂
inst✝⁵ : AddCommMonoid Mₗ₁'
inst✝⁴ : AddCommMonoid Mₗ₂'
inst✝³ : Module R Mₗ₁
inst✝² : Module R Mₗ₂
inst✝¹ : Module R Mₗ₁'
inst✝ : Module R Mₗ₂'
B : Mₗ₁ →ₗ[R] Mₗ₂ →ₗ[R] R
e₁ : Mₗ₁ ≃ₗ[R] Mₗ₁'
e₂ : Mₗ₂ ≃ₗ[R] Mₗ₂'
h : SeparatingLeft B
x : Mₗ₁'
hx : ∀ (y : Mₗ₂'), ↑(↑(↑(LinearEquiv.arrowCongr e₁ (LinearEquiv.arrowCongr e₂ (LinearEquiv.refl R R))) B) x) y = 0
⊢ x = 0

tactic: refine' h (e₁.symm x) fun y ↦ _
state_before: R : Type u_1
R₁ : Type ?u.476585
R₂ : Type ?u.476588
R₃ : Type ?u.476591
M : Type ?u.476594
M₁ : Type ?u.476597
M₂ : Type ?u.476600
Mₗ₁ : Type u_2
Mₗ₁' : Type u_4
Mₗ₂ : Type u_3
Mₗ₂' : Type u_5
K : Type ?u.476615
K₁ : Type ?u.476618
K₂ : Type ?u.476621
V : Type ?u.476624
V₁ : Type ?u.476627
V₂ : Type ?u.476630
n : Type ?u.476633
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring R₁
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : Module R₁ M₁
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
inst✝⁷ : AddCommMonoid Mₗ₁
inst✝⁶ : AddCommMonoid Mₗ₂
inst✝⁵ : AddCommMonoid Mₗ₁'
inst✝⁴ : AddCommMonoid Mₗ₂'
inst✝³ : Module R Mₗ₁
inst✝² : Module R Mₗ₂
inst✝¹ : Module R Mₗ₁'
inst✝ : Module R Mₗ₂'
B : Mₗ₁ →ₗ[R] Mₗ₂ →ₗ[R] R
e₁ : Mₗ₁ ≃ₗ[R] Mₗ₁'
e₂ : Mₗ₂ ≃ₗ[R] Mₗ₂'
h : SeparatingLeft B
x : Mₗ₁'
hx : ∀ (y : Mₗ₂'), ↑(↑(↑(LinearEquiv.arrowCongr e₁ (LinearEquiv.arrowCongr e₂ (LinearEquiv.refl R R))) B) x) y = 0
⊢ ↑(LinearEquiv.symm e₁) x = 0

tactic: specialize hx (e₂ y)
state_before: R : Type u_1
R₁ : Type ?u.476585
R₂ : Type ?u.476588
R₃ : Type ?u.476591
M : Type ?u.476594
M₁ : Type ?u.476597
M₂ : Type ?u.476600
Mₗ₁ : Type u_2
Mₗ₁' : Type u_4
Mₗ₂ : Type u_3
Mₗ₂' : Type u_5
K : Type ?u.476615
K₁ : Type ?u.476618
K₂ : Type ?u.476621
V : Type ?u.476624
V₁ : Type ?u.476627
V₂ : Type ?u.476630
n : Type ?u.476633
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring R₁
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : Module R₁ M₁
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
inst✝⁷ : AddCommMonoid Mₗ₁
inst✝⁶ : AddCommMonoid Mₗ₂
inst✝⁵ : AddCommMonoid Mₗ₁'
inst✝⁴ : AddCommMonoid Mₗ₂'
inst✝³ : Module R Mₗ₁
inst✝² : Module R Mₗ₂
inst✝¹ : Module R Mₗ₁'
inst✝ : Module R Mₗ₂'
B : Mₗ₁ →ₗ[R] Mₗ₂ →ₗ[R] R
e₁ : Mₗ₁ ≃ₗ[R] Mₗ₁'
e₂ : Mₗ₂ ≃ₗ[R] Mₗ₂'
h : SeparatingLeft B
x : Mₗ₁'
hx : ∀ (y : Mₗ₂'), ↑(↑(↑(LinearEquiv.arrowCongr e₁ (LinearEquiv.arrowCongr e₂ (LinearEquiv.refl R R))) B) x) y = 0
y : Mₗ₂
⊢ ↑(↑B (↑(LinearEquiv.symm e₁) x)) y = 0

tactic: simp only [LinearEquiv.arrowCongr_apply, LinearEquiv.symm_apply_apply,
  LinearEquiv.map_eq_zero_iff] at hx
state_before: R : Type u_1
R₁ : Type ?u.476585
R₂ : Type ?u.476588
R₃ : Type ?u.476591
M : Type ?u.476594
M₁ : Type ?u.476597
M₂ : Type ?u.476600
Mₗ₁ : Type u_2
Mₗ₁' : Type u_4
Mₗ₂ : Type u_3
Mₗ₂' : Type u_5
K : Type ?u.476615
K₁ : Type ?u.476618
K₂ : Type ?u.476621
V : Type ?u.476624
V₁ : Type ?u.476627
V₂ : Type ?u.476630
n : Type ?u.476633
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring R₁
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : Module R₁ M₁
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
inst✝⁷ : AddCommMonoid Mₗ₁
inst✝⁶ : AddCommMonoid Mₗ₂
inst✝⁵ : AddCommMonoid Mₗ₁'
inst✝⁴ : AddCommMonoid Mₗ₂'
inst✝³ : Module R Mₗ₁
inst✝² : Module R Mₗ₂
inst✝¹ : Module R Mₗ₁'
inst✝ : Module R Mₗ₂'
B : Mₗ₁ →ₗ[R] Mₗ₂ →ₗ[R] R
e₁ : Mₗ₁ ≃ₗ[R] Mₗ₁'
e₂ : Mₗ₂ ≃ₗ[R] Mₗ₂'
h : SeparatingLeft B
x : Mₗ₁'
y : Mₗ₂
hx : ↑(↑(↑(LinearEquiv.arrowCongr e₁ (LinearEquiv.arrowCongr e₂ (LinearEquiv.refl R R))) B) x) (↑e₂ y) = 0
⊢ ↑(↑B (↑(LinearEquiv.symm e₁) x)) y = 0

tactic: exact hx
state_before: R : Type u_1
R₁ : Type ?u.476585
R₂ : Type ?u.476588
R₃ : Type ?u.476591
M : Type ?u.476594
M₁ : Type ?u.476597
M₂ : Type ?u.476600
Mₗ₁ : Type u_2
Mₗ₁' : Type u_4
Mₗ₂ : Type u_3
Mₗ₂' : Type u_5
K : Type ?u.476615
K₁ : Type ?u.476618
K₂ : Type ?u.476621
V : Type ?u.476624
V₁ : Type ?u.476627
V₂ : Type ?u.476630
n : Type ?u.476633
inst✝¹⁴ : CommSemiring R
inst✝¹³ : CommSemiring R₁
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : Module R₁ M₁
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
inst✝⁷ : AddCommMonoid Mₗ₁
inst✝⁶ : AddCommMonoid Mₗ₂
inst✝⁵ : AddCommMonoid Mₗ₁'
inst✝⁴ : AddCommMonoid Mₗ₂'
inst✝³ : Module R Mₗ₁
inst✝² : Module R Mₗ₂
inst✝¹ : Module R Mₗ₁'
inst✝ : Module R Mₗ₂'
B : Mₗ₁ →ₗ[R] Mₗ₂ →ₗ[R] R
e₁ : Mₗ₁ ≃ₗ[R] Mₗ₁'
e₂ : Mₗ₂ ≃ₗ[R] Mₗ₂'
h : SeparatingLeft B
x : Mₗ₁'
y : Mₗ₂
hx : ↑(↑B (↑(LinearEquiv.symm e₁) x)) y = 0
⊢ ↑(↑B (↑(LinearEquiv.symm e₁) x)) y = 0