port(coordinate-components): 坐标切向量分量#70
Open
LehengChen wants to merge 2 commits into
Open
Conversation
Contributor
|
感谢 #70(坐标切向量分量)。现在 develop 上有两个已合并的注释范本可对照:
另:#65 已合并,base 可重定向到 develop(你这条目前还挂在上游 port 分支)。 本 PR 额外两项:
|
…e def name Re-style the already-ported coordinate-components module to corrected OpenGA house style and rename the snake_case def per NAMING_CONVENTION.md §3. - def rename: chart_coordinate_vectors_basis -> chartCoordinateVectorsBasis (camelCase). Sole snake_case def; theorems keep Mathlib `_` naming. - Module docstring: architecture-layered narrative; kept Main definitions / Main results; collapsed Reference/multi-line "Ported from" into a one-line Provenance. - Declaration docstrings: keep **Math.**, drop **Eng.** (AnchorPurity). - Statements and proof bodies unchanged byte-for-byte modulo the rename. - Index: Manifold.lean imports Tangent.CoordinateComponents (alphabetical). - tangent_coordinates_change kept inlined, name unchanged (theorem). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
a384cdc to
c347505
Compare
ab79990 to
375b551
Compare
Collaborator
Author
|
已更新:house style 修订 + 去教材编号;并把 def 改为 camelCase( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
port(coordinate-components): 坐标切向量分量 + 图卡坐标基
Port of Lee, Introduction to Smooth Manifolds, §3: the coordinate-component
view of tangent vectors. A smooth chart containing
pidentifiesT_p Mwiththe model space, yielding (a) the chart-induced coordinate basis of
T_p M(Prop. 3.15(2)), and (b) the coordinate components of a tangent vector in each
preferred chart, which transform by
tangentCoordChangeon overlaps. The bundledcompatible-family realization
CoordinateTangentVectoris shown to be canonicallyequivalent to
T_p M— the same tangent space in a different presentation, not asecond owner type. Conceptually continues #5 (tangent-bundle localization).
Source → landing
Two source files (plus one inlined wrapper) into one new module under
OpenGALib/Manifold/Tangent/:import/smooth-manifolds-lee@a5f308c)Chap03/Sec03_15/Proposition_3_15.leanCoordinateComponents.leanchart_mdifferentiable_of_mem_maximalAtlas,chart_coordinate_vectors_basisChap03/Sec03_18/Definition_3_18_extra_4.leanCoordinateComponents.leanIsCoordinateTangentVector,CoordinateTangentVector(+component_apply,compatible_apply,ext, CoeFun),coordinateComponent,coordinateComponent_isCoordinateTangentVector,toCoordinateTangentVector,CoordinateTangentVector.{toTangentSpace, coordinateComponent_toTangentSpace, toTangentSpace_toCoordinateTangentVector, toCoordinateTangentVector_toTangentSpace, equivTangentSpace}Chap03/Sec03_15/Remark_3_15_extra_4.lean(inlined wrapper)CoordinateComponents.leantangent_coordinates_changeCore objects (new)
Manifold.IsCoordinateTangentVector I p component— compatibility predicate: achoice of model-space component in every preferred chart containing
p,matched by the tangent coordinate-change maps
tangentCoordChange I x y ponoverlaps.
Manifold.CoordinateTangentVector I p— bundled compatible family ofpreferred-chart components at
p(the coordinate-family realization ofT_p M).Manifold.coordinateComponent v x— the component ofv : TangentSpace I pinthe preferred chart centered at
x, written in the model vector spaceE(via the tangent-bundle trivialization's fiberwise linear equivalence).
Supporting:
chart_coordinate_vectors_basis(Prop. 3.15(2) coordinate basis ofT_p Mfrom a chart);coordinateComponent_isCoordinateTangentVector(chartcomponents transform correctly);
CoordinateTangentVector.equivTangentSpace(
CoordinateTangentVector I p ≃ TangentSpace I p).设计中立声明 (design-neutral)
Mathlib's tangent-bundle / chart API:
TangentSpace,tangentCoordChange,tangentBundleCore,trivializationAt/Bundle.Trivialization.*,ModelWithCorners,ChartedSpace,IsManifold,IsManifold.maximalAtlas,OpenPartialHomeomorph.MDifferentiable,EuclideanSpace.basisFun,Module.Basis. No OpenGASmoothManifoldpackaging and no LeeTopologicalManifoldare touched.CoordinateTangentVectoris explicitly are-presentation of
TangentSpace I p(equivalence proved), not a rival type.restatetransform in this ticket (transforms: []); none applied.Deviations / namespacing
tangent_coordinates_change(per ticket note). The sourceDefinition_3_18_extra_4.leanimportsRemark_3_15_extra_4, a Mathlib-onlythin wrapper providing
tangent_coordinates_change(identifies thetangent-bundle trivialization
coordChangeLwithtangentCoordChangeviatangentBundleCore.trivializationAt_coordChange_eq). Per the ticket note andRUNBOOK policy (do not add a new
SmoothManifoldsLee.*import to anon-ported source module), the wrapper was inlined verbatim into the
landing file rather than imported. Its non-declaration
#check tangentCoordChange_defwas dropped. Flagging the inline for review.
lived under bare
namespace TangentSpace(a Mathlib type — non-whitelisted)and
namespace CoordinateTangentVector(the new type). Per the namespacepolicy all were moved under
namespace Manifold(namespace_root) withtheir names preserved. To keep the dot-notation API (
v.toTangentSpace,v.component,Manifold.CoordinateTangentVector.equivTangentSpace, etc.)while passing the lexical namespace gate, the inner
CoordinateTangentVectordeclarations use qualified declaration names (
CoordinateTangentVector.foo)directly inside
namespace Manifoldinstead of a nestednamespace CoordinateTangentVectorblock. Resulting fully-qualified names areunchanged (
Manifold.CoordinateTangentVector.*). The formerTangentSpace.{coordinateComponent, coordinateComponent_isCoordinateTangentVector, toCoordinateTangentVector}are nowManifold.{coordinateComponent, coordinateComponent_isCoordinateTangentVector, toCoordinateTangentVector}(dropped the
TangentSpace.prefix; names otherwise verbatim). Nodeclaration was renamed to dodge the gate.
#check-only item not ported (would not compile here).Proposition_3_15.leancontained#check tangentSpace_finrank_eq_of_n_dimensional_manifold,whose target is an SML-only declaration from
Chap03/Sec03_14/Proposition_3_10.lean(Prop. 3.10) — not in this ticket's scope and not in Mathlib. The
#checkis a sanity stub, not a declaration; it was dropped (carrying it would break
the build by referencing an unported symbol). The two real declarations of
Prop. 3.15 (
chart_mdifferentiable_of_mem_maximalAtlas,chart_coordinate_vectors_basis) are pure-Mathlib and ported unchanged.CoeFuninstance had nodocstring; a
Math./Eng.docstring was added to satisfy the docstring gate(no change to the instance).
Mathlib.Analysis.InnerProductSpace.PiL2(forEuclideanSpace/EuclideanSpace.basisFun, reached transitively in thesource via
Proposition_3_10) andMathlib.Geometry.Manifold.VectorBundle.Tangent(for
tangentBundleCore/tangentCoordChange, from the inlined wrapper)alongside the source imports
…ContMDiff.Atlas,…MFDeriv.Atlas. Dropped thesource
import SmoothManifoldsLee.*lines.OpenGALib/shows nopre-existing
IsCoordinateTangentVector,CoordinateTangentVector,coordinateComponent, or the chart-basis theorem names.current toolchain:
contMDiffOn_of_mem_maximalAtlas,contMDiffOn_symm_of_mem_maximalAtlas,ContMDiffOn.mdifferentiableOn,OpenPartialHomeomorph.MDifferentiable.mfderiv,EuclideanSpace.basisFun,Module.Basis.map,Bundle.Trivialization.{linearEquivAt, coordChangeL_apply, symm_apply_apply_mk},TangentBundleCore.trivializationAt_coordChange_eq,mem_chart_source.出处 (provenance)
import/smooth-manifolds-lee@a5f308c, subpathstaging/SmoothManifoldsLee/SmoothManifoldsLee:Chap03/Sec03_15/Proposition_3_15.leanChap03/Sec03_18/Definition_3_18_extra_4.leanChap03/Sec03_15/Remark_3_15_extra_4.lean(inlined wrapper)The three provenance lines are embedded in the landing file's module docstring.
Index wiring
OpenGALib/Manifold.lean— addedimport OpenGALib.Manifold.Tangent.CoordinateComponents(alphabetical, afterthe
Cutoff.Exhaustionline, beforeTangent.CurveVelocity).OpenGALib.leanalready importsOpenGALib.Manifold; no change needed.Branch
port/coordinate-components, cut from the stacked stack tipport/curve-velocity-mfderiv(ticket #5, notorigin/develop). Files:OpenGALib/Manifold/Tangent/CoordinateComponents.leanOpenGALib/Manifold.leanGate 结果 (all six green)
Report:
projects/sml-to-openga/ledger/reports/ticket06-20260614T045001Z.json(full
lake build, cache warm; 0 sorry).评审重点 (minimal trusted base)
Proofs are kernel-checked; please focus review on whether the definitions and
statements name the same mathematical objects as Lee §3:
Manifold.coordinateComponent v x≙ the component ofv ∈ T_p Min the chartcentered at
x;Manifold.IsCoordinateTangentVector/CoordinateTangentVector≙ a tangentvector presented as a coordinate-compatible family
(transformation rule via
tangentCoordChange);CoordinateTangentVector.equivTangentSpace : CoordinateTangentVector I p ≃ TangentSpace I p≙ this family realization is the same object as
T_p M;chart_coordinate_vectors_basis≙ Prop. 3.15(2) coordinate basis ofT_p Mfrom a smooth chart;
tangent_coordinates_change≙ Remark 3.15-extra-4 (trivializationcoordChange =
tangentCoordChange).