StrictlyPositiveCert

The code is available here

The package StrictlyPositiveCert implements Algorithm 4 in (Shang et al. 2025), which computes certificates of strictly positive polynomials over basic semialgebraic sets associated a set of generators \(G\) for which the quadratic module generated by \(G\) is Archimedean in the multivariate case.

Installation

Use the make command at the root of the project to produce the maple library file StrictlyPositiveCert.mla. Then, load the StrictlyPositiveCert package by adding the following two lines at the beginning of your maple file:

libname := libname, "<PATH-TO-STRICTLYPOSITIVECERT>/StrictlyPositiveCert.mla":
with(StrictlyPositiveCert):

Usage and examples

The command spCertificate has the following inputs:

  • f: Denotes the input polynomial
  • basis: This is a list of polynomials (generators) in the free variable x
  • x: Denotes the free variable of the ring of univariate polynomial

The directory tests contains benchmarks and examples reported in (Shang et al. 2025).

For a simple example, we can execute

libname := libname, "../StrictlyPositiveCert.mla":
with(StrictlyPositiveCert);

spCertificates(x+1, [-x^2], x);

The output is

> libname := libname, "../StrictlyPositiveCert.mla":
> with(StrictlyPositiveCert);
                                                        [bound_info, dot_product, findEps, spCertificates]


> spCertificates(x+1, [-x^2], x);
                                                                                     2
                                                                      [x + 1 + 9/10 x , 9/10]

We can verify \(x+1 = (x+1+\frac{9}{10}x^2 + \frac{9}{10} \dot (-x^2))\) and \(x+1+\frac{9}{10}x^2 = (\frac{1}{2}x+1)^2+\frac{13}{20}x^2\)

References

Shang, Weifeng, Chenqi Mou, Jose Abel Castellanos Joo, and Deepak Kapur. 2025. Computing Certificates of Strictly Positive Polynomials in Archimedean Quadratic Modules. https://arxiv.org/abs/2503.11119.