The Euclidean Action and the Action of the Group of Rotations#1196
Conversation
…mas, restructure AffineGroup.lean
|
Thank you for this PR, which will now be reviewed. If you are submitting to ./PhyslibAlpha there will be a lighter review process, If you want to bring attention to this PR, please write a message on this |
| /-- The coordinate origin of `Space d`, used as the basepoint for the Euclidean action. -/ | ||
| def origin (d : ℕ) : Space d := ⟨0⟩ | ||
|
|
||
| @[simp] lemma origin_apply (d : ℕ) (i : Fin d) : (origin d) i = 0 := rfl |
There was a problem hiding this comment.
Maybe it is worth doing the following here:
In Space.Module we have an instance of Zero on Space. This essentially defines the origin in the same way you have it defined here. However, I understand that we don't want to import the whole module structure on Space here. So should we make a file .../Space/Origin.lean which has that instance of a zero so we don't need to define it both here and there?
In it we could also include Space.chartEuclidean etc.
There was a problem hiding this comment.
Thanks, Joseph.
- Factored
originandchartEuclideanintoSpace/Origin.lean(imported bySpace/EuclideanGroup/Action.lean). - Kept the
Module's Zero instance and addedorigin_eq_zero : Space.origin d = 0 (by rfl)inModule.lean, so the two are pinned definitionally equal. - Updated the inventory above.
Happy to further edit if you'd prefer. Thanks!
There was a problem hiding this comment.
I think I would get rid of origin completely. and in ./Space/Origin move the instance of the zero and just used zero in the Action.lean file. The idea of the zero is that it is a choice of origin, so the two concepts here are the same so it doesn't make sense (to me) to have two separate definitions for it.
There was a problem hiding this comment.
That makes sense. Done — moved the Zero instance (and zero_val/zero_apply) into Space/Origin.lean, dropped the separate origin, and Action.lean now uses 0 directly. Module sources its zero from the import Origin."
| /-- **The unification bridge.** Under the standard chart, the Euclidean action on `Space d` is the | ||
| transport of `toAffineIsometryMulEquiv` acting on `EuclideanSpace`: | ||
| `chart (g • p) = (toAffineIsometryMulEquiv g) (chart p)`. -/ | ||
| lemma chartEuclidean_smul (g : EuclideanGroup d) (p : Space d) : |
There was a problem hiding this comment.
Would remove the The unification bridge from this, but otherwise this looks good.
jstoobysmith
left a comment
There was a problem hiding this comment.
Approved - this now looks good to me.
"Addresses item 5 of Issue #854 (the action of the group of rotations).
Adds
Physlib/SpaceAndTime/Space/Origin.lean(new file):--
instance : Zero (Space d), Space.zero_val, Space.zero_apply— the origin (the vector-space zero) and its projection lemmas, moved here fromModule.lean.--
Space.chartEuclidean, Space.chartEuclidean_apply— the standard chartSpace d ≃ᵃⁱ[ℝ] EuclideanSpace ℝ (Fin d), p ↦ p -ᵥ 0.Adds
Physlib/SpaceAndTime/Space/EuclideanGroup/Action.lean(new file):--
Space.origin,Space.origin_apply— coordinate basepoint and its projection.--
instance : MulAction (EuclideanGroup d) (Space d)— the Euclidean action.--
EuclideanGroup.smul_apply— coordinate formula.--
EuclideanGroup.smul_vsub_smul— displacements transform by the linear part.--
EuclideanGroup.dist_smul— the action is by isometries.--
EuclideanGroup.rotation_smul_eq— restriction to RotationGroup action (r • p = ↑r • p).--
EuclideanGroup.rotation_smul_origin— rotations fix the0.--
EuclideanGroup.rotation_smul_vsub_origin— rotations act about the origin0by their orthogonal part.--
EuclideanGroup.rotation_dist_smul— rotations preserve distance.--
EuclideanGroup.chartEuclidean_smul— the chart and the bridge totoAffineIsometryMulEquiv(optional; rest of file doesn't depend on it).Physlib/SpaceAndTime/Space/Module.lean(modified):-- Removed
instance : Zero (Space d), Space.zero_val, Space.zero_apply— moved toOrigin.lean; Module now sources them via itsimport …Origin.Reading order: Part 1 (Euclidean action) → Part 2 (rotation specialization) → Part 3 (optional affine-isometry bridge), top to bottom.
Substantive AI usage (document setup, some statements, filling in some proofs; Claude Opus 4.8). All AI-generated content is human-reviewed and believed correct. No bibliographic references.