refactor(RingTheory/HahnSeries) : several generalizations
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
orderTopandleadingCoefffunctions. Here,orderTopis aWithTop Γ-valued version oforderthat does not need[Zero Γ]andleadingCoeffreturns 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 onHahnModule Γ' R V, whenΓis anOrderedCancelAddCommMonoid,Γ'is aPartialOrderwithOrderedCancelVAdd Γ Γ',Ris a semiring, andVis anR-module.- Move
AddValto a separate file - the underlying function is justorderTop, but the description of the valuation needs an additional import and anIsDomainhypothesis. Results that depended onAddValare changed to useorderTopand 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
Import summary
Dependency changes
| File | Base Count | Head Count | Change |
|---|---|---|---|
| Mathlib.RingTheory.HahnSeries.Summable | 895 | 890 | -5 (-0.56%) |
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
relativevalue is the weighted sum of the differences with weight given by the inverse of the current value of the statistic. - The
absolutevalue is therelativevalue divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).
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!