Theorem: LinearMap.BilinForm.toLin_restrict_ker_eq_inf_orthogonal
File: Mathlib/LinearAlgebra/BilinearForm/Orthogonal.lean

tactic: ext x
state_before: R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
⊢ Submodule.map (Submodule.subtype W) (ker (domRestrict B W)) = W ⊓ B.orthogonal ⊤
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
⊢ x ∈ Submodule.map (Submodule.subtype W) (ker (domRestrict B W)) ↔ x ∈ W ⊓ B.orthogonal ⊤

tactic: constructor <;> intro hx
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
⊢ x ∈ Submodule.map (Submodule.subtype W) (ker (domRestrict B W)) ↔ x ∈ W ⊓ B.orthogonal ⊤
state_after: case h.mp
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ Submodule.map (Submodule.subtype W) (ker (domRestrict B W))
⊢ x ∈ W ⊓ B.orthogonal ⊤

case h.mpr
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
⊢ x ∈ Submodule.map (Submodule.subtype W) (ker (domRestrict B W))

tactic: rcases hx with ⟨⟨x, hx⟩, hker, rfl⟩
state_before: case h.mp
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ Submodule.map (Submodule.subtype W) (ker (domRestrict B W))
⊢ x ∈ W ⊓ B.orthogonal ⊤
state_after: case h.mp.intro.mk.intro
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : ⟨x, hx⟩ ∈ ↑(ker (domRestrict B W))
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ W ⊓ B.orthogonal ⊤

tactic: erw [LinearMap.mem_ker] at hker
state_before: case h.mp.intro.mk.intro
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : ⟨x, hx⟩ ∈ ↑(ker (domRestrict B W))
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ W ⊓ B.orthogonal ⊤
state_after: case h.mp.intro.mk.intro
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ W ⊓ B.orthogonal ⊤

tactic: constructor
state_before: case h.mp.intro.mk.intro
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ W ⊓ B.orthogonal ⊤
state_after: case h.mp.intro.mk.intro.left
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ ↑W

case h.mp.intro.mk.intro.right
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ ↑(B.orthogonal ⊤)

tactic: simp [hx]
state_before: case h.mp.intro.mk.intro.left
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ ↑W
state_after: no goals

tactic: intro y _
state_before: case h.mp.intro.mk.intro.right
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
⊢ (Submodule.subtype W) ⟨x, hx⟩ ∈ ↑(B.orthogonal ⊤)
state_after: case h.mp.intro.mk.intro.right
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ B.IsOrtho y ((Submodule.subtype W) ⟨x, hx⟩)

tactic: rw [IsOrtho, b]
state_before: case h.mp.intro.mk.intro.right
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ B.IsOrtho y ((Submodule.subtype W) ⟨x, hx⟩)
state_after: case h.mp.intro.mk.intro.right.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ (B ((Submodule.subtype W) ⟨x, hx⟩)) y = 0

tactic: change (B.domRestrict W) ⟨x, hx⟩ y = 0
state_before: case h.mp.intro.mk.intro.right.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ (B ((Submodule.subtype W) ⟨x, hx⟩)) y = 0
state_after: case h.mp.intro.mk.intro.right.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ ((domRestrict B W) ⟨x, hx⟩) y = 0

tactic: rw [hker]
state_before: case h.mp.intro.mk.intro.right.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ ((domRestrict B W) ⟨x, hx⟩) y = 0
state_after: case h.mp.intro.mk.intro.right.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ 0 y = 0

tactic: rfl
state_before: case h.mp.intro.mk.intro.right.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W
hker : (domRestrict B W) ⟨x, hx⟩ = 0
y : V
a✝ : y ∈ ⊤
⊢ 0 y = 0
state_after: no goals

tactic: simp_rw [Submodule.mem_map, LinearMap.mem_ker]
state_before: case h.mpr
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
⊢ x ∈ Submodule.map (Submodule.subtype W) (ker (domRestrict B W))
state_after: case h.mpr
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
⊢ ∃ y, (domRestrict B W) y = 0 ∧ (Submodule.subtype W) y = x

tactic: refine ⟨⟨x, hx.1⟩, ?_, rfl⟩
state_before: case h.mpr
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
⊢ ∃ y, (domRestrict B W) y = 0 ∧ (Submodule.subtype W) y = x
state_after: case h.mpr
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
⊢ (domRestrict B W) ⟨x, ⋯⟩ = 0

tactic: ext y
state_before: case h.mpr
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
⊢ (domRestrict B W) ⟨x, ⋯⟩ = 0
state_after: case h.mpr.h
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
y : V
⊢ ((domRestrict B W) ⟨x, ⋯⟩) y = 0 y

tactic: change B x y = 0
state_before: case h.mpr.h
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
y : V
⊢ ((domRestrict B W) ⟨x, ⋯⟩) y = 0 y
state_after: case h.mpr.h
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
y : V
⊢ (B x) y = 0

tactic: rw [b]
state_before: case h.mpr.h
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
y : V
⊢ (B x) y = 0
state_after: case h.mpr.h.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
y : V
⊢ (B y) x = 0

tactic: exact hx.2 _ Submodule.mem_top
state_before: case h.mpr.h.a
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M₂' : Type u_7
inst✝¹ : AddCommMonoid M₂'
inst✝ : Module R M₂'
B : BilinForm K V
W : Subspace K V
b : B.IsRefl
x : V
hx : x ∈ W ⊓ B.orthogonal ⊤
y : V
⊢ (B y) x = 0
state_after: no goals