Skip to content

refactor(Analysis/ODE): restate existence and uniqueness using integral curve API#35043

Open
winstonyin wants to merge 46 commits intoleanprover-community:masterfrom
winstonyin:organise_ODE
Open

refactor(Analysis/ODE): restate existence and uniqueness using integral curve API#35043
winstonyin wants to merge 46 commits intoleanprover-community:masterfrom
winstonyin:organise_ODE

Conversation

@winstonyin
Copy link
Copy Markdown
Collaborator

  • Create Mathlib/Analysis/ODE/ExistUnique.lean to collect existence and uniqueness results for ODEs stated in terms of the integral curve API (IsIntegralCurve, IsIntegralCurveOn, IsIntegralCurveAt).
  • Move and restate the Picard-Lindelöf existence theorems from PicardLindelof.lean and the $C^1$ vector field results using IsIntegralCurveOn/IsIntegralCurveAt instead of raw HasDerivWithinAt/HasDerivAt.
  • Move and restate the Grönwall-based uniqueness theorems from Gronwall.lean using IsIntegralCurveOn with half-open intervals (Ico/Ioc) instead of HasDerivWithinAt … (Ici t)/HasDerivWithinAt … (Iic t).
  • Rename uniqueness theorems to use dot notation on the integral curve types (e.g. ODE_solution_unique_of_mem_Icc_right becomes IsIntegralCurveOn.eqOn_Icc_right).
  • Add IsIntegralCurveOn.eqOn_inter: if two integral curves on preconnected sets I and J agree at a point in both sets, they agree on I ∩ J.
  • Add deprecation aliases for all renamed lemmas.

Open in Gitpod

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 9, 2026

PR summary 7d9358ee9d

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.Geometry.Manifold.IntegralCurve.ExistUnique 2520 2522 +2 (+0.08%)
Import changes for all files
Files Import difference
Mathlib.Geometry.Manifold.IntegralCurve.ExistUnique Mathlib.Geometry.Manifold.IntegralCurve.UniformTime 2
Mathlib.Analysis.ODE.ExistUnique (new file) 2481

Declarations diff

+ IsIntegralCurve.eq
+ IsIntegralCurveAt.eventuallyEq
+ IsIntegralCurveOn.eqOn_Icc
+ IsIntegralCurveOn.eqOn_Icc_left
+ IsIntegralCurveOn.eqOn_Icc_right
+ IsIntegralCurveOn.eqOn_Ioo
+ IsIntegralCurveOn.eqOn_inter
+ exists_eq_isIntegralCurveAt
+ exists_eq_isIntegralCurveOn
+ exists_eq_isIntegralCurveOn₀
+ exists_eventually_isIntegralCurveAt
+ exists_forall_mem_closedBall_eq_isIntegralCurveOn
+ exists_forall_mem_closedBall_eq_isIntegralCurveOn_continuousOn
+ exists_forall_mem_closedBall_eq_isIntegralCurveOn_lipschitzOnWith
+ exists_forall_mem_closedBall_exists_eq_isIntegralCurveOn
- ODE_solution_unique

You can run this locally as follows
## summary with just the declaration names:
./scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@mathlib-dependent-issues mathlib-dependent-issues bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Feb 9, 2026
@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 17, 2026
@mathlib-merge-conflicts
Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 20, 2026
@mathlib-merge-conflicts
Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Mar 8, 2026
@mathlib-dependent-issues mathlib-dependent-issues bot removed the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Mar 20, 2026
@mathlib-dependent-issues
Copy link
Copy Markdown

This PR/issue depends on:

@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Mar 28, 2026
@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Apr 1, 2026
@mathlib-merge-conflicts
Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Apr 1, 2026
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 this pull request may close these issues.

1 participant