mathlib4 icon indicating copy to clipboard operation
mathlib4 copied to clipboard

refactor(RingTheory/HahnSeries) : several generalizations

Open ScottCarnahan opened this issue 1 year ago • 3 comments

This PR is a container for several smaller PRs that refactor and generalize the existing Hahn series theory. It is (I think) all we need from Hahn series to get a palatable theory of vertex algebras off the ground (other prerequisites from Lie algebras will eventually come in a different PR). Major changes include:

  • equivalence between iterated Hahn series and Hahn series on Lex products.
  • introduce orderTop and leadingCoeff functions. Here, orderTop is a WithTop Γ-valued version of order that does not need [Zero Γ] and leadingCoeff returns the coefficient of the minimal element of support (or zero if empty).
  • introduce ordered and cancellative vector addition classes together with some basic theory e.g., finiteness of antidiagonals for partially well-ordered sets.
  • HahnSeries Γ R-module structure on HahnModule Γ' R V, when Γ is an OrderedCancelAddCommMonoid, Γ' is a PartialOrder with OrderedCancelVAdd Γ Γ', R is a semiring, and V is an R-module.
  • Move AddVal to a separate file - the underlying function is just orderTop, but the description of the valuation needs an additional import and an IsDomain hypothesis. Results that depended on AddVal are changed to use orderTop and generalized.

  • [x] depends on: #10781 [HahnSeries on Lex product]
  • [x] depends on: #10846 [HahnModule]
  • [x] depends on: #11965 [orderTop]
  • [x] depends on: #11979 [OrderedVAdd]
  • [x] depends on: #12996 [leadingTerm]
  • [ ] depends on: #16649
  • [ ] depends on: #16701
  • [ ] depends on: #17004

Open in Gitpod

ScottCarnahan avatar Apr 18 '24 17:04 ScottCarnahan

Import summary

Dependency changes
File Base Count Head Count Change
Mathlib.RingTheory.HahnSeries.Summable 895 890 -5 (-0.56%)

github-actions[bot] avatar Jun 07 '24 06:06 github-actions[bot]

PR summary f1e4055e88

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ Fintype_of_pos_order + PiFamily + SMulCommClass + add_coeffTop_map + add_leading_orderTop_ne + add_ne_top + add_untop + coeffTop + coeffTop_Top + coeffTop_add + coeffTop_eq + coeffTop_eq_zero_of_lt_orderTop + coeff_add_leading + coeff_eq_of_not_orderTop + coeff_sum + coeff_untop_eq + coeff_zsmul + equiv_map_on_finset_finsupp + equiv_map_on_fintype_finsupp + finsum_antidiagonal_prod + finsum_prod + heval + heval_mul + heval_unit + hsum_pi_family + inf_orderTop_le_orderTop_sum + instGroupModule + isPWO_iUnion_support_MVpow + isPWO_iUnion_support_MVpow_support + isPWO_iUnion_support_powers + isPWO_iUnion_support_smul_MVpowers + isPWO_iUnion_support_smul_pow + le_orderTop_iff + leadingCoeff_leadingTerm + leadingCoeff_mul_of_nonzero + leadingCoeff_pow_of_nonzero + leadingTerm + leadingTerm_eq + leadingTerm_ne_iff + leadingTerm_of_ne + leadingTerm_zero + lof + mvPowerSeriesFamily + mvPowerSeriesFamilyAdd + mvPowerSeriesFamilySMul + mvPowerSeriesFamily_supp_subset + mvPowerSeries_family_prod_eq_family_mul + mvPowers + mvPowers_apply + mvpow_finite_co_support + ne_zero_of_coeffTop_ne_zero + ne_zero_of_order_ne + nonzero_of_nonzero_add_leading + ofIterate.linearMap + one_minus_single_mul + orderTop_le_of_coeffTop_ne_zero + orderTop_le_orderTop_add + orderTop_lt_add_single_support_orderTop + orderTop_mul_of_nonzero + orderTop_one_le + orderTop_pow_of_nonzero + orderTop_smul_of_nonzero + order_lt_add_single_support_order + piFamily_cons + pi_PWO_iUnion_support + pi_finite_co_support + prodPiCons_mem + prod_mul + single_add + smul_coeffTop_orderTop_vAdd_orderTop + smul_comm + smul_pow_finite_co_support + sum_eq_top + sum_orderTop_le_orderTop_prod + sum_untop + supp_eq_univ_of_pos + supp_eq_univ_of_pos_fintype + support_MVpow_subset_closure + support_MVpow_subset_closure_support + support_pow_subset_closure + support_prod_subset_add_support + support_smul_MVpow_subset_closure + support_smul_MVpow_subset_closure_support + support_smul_pow_subset_closure + support_subset_add_single_support + toIterate.linearMap ++ heval_coeff ++ heval_coeff_zero - coeff_heval - coeff_heval_zero

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/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[bot] avatar Jun 08 '24 10:06 github-actions[bot]

This PR/issue depends on:

  • ~~leanprover-community/mathlib4#10781~~
  • ~~leanprover-community/mathlib4#10846~~
  • ~~leanprover-community/mathlib4#11965~~
  • ~~leanprover-community/mathlib4#11979~~
  • ~~leanprover-community/mathlib4#12996~~
  • ~~leanprover-community/mathlib4#16649~~
  • ~~leanprover-community/mathlib4#16701~~
  • ~~leanprover-community/mathlib4#17004~~ By Dependent Issues (🤖). Happy coding!