@@ -283,6 +283,17 @@ let ⟨B, hB, B_fin⟩ := exists_is_basis_finite K V, ⟨g, hg⟩ := finite_dime
283
283
284
284
variables {K V}
285
285
286
+ /-- A module with dimension 1 has a basis of the form `{v}` for some `v : V`. -/
287
+ lemma exists_is_basis_singleton (h : finrank K V = 1 ) :
288
+ ∃ (v : V), is_basis K (coe : ({v} : set V) → V) :=
289
+ begin
290
+ haveI := finite_dimensional_of_finrank (_root_.zero_lt_one.trans_le h.symm.le),
291
+ obtain ⟨s, b⟩ := exists_is_basis_finset K V,
292
+ obtain ⟨v, rfl⟩ := finset.card_eq_one.mp ((finrank_eq_card_finset_basis b).symm.trans h),
293
+ use v,
294
+ convert b; simp,
295
+ end
296
+
286
297
lemma cardinal_mk_le_finrank_of_linear_independent
287
298
[finite_dimensional K V] {ι : Type w} {b : ι → V} (h : linear_independent K b) :
288
299
cardinal.mk ι ≤ finrank K V :=
@@ -344,7 +355,7 @@ lemma finrank_zero_iff [finite_dimensional K V] :
344
355
iff.trans (by { rw ← finrank_eq_dim, norm_cast }) (@dim_zero_iff K V _ _ _)
345
356
346
357
/-- A finite dimensional space that is a subsingleton has zero `finrank`. -/
347
- lemma finrank_zero_of_subsingleton [finite_dimensional K V] [ h : subsingleton V] :
358
+ lemma finrank_zero_of_subsingleton [h : subsingleton V] :
348
359
finrank K V = 0 :=
349
360
finrank_zero_iff.2 h
350
361
@@ -1197,8 +1208,99 @@ lemma set_is_basis_of_linear_independent_of_card_eq_finrank
1197
1208
is_basis K (coe : s → V) :=
1198
1209
is_basis_of_linear_independent_of_card_eq_finrank lin_ind (trans s.to_finset_card.symm card_eq)
1199
1210
1211
+ lemma singleton_is_basis (v : V) (nz : v ≠ 0 ) (h : finrank K V = 1 ) :
1212
+ is_basis K (coe : ({v} : set V) → V) :=
1213
+ set_is_basis_of_linear_independent_of_card_eq_finrank
1214
+ (linear_independent_singleton nz) (by simp [h])
1215
+
1200
1216
end is_basis
1201
1217
1218
+ /-!
1219
+ We now give characterisations of `finrank K V = 1` and `finrank K V ≤ 1`.
1220
+ -/
1221
+ section finrank_eq_one
1222
+
1223
+ /-- If there is a nonzero vector and every other vector is a multiple of it,
1224
+ then the module has dimension one. -/
1225
+ lemma finrank_eq_one (v : V) (n : v ≠ 0 ) (h : ∀ w : V, ∃ c : K, c • v = w) :
1226
+ finrank K V = 1 :=
1227
+ begin
1228
+ convert finrank_eq_card_basis ((is_basis_singleton_iff punit v).mpr _),
1229
+ apply_instance, apply_instance, -- Not sure why these aren't found automatically.
1230
+ exact ⟨n, h⟩,
1231
+ end
1232
+
1233
+ /--
1234
+ If every vector is a multiple of some `v : V`, then `V` has dimension at most one.
1235
+ -/
1236
+ lemma finrank_le_one (v : V) (h : ∀ w : V, ∃ c : K, c • v = w) :
1237
+ finrank K V ≤ 1 :=
1238
+ begin
1239
+ by_cases n : v = 0 ,
1240
+ { subst n,
1241
+ convert zero_le_one,
1242
+ haveI := subsingleton_of_forall_eq (0 : V) (λ w, by { obtain ⟨c, rfl⟩ := h w, simp, }),
1243
+ exact finrank_zero_of_subsingleton, },
1244
+ { exact (finrank_eq_one v n h).le, }
1245
+ end
1246
+
1247
+ /--
1248
+ A module with a nonzero vector `v` has dimension 1 iff `v` spans.
1249
+ -/
1250
+ lemma finrank_eq_one_iff_of_nonzero (v : V) (nz : v ≠ 0 ) :
1251
+ finrank K V = 1 ↔ span K ({v} : set V) = ⊤ :=
1252
+ ⟨λ h, by { convert (singleton_is_basis v nz h).2 , simp },
1253
+ λ s, finrank_eq_card_basis ⟨linear_independent_singleton nz, by { convert s, simp }⟩⟩
1254
+
1255
+ /--
1256
+ A module has dimension 1 iff there is some `v : V` so `{v}` is a basis.
1257
+ -/
1258
+ lemma finrank_eq_one_iff :
1259
+ finrank K V = 1 ↔ ∃ (v : V), is_basis K (λ x : ({v} : set V), (x : V)) :=
1260
+ begin
1261
+ fsplit,
1262
+ { intro h,
1263
+ haveI := finite_dimensional_of_finrank (_root_.zero_lt_one.trans_le h.symm.le),
1264
+ exact exists_is_basis_singleton h, },
1265
+ { rintro ⟨v, b⟩,
1266
+ convert finrank_eq_card_basis b, }
1267
+ end
1268
+
1269
+ /--
1270
+ A module has dimension 1 iff there is some nonzero `v : V` so every vector is a multiple of `v`.
1271
+ -/
1272
+ lemma finrank_eq_one_iff' :
1273
+ finrank K V = 1 ↔ ∃ (v : V) (n : v ≠ 0 ), ∀ w : V, ∃ c : K, c • v = w :=
1274
+ begin
1275
+ convert finrank_eq_one_iff,
1276
+ funext v,
1277
+ simp only [exists_prop, eq_iff_iff, ne.def],
1278
+ convert (is_basis_singleton_iff ({v} : set V) v).symm,
1279
+ ext ⟨x, ⟨⟩⟩,
1280
+ refl,
1281
+ apply_instance, apply_instance, -- Not sure why this aren't found automatically.
1282
+ end
1283
+
1284
+ /--
1285
+ A finite dimensional module has dimension at most 1 iff
1286
+ there is some `v : V` so every vector is a multiple of `v`.
1287
+ -/
1288
+ lemma finrank_le_one_iff [finite_dimensional K V] :
1289
+ finrank K V ≤ 1 ↔ ∃ (v : V), ∀ w : V, ∃ c : K, c • v = w :=
1290
+ begin
1291
+ fsplit,
1292
+ { intro h,
1293
+ by_cases h' : finrank K V = 0 ,
1294
+ { use 0 , intro w, use 0 , haveI := finrank_zero_iff.mp h', apply subsingleton.elim, },
1295
+ { replace h' := zero_lt_iff.mpr h', have : finrank K V = 1 , { linarith },
1296
+ obtain ⟨v, -, p⟩ := finrank_eq_one_iff'.mp this ,
1297
+ use ⟨v, p⟩, }, },
1298
+ { rintro ⟨v, p⟩,
1299
+ exact finrank_le_one v p, }
1300
+ end
1301
+
1302
+ end finrank_eq_one
1303
+
1202
1304
section subalgebra_dim
1203
1305
open module
1204
1306
variables {F E : Type *} [field F] [field E] [algebra F E]
0 commit comments