@@ -50,32 +50,47 @@ namespace BilinForm
5050
5151/-- The proposition that two elements of a bilinear form space are orthogonal. For orthogonality
5252of an indexed set of elements, use `BilinForm.iIsOrtho`. -/
53+ @ [deprecated "Use `B x y = 0`." (since := "2026-03-30" )]
5354def IsOrtho (B : BilinForm R M) (x y : M) : Prop :=
5455 B x y = 0
5556
57+ set_option linter.deprecated false in
58+ @ [deprecated "`BilinMap.IsOrtho` has been deprecated" (since := "2026-03-30" )]
5659theorem isOrtho_def {B : BilinForm R M} {x y : M} : B.IsOrtho x y ↔ B x y = 0 :=
5760 Iff.rfl
5861
62+ set_option linter.deprecated false in
63+ @ [deprecated "`BilinMap.IsOrtho` has been deprecated" (since := "2026-03-30" )]
5964theorem isOrtho_zero_left (x : M) : IsOrtho B (0 : M) x := LinearMap.isOrtho_zero_left B x
6065
66+ set_option linter.deprecated false in
67+ @ [deprecated "`BilinMap.IsOrtho` has been deprecated" (since := "2026-03-30" )]
6168theorem isOrtho_zero_right (x : M) : IsOrtho B x (0 : M) :=
6269 zero_right x
6370
64- theorem ne_zero_of_not_isOrtho_self {B : BilinForm K V} (x : V) (hx₁ : ¬B.IsOrtho x x) : x ≠ 0 :=
65- fun hx₂ => hx₁ (hx₂.symm ▸ isOrtho_zero_left _)
71+ theorem ne_zero_of_not_isOrtho_self {B : BilinForm K V} (x : V) (hx₁ : B x x ≠ 0 ) : x ≠ 0 := by
72+ by_contra; simp [this] at hx₁
6673
67- theorem IsRefl.ortho_comm (H : B.IsRefl) {x y : M} : IsOrtho B x y ↔ IsOrtho B y x :=
74+ theorem IsRefl.eq_iff (H : B.IsRefl) {x y : M} : B x y = 0 ↔ B y x = 0 :=
6875 ⟨eq_zero H, eq_zero H⟩
6976
70- theorem IsAlt.ortho_comm (H : B₁.IsAlt) {x y : M₁} : IsOrtho B₁ x y ↔ IsOrtho B₁ y x :=
71- LinearMap.IsAlt. ortho_comm H
77+ @ [ deprecated (since := "2026-03-31" )]
78+ alias IsRefl. ortho_comm := IsRefl.eq_iff
7279
73- theorem IsSymm.ortho_comm (H : B.IsSymm) {x y : M} : IsOrtho B x y ↔ IsOrtho B y x :=
74- LinearMap.IsSymm.ortho_comm (isSymm_iff.1 H)
80+ theorem IsAlt.eq_iff (H : B₁.IsAlt) {x y : M₁} : B₁ x y = 0 ↔ B₁ y x = 0 :=
81+ LinearMap.IsAlt.eq_iff H
82+
83+ @ [deprecated (since := "2026-03-31" )]
84+ alias IsAlt.ortho_comm := IsAlt.eq_iff
85+
86+ theorem IsSymm.eq_iff (H : B.IsSymm) {x y : M} : B x y = 0 ↔ B y x = 0 :=
87+ LinearMap.IsSymm.eq_iff (isSymm_iff.1 H)
88+
89+ @ [deprecated (since := "2026-03-31" )]
90+ alias IsSymm.ortho_comm := IsSymm.eq_iff
7591
7692/-- A set of vectors `v` is orthogonal with respect to some bilinear form `B` if and only
77- if for all `i ≠ j`, `B (v i) (v j) = 0`. For orthogonality between two elements, use
78- `BilinForm.IsOrtho` -/
93+ if for all `i ≠ j`, `B (v i) (v j) = 0`. -/
7994def iIsOrtho {n : Type w} (B : BilinForm R M) (v : n → M) : Prop :=
8095 B.IsOrthoᵢ v
8196
@@ -88,15 +103,17 @@ section
88103variable {R₄ M₄ : Type *} [CommRing R₄] [IsDomain R₄]
89104variable [AddCommGroup M₄] [Module R₄ M₄] {G : BilinForm R₄ M₄}
90105
91- @[simp]
106+ set_option linter.deprecated false in
107+ @ [deprecated "`BilinMap.IsOrtho` has been deprecated" (since := "2026-03-30" )]
92108theorem isOrtho_smul_left {x y : M₄} {a : R₄} (ha : a ≠ 0 ) :
93109 IsOrtho G (a • x) y ↔ IsOrtho G x y := by
94110 dsimp only [IsOrtho]
95111 rw [map_smul]
96112 simp only [LinearMap.smul_apply, smul_eq_mul, mul_eq_zero, or_iff_right_iff_imp]
97113 exact fun a ↦ (ha a).elim
98114
99- @[simp]
115+ set_option linter.deprecated false in
116+ @ [deprecated "`BilinMap.IsOrtho` has been deprecated" (since := "2026-03-30" )]
100117theorem isOrtho_smul_right {x y : M₄} {a : R₄} (ha : a ≠ 0 ) :
101118 IsOrtho G x (a • y) ↔ IsOrtho G x y := by
102119 dsimp only [IsOrtho]
@@ -107,7 +124,7 @@ theorem isOrtho_smul_right {x y : M₄} {a : R₄} (ha : a ≠ 0) :
107124/-- A set of orthogonal vectors `v` with respect to some bilinear form `B` is linearly independent
108125 if for all `i`, `B (v i) (v i) ≠ 0`. -/
109126theorem linearIndependent_of_iIsOrtho {n : Type w} {B : BilinForm K V} {v : n → V}
110- (hv₁ : B.iIsOrtho v) (hv₂ : ∀ i, ¬B.IsOrtho (v i) (v i)) : LinearIndependent K v := by
127+ (hv₁ : B.iIsOrtho v) (hv₂ : ∀ i, B (v i) (v i) ≠ 0 ) : LinearIndependent K v := by
111128 classical
112129 rw [linearIndependent_iff']
113130 intro s w hs i hi
@@ -136,10 +153,10 @@ variable {N L : Submodule R M}
136153
137154@[simp]
138155theorem mem_orthogonal_iff {N : Submodule R M} {m : M} :
139- m ∈ B.orthogonal N ↔ ∀ n ∈ N, IsOrtho B n m :=
156+ m ∈ B.orthogonal N ↔ ∀ n ∈ N, B n m = 0 :=
140157 Iff.rfl
141158
142- @[simp] lemma orthogonal_bot : B.orthogonal ⊥ = ⊤ := by ext; simp [IsOrtho]
159+ @[simp] lemma orthogonal_bot : B.orthogonal ⊥ = ⊤ := by ext; simp
143160
144161theorem orthogonal_le (h : N ≤ L) : B.orthogonal L ≤ B.orthogonal N := fun _ hn l hl => hn l (h hl)
145162
@@ -148,14 +165,14 @@ theorem le_orthogonal_orthogonal (b : B.IsRefl) : N ≤ B.orthogonal (B.orthogon
148165
149166lemma orthogonal_top_eq_ker (hB : B.IsRefl) :
150167 B.orthogonal ⊤ = LinearMap.ker B := by
151- ext; simp [LinearMap.BilinForm.IsOrtho, LinearMap. ext_iff, hB.eq_iff]
168+ ext; simp [LinearMap.ext_iff, hB.eq_iff]
152169
153170lemma orthogonal_top_eq_bot (hB : B.Nondegenerate) :
154171 B.orthogonal ⊤ = ⊥ :=
155172 (Submodule.eq_bot_iff _).mpr fun x hx ↦ hB.2 x (by simpa using ! hx)
156173
157174-- ↓ This lemma only applies in fields as we require `a * b = 0 → a = 0 ∨ b = 0`
158- theorem span_singleton_inf_orthogonal_eq_bot {B : BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x) :
175+ theorem span_singleton_inf_orthogonal_eq_bot {B : BilinForm K V} {x : V} (hx : B x x ≠ 0 ) :
159176 K ∙ x ⊓ B.orthogonal (K ∙ x) = ⊥ :=
160177 LinearMap.span_singleton_inf_orthogonal_eq_bot B _ hx
161178
@@ -164,13 +181,13 @@ theorem orthogonal_span_singleton_eq_toLin_ker {B : BilinForm K V} (x : V) :
164181 B.orthogonal (K ∙ x) = LinearMap.ker (LinearMap.BilinForm.toLinHomAux₁ B x) :=
165182 LinearMap.orthogonal_span_singleton_eq_to_lin_ker ..
166183
167- theorem span_singleton_sup_orthogonal_eq_top {B : BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x) :
184+ theorem span_singleton_sup_orthogonal_eq_top {B : BilinForm K V} {x : V} (hx : B x x ≠ 0 ) :
168185 K ∙ x ⊔ B.orthogonal (K ∙ x) = ⊤ :=
169186 LinearMap.span_singleton_sup_orthogonal_eq_top hx
170187
171188/-- Given a bilinear form `B` and some `x` such that `B x x ≠ 0`, the span of the singleton of `x`
172189 is complement to its orthogonal complement. -/
173- theorem isCompl_span_singleton_orthogonal {B : BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x) :
190+ theorem isCompl_span_singleton_orthogonal {B : BilinForm K V} {x : V} (hx : B x x ≠ 0 ) :
174191 IsCompl (K ∙ x) (B.orthogonal <| K ∙ x) :=
175192 LinearMap.isCompl_span_singleton_orthogonal hx
176193
@@ -189,14 +206,14 @@ theorem nondegenerate_restrict_of_disjoint_orthogonal (B : BilinForm R₁ M₁)
189206elements. -/
190207theorem iIsOrtho.not_isOrtho_basis_self_of_nondegenerate {n : Type w} [Nontrivial R]
191208 {B : BilinForm R M} {v : Basis n R M} (h : B.iIsOrtho v) (hB : B.Nondegenerate) (i : n) :
192- ¬B.IsOrtho (v i) (v i) :=
209+ B (v i) (v i) ≠ 0 :=
193210 h.not_isOrtho_basis_self_of_separatingLeft hB.1 i
194211
195212/-- Given an orthogonal basis with respect to a bilinear form, the bilinear form is nondegenerate
196213iff the basis has no elements which are self-orthogonal. -/
197214theorem iIsOrtho.nondegenerate_iff_not_isOrtho_basis_self {n : Type w} [IsDomain R]
198215 (B : BilinForm R M) (v : Basis n R M) (hO : B.iIsOrtho v) :
199- B.Nondegenerate ↔ ∀ i, ¬B.IsOrtho (v i) (v i) :=
216+ B.Nondegenerate ↔ ∀ i, B (v i) (v i) ≠ 0 :=
200217 ⟨hO.not_isOrtho_basis_self_of_nondegenerate, hO.nondegenerate_of_not_isOrtho_basis_self _⟩
201218
202219section
@@ -351,7 +368,7 @@ on the whole space. -/
351368/-- The restriction of a reflexive, non-degenerate bilinear form on the orthogonal complement of
352369the span of a singleton is also non-degenerate. -/
353370theorem restrict_nondegenerate_orthogonal_spanSingleton (B : BilinForm K V) (b₁ : B.Nondegenerate)
354- (b₂ : B.IsRefl) {x : V} (hx : ¬B.IsOrtho x x) :
371+ (b₂ : B.IsRefl) {x : V} (hx : B x x ≠ 0 ) :
355372 Nondegenerate <| B.restrict <| B.orthogonal (K ∙ x) := by
356373 have (n : V) : n ∈ K ∙ x ⊔ B.orthogonal (K ∙ x) :=
357374 (span_singleton_sup_orthogonal_eq_top hx).symm ▸ Submodule.mem_top
0 commit comments