@@ -27,14 +27,6 @@ defined in `analysis.inner_product_space.basic`); the lemma
27
27
`submodule.sup_orthogonal_of_is_complete`, stating that for a complete subspace `K` of `E` we have
28
28
`K ⊔ Kᗮ = ⊤`, is a typical example.
29
29
30
- The last section covers orthonormal bases, etc. The lemma
31
- `maximal_orthonormal_iff_orthogonal_complement_eq_bot` states that an orthonormal set in an inner
32
- product space is maximal, if and only the orthogonal complement of its span is trivial.
33
- Various consequences are stated for finite-dimensional `E`, including that a maximal orthonormal
34
- set is a basis (`maximal_orthonormal_iff_basis_of_finite_dimensional`); these consequences require
35
- the theory on the orthogonal complement developed earlier in this file. For consequences in
36
- infinite dimension (Hilbert bases, etc.), see the file `analysis.inner_product_space.l2_space`.
37
-
38
30
## References
39
31
40
32
The orthogonal projection construction is adapted from
@@ -1067,8 +1059,6 @@ end orthogonal_family
1067
1059
1068
1060
section orthonormal_basis
1069
1061
1070
- /-! ### Existence of orthonormal basis, etc. -/
1071
-
1072
1062
variables {𝕜 E} {v : set E}
1073
1063
1074
1064
open finite_dimensional submodule set
@@ -1138,8 +1128,6 @@ begin
1138
1128
exact hu.inner_finsupp_eq_zero hxv' hl }
1139
1129
end
1140
1130
1141
- section finite_dimensional
1142
-
1143
1131
variables [finite_dimensional 𝕜 E]
1144
1132
1145
1133
/-- An orthonormal set in a finite-dimensional `inner_product_space` is maximal, if and only if it
@@ -1160,104 +1148,4 @@ begin
1160
1148
rw [← h.span_eq, coe_h, hv_coe] }
1161
1149
end
1162
1150
1163
- /-- In a finite-dimensional `inner_product_space`, any orthonormal subset can be extended to an
1164
- orthonormal basis. -/
1165
- lemma exists_subset_is_orthonormal_basis
1166
- (hv : orthonormal 𝕜 (coe : v → E)) :
1167
- ∃ (u ⊇ v) (b : basis u 𝕜 E), orthonormal 𝕜 b ∧ ⇑b = coe :=
1168
- begin
1169
- obtain ⟨u, hus, hu, hu_max⟩ := exists_maximal_orthonormal hv,
1170
- obtain ⟨b, hb⟩ := (maximal_orthonormal_iff_basis_of_finite_dimensional hu).mp hu_max,
1171
- exact ⟨u, hus, b, by rwa hb, hb⟩
1172
- end
1173
-
1174
- variables (𝕜 E)
1175
-
1176
- /-- Index for an arbitrary orthonormal basis on a finite-dimensional `inner_product_space`. -/
1177
- def orthonormal_basis_index : set E :=
1178
- classical.some (exists_subset_is_orthonormal_basis (orthonormal_empty 𝕜 E))
1179
-
1180
-
1181
- /-- A finite-dimensional `inner_product_space` has an orthonormal basis. -/
1182
- def std_orthonormal_basis :
1183
- basis (orthonormal_basis_index 𝕜 E) 𝕜 E :=
1184
- (exists_subset_is_orthonormal_basis (orthonormal_empty 𝕜 E)).some_spec.some_spec.some
1185
-
1186
- lemma std_orthonormal_basis_orthonormal :
1187
- orthonormal 𝕜 (std_orthonormal_basis 𝕜 E) :=
1188
- (exists_subset_is_orthonormal_basis (orthonormal_empty 𝕜 E)).some_spec.some_spec.some_spec.1
1189
-
1190
- @[simp] lemma coe_std_orthonormal_basis :
1191
- ⇑(std_orthonormal_basis 𝕜 E) = coe :=
1192
- (exists_subset_is_orthonormal_basis (orthonormal_empty 𝕜 E)).some_spec.some_spec.some_spec.2
1193
-
1194
- instance : fintype (orthonormal_basis_index 𝕜 E) :=
1195
- @is_noetherian.fintype_basis_index _ _ _ _ _ _
1196
- (is_noetherian.iff_fg.2 infer_instance) (std_orthonormal_basis 𝕜 E)
1197
-
1198
- variables {𝕜 E}
1199
-
1200
- /-- An `n`-dimensional `inner_product_space` has an orthonormal basis indexed by `fin n`. -/
1201
- def fin_std_orthonormal_basis {n : ℕ} (hn : finrank 𝕜 E = n) :
1202
- basis (fin n) 𝕜 E :=
1203
- have h : fintype.card (orthonormal_basis_index 𝕜 E) = n,
1204
- by rw [← finrank_eq_card_basis (std_orthonormal_basis 𝕜 E), hn],
1205
- (std_orthonormal_basis 𝕜 E).reindex (fintype.equiv_fin_of_card_eq h)
1206
-
1207
- lemma fin_std_orthonormal_basis_orthonormal {n : ℕ} (hn : finrank 𝕜 E = n) :
1208
- orthonormal 𝕜 (fin_std_orthonormal_basis hn) :=
1209
- suffices orthonormal 𝕜 (std_orthonormal_basis _ _ ∘ equiv.symm _),
1210
- by { simp only [fin_std_orthonormal_basis, basis.coe_reindex], assumption }, -- simpa doesn't work?
1211
- (std_orthonormal_basis_orthonormal 𝕜 E).comp _ (equiv.injective _)
1212
-
1213
- section subordinate_orthonormal_basis
1214
- open direct_sum
1215
- variables {n : ℕ} (hn : finrank 𝕜 E = n) {ι : Type *} [fintype ι] [decidable_eq ι]
1216
- {V : ι → submodule 𝕜 E} (hV : is_internal V)
1217
-
1218
- /-- Exhibit a bijection between `fin n` and the index set of a certain basis of an `n`-dimensional
1219
- inner product space `E`. This should not be accessed directly, but only via the subsequent API. -/
1220
- @[irreducible] def direct_sum.is_internal.sigma_orthonormal_basis_index_equiv :
1221
- (Σ i, orthonormal_basis_index 𝕜 (V i)) ≃ fin n :=
1222
- let b := hV.collected_basis (λ i, std_orthonormal_basis 𝕜 (V i)) in
1223
- fintype.equiv_fin_of_card_eq $ (finite_dimensional.finrank_eq_card_basis b).symm.trans hn
1224
-
1225
- /-- An `n`-dimensional `inner_product_space` equipped with a decomposition as an internal direct
1226
- sum has an orthonormal basis indexed by `fin n` and subordinate to that direct sum. -/
1227
- @[irreducible] def direct_sum.is_internal.subordinate_orthonormal_basis :
1228
- basis (fin n) 𝕜 E :=
1229
- (hV.collected_basis (λ i, std_orthonormal_basis 𝕜 (V i))).reindex
1230
- (hV.sigma_orthonormal_basis_index_equiv hn)
1231
-
1232
- /-- An `n`-dimensional `inner_product_space` equipped with a decomposition as an internal direct
1233
- sum has an orthonormal basis indexed by `fin n` and subordinate to that direct sum. This function
1234
- provides the mapping by which it is subordinate. -/
1235
- def direct_sum.is_internal.subordinate_orthonormal_basis_index (a : fin n) : ι :=
1236
- ((hV.sigma_orthonormal_basis_index_equiv hn).symm a).1
1237
-
1238
- /-- The basis constructed in `orthogonal_family.subordinate_orthonormal_basis` is orthonormal. -/
1239
- lemma direct_sum.is_internal.subordinate_orthonormal_basis_orthonormal
1240
- (hV' : @orthogonal_family 𝕜 _ _ _ _ (λ i, V i) _ (λ i, (V i).subtypeₗᵢ)) :
1241
- orthonormal 𝕜 (hV.subordinate_orthonormal_basis hn) :=
1242
- begin
1243
- simp only [direct_sum.is_internal.subordinate_orthonormal_basis, basis.coe_reindex],
1244
- have : orthonormal 𝕜 (hV.collected_basis (λ i, std_orthonormal_basis 𝕜 (V i))) :=
1245
- hV.collected_basis_orthonormal hV' (λ i, std_orthonormal_basis_orthonormal 𝕜 (V i)),
1246
- exact this.comp _ (equiv.injective _),
1247
- end
1248
-
1249
- /-- The basis constructed in `orthogonal_family.subordinate_orthonormal_basis` is subordinate to
1250
- the `orthogonal_family` in question. -/
1251
- lemma direct_sum.is_internal.subordinate_orthonormal_basis_subordinate (a : fin n) :
1252
- hV.subordinate_orthonormal_basis hn a ∈ V (hV.subordinate_orthonormal_basis_index hn a) :=
1253
- by simpa only [direct_sum.is_internal.subordinate_orthonormal_basis, basis.coe_reindex]
1254
- using hV.collected_basis_mem (λ i, std_orthonormal_basis 𝕜 (V i))
1255
- ((hV.sigma_orthonormal_basis_index_equiv hn).symm a)
1256
-
1257
- attribute [irreducible] direct_sum.is_internal.subordinate_orthonormal_basis_index
1258
-
1259
- end subordinate_orthonormal_basis
1260
-
1261
- end finite_dimensional
1262
-
1263
1151
end orthonormal_basis
0 commit comments