Skip to content
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

Orthogonality for affine subspaces #5539

Open
2 tasks
urkud opened this issue Jun 28, 2023 · 5 comments · May be fixed by #5919
Open
2 tasks

Orthogonality for affine subspaces #5539

urkud opened this issue Jun 28, 2023 · 5 comments · May be fixed by #5919
Assignees

Comments

@urkud
Copy link
Member

urkud commented Jun 28, 2023

  • Define AffineSubspace.IsOrtho s t as s.direction ⟂ t.direction and develop basic API (mostly copy from
    Submodule.IsOrtho). Additions specific to affine subspaces
    include lemmas like IsOrtho.trans_parallel.

  • Define AffineSubspace.orthogonal, e.g., as

    /-- Orthogonal complement to an affine subspace passing through a given point. -/
    def orthogonal (s : AffineSubspace ℝ P) (b : P) : AffineSubspace ℝ P :=
    .comap (AffineMap.id ℝ P -ᵥ AffineMap.const ℝ P b) (s.directionᗮ).toAffineSubspace

    and prove lemmas like "orthogonal complements through different
    points are parallel", "orthogonal complements to parallel affine
    subspaces are parallel" (+ an iff version assuming that the
    subspaces are closed).

@jsm28
Copy link
Collaborator

jsm28 commented Jun 28, 2023

The existing idiom for "Orthogonal complement to an affine subspace passing through a given point." is AffineSubspace.mk' b s.directionᗮ, which is used in various places (sometimes with the AffineSubspace namespace open so it's just mk' b s.directionᗮ) and also seems simpler than the definition used here.

@urkud
Copy link
Member Author

urkud commented Jul 3, 2023

Thank you! Indeed, the current idiom is shorter but I think that we should have a def and API for that.

BTW, should we change mk' to use "vsub belongs to the direction" instead of the current "exists"? Then our definitions will be defeq.

@MithicSpirit
Copy link
Collaborator

Hey, I'm working on this issue but just wondering what file this should be put in. I've been thinking that it should either go in the same file as Submodule.orthogonal, in a new file (AffineSubspace.lean) in that same folder, or in a new file at LinearAlgebra/AffineSpace/Orthogonal.lean.

Also quick note that I think that the iff lemma asked for above also requires that the subspaces be nonempty, as the case when one subspace is empty and the other is a singleton causes issues.

@urkud
Copy link
Member Author

urkud commented Jul 11, 2023

It should go to a new file. The name is not that important but it should be somewhere in Analysis.InnerProductSpace.*.
About iff: it's quite possible that I missed some degenerate case. One of good things about Lean is that it'll force you to fix this.

@jsm28
Copy link
Collaborator

jsm28 commented Jul 12, 2023

I'm not particularly concerned with exactly what mk' is defeq to; anything that cares about that defeq is either part of setting up the API for mk' or should be changed to use that API.

MithicSpirit added a commit that referenced this issue Jul 13, 2023
Notation is not yet defined due to conflicts with those for Submodules.

Begins work on #5539
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants