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

Proof steps:
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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
state_after: 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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
this : finrank K ↥W + finrank K ↥(B.orthogonal W) = finrank K V + finrank K ↥(W ⊓ B.orthogonal ⊤)
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
tactic: have := finrank_add_finrank_orthogonal hB₀ (W := W)
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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
this : finrank K ↥W + finrank K ↥(B.orthogonal W) = finrank K V + finrank K ↥(W ⊓ B.orthogonal ⊤)
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
state_after: 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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
this : finrank K ↥W + finrank K ↥(B.orthogonal W) = finrank K V
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
tactic: rw [B.orthogonal_top hB hB₀, inf_bot_eq, finrank_bot, add_zero] at this
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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
this : finrank K ↥W + finrank K ↥(B.orthogonal W) = finrank K V
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
state_after: 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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
this✝ : finrank K ↥W + finrank K ↥(B.orthogonal W) = finrank K V
this : finrank K ↥W ≤ finrank K V
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
tactic: have : finrank K W ≤ finrank K V := finrank_le W
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₂'
inst✝ : FiniteDimensional K V
B : BilinForm K V
hB : B.Nondegenerate
hB₀ : B.IsRefl
W : Submodule K V
this✝ : finrank K ↥W + finrank K ↥(B.orthogonal W) = finrank K V
this : finrank K ↥W ≤ finrank K V
⊢ finrank K ↥(B.orthogonal W) = finrank K V - finrank K ↥W
state_after: no goals
tactic: omega