Skip to content

fix(Tactic/Lift): preserve abbreviated target types - #42356

Open
sankalpsthakur wants to merge 6 commits into
leanprover-community:masterfrom
sankalpsthakur:agent/lift-preserve-abbrev
Open

fix(Tactic/Lift): preserve abbreviated target types#42356
sankalpsthakur wants to merge 6 commits into
leanprover-community:masterfrom
sankalpsthakur:agent/lift-preserve-abbrev

Conversation

@sankalpsthakur

Copy link
Copy Markdown

lift n to MyNat using hn where MyNat is an abbrev could produce a proof term whose displayed/elaborated type unfolds the abbreviation to its underlying type, losing the connection to MyNat-specific declarations (e.g. a subsequent call to a MyNat-namespaced lemma would fail to resolve).

Wraps the synthesized proof term in an explicit show ∃ _ : $t, _ from … ascription using the originally-written target syntax t, so the abbreviation is preserved rather than unfolded.

Motivated by #15865.

Validation

  • Built locally: lake build Mathlib.Tactic.Lift and lake build MathlibTest.Tactic.Lift — both succeed, including the new regression test (lifting to an abbrev-defined MyNat and calling a MyNat-namespaced lemma on the result).
  • Scope note: lift is used in roughly 241 files across Mathlib. I verified the tactic's own implementation and its dedicated test suite build cleanly, but did not rebuild the full library to check every existing call site — the ascription should be semantically transparent (same term, explicit type), but I'm relying on CI for full-library confirmation rather than claiming that coverage myself.

Closes #15865

AI/LLM disclosure

AI coding tools were used to help draft this change and PR description. I reviewed the complete change, understand the reasoning, and verified the build locally before submitting.

@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 Aug 1, 2026
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

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

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

PR summary 49b60db482

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

+ MyNat
+ isTrue

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 49b60db).

  • +0 new declarations
  • −0 removed declarations

No declaration differences.


No changes to strong technical debt.

No changes to weak technical debt.

Current commit 49b60db482
Reference commit 54df8a3f96

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 t-meta Tactics, attributes or user commands label Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! t-meta Tactics, attributes or user commands

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lift tactic does not respect abbreviations

2 participants