-
Notifications
You must be signed in to change notification settings - Fork 842
feat(Geometry/Euclidean/Projection): characteristic property #30698
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
c4f608e
6fcc7d1
f84640a
29f4f21
d061e26
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -276,6 +276,36 @@ theorem orthogonalProjection_vsub_orthogonalProjection (s : AffineSubspace ℝ P | |
| rw [← neg_vsub_eq_vsub_rev, inner_neg_right, | ||
| orthogonalProjection_vsub_mem_direction_orthogonal s p c hc, neg_zero] | ||
|
|
||
| /-- The characteristic property of the orthogonal projection. This form is typically more | ||
| convenient to use than `inter_eq_singleton_orthogonalProjection`. -/ | ||
| lemma orthogonalProjection_eq_iff_mem {s : AffineSubspace ℝ P} [Nonempty s] | ||
| [s.direction.HasOrthogonalProjection] {p q : P} : | ||
| orthogonalProjection s p = q ↔ q ∈ s ∧ p -ᵥ q ∈ s.directionᗮ := by | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there a version of this without the coercion on the LHS? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure what that would look like; if you say There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Indeed I'm thinking of That would also cause your lemma to gain a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added that version and renamed this one. |
||
| constructor | ||
| · rintro rfl | ||
| exact ⟨orthogonalProjection_mem _, vsub_orthogonalProjection_mem_direction_orthogonal _ _⟩ | ||
| · rintro ⟨hqs, hpq⟩ | ||
| have hq : q ∈ mk' p s.directionᗮ := by | ||
| rwa [mem_mk', ← neg_mem_iff, neg_vsub_eq_vsub_rev] | ||
| suffices q ∈ ({(orthogonalProjection s p : P)} : Set P) by | ||
jsm28 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| simpa [eq_comm] using this | ||
| rw [← inter_eq_singleton_orthogonalProjection] | ||
| simp only [Set.mem_inter_iff, SetLike.mem_coe] | ||
| exact ⟨hqs, hq⟩ | ||
|
|
||
| /-- A condition for two points to have the same orthogonal projection onto a given subspace. -/ | ||
| lemma orthogonalProjection_eq_orthogonalProjection_iff_vsub_mem {s : AffineSubspace ℝ P} | ||
| [Nonempty s] [s.direction.HasOrthogonalProjection] {p q : P} : | ||
| orthogonalProjection s p = orthogonalProjection s q ↔ p -ᵥ q ∈ s.directionᗮ := by | ||
| suffices (orthogonalProjection s p : P) = orthogonalProjection s q ↔ | ||
| p -ᵥ q ∈ s.directionᗮ by | ||
| simpa using this | ||
jsm28 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| rw [orthogonalProjection_eq_iff_mem] | ||
| simp only [SetLike.coe_mem, true_and] | ||
| rw [← s.directionᗮ.add_mem_iff_left (x := p -ᵥ q) | ||
| (vsub_orthogonalProjection_mem_direction_orthogonal s q)] | ||
| simp | ||
|
|
||
| /-- Adding a vector to a point in the given subspace, then taking the | ||
| orthogonal projection, produces the original point if the vector was | ||
| in the orthogonal direction. -/ | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this spelling is the more convenient one, should
orthogonalProjectionhave been defined somehow in terms of this specification instead? If you think the answer is yes, can you add a TODO?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my view, the right way to redefine
orthogonalProjectionis in #27378 (which may have been abandoned by the author). But any definition in terms of orthogonal projection for submodules is unlikely to achieve the nicest form of the characteristic property.