theorem
proved
polyPrimeCost_nonneg
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.NumberTheory.PrimeCostSpectrumPoly on GitHub at line 118.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
-
Jcost_nonneg -
Jcost_nonneg -
is -
is -
is -
Jcost_nonneg -
Jcost_nonneg -
is -
Jcost_nonneg -
polyCost -
polyNorm_pos -
polyPrimeCost -
F -
F -
F
used by
formal source
115
116/-- `polyPrimeCost` is nonnegative on any polynomial (it is always `J`
117 of a positive real). -/
118theorem polyPrimeCost_nonneg (P : Polynomial F) : 0 ≤ polyPrimeCost P :=
119 Jcost_nonneg (polyNorm_pos P)
120
121/-- `polyCost` is nonnegative on any polynomial. -/
122theorem polyCost_nonneg (f : Polynomial F) : 0 ≤ polyCost f := by
123 unfold polyCost
124 apply Multiset.sum_nonneg
125 intro x hx
126 obtain ⟨P, _, hP_eq⟩ := Multiset.mem_map.mp hx
127 rw [← hP_eq]
128 exact polyPrimeCost_nonneg P
129
130/-! ## Multiplicativity over factorization -/
131
132/-- The total cost is additive under multiplication of nonzero polynomials.
133 This is the function-field analog of `costSpectrumValue_mul`. -/
134theorem polyCost_mul {f g : Polynomial F} (hf : f ≠ 0) (hg : g ≠ 0) :
135 polyCost (f * g) = polyCost f + polyCost g := by
136 unfold polyCost
137 rw [normalizedFactors_mul hf hg]
138 rw [Multiset.map_add, Multiset.sum_add]
139
140/-! ## Cost on irreducibles and powers -/
141
142/-- For a monic irreducible polynomial `P`, the cost equals `J(‖P‖)`.
143 Mathlib's `normalizedFactors` returns the multiset of monic
144 irreducible factors. -/
145theorem polyCost_irreducible {P : Polynomial F}
146 (hP_irr : Irreducible P) (hP_monic : P.Monic) :
147 polyCost P = polyPrimeCost P := by
148 unfold polyCost