@@ -5,8 +5,10 @@ Authors: Violeta Hernández Palacios
55-/
66module
77
8- public import Mathlib.Algebra.Group.Pointwise.Set.Card
9- public import Mathlib.RingTheory.HahnSeries.Multiplication
8+ public import Mathlib.RingTheory.HahnSeries.Summable
9+ public import Mathlib.SetTheory.Cardinal.Arithmetic
10+
11+ import Mathlib.Algebra.Group.Pointwise.Set.Card
1012
1113/-!
1214# Cardinality of Hahn series
@@ -16,7 +18,6 @@ for the cardinalities of different operations.
1618
1719## Todo
1820
19- - Bound the cardinality of the inverse.
2021- Build the subgroups, subrings, etc. of Hahn series with support less than a given infinite
2122 cardinal.
2223 -/
@@ -27,10 +28,13 @@ open Cardinal
2728
2829namespace HahnSeries
2930
30- variable {Γ R S : Type *} [PartialOrder Γ]
31+ variable {Γ R S α : Type *}
3132
3233/-! ### Cardinality function -/
3334
35+ section PartialOrder
36+ variable [PartialOrder Γ]
37+
3438section Zero
3539variable [Zero R]
3640
@@ -56,6 +60,14 @@ theorem cardSupp_single_of_ne (a : Γ) {r : R} (h : r ≠ 0) : cardSupp (single
5660theorem cardSupp_single_le (a : Γ) (r : R) : cardSupp (single a r) ≤ 1 :=
5761 (mk_le_mk_of_subset support_single_subset).trans_eq (mk_singleton a)
5862
63+ @[simp]
64+ theorem cardSupp_one_le [Zero Γ] [One R] : cardSupp (1 : R⟦Γ⟧) ≤ 1 :=
65+ cardSupp_single_le ..
66+
67+ @[simp]
68+ theorem cardSupp_one [Zero Γ] [One R] [NeZero (1 : R)] : cardSupp (1 : R⟦Γ⟧) = 1 :=
69+ cardSupp_single_of_ne _ one_ne_zero
70+
5971theorem cardSupp_map_le [Zero S] (x : R⟦Γ⟧) (f : ZeroHom R S) : (x.map f).cardSupp ≤ x.cardSupp :=
6072 cardSupp_mono <| support_map_subset ..
6173
@@ -85,4 +97,53 @@ theorem cardSupp_mul_le [AddCommMonoid Γ] [IsOrderedCancelAddMonoid Γ] [NonUni
8597 (x y : R⟦Γ⟧) : (x * y).cardSupp ≤ x.cardSupp * y.cardSupp :=
8698 (mk_le_mk_of_subset (support_mul_subset ..)).trans mk_add_le
8799
100+ theorem cardSupp_single_mul_le [AddCommMonoid Γ] [IsOrderedCancelAddMonoid Γ]
101+ [NonUnitalNonAssocSemiring R] (x : R⟦Γ⟧) (a : Γ) (r : R) :
102+ (single a r * x).cardSupp ≤ x.cardSupp := by
103+ simpa using (cardSupp_mul_le ..).trans (mul_le_mul_left (cardSupp_single_le ..) _)
104+
105+ theorem cardSupp_mul_single_le [AddCommMonoid Γ] [IsOrderedCancelAddMonoid Γ]
106+ [NonUnitalNonAssocSemiring R] (x : R⟦Γ⟧) (a : Γ) (r : R) :
107+ (x * single a r).cardSupp ≤ x.cardSupp := by
108+ simpa using (cardSupp_mul_le ..).trans (mul_le_mul_right (cardSupp_single_le ..) _)
109+
110+ theorem cardSupp_pow_le [AddCommMonoid Γ] [IsOrderedCancelAddMonoid Γ] [Semiring R]
111+ (x : R⟦Γ⟧) (n : ℕ) : (x ^ n).cardSupp ≤ x.cardSupp ^ n := by
112+ induction n with
113+ | zero => simp
114+ | succ n IH =>
115+ simpa [pow_succ] using (cardSupp_mul_le ..).trans <| mul_le_mul_left IH _
116+
117+ theorem cardSupp_hsum_le [AddCommMonoid R] (s : SummableFamily Γ R α) :
118+ lift s.hsum.cardSupp ≤ sum fun a ↦ (s a).cardSupp :=
119+ (lift_le.2 <| mk_le_mk_of_subset (SummableFamily.support_hsum_subset ..)).trans
120+ mk_iUnion_le_sum_mk_lift
121+
122+ end PartialOrder
123+
124+ section LinearOrder
125+ variable [LinearOrder Γ]
126+
127+ theorem cardSupp_hsum_powers_le [AddCommMonoid Γ] [IsOrderedCancelAddMonoid Γ] [CommRing R]
128+ (x : R⟦Γ⟧) : (SummableFamily.powers x).hsum.cardSupp ≤ max ℵ₀ x.cardSupp := by
129+ grw [← lift_uzero (cardSupp _), ← sum_pow_le_max_aleph0, cardSupp_hsum_le, sum_le_sum]
130+ intro i
131+ rw [SummableFamily.powers_toFun]
132+ split_ifs
133+ · exact cardSupp_pow_le ..
134+ · cases i <;> simp
135+
136+ theorem cardSupp_inv_le [AddCommGroup Γ] [IsOrderedAddMonoid Γ] [Field R] (x : R⟦Γ⟧) :
137+ x⁻¹.cardSupp ≤ max ℵ₀ x.cardSupp := by
138+ obtain rfl | hx := eq_or_ne x 0 ; · simp
139+ apply (cardSupp_single_mul_le ..).trans <| (cardSupp_hsum_powers_le ..).trans _
140+ gcongr
141+ refine (cardSupp_single_mul_le _ (-x.order) x.leadingCoeff⁻¹).trans' <| cardSupp_mono fun _ ↦ ?_
142+ aesop (add simp [coeff_single_mul])
143+
144+ theorem cardSupp_div_le [AddCommGroup Γ] [IsOrderedAddMonoid Γ] [Field R] (x y : R⟦Γ⟧) :
145+ (x / y).cardSupp ≤ x.cardSupp * max ℵ₀ y.cardSupp :=
146+ (cardSupp_mul_le ..).trans <| mul_le_mul_right (cardSupp_inv_le y) _
147+
148+ end LinearOrder
88149end HahnSeries
0 commit comments