Commit 2024-03-30 22:01 f4bf34de

View on Github →

feat: Infinite products (#11733) 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_vanishing to cauchySeq_finset_iff_sum_vanishing to make the name multiplicativizable. This is slightly different from the name cauchy_seq_finset_sum_iff_vanishing that YaelDillies used, and it is meant to parallel the existing name cauchySeq_finset_iff_tsum_vanishing.
  • Currently, on master, there is a theorem called tsum_sum about taking the tsum of a sum, and a theorem called tsum_prod about taking a tsum on a product of two index sets. I have called the multiplicative versions tprod_of_prod and tprod_prod. This is slightly different from the names tprod_prod'' and tprod_prod that YaelDillies used. eric-wieser suggested renaming tsum_prod to tsum_prod_index to get around this issue, which I can do in a separate pull request.

Estimated changes

added theorem Equiv.hasProd_iff
deleted theorem Equiv.hasSum_iff
added theorem Equiv.multipliable_iff
deleted theorem Equiv.summable_iff
added theorem Equiv.tprod_eq
deleted theorem Equiv.tsum_eq
added theorem Finset.tprod_subtype'
added theorem Finset.tprod_subtype
deleted theorem Finset.tsum_subtype'
deleted theorem Finset.tsum_subtype
added theorem HasProd.compl_mul
added theorem HasProd.mul
added theorem HasProd.mul_compl
added theorem HasProd.mul_disjoint
added theorem HasProd.mul_isCompl
added theorem HasProd.update'
deleted theorem HasSum.add
deleted theorem HasSum.add_compl
deleted theorem HasSum.add_disjoint
deleted theorem HasSum.add_isCompl
deleted theorem HasSum.compl_add
deleted theorem HasSum.hasSum_of_sum_eq
deleted theorem HasSum.update'
added theorem Multipliable.compl_add
added theorem Multipliable.congr
added theorem Multipliable.mul
added theorem Multipliable.mul_compl
deleted theorem Summable.add
deleted theorem Summable.add_compl
deleted theorem Summable.compl_add
deleted theorem Summable.congr
deleted theorem eq_add_of_hasSum_ite
added theorem eq_mul_of_hasProd_ite
added theorem hasProd_empty
added theorem hasProd_extend_one
added theorem hasProd_iff_hasProd
added theorem hasProd_ite_eq
added theorem hasProd_one
added theorem hasProd_prod
added theorem hasProd_prod_disjoint
added theorem hasProd_single
added theorem hasProd_singleton
added theorem hasProd_unique
deleted theorem hasSum_empty
deleted theorem hasSum_extend_zero
deleted theorem hasSum_iff_hasSum
deleted theorem hasSum_ite_eq
deleted theorem hasSum_single
deleted theorem hasSum_singleton
deleted theorem hasSum_subtype_support
deleted theorem hasSum_sum
deleted theorem hasSum_sum_disjoint
deleted theorem hasSum_unique
deleted theorem hasSum_zero
added theorem multipliable_congr
added theorem multipliable_empty
added theorem multipliable_one
added theorem multipliable_prod
deleted theorem sum_eq_tsum_indicator
deleted theorem summable_congr
deleted theorem summable_empty
deleted theorem summable_extend_zero
deleted theorem summable_sum
deleted theorem summable_zero
added theorem tprod_bool
added theorem tprod_congr
added theorem tprod_congr_set_coe
added theorem tprod_congr_subtype
added theorem tprod_dite_left
added theorem tprod_dite_right
added theorem tprod_empty
added theorem tprod_eq_finprod
added theorem tprod_eq_mulSingle
added theorem tprod_eq_prod'
added theorem tprod_eq_prod
added theorem tprod_extend_one
added theorem tprod_fintype
added theorem tprod_image
added theorem tprod_ite_eq
added theorem tprod_mul
added theorem tprod_mul_tprod_compl
added theorem tprod_of_prod
added theorem tprod_one
added theorem tprod_range
added theorem tprod_singleton
added theorem tprod_subtype
added theorem tprod_union_disjoint
added theorem tprod_univ
deleted theorem tsum_add
deleted theorem tsum_add_tsum_compl
deleted theorem tsum_bool
deleted theorem tsum_congr
deleted theorem tsum_congr_set_coe
deleted theorem tsum_congr_subtype
deleted theorem tsum_dite_left
deleted theorem tsum_dite_right
deleted theorem tsum_empty
deleted theorem tsum_eq_add_tsum_ite'
deleted theorem tsum_eq_finsum
deleted theorem tsum_eq_single
deleted theorem tsum_eq_sum'
deleted theorem tsum_eq_sum
deleted theorem tsum_extend_zero
deleted theorem tsum_fintype
deleted theorem tsum_image
deleted theorem tsum_ite_eq
deleted theorem tsum_range
deleted theorem tsum_singleton
deleted theorem tsum_subtype
deleted theorem tsum_subtype_support
deleted theorem tsum_sum
deleted theorem tsum_tsum_eq_single
deleted theorem tsum_union_disjoint
deleted theorem tsum_univ
deleted theorem tsum_zero
added theorem HasProd.prod_fiberwise
added theorem HasProd.prod_mk
added theorem HasProd.sigma
deleted theorem HasSum.prod_fiberwise
deleted theorem HasSum.prod_mk
deleted theorem HasSum.sigma
deleted theorem HasSum.sigma_of_hasSum
deleted theorem HasSum.tsum_fiberwise
added theorem Multipliable.prod_symm
added theorem Multipliable.sigma'
added theorem Multipliable.sigma
added theorem Pi.hasProd
deleted theorem Pi.hasSum
added theorem Pi.multipliable
deleted theorem Pi.summable
deleted theorem Summable.prod_factor
deleted theorem Summable.prod_symm
deleted theorem Summable.sigma'
deleted theorem Summable.sigma
deleted theorem Summable.sigma_factor
added theorem hasProd_pi_single
deleted theorem hasSum_pi_single
added theorem tprod_apply
added theorem tprod_comm'
added theorem tprod_comm
added theorem tprod_pi_single
added theorem tprod_prod'
added theorem tprod_prod
added theorem tprod_sigma'
added theorem tprod_sigma
deleted theorem tsum_apply
deleted theorem tsum_comm'
deleted theorem tsum_comm
deleted theorem tsum_pi_single
deleted theorem tsum_prod'
deleted theorem tsum_prod
deleted theorem tsum_sigma'
deleted theorem tsum_sigma
added theorem HasProd.multipliable
added theorem HasProd.tprod_eq
added theorem HasProd.unique
added def HasProd
deleted theorem HasSum.summable
deleted theorem HasSum.tsum_eq
deleted theorem HasSum.unique
deleted def HasSum
added theorem Multipliable.hasProd
added def Multipliable
deleted theorem Summable.hasSum
deleted theorem Summable.hasSum_iff
deleted def Summable
added theorem hasProd_fintype
deleted theorem hasSum_fintype
added theorem HasProd.div
added theorem HasProd.inv
added theorem HasProd.update
deleted theorem HasSum.hasSum_compl_iff
deleted theorem HasSum.hasSum_iff_compl
deleted theorem HasSum.neg
deleted theorem HasSum.sub
deleted theorem HasSum.update
added theorem Multipliable.div
added theorem Multipliable.inv
added theorem Multipliable.of_inv
added theorem Multipliable.subtype
added theorem Multipliable.trans_div
added theorem Multipliable.update
added theorem Multipliable.vanishing
deleted theorem Summable.comp_injective
deleted theorem Summable.neg
deleted theorem Summable.of_neg
deleted theorem Summable.sub
deleted theorem Summable.subtype
deleted theorem Summable.trans_sub
deleted theorem Summable.tsum_vanishing
deleted theorem Summable.update
deleted theorem Summable.vanishing
deleted theorem hasSum_ite_sub_hasSum
added theorem multipliable_const_iff
added theorem multipliable_inv_iff
added theorem prod_mul_tprod_compl
deleted theorem sum_add_tsum_compl
deleted theorem summable_const_iff
deleted theorem summable_iff_vanishing
deleted theorem summable_neg_iff
added theorem tprod_const
added theorem tprod_div
added theorem tprod_eq_mul_tprod_ite
added theorem tprod_inv
deleted theorem tsum_const
deleted theorem tsum_eq_add_tsum_ite
deleted theorem tsum_neg
deleted theorem tsum_sub
added theorem HasProd.even_mul_odd
added theorem HasProd.int_rec
added theorem HasProd.nat_mul_neg
added theorem HasProd.of_nat_of_neg
added theorem HasProd.prod_range_mul
added theorem HasProd.zero_mul
deleted theorem HasSum.even_add_odd
deleted theorem HasSum.int_rec
deleted theorem HasSum.nat_add_neg
deleted theorem HasSum.of_nat_of_neg
deleted theorem HasSum.sum_range_add
deleted theorem HasSum.tendsto_sum_nat
deleted theorem HasSum.zero_add
added theorem Multipliable.int_rec
deleted theorem Summable.comp_nat_add
deleted theorem Summable.even_add_odd
deleted theorem Summable.int_rec
deleted theorem Summable.nat_add_neg
deleted theorem Summable.of_nat_of_neg
added theorem hasProd_nat_add_iff'
added theorem hasProd_nat_add_iff
deleted theorem hasSum_nat_add_iff'
deleted theorem hasSum_nat_add_iff
added theorem prod_mul_tprod_nat_add
added theorem rel_iSup_prod
deleted theorem rel_iSup_sum
added theorem rel_iSup_tprod
deleted theorem rel_iSup_tsum
deleted theorem rel_sup_add
added theorem rel_sup_mul
deleted theorem sum_add_tsum_nat_add'
deleted theorem sum_add_tsum_nat_add
deleted theorem summable_nat_add_iff
added theorem tendsto_prod_nat_add
deleted theorem tendsto_sum_nat_add
added theorem tprod_eq_zero_mul'
added theorem tprod_eq_zero_mul
added theorem tprod_even_mul_odd
added theorem tprod_iSup_decode₂
added theorem tprod_iUnion_decode₂
added theorem tprod_int_rec
added theorem tprod_nat_mul_neg
added theorem tprod_of_nat_of_neg
deleted theorem tsum_eq_zero_add'
deleted theorem tsum_eq_zero_add
deleted theorem tsum_even_add_odd
deleted theorem tsum_iSup_decode₂
deleted theorem tsum_iUnion_decode₂
deleted theorem tsum_int_rec
deleted theorem tsum_nat_add_neg
deleted theorem tsum_nat_add_neg_add_one
deleted theorem tsum_of_nat_of_neg
added theorem HasProd.le_one
added theorem HasProd.one_le
deleted theorem HasSum.nonneg
deleted theorem HasSum.nonpos
added theorem hasProd_le
added theorem hasProd_le_inj
added theorem hasProd_le_of_prod_le
added theorem hasProd_lt
added theorem hasProd_mono
added theorem hasProd_of_isLUB
added theorem hasProd_one_iff
added theorem hasProd_strict_mono
deleted theorem hasSum_le
deleted theorem hasSum_le_inj
deleted theorem hasSum_le_of_sum_le
deleted theorem hasSum_lt
deleted theorem hasSum_mono
deleted theorem hasSum_of_isLUB
deleted theorem hasSum_of_isLUB_of_nonneg
deleted theorem hasSum_strict_mono
deleted theorem hasSum_zero_iff
deleted theorem hasSum_zero_iff_of_nonneg
added theorem isLUB_hasProd'
added theorem isLUB_hasProd
deleted theorem isLUB_hasSum'
deleted theorem isLUB_hasSum
added theorem le_hasProd'
added theorem le_hasProd
added theorem le_hasProd_of_le_prod
deleted theorem le_hasSum'
deleted theorem le_hasSum
deleted theorem le_hasSum_of_le_sum
added theorem le_tprod'
added theorem le_tprod
deleted theorem le_tsum'
deleted theorem le_tsum
added theorem multipliable_mabs_iff
added theorem one_le_tprod
added theorem one_lt_tprod
added theorem prod_le_hasProd
added theorem prod_le_tprod
deleted theorem sum_le_hasSum
deleted theorem sum_le_tsum
deleted theorem summable_abs_iff
added theorem tprod_eq_one_iff
added theorem tprod_le_of_prod_le'
added theorem tprod_le_of_prod_le
added theorem tprod_le_one
added theorem tprod_le_tprod
added theorem tprod_le_tprod_of_inj
added theorem tprod_lt_tprod
added theorem tprod_mono
added theorem tprod_ne_one_iff
added theorem tprod_strict_mono
deleted theorem tsum_eq_zero_iff
deleted theorem tsum_le_of_sum_le'
deleted theorem tsum_le_of_sum_le
deleted theorem tsum_le_of_sum_range_le
deleted theorem tsum_le_tsum
deleted theorem tsum_le_tsum_of_inj
deleted theorem tsum_lt_tsum
deleted theorem tsum_mono
deleted theorem tsum_ne_zero_iff
deleted theorem tsum_nonneg
deleted theorem tsum_nonpos
deleted theorem tsum_pos
deleted theorem tsum_strict_mono