% Testing rlcad
% Condition on quartic polynomial being positive semidefinite.

off rlabout;



rlset reals;


{}


quartic := all(x,x**4+p*x**2+q*x+r>=0)$


quarticneg := not quartic$



on rlcadfulldimonly;


rlcad quarticneg;


(r < 0 and q = 0)

                                    2                 3
 or (r > 0 and q = 0 and p < 0 and p  - 4*r <> 0 and p  - 4*p*r < 0)

                          3                            2
 or (q = 0 and p < 0 and p  - 4*p*r < 0 and (r = 0 or p  - 4*r = 0))

                    4        3
 or (q <> 0 and 27*q  - 256*r  > 0 and p = 0) or (q <> 0 and p < 0

        3      2             3              2             3       2
 and 2*p  + 9*q  <= 0 and 2*p  - 8*p*r + 9*q  <> 0 and 8*p  + 27*q  < 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  < 0) or (q <> 0

                  3      2            3              2            3       2
 and p < 0 and 2*p  + 9*q  > 0 and 2*p  - 8*p*r + 9*q  = 0 and 8*p  + 27*q  = 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  = 0) or (q <> 0

                  3      2            3              2            3       2
 and p < 0 and 2*p  + 9*q  > 0 and 2*p  - 8*p*r + 9*q  = 0 and 8*p  + 27*q  > 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  < 0) or (q <> 0

                  3      2            3              2
 and p < 0 and 2*p  + 9*q  > 0 and 2*p  - 8*p*r + 9*q  <> 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  < 0) or (q <> 0

                  3              2            3       2
 and p < 0 and 2*p  - 8*p*r + 9*q  = 0 and 8*p  + 27*q  < 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  < 0) or (q <> 0

                  3              2            3       2
 and p < 0 and 2*p  - 8*p*r + 9*q  < 0 and 8*p  + 27*q  < 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  >= 0) or (

                        3              2
q <> 0 and p > 0 and 2*p  - 8*p*r + 9*q  > 0

         4        3  2        2  2          2         4        3
 and 16*p *r - 4*p *q  - 128*p *r  + 144*p*q *r - 27*q  + 256*r  < 0)

off rlcadfulldimonly;



end;

