feat: Infinite products
Last year, YaelDillies made a pull request to mathlib3 that unfortunately never got merged in: https://github.com/leanprover-community/mathlib/pull/18405. This is the mathlib4 version of that pull request.
We define arbitrarily indexed products in a commutative monoid with a topology. This is done by "multiplicativizing" the currently existing definitions and theorems about arbitrarily indexed sums. That is, the existing code is rewritten in the multiplicative setting, and the original definitions and theorems are recovered using @[to_additive]. Please see this thread on Zulip for information on why this approach was chosen: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Infinite.20products
As YaelDillies wrote in the description of https://github.com/leanprover-community/mathlib/pull/18405, there are a few small technical issues that arise when directly "multiplicativizing" theorems in this way:
- I have renamed
cauchySeq_finset_iff_vanishingtocauchySeq_finset_iff_sum_vanishingto make the name multiplicativizable. This is slightly different from the namecauchy_seq_finset_sum_iff_vanishingthat YaelDillies used, and it is meant to parallel the existing namecauchySeq_finset_iff_tsum_vanishing. - Currently, on master, there is a theorem called
tsum_sumabout taking thetsumof asum, and a theorem calledtsum_prodabout taking atsumon a product of two index sets. I have called the multiplicative versionstprod_of_prodandtprod_prod. This is slightly different from the namestprod_prod''andtprod_prodthat YaelDillies used. eric-wieser suggested renamingtsum_prodtotsum_prod_indexto get around this issue, which I can do in a separate pull request.
Thank you for the review. I have taken into account your comments.
Thanks; I've added the docstrings
Sorry for missing so many of them.
🚀 Pull request has been placed on the maintainer queue by YaelDillies.
🚀 Pull request has been placed on the maintainer queue by YaelDillies.
:v: trivial1711 can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.
(Before merging, please take into account Yael's comment on names in the PR description)
(This was already done)
bors r+
Pull request successfully merged into master.
Build succeeded: