Skip to content

feat(Data/ENNReal/Inv): add ENNReal.div_mul_div_cancel - #37954

Open
jdhart81 wants to merge 4 commits into
leanprover-community:masterfrom
jdhart81:feat/ennreal-div-mul-div-cancel
Open

feat(Data/ENNReal/Inv): add ENNReal.div_mul_div_cancel#37954
jdhart81 wants to merge 4 commits into
leanprover-community:masterfrom
jdhart81:feat/ennreal-div-mul-div-cancel

Conversation

@jdhart81

Copy link
Copy Markdown

Proves a / b * (b / c) = a / c for b ≠ 0, b ≠ ∞ in ENNReal. Proof via mul_div_assoc and existing div_mul_cancel.

AI Disclosure: This PR was developed with assistance from an LLM (Claude, Anthropic) for proof exploration and text drafting. The proof was compiled and verified locally by the contributor, who understands the mathematical content. This lemma is extracted from a larger formalization of information-theoretic bounds (Zenodo DOI: 10.5281/zenodo.19317983).


Open in Gitpod

Proves a / b * (b / c) = a / c for b ≠ 0, b ≠ ∞ in ENNReal.
Proof via mul_div_assoc and existing div_mul_cancel.

AI Disclosure: This PR was developed with assistance from an LLM (Claude, Anthropic) for proof exploration and text drafting. The proof was compiled and verified locally by the contributor, who understands the mathematical content. This lemma is extracted from a larger formalization of information-theoretic bounds (Zenodo DOI: 10.5281/zenodo.19317983).
@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 Apr 12, 2026
@github-actions

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 Apr 12, 2026

Copy link
Copy Markdown

PR summary fcdf55d904

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

++ div_mul_div_cancel

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 fcdf55d).

  • +2 new declarations
  • −0 removed declarations
+ENNReal.div_mul_div_cancel
+EReal.div_mul_div_cancel

No changes to strong technical debt.

No changes to weak technical debt.

Current commit fcdf55d904
Reference commit 9eb53bdd74

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-data Data (lists, quotients, numbers, etc) label Apr 12, 2026

@felixpernegger felixpernegger left a comment

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.

Good to have; I'm surprised this is still missing (but in fact actually is, according to loogle).

While you are at it, can you also add the corresponding lemma in EReal?

Comment thread Mathlib/Data/ENNReal/Inv.lean Outdated
@felixpernegger

Copy link
Copy Markdown
Contributor

awaiting-author

@github-actions github-actions Bot added the awaiting-author A reviewer has asked the author a question or requested changes. label Jul 27, 2026
@jdhart81

Copy link
Copy Markdown
Author

Thanks @felixpernegger — yes, I’ll add the corresponding EReal.div_mul_div_cancel lemma and reword the ENNReal docstring so it doesn’t describe b as a shared denominator. I’ll push both updates together.

@jdhart81

Copy link
Copy Markdown
Author

Implemented both review requests in dd84ea8:

  • Reworded the ENNReal docstring to describe cancellation of the finite nonzero middle term.
  • Added the corresponding EReal.div_mul_div_cancel lemma.

Both changed modules compile locally with the pinned mathlib toolchain.

-awaiting-author

@github-actions github-actions Bot removed the awaiting-author A reviewer has asked the author a question or requested changes. label Jul 27, 2026
@jdhart81

Copy link
Copy Markdown
Author

CI note: the fresh fork workflow is failing before it reaches the changed files. Both red jobs stop in the cache restore step with uncaught exception: leantar not found in Lean sysroot under Lean v4.29.0-rc1. The style/lint checks pass, and I locally rebuilt Mathlib.Data.ENNReal.Inv and Mathlib.Data.EReal.Inv successfully at dd84ea8283. I left the source unchanged; fork contributors cannot rerun the upstream workflow without repository admin permission.

Comment thread Mathlib/Data/ENNReal/Inv.lean Outdated
Comment on lines +172 to +173
/-- Cancels a finite nonzero middle term:
`a / b * (b / c) = a / c` for `b ≠ 0`, `b ≠ ∞` in `ℝ≥0∞`. -/

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.

The costrings are still not ideal. Can you just delete both docstrings? (The correspodning lemma for groups also is not documented, so this should be fine)

@felixpernegger

Copy link
Copy Markdown
Contributor

@jdhart81 try to merge Master on github, this probably solves the issue

@jdhart81

Copy link
Copy Markdown
Author

Done — I merged current master and removed both docstrings. The refreshed CI suite is green.

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-data Data (lists, quotients, numbers, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants