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?


1 Answer 1



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

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


 (# /. {
      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.)

  • $\begingroup$ (+1) Thank you for your suggestion on not using Subscript and also for your answer. $\endgroup$
    – Shasa
    Dec 25, 2023 at 17:12
  • $\begingroup$ 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. $\endgroup$
    – Shasa
    Dec 26, 2023 at 5:03
  • $\begingroup$ @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}]? $\endgroup$
    – Goofy
    Dec 27, 2023 at 17:22
  • $\begingroup$ 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. $\endgroup$
    – Shasa
    Dec 29, 2023 at 7:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.