docs: geometry - #869
Merged
Merged
Conversation
Maps the four-operation toolkit (Lift, ad, Poisson, ∂ₜ) that moved from CTFlows to CTLie in v2.1.0-beta, and demonstrates the bridge identity Poisson(Lift(X), Lift(Y)) ≈ Lift(ad(X, Y)) on a genuinely nonlinear pair of vector fields. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Lift(f::Function) returns an OptimalControl.LiftedHamiltonianFunction, not an AbstractHamiltonian — a silent behavior change from v2.0 flagged with its own warning. Lift(X::AbstractVectorField) still returns a real Hamiltonian; only the plain-function overload changed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ad(X, f)/ad(X, Y) — Lie derivative or Lie bracket depending on whether the second argument is scalar- or vector-valued. Covers typed nesting, ∂ₜ's always-NonAutonomous result, and every error the old ⋅/Lie/autonomous= spelling now triggers. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Poisson(H, G), its bridge to Lie brackets, and the singular-control application (H01, H001, H101, u_sing = -H001/H101). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bracket notation for ad/Poisson: [X, Y], {H, G}, nesting, arithmetic at
an evaluation point, and the keyword-parenthesization gotcha. Verified
the nested-brace examples in the actual rendered VitePress HTML, not
just a clean Documenter exit code.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New page: dg_ad_backend/dg_ad_backend!, the ad_backend= keyword shared by ad/Poisson/∂ₜ/@lie, and the CPU/GPU DifferentiationInterface split. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…rk board Full julia --project=docs docs/make.jl rebuild and npx vitepress build, both clean except pre-existing unrelated warnings (missing sibling inventory files, and CTLie's own internal @ref targets in the auto-generated API reference — neither introduced by this PR). Ticked all 7 acceptance criteria in 06-geometry.md against that build, with an "Also found and fixed" section recording the BoundsError caught by the build, the non-existent examples-singular-control anchor, and the ad/Lift shared-guard message wart. Confirmed no src/ or test/ change was needed — src/imports/ctlie.jl already re-exports the full surface. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Summary
docs/src/geometry/) covering CTLie'sdifferential-geometry toolkit:
Lift,ad,Poisson,∂ₜ,@Lie, and the AD-backendcontrols (
dg_ad_backend/dg_ad_backend!). Spec:docs/reports/06-geometry.md.docs/attic/manual-differential-geometry.mdis built entirely on
Lie,⋅, andHamiltonianLift, none of which exist any more, plus afalse claim that
Hamiltonian/VectorField/HamiltonianVectorFieldaren't exported. Everycode example is new or rewritten and verified live against CTLie 0.1.5-beta (the version
docs/Manifest.tomlactually resolves), not trusted from the attic or the spec's own prose.src//test/change — unlike PR 8,src/imports/ctlie.jlalready re-exports the fullsurface the spec calls for, confirmed live before writing a single page.
BoundsErrorvia the actualmake.jlbuild (a dimension mismatch in a@Liearithmetic example), a broken forward-link to a not-yet-existing
examples-singular-controlanchor (PR 10 hasn't started), and three bare
LiftedHamiltonianFunctionreferences missingthe required
OptimalControl.prefix (it's import-only, not exported).Test plan
julia --project=docs docs/make.jl— full rebuild, clean except pre-existing/unrelatedwarnings (missing sibling inventory files; CTLie's own internal
@reftargets in theauto-generated API reference).
npx vitepress build— clean; nested Poisson-bracket notation (@Lie {{H, K}, L}-style)checked in the actual rendered HTML, not just the build log.
grep -rn 'Lie(\| ⋅ \|HamiltonianLift\|autonomous=\|OptimalControl\.VectorField' docs/src/geometry/— only intentional "coming from v2.0" mentions and the deliberate rejection demo remain.
docs/reports/06-geometry.mdticked against the real build.typosclean.Branched off
docs/flows(#868, not yet merged) since PR 9 depends on PR 8 per the work board— temporary stacking, same pattern used for PRs 6/7/8.
🤖 Generated with Claude Code