|
| 1 | +/- |
| 2 | +Copyright (c) 2022 Michael Blyth. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Michael Blyth |
| 5 | +-/ |
| 6 | + |
| 7 | +import linear_algebra.projective_space.basic |
| 8 | + |
| 9 | +/-! |
| 10 | +# Independence in Projective Space |
| 11 | +
|
| 12 | +In this file we define independence and dependence of families of elements in projective space. |
| 13 | +
|
| 14 | +## Implementation Details |
| 15 | +
|
| 16 | +We use an inductive definition to define the independence of points in projective |
| 17 | +space, where the only constructor assumes an independent family of vectors from the |
| 18 | +ambient vector space. Similarly for the definition of dependence. |
| 19 | +
|
| 20 | +## Results |
| 21 | +
|
| 22 | +- A family of elements is dependent if and only if it is not independent. |
| 23 | +- Two elements are dependent if and only if they are equal. |
| 24 | +
|
| 25 | +# Future Work |
| 26 | +
|
| 27 | +- Define collinearity in projective space. |
| 28 | +- Prove the axioms of a projective geometry are satisfied by the dependence relation. |
| 29 | +- Define projective linear subspaces. |
| 30 | +-/ |
| 31 | + |
| 32 | + |
| 33 | +variables {ι K V : Type*} [field K] [add_comm_group V] [module K V] {f : ι → ℙ K V} |
| 34 | + |
| 35 | +namespace projectivization |
| 36 | + |
| 37 | +/-- A linearly independent family of nonzero vectors gives an independent family of points |
| 38 | +in projective space. -/ |
| 39 | +inductive independent : (ι → ℙ K V) → Prop |
| 40 | +| mk (f : ι → V) (hf : ∀ i : ι, f i ≠ 0) (hl : linear_independent K f) : |
| 41 | + independent (λ i, mk K (f i) (hf i)) |
| 42 | + |
| 43 | +/-- A family of points in a projective space is independent if and only if the representative |
| 44 | +vectors determined by the family are linearly independent. -/ |
| 45 | +lemma independent_iff : independent f ↔ linear_independent K (projectivization.rep ∘ f) := |
| 46 | +begin |
| 47 | + refine ⟨_, λ h, _⟩, |
| 48 | + { rintros ⟨ff, hff, hh⟩, |
| 49 | + choose a ha using λ (i : ι), exists_smul_eq_mk_rep K (ff i) (hff i), |
| 50 | + convert hh.units_smul a, |
| 51 | + ext i, exact (ha i).symm }, |
| 52 | + { convert independent.mk _ _ h, |
| 53 | + { ext, simp only [mk_rep] }, |
| 54 | + { intro i, apply rep_nonzero } } |
| 55 | +end |
| 56 | + |
| 57 | +/-- A family of points in projective space is independent if and only if the family of |
| 58 | +submodules which the points determine is independent in the lattice-theoretic sense. -/ |
| 59 | +lemma independent_iff_complete_lattice_independent : |
| 60 | + independent f ↔ (complete_lattice.independent $ λ i, (f i).submodule) := |
| 61 | +begin |
| 62 | + refine ⟨_, λ h, _⟩, |
| 63 | + { rintros ⟨f, hf, hi⟩, |
| 64 | + simpa [submodule_mk, complete_lattice.independent_iff_linear_independent_of_ne_zero hf] }, |
| 65 | + { rw independent_iff, |
| 66 | + refine h.linear_independent (projectivization.submodule ∘ f) (λ i, _) (λ i, _), |
| 67 | + { simpa only [function.comp_app, submodule_eq] using submodule.mem_span_singleton_self _, }, |
| 68 | + { exact rep_nonzero (f i) } }, |
| 69 | +end |
| 70 | + |
| 71 | +/-- A linearly dependent family of nonzero vectors gives a dependent family of points |
| 72 | +in projective space. -/ |
| 73 | +inductive dependent : (ι → ℙ K V) → Prop |
| 74 | +| mk (f : ι → V) (hf : ∀ i : ι, f i ≠ 0) (h : ¬linear_independent K f) : |
| 75 | + dependent (λ i, mk K (f i) (hf i)) |
| 76 | + |
| 77 | +/-- A family of points in a projective space is dependent if and only if their |
| 78 | +representatives are linearly dependent. -/ |
| 79 | +lemma dependent_iff : dependent f ↔ ¬ linear_independent K (projectivization.rep ∘ f) := |
| 80 | +begin |
| 81 | + refine ⟨_, λ h, _⟩, |
| 82 | + { rintros ⟨ff, hff, hh1⟩, |
| 83 | + contrapose! hh1, |
| 84 | + choose a ha using λ (i : ι), exists_smul_eq_mk_rep K (ff i) (hff i), |
| 85 | + convert hh1.units_smul a⁻¹, |
| 86 | + ext i, |
| 87 | + simp only [← ha, inv_smul_smul, pi.smul_apply', pi.inv_apply, function.comp_app] }, |
| 88 | + { convert dependent.mk _ _ h, |
| 89 | + { ext i, simp only [mk_rep] }, |
| 90 | + { exact λ i, rep_nonzero (f i) } } |
| 91 | +end |
| 92 | + |
| 93 | +/-- Dependence is the negation of independence. -/ |
| 94 | +lemma dependent_iff_not_independent : dependent f ↔ ¬ independent f := |
| 95 | +by rw [dependent_iff, independent_iff] |
| 96 | + |
| 97 | +/-- Independence is the negation of dependence. -/ |
| 98 | +lemma independent_iff_not_dependent : independent f ↔ ¬ dependent f := |
| 99 | +by rw [dependent_iff_not_independent, not_not] |
| 100 | + |
| 101 | +/-- Two points in a projective space are dependent if and only if they are equal. -/ |
| 102 | +@[simp] lemma dependent_pair_iff_eq (u v : ℙ K V) : dependent ![u, v] ↔ u = v := |
| 103 | +begin |
| 104 | + simp_rw [dependent_iff_not_independent, independent_iff, linear_independent_fin2, |
| 105 | + function.comp_app, matrix.cons_val_one, matrix.head_cons, |
| 106 | + ne.def, matrix.cons_val_zero, not_and, not_forall, not_not, |
| 107 | + ← mk_eq_mk_iff' K _ _ (rep_nonzero u) (rep_nonzero v), mk_rep, |
| 108 | + imp_iff_right_iff], |
| 109 | + exact or.inl (rep_nonzero v), |
| 110 | +end |
| 111 | + |
| 112 | +/-- Two points in a projective space are independent if and only if the points are not equal. -/ |
| 113 | +@[simp] lemma independent_pair_iff_neq (u v : ℙ K V) : independent ![u, v] ↔ u ≠ v := |
| 114 | +by rw [independent_iff_not_dependent, dependent_pair_iff_eq u v] |
| 115 | + |
| 116 | +end projectivization |
0 commit comments