MultivariatePowerSeries/SetHenselBound - Maple Help

MultivariatePowerSeries

 SetHenselBound
 set a Puiseux_bound for a univariate polynomial over power series

 Calling Sequence SetHenselBound(bound, u) SetHenselBound(bound)

Parameters

 bound - a non-negative integer u - (optional) univariate polynomial over power series generated by this package

Description

 • This command sets a parameter in a univariate polynomial over power series . The parameter is used in computing the extended Hensel construction. Its function is described on the ExtendedHenselConstruction help page.
 • Using the first calling sequence, we set the bound for the given object u. This is used when computing the extended Hensel construction of u (unless overridden in the ExtendedHenselConstruction command itself).
 • Using the second calling sequence, we set the global default value for the bound. This value is used when computing the Puiseux factorization of a univariate polynomial over power series for which the bound has not been set using the first calling sequence (unless overridden in the ExtendedHenselConstruction command itself). Initially, the default value for the bound is 10.
 • Both calling sequences return the previously stored value for the bound, either in u (for the first calling sequence) or the default (for the second).
 • When using the MultivariatePowerSeries package, do not assign anything to the variables occurring in the power series, Puiseux series, and univariate polynomials over these series. If you do, you may see invalid results.

Examples

 > $\mathrm{with}\left(\mathrm{MultivariatePowerSeries}\right):$

Create a univariate polynomial over power series using procedures to create its coefficients.

 > bproc := proc(d) if d  = 10 then return y^(10);    else return 0; end if; end proc;
 ${\mathrm{bproc}}{≔}{\mathbf{proc}}\left({d}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{if}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{d}{=}{10}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{then}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{return}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{y}{^}{10}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{else}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{return}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{0}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end if}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end proc}}$ (1)
 > $\mathrm{pso}≔\mathrm{PowerSeries}\left(\mathrm{bproc},\mathrm{variables}=\left\{y\right\}\right)$
 ${\mathrm{pso}}{≔}\left[{PowⅇrSⅇriⅇs:}{0}{+}{\dots }\right]$ (2)
 > bproc1 := proc(d) if d  = 4 then return y^(4); else return 0; end if; end proc;
 ${\mathrm{bproc1}}{≔}{\mathbf{proc}}\left({d}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{if}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{d}{=}{4}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{then}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{return}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{y}{^}{4}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{else}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{return}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{0}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end if}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end proc}}$ (3)
 > $\mathrm{pso1}≔\mathrm{PowerSeries}\left(\mathrm{bproc1},\mathrm{variables}=\left\{y\right\}\right)$
 ${\mathrm{pso1}}{≔}\left[{PowⅇrSⅇriⅇs:}{0}{+}{\dots }\right]$ (4)
 > bproc2 := proc(d) if d  = 20 then return y^(20); else return 0; end if; end proc;
 ${\mathrm{bproc2}}{≔}{\mathbf{proc}}\left({d}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{if}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{d}{=}{20}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{then}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{return}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{y}{^}{20}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{else}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{return}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{0}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end if}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end proc}}$ (5)
 > $\mathrm{pso2}≔\mathrm{PowerSeries}\left(\mathrm{bproc2},\mathrm{variables}=\left\{y\right\}\right)$
 ${\mathrm{pso2}}{≔}\left[{PowⅇrSⅇriⅇs:}{0}{+}{\dots }\right]$ (6)
 > $u≔\mathrm{UnivariatePolynomialOverPowerSeries}\left(\left[\mathrm{pso},\mathrm{pso1},\mathrm{pso2},\mathrm{pso}\right],x\right)$
 ${u}{≔}\left[{UnivariatⅇPolynomialOvⅇrPowⅇrSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({0}{+}{\dots }\right){}{x}{+}\left({0}{+}{\dots }\right){}{{x}}^{{2}}{+}\left({0}{+}{\dots }\right){}{{x}}^{{3}}\right]$ (7)

Computing the ExtendedHencelConstruction would use the initial value of the global default bound, 10. This is too low to determine the Newton polynomial of the input polynomial (it needs to be 20), so we see an error message.

 > $\mathrm{ExtendedHenselConstruction}\left(u\right)$

If we set a different global default, that's the value that is used. This value is high enough.

 > $\mathrm{SetHenselBound}\left(20\right)$
 ${10}$ (8)
 > $\mathrm{ExtendedHenselConstruction}\left(u\right)$
 $\left[\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({{y}}^{{10}}{+}{\dots }\right)\right]{,}\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({1}{+}{\dots }\right){}{x}\right]{,}\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({1}{+}{\dots }\right){}{x}\right]{,}\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({1}{+}{\dots }\right){}{x}\right]\right]$ (9)

If we set the bound for u specifically, that overrides the default value.

 > $\mathrm{SetHenselBound}\left(15,u\right)$
 ${\mathrm{undefined}}$ (10)
 > $\mathrm{ExtendedHenselConstruction}\left(u\right)$
 $\left[\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({{y}}^{{10}}{+}{\dots }\right)\right]{,}\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({1}{+}{\dots }\right){}{x}\right]{,}\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({1}{+}{\dots }\right){}{x}\right]{,}\left[{UnivariatⅇPolynomialOvⅇrPuisⅇuxSⅇriⅇs:}\left({0}{+}{\dots }\right){+}\left({1}{+}{\dots }\right){}{x}\right]\right]$ (11)

If we specify the bound in the ExtendedHenselConstruction command itself, that overrides all set values. This is, once again, too low of a value for the bound.

 > $\mathrm{ExtendedHenselConstruction}\left(u,8\right)$

In this case, it is not possible to determine if the leading coefficient of $u$ is non-zero or not.

References

 Monforte, A.A., & Kauers, M. "Formal Laurent series in several variables." Expositiones Mathematicae. Vol. 31 No. 4 (2013): 350-367.

Compatibility

 • The MultivariatePowerSeries[SetHenselBound] command was introduced in Maple 2023.