Skip to content

fix(scripts): add_deprecations.sh generates additive aliases for @[to_additive] decls#40237

Open
syedjafri06193 wants to merge 1 commit into
leanprover-community:masterfrom
syedjafri06193:fix/add-deprecations-to-additive
Open

fix(scripts): add_deprecations.sh generates additive aliases for @[to_additive] decls#40237
syedjafri06193 wants to merge 1 commit into
leanprover-community:masterfrom
syedjafri06193:fix/add-deprecations-to-additive

Conversation

@syedjafri06193
Copy link
Copy Markdown

Fixes #38550

When a renamed declaration is preceded by @[to_additive], the script
previously only emitted a deprecation alias for the multiplicative name.
This PR also emits one for the additive counterpart.

Changes:

  • Switch git diff to --unified=1 so the unchanged @[to_additive]
    attribute appears as a context line in the diff output
  • Track that context line in awk; when detected, apply standard
    mul→add word substitutions to derive additive old/new names and
    emit a second @[deprecated] alias

Example — before:
@[deprecated (since := "2026-06-04")] alias foo_mul := bar_mul

Example — after:
@[deprecated (since := "2026-06-04")] alias foo_mul := bar_mul
@[deprecated (since := "2026-06-04")] alias foo_add := bar_add


AI disclosure: this fix was developed with Claude (claude.ai).
I understand all the changes and can explain every design decision.

…_additive] decls

Fixes leanprover-community#38550

When a renamed declaration is preceded by @[to_additive], also emit a
deprecated alias for the additive counterpart (e.g. foo_mul -> foo_add).
Uses --unified=1 to expose the attribute as a context line in the diff.
@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Jun 4, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 4, 2026

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 4, 2026

PR summary d173b20fc5

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

No declarations were harmed in the making of this PR! 🐙

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

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

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit d173b20).

  • +0 new declarations
  • −0 removed declarations

No declaration differences.


No changes to strong technical debt.

No changes to weak technical debt.

Current commit d173b20fc5
Reference commit 3e6cc1a38a

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/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).

@github-actions github-actions Bot added the CI Modifies the continuous integration setup or other automation label Jun 4, 2026
@grunweg grunweg added the LLM-generated PRs with substantial input from LLMs - review accordingly label Jun 4, 2026
Copy link
Copy Markdown
Contributor

@grunweg grunweg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution. I agree that there is a strong need for functionality like this. That said, the guessing of the new declaration's name is quite ad hoc --- I worry about this being brittle, and wonder if there's a more robust way to do this.

For instance: @adomani can we use the declaration diff data to generate these deprecations form within Lean, replacing awk (which is... not as widely known) with Lean code?

}
# Apply standard to_additive word substitutions to convert a multiplicative declaration
# name into its additive counterpart (snake_case, matching Lean 4 / mathlib4 conventions).
function toAdditiveName(name, cmd, result) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How have to determined these patterns? Taking the most common ones from to_additive? Is this list exhaustive? Are there edge cases where this produces wrong results?

@grunweg grunweg added the awaiting-author A reviewer has asked the author a question or requested changes. label Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author A reviewer has asked the author a question or requested changes. CI Modifies the continuous integration setup or other automation LLM-generated PRs with substantial input from LLMs - review accordingly new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make scripts/add_deprecations.sh support additivised declarations

2 participants