# Expanding polynomials using valuation

I would like to expand the polynomial $$p(\lambda) = \sum_{i=0}^{d} a_{i} \lambda^{i}$$, as $$F(p(\lambda), \lambda_{0})= \min_{j} [ val(a_{j}) + j \lambda_{0} ]$$ with $$\lambda_{0}$$ being a real variable. Here, $$val(a)$$ is the valuation, which is the lowest exponent of the non-zero Puiseux series. The valuation satisfies \begin{align} val(a) =\infty \text{ iff } a=0 ,\quad val(ab) =val(a)+val(b),\quad val(a+b) \geq \min [ val(a) , val(b) ]. \end{align} For example, $$val(t^{2} -2t+3) = \min [ val(t^2) , val(-2t), val(3) ] =\min [ 2,1,0 ]=0$$. The above suggested expansion for polynomial $$p=\lambda^{2} - x^{2} -2x$$ with respect to variable $$\lambda$$ reads $$F(p(\lambda), \lambda_{0}) = \min[1, 2 \lambda_{0}]$$.

For a simple polynomial, I have obtained the valuation using

poly = -2 x  + x^2 + 3
val = Min[Exponent[DeleteCases[MonomialList[poly], {0}], x]]


However, this fails when MonomialList has zero elements. I have excluded these cases using DeleteCases such that

poly = -2 x  - x^2 +  \[Lambda]^2
coeff = CoefficientList[poly, \[Lambda]]
val = Min @@@ Exponent[DeleteCases[MonomialList[coeff], {0}], x]
(*{1, 0}*)


The output val has components for $$\lambda^{0}$$ and $$\lambda^{2}$$ and $$\lambda^{1}$$ is the deleted case. To obtain $$F$$ for the particular example, I have used

F[i_, val_] := Min[val + i Subscript[\[Lambda], 0]];
F[{0, 2}, val ]
(*{1, 2 Subscript[\[Lambda], 0]}*)


Here, I have now explicitly passed to the function that $$\ i \in \{0,2\}$$ as $$i=0$$ was excluded.

Do you have any suggestions on better implementing these steps so that $$F$$ can be calculated more easily?

Maybe:

Min[CoefficientRules[#[[2]], x][[All, 1, 1]]] + #[[1,
1]] \[Lambda]0 & /@ CoefficientRules[poly, \[Lambda]]

(* {2 \[Lambda]0, 1} *)


Or:

MapIndexed[
(# /. {
0 -> Infinity,
p_ :> Min[CoefficientRules[p, x][[All, 1, 1]]]
}) + (First[#2] - 1) \[Lambda]0 &
, CoefficientList[poly, \[Lambda]]
]

(* {1, \[Infinity], 2 \[Lambda]0} *)


You mentioned Infinity in the question, but maybe that was just a kludge for Min. I suppose each of the whole codes above should be wrapped in Min to the get capital F function in the first sentence. The OP didn't do it, so I was confused. Anyway, if I didn't do it right, I hope it gives you some ideas you can use!

P.S. I'd avoid using subscripts in code and reserve Subscript for formatting output. For instance, Subscript[\[Lambda], 0] is a function of \[Lambda] as an expression in Mathematica, and that is not how it should be treated in this problem. (Admittedly, it rarely causes problems, but it has caused them.)

• (+1) Thank you for your suggestion on not using Subscript and also for your answer. Dec 25, 2023 at 17:12
• When I apply the first approach to poly = \[Lambda]^2 + x^2 + y z with $y$ and $z$ being other symbolic variables. I get {2 \[Lambda]0, 0} while I was expecting {2 \[Lambda]0, 2}  as valuation with respect to $x$ is 2. Dec 26, 2023 at 5:03
• @Shasa That's because y z as a polynomial in x is the degree 0 term. So the minimum degree is 0. What would you want if poly = \[Lambda]^2 + x^2 + x y z? Still 2, or 1? I'd guess 1. For instance, CoefficientRules[x^2 + y z, {x, y, z}] gives a rule for each ordered list of powers, {2, 0, 0} and {0, 1, 1}. Should we discard any list of powers beginning with zero, say {0, b, c} where b or c is not zero? Except keep {0, 0, 0} if there is a numeric constant term, as in CoefficientRules[x^2 + y z + 3, {x, y, z}]? Dec 27, 2023 at 17:22
• you are correct regarding my concern. For my list of polynomials, the constants do not appear usually. So, no specific care should be given to that. Dec 29, 2023 at 7:13