>  There is an issue discussing adding something like this to SymPy: 
> https://github.com/sympy/sympy/issues/26177 
Yes, this seems to be exactly what i was trying to do

> In the meantime it might make sense to implement the solver using 
> python-flint directly since it only requires multivariate polynomials 
> with rational coefficients and python-flint provides a faster 
> implementation of those already for direct use. 
I will look into this, thank you for the suggestion

On Sunday, 3 August 2025 at 13:49:38 UTC-4 Oscar wrote:

> There is an issue discussing adding something like this to SymPy:
> https://github.com/sympy/sympy/issues/26177
>
> > and compute sp.resultant(p, sp.diff(p,x), x)
> > computing this takes around the ballpark of 50 seconds, maple takes 4
>
> Are you saying that Maple takes 4 seconds for this and with SymPy it
> takes 50 seconds?
>
> If so then I think that is to be expected because Maple will do this
> operation in its kernel which means it is basically using a C
> implementation whereas SymPy hee uses a Python implementation. The
> algorithms might also be different but I would expect that the SymPy
> implementation would be at least 10x faster if it were in C. For some
> polynomial operations SymPy can now make use of python-flint meaning
> that the FLINT library which is written in C for operations like this.
> Using python-flint for multivariate polynomials is not implemented in
> SymPy yet but when it is it will be possible to use FLINT's resultant
> routines for this.
>
> In the meantime it might make sense to implement the solver using
> python-flint directly since it only requires multivariate polynomials
> with rational coefficients and python-flint provides a faster
> implementation of those already for direct use.
>
> Oscar
>
> On Sun, 3 Aug 2025 at 18:34, William Zhang (mintIceCream_)
> <[email protected]> wrote:
> >
> > Hello, undergrad here, i found an old chinese paper/maple script which 
> seemed kind of interesting so i decided to port it to sympy
> > Heres the code and everything 
> https://github.com/iceCreamMint/inqeuality-prover/tree/main
> > Its an prover for non-strict multivariable polynomial inequalities with 
> rational coefficents and positive real variables
> > Theres also one for geometric inequalities involving one triangle but 
> that part seems really complicated so i havent done anything with it yet
> > In my opinion the way it works is rather interesting, it does cad but 
> ignores lower dimensional cells to avoid having to solve for roots(i think 
> this is why it can only deal with unstrict inequalities?)
> > Other than that, it does some preprocessing to radicals and rationals to 
> make them valid for cad
> >
> > Currently the main bottleneck seems to be that resultants are painfully 
> slow
> > For example, take
> > p = 6561*x**8*y**4*z**4 - 26244*x**8*y**3*z**3 + 39366*x**8*y**2*z**2 - 
> 26244*x**8*y*z + 6561*x**8 - 26244*x**7*y**5*z**4 - 26244*x**7*y**4*z**5 + 
> 78732*x**7*y**4*z**3 + 78732*x**7*y**3*z**4 - 78732*x**7*y**3*z**2 - 
> 78732*x**7*y**2*z**3 + 26244*x**7*y**2*z + 26244*x**7*y*z**2 + 
> 39366*x**6*y**6*z**4 + 26244*x**6*y**5*z**5 - 52488*x**6*y**5*z**3 + 
> 39366*x**6*y**4*z**6 - 52488*x**6*y**4*z**4 - 39366*x**6*y**4*z**2 - 
> 52488*x**6*y**3*z**5 + 49572*x**6*y**3*z**3 + 78732*x**6*y**3*z - 
> 39366*x**6*y**2*z**4 - 69984*x**6*y**2*z**2 - 26244*x**6*y**2 + 
> 78732*x**6*y*z**3 + 69984*x**6*y*z - 26244*x**6*z**2 - 23328*x**6 - 
> 26244*x**5*y**7*z**4 + 26244*x**5*y**6*z**5 - 52488*x**5*y**6*z**3 + 
> 26244*x**5*y**5*z**6 - 52488*x**5*y**5*z**4 + 157464*x**5*y**5*z**2 - 
> 26244*x**5*y**4*z**7 - 52488*x**5*y**4*z**5 + 29160*x**5*y**4*z**3 - 
> 78732*x**5*y**4*z - 52488*x**5*y**3*z**6 + 29160*x**5*y**3*z**4 + 
> 20412*x**5*y**3*z**2 + 157464*x**5*y**2*z**5 + 20412*x**5*y**2*z**3 - 
> 23328*x**5*y**2*z - 78732*x**5*y*z**4 - 23328*x**5*y*z**2 + 
> 6561*x**4*y**8*z**4 - 26244*x**4*y**7*z**5 + 78732*x**4*y**7*z**3 + 
> 39366*x**4*y**6*z**6 - 52488*x**4*y**6*z**4 - 39366*x**4*y**6*z**2 - 
> 26244*x**4*y**5*z**7 - 52488*x**4*y**5*z**5 + 29160*x**4*y**5*z**3 - 
> 78732*x**4*y**5*z + 6561*x**4*y**4*z**8 - 52488*x**4*y**4*z**6 + 
> 312012*x**4*y**4*z**4 + 46656*x**4*y**4*z**2 + 39366*x**4*y**4 + 
> 78732*x**4*y**3*z**7 + 29160*x**4*y**3*z**5 - 285768*x**4*y**3*z**3 - 
> 46656*x**4*y**3*z - 39366*x**4*y**2*z**6 + 46656*x**4*y**2*z**4 + 
> 57348*x**4*y**2*z**2 + 23328*x**4*y**2 - 78732*x**4*y*z**5 - 
> 46656*x**4*y*z**3 - 62208*x**4*y*z + 39366*x**4*z**4 + 23328*x**4*z**2 + 
> 31104*x**4 - 26244*x**3*y**8*z**3 + 78732*x**3*y**7*z**4 - 
> 78732*x**3*y**7*z**2 - 52488*x**3*y**6*z**5 + 49572*x**3*y**6*z**3 + 
> 78732*x**3*y**6*z - 52488*x**3*y**5*z**6 + 29160*x**3*y**5*z**4 + 
> 20412*x**3*y**5*z**2 + 78732*x**3*y**4*z**7 + 29160*x**3*y**4*z**5 - 
> 285768*x**3*y**4*z**3 - 46656*x**3*y**4*z - 26244*x**3*y**3*z**8 + 
> 49572*x**3*y**3*z**6 - 285768*x**3*y**3*z**4 + 254016*x**3*y**3*z**2 - 
> 78732*x**3*y**2*z**7 + 20412*x**3*y**2*z**5 + 254016*x**3*y**2*z**3 - 
> 20736*x**3*y**2*z + 78732*x**3*y*z**6 - 46656*x**3*y*z**4 - 
> 20736*x**3*y*z**2 + 39366*x**2*y**8*z**2 - 78732*x**2*y**7*z**3 + 
> 26244*x**2*y**7*z - 39366*x**2*y**6*z**4 - 69984*x**2*y**6*z**2 - 
> 26244*x**2*y**6 + 157464*x**2*y**5*z**5 + 20412*x**2*y**5*z**3 - 
> 23328*x**2*y**5*z - 39366*x**2*y**4*z**6 + 46656*x**2*y**4*z**4 + 
> 57348*x**2*y**4*z**2 + 23328*x**2*y**4 - 78732*x**2*y**3*z**7 + 
> 20412*x**2*y**3*z**5 + 254016*x**2*y**3*z**3 - 20736*x**2*y**3*z + 
> 39366*x**2*y**2*z**8 - 69984*x**2*y**2*z**6 + 57348*x**2*y**2*z**4 - 
> 233280*x**2*y**2*z**2 + 20736*x**2*y**2 + 26244*x**2*y*z**7 - 
> 23328*x**2*y*z**5 - 20736*x**2*y*z**3 + 18432*x**2*y*z - 26244*x**2*z**6 + 
> 23328*x**2*z**4 + 20736*x**2*z**2 - 18432*x**2 - 26244*x*y**8*z + 
> 26244*x*y**7*z**2 + 78732*x*y**6*z**3 + 69984*x*y**6*z - 78732*x*y**5*z**4 
> - 23328*x*y**5*z**2 - 78732*x*y**4*z**5 - 46656*x*y**4*z**3 - 
> 62208*x*y**4*z + 78732*x*y**3*z**6 - 46656*x*y**3*z**4 - 20736*x*y**3*z**2 
> + 26244*x*y**2*z**7 - 23328*x*y**2*z**5 - 20736*x*y**2*z**3 + 
> 18432*x*y**2*z - 26244*x*y*z**8 + 69984*x*y*z**6 - 62208*x*y*z**4 + 
> 18432*x*y*z**2 + 6561*y**8 - 26244*y**6*z**2 - 23328*y**6 + 39366*y**4*z**4 
> + 23328*y**4*z**2 + 31104*y**4 - 26244*y**2*z**6 + 23328*y**2*z**4 + 
> 20736*y**2*z**2 - 18432*y**2 + 6561*z**8 - 23328*z**6 + 31104*z**4 - 
> 18432*z**2 + 4096
> > and compute sp.resultant(p, sp.diff(p,x), x)
> > computing this takes around the ballpark of 50 seconds, maple takes 4
> > In some cases factoring the polynomial and computing resultant between 
> all pairs of factors is significantly faster than calling sp.resultant, but 
> im not sure if its still the resultant at that point, program still seems 
> to work and be correct though
> > So currently im trying to implement the modular resultant algorithm as 
> described by Collins(1971) to see if it gets any faster
> > Other than that im trying to look for ways to allow equalities in 
> conditions and figure out a way to deal with strict inequalites, reading 
> about grobner bases right now and hoping that might help
> >
> > In the program there are two inequality solvers, first one is 
> xprove(statement, condition) which tries to prove condition -> statement 
> for positive real variables, there are a bunch of tests for this
> > yprove just calls xprove a bunch of times to try and prove inequalities 
> in real non-zero variables, there are no tests for this
> >
> > The script/paper also seems to be related to the maple RegularChains 
> package, i dont know if the sympy agca library does anything similar(i have 
> a lot of reading to do)
> >
> > Its my first time doing anything like this, any feedback is appreciated, 
> thank you
> >
> > --
> > You received this message because you are subscribed to the Google 
> Groups "sympy" group.
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to [email protected].
> > To view this discussion visit 
> https://groups.google.com/d/msgid/sympy/04911951-4b31-4208-a083-f950e8524f11n%40googlegroups.com
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/b8b3dc8f-ffea-4395-8c43-5f824e675f4fn%40googlegroups.com.

Reply via email to