[Merged by Bors] - feat(Topology/Algebra/InfiniteSum/NatInt): add more pnat tsum lemmas#27841
[Merged by Bors] - feat(Topology/Algebra/InfiniteSum/NatInt): add more pnat tsum lemmas#27841CBirkbeck wants to merge 9 commits intoleanprover-community:masterfrom
Conversation
CBirkbeck
commented
Aug 1, 2025
PR summary 9d2bcc539aImport changes for modified filesNo significant changes to the import graph Import changes for all files
|
|
I want to add the |
|
I admit that it's not clear to me why the changes in this PR are beneficial. Can you explain why you want them? E.g. the new formulation of (Generally I'm a bit wary of using |
|
So the problem with the old one is that when I came to try and prove I could just try and ignore PNat and use (n + 1) everywhere, but that also becomes quite annoying. Obviously it's all doable with Nat and (n + 1), but for example, later we need things like, infinite sums over PNat of functions with -N/z (for z in the upper half plane and N a PNat) and its just nicer to have N's and not N+1's everywhere since any time you use ring it does a |
Here's a proof of section PNat
@[to_additive]
theorem multipliable_pnat_iff_multipliable_succ {f : ℕ → M} :
Multipliable (fun x : ℕ+ ↦ f x) ↔ Multipliable fun x ↦ f (x + 1) :=
Equiv.pnatEquivNat.symm.multipliable_iff.symm
@[to_additive]
theorem tprod_pnat_eq_tprod_succ {f : ℕ → M} : ∏' n : ℕ+, f n = ∏' n, f (n + 1) :=
(Equiv.pnatEquivNat.symm.tprod_eq _).symm
@[to_additive]
lemma tprod_zero_pnat_eq_tprod_nat [TopologicalSpace G] [IsTopologicalGroup G] [T2Space G]
{f : ℕ → G} (hf : Multipliable f) :
f 0 * ∏' n : ℕ+, f ↑n = ∏' n, f n := by
simpa [hf.tprod_eq_zero_mul] using tprod_pnat_eq_tprod_succ
@[to_additive tsum_nat_eq_zero_two_pnat]
theorem tprod_nat_eq_zero_mul_tprod_pnat_sq [UniformSpace G] [IsUniformGroup G] [CompleteSpace G]
[T2Space G] {f : ℤ → G} (hf : ∀ n : ℤ, f (-n) = f n) (hf2 : Multipliable f) :
∏' n, f n = f 0 * (∏' n : ℕ+, f n) ^ 2 := by
have hf3 : Multipliable fun n : ℕ ↦ f n :=
(multipliable_int_iff_multipliable_nat_and_neg.mp hf2).1
have hf4 : Multipliable fun n : ℕ+ ↦ f n := by
rwa [multipliable_pnat_iff_multipliable_succ (f := (f ·)),
multipliable_nat_add_iff 1 (f := (f ·))]
have := tprod_nat_mul_neg hf2
rw [← tprod_zero_pnat_eq_tprod_nat (by simpa [hf] using hf3.mul hf3), mul_comm _ (f 0)] at this
simp only [hf, Nat.cast_zero, mul_assoc, mul_right_inj] at this
rw [← this, mul_right_inj, hf4.tprod_mul hf4, sq]
end PNat |
|
Oh nice thanks. I honestly thought that using |
|
Yes exactly. You're allowing a general R, but requiring your functions to be the composite of the coercion Nat -> R and a function R -> something; so this is actually less general than an arbitrary function Nat -> something. |
loefflerd
left a comment
There was a problem hiding this comment.
LGTM modulo a minor naming comment
maintainer delegate
|
🚀 Pull request has been placed on the maintainer queue by loefflerd. |
Co-authored-by: David Loeffler <d.loeffler.01@cantab.net>
|
Doesn't build yet. |
|
bors r+ |
|
Pull request successfully merged into master. Build succeeded: |
* The definition of `ModularForm` was generalized: leanprover-community/mathlib4#26651 * `Summable` has a `SummationFilter` parameter now: leanprover-community/mathlib4#29914 * `f` parameter of `tprod_pnat_eq_tprod_succ` is now implicit: leanprover-community/mathlib4#27841 * various lemmas were deprecated * A lemma named `Filter.map_add_atTop_eq` was added to mathlib: leanprover-community/mathlib4#29532 * other changes too... --------- Co-authored-by: Pietro Monticone <38562595+pitmonticone@users.noreply.github.com>