Skip to content

Mark landed contribution directions; replace v4.34.0 deprecations in the corpus - #224

Merged
carlok merged 5 commits into
mainfrom
maintenance/directions-status-furstenberg
Sep 22, 2026
Merged

carlok merged 5 commits into
mainfrom
maintenance/directions-status-furstenberg

Conversation

@carlok

@carlok carlok commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Two maintenance commits. Since #216, editing existing modules is maintenance-only, and a maintenance/ PR doesn't go through the receiver. So the second commit's correctness evidence is spelled out below.

1. docs/CONTRIBUTION-DIRECTIONS.md: statuses

  • A, B, D and E have landed. Each now names its module and entrypoint.
  • C is partly covered: D's specialization proves the trace form, and the general charpoly identity for companion-matrix powers has landed, so C may now be a short corollary.
  • H's infrastructure has landed: both path enumerations and the Stern–Brocot interval invariants. The bridge that relates the two path conventions is still open.

Status lines name modules and entrypoints rather than PRs, as the document asks.

@qazW12345: this also covers your #197, #207, #195, #208–#211. One rule change to know about since #186 closed: #216 makes ordinary submissions add-only. Extend an accepted module by importing it from a new one. It also rejects code that runs at build or import time (initialize, run_cmd, simprocs, extern/implemented_by, …). None of your submissions did either.

2. Corpus deprecations under Mathlib v4.34.0

There were 11 deprecation warnings in 8 modules. A later Mathlib will make them errors, and the next upgrade's audit would then fail.

deprecated replacement modules
import Mathlib.Data.Real.Basic Mathlib.Basic.Real.Basic Nesbitt, SlopeMinorant
import Mathlib.Data.Complex.Basic Mathlib.Basic.Complex.Basic InversiveGeometry
if_pos / if_neg ite_eq_left / ite_eq_right (identical signatures, Init/Core.lean:1179, :1188) LogisticMap, CircularDominoTilings, SternDiatomic, ThueMorse
Set.mem_setOf_eq Set.mem_ofPred_eq Furstenberg

Furstenberg's five haveILetI lints are fixed too (letI → let in proofs of propositions), so that module now builds with no warnings. Those warnings had flooded the receiver report that #193 fixed.

Evidence that only proofs changed: checked locally on v4.34.0, not by CI.

  • lake build: success. Deprecation warnings go from 11 to 0, and all warnings from 27 to 11 (all style lints, left alone).
  • lake exe frontier-audit -- LeanFrontier before and after: the same 477 declarations, with identical canonical types, kinds and axioms. No accepted statement changed.
  • lake env leanchecker passes on all 8 edited modules.

🤖 Generated with Claude Code

carlok and others added 5 commits September 22, 2026 09:47
A (#197), B (#207), D (#195) and E (#210) have landed; H's path and
interval infrastructure has (#208, #209, #211), the bridge itself has
not; C is partly covered by D's trace and charpoly identities. Status
lines name modules and entrypoints, not pull requests, as the document
asks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Eleven deprecation warnings in eight modules would become errors in a
later Mathlib and fail that upgrade's audit: Mathlib.Data.Real.Basic
and Mathlib.Data.Complex.Basic imports (now Mathlib.Basic.*), if_pos
and if_neg (now ite_eq_left and ite_eq_right, same signatures), and
Set.mem_setOf_eq (now Set.mem_ofPred_eq). Furstenberg's five
haveILetI lints are fixed too; the module now builds without warnings.

Proofs only. A frontier-audit of the whole corpus before and after
reports the same 477 declarations with identical canonical types,
kinds and axioms, and leanchecker passes on every edited module.
Remaining warnings (11) are style lints.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
G landed as SternDiatomic.fib_is_max_on_dyadic_row (#223) and the H
bridge as CalkinWilf.pair_reverse_eq_sternBrocot (#225). Traversal
orders are still not identified.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Added by #227 after the rest of this PR was written; same v4.34.0
deprecation class (now ite_true/ite_false). Re-verified on current
main: 486 declarations with identical canonical types, kinds and
axioms before and after the whole PR, 0 deprecation warnings,
leanchecker passes on every edited module.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@carlok

carlok commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

Updated after #223, #225–#228 merged: brought up to date with main, marked dossier targets G and H landed, and fixed two more deprecations (if_true/if_false in #227's SternBrocot/NodeInterval.lean). Re-verified on the new corpus: lake build with 0 deprecation warnings; frontier-audit -- LeanFrontier before/after reports the same 486 declarations with identical canonical types, kinds and axioms; leanchecker passes on all 9 edited modules.

@carlok
carlok merged commit 594e2f0 into main Sep 22, 2026
5 checks passed
@carlok
carlok deleted the maintenance/directions-status-furstenberg branch September 22, 2026 09:33
qazW12345 pushed a commit to qazW12345/LeanFrontier that referenced this pull request Sep 22, 2026
A deprecation is a warning under the pinned Mathlib and an error after
a later one, so each admitted use is a future break in the upgrade
audit; carlok#224 had to fix thirteen by hand, two of them in a module merged
an hour earlier.

The receiver now rejects, as DEPRECATED_API, any deprecation warning
Lean reports about the submission's own files after a successful build,
quoting Lean's message, which names the replacement. Deprecations in
other modules are not the submitter's to fix under the add-only rule
and are ignored; style lints are not affected. CONTRACT.md documents
the rule and the code.

The Mathlib upgrade audit lists the corpus's deprecations under the new
release in its report (corpus_deprecations, sorted so the byte-for-byte
re-audit stays deterministic) without blocking the upgrade: that list
is the follow-up maintenance work.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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