Skip to content

[Merged by Bors] - feat(Topology/Algebra/InfiniteSum/NatInt): hasProd versions of ℕ+/ℕ transfer lemmas#41502

Closed
pepamontero wants to merge 1 commit into
leanprover-community:masterfrom
pepamontero:NatInt-LogosWS
Closed

[Merged by Bors] - feat(Topology/Algebra/InfiniteSum/NatInt): hasProd versions of ℕ+/ℕ transfer lemmas#41502
pepamontero wants to merge 1 commit into
leanprover-community:masterfrom
pepamontero:NatInt-LogosWS

Conversation

@pepamontero

@pepamontero pepamontero commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

The PNat section of Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean provides Multipliable and tprod lemmas for transferring infinite products between ℕ+ and , but not HasProd lemmas. This PR completes this gap with:

  • hasProd_pnat_iff_hasProd_succ: HasProd (fun n : ℕ+ ↦ f n) m ↔ HasProd (fun n : ℕ ↦ f (n + 1)) m, the HasProd counterpart of the existing multipliable_pnat_iff_multipliable_succ
  • hasProd_pnat_iff: in a topological group, HasProd (fun n : ℕ+ ↦ f n) g ↔ HasProd f (g * f 0), the counterpart of multipliable_pnat_iff_multipliable_nat
  • tprod_pnat_eq_tprod_of_eq_one: if f 0 = 1, then ∏' n : ℕ+, f n = ∏' n, f n. Unlike tprod_zero_pnat_eq_tprod_nat, this requires no multipliability hypothesis (and no group structure or T2Space)

Motivation: the additive versions (hasSum_pnat_iff, tsum_pnat_eq_tsum_of_eq_zero, ...) replace
three private lemmas in the FLT project (hasSum_nat_of_pnat_add, hasSum_pnat_of_nat, tsum_pnat_of_zero), each of which becomes a one-line application, stated there for only.

AI Disclosure: original code in FLT was written by William Coram and Samuel Yin with the assistance of Claude. It was later cleaned up using Codex.

Co-authored-by: William Coram
Co-authored-by: Samuel Yin


Open in Gitpod

@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 Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 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 Jul 8, 2026

Copy link
Copy Markdown

PR summary 44608745a8

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

+ hasProd_pnat_iff
+ hasProd_pnat_iff_hasProd_succ
+ tprod_pnat_eq_tprod_of_eq_one

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

  • +6 new declarations
  • −0 removed declarations
+hasProd_pnat_iff
+hasProd_pnat_iff_hasProd_succ
+hasSum_pnat_iff
+hasSum_pnat_iff_hasSum_succ
+tprod_pnat_eq_tprod_of_eq_one
+tsum_pnat_eq_tsum_of_eq_zero

No changes to strong technical debt.

No changes to weak technical debt.

Current commit 44608745a8
Reference commit ed0d70fdcd

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 commented Jul 8, 2026

Copy link
Copy Markdown

✅ PR Title Formatted Correctly

The title of this PR has been updated to match our commit style conventions.
Thank you!

@github-actions github-actions Bot added the t-topology Topological spaces, uniform spaces, metric spaces, filters label Jul 8, 2026
@pepamontero pepamontero changed the title feat(Topology/Algebra/InfiniteSum/NatInt): HasProd versions of ℕ+/ℕ transfer lemmas feat(Topology/Algebra/InfiniteSum/NatInt): hasProd versions of ℕ+/ℕ transfer lemmas Jul 8, 2026

@YaelDillies YaelDillies 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.

Thanks! 🚀

maintainer merge

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

🚀 Pull request has been placed on the maintainer queue by YaelDillies.

@mathlib-triage mathlib-triage Bot added the maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. label Jul 8, 2026
@kbuzzard

Copy link
Copy Markdown
Member

Thanks!

bors merge

@mathlib-bors mathlib-bors Bot added the ready-to-merge This PR has been sent to bors. label Jul 11, 2026
mathlib-bors Bot pushed a commit that referenced this pull request Jul 11, 2026
…ransfer lemmas (#41502)

The `PNat` section of `Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean` provides `Multipliable` and `tprod` lemmas for transferring infinite products between `ℕ+` and `ℕ`, but not `HasProd` lemmas. This PR completes this gap with:

* `hasProd_pnat_iff_hasProd_succ`: `HasProd (fun n : ℕ+ ↦ f n) m ↔ HasProd (fun n : ℕ ↦ f (n + 1)) m`, the `HasProd` counterpart of the existing `multipliable_pnat_iff_multipliable_succ`
* `hasProd_pnat_iff`: in a topological group, `HasProd (fun n : ℕ+ ↦ f n) g ↔ HasProd f (g * f 0)`, the counterpart of `multipliable_pnat_iff_multipliable_nat`
* `tprod_pnat_eq_tprod_of_eq_one`: if `f 0 = 1`, then `∏' n : ℕ+, f n = ∏' n, f n`. Unlike `tprod_zero_pnat_eq_tprod_nat`, this requires no multipliability hypothesis (and no group structure or `T2Space`)

**Motivation**: the additive versions (`hasSum_pnat_iff`, `tsum_pnat_eq_tsum_of_eq_zero`, ...) replace
three private lemmas in the [FLT project](https://github.com/ImperialCollegeLondon/FLT) (`hasSum_nat_of_pnat_add`, `hasSum_pnat_of_nat`, `tsum_pnat_of_zero`), each of which becomes a one-line application, stated there for `ℂ` only.

**AI Disclosure**: original code in FLT was written by William Coram and Samuel Yin with the assistance of Claude. It was later cleaned up using Codex.

Co-authored-by: William Coram
Co-authored-by: Samuel Yin
@mathlib-bors mathlib-bors Bot added the bors-staging This PR is currently being built by bors on the staging branch. label Jul 11, 2026
@mathlib-triage mathlib-triage Bot removed the maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. label Jul 11, 2026
@mathlib-bors

mathlib-bors Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

@mathlib-bors mathlib-bors Bot changed the title feat(Topology/Algebra/InfiniteSum/NatInt): hasProd versions of ℕ+/ℕ transfer lemmas [Merged by Bors] - feat(Topology/Algebra/InfiniteSum/NatInt): hasProd versions of ℕ+/ℕ transfer lemmas Jul 11, 2026
@mathlib-bors mathlib-bors Bot closed this Jul 11, 2026
michaellee94 pushed a commit to michaellee94/mathlib4 that referenced this pull request Jul 11, 2026
…ransfer lemmas (leanprover-community#41502)

The `PNat` section of `Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean` provides `Multipliable` and `tprod` lemmas for transferring infinite products between `ℕ+` and `ℕ`, but not `HasProd` lemmas. This PR completes this gap with:

* `hasProd_pnat_iff_hasProd_succ`: `HasProd (fun n : ℕ+ ↦ f n) m ↔ HasProd (fun n : ℕ ↦ f (n + 1)) m`, the `HasProd` counterpart of the existing `multipliable_pnat_iff_multipliable_succ`
* `hasProd_pnat_iff`: in a topological group, `HasProd (fun n : ℕ+ ↦ f n) g ↔ HasProd f (g * f 0)`, the counterpart of `multipliable_pnat_iff_multipliable_nat`
* `tprod_pnat_eq_tprod_of_eq_one`: if `f 0 = 1`, then `∏' n : ℕ+, f n = ∏' n, f n`. Unlike `tprod_zero_pnat_eq_tprod_nat`, this requires no multipliability hypothesis (and no group structure or `T2Space`)

**Motivation**: the additive versions (`hasSum_pnat_iff`, `tsum_pnat_eq_tsum_of_eq_zero`, ...) replace
three private lemmas in the [FLT project](https://github.com/ImperialCollegeLondon/FLT) (`hasSum_nat_of_pnat_add`, `hasSum_pnat_of_nat`, `tsum_pnat_of_zero`), each of which becomes a one-line application, stated there for `ℂ` only.

**AI Disclosure**: original code in FLT was written by William Coram and Samuel Yin with the assistance of Claude. It was later cleaned up using Codex.

Co-authored-by: William Coram
Co-authored-by: Samuel Yin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bors-staging This PR is currently being built by bors on the staging branch. new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! ready-to-merge This PR has been sent to bors. t-topology Topological spaces, uniform spaces, metric spaces, filters

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants