On 6/16/26 8:07 PM, Qian Yun wrote: > On 6/16/26 7:30 PM, Waldek Hebisch wrote: >> On Tue, Jun 16, 2026 at 05:58:08PM +0800, Qian Yun wrote: >>> New optimization for today: >>> >>> If x and y does not have common algebraic kernels, either: >>> >>> 1. they don't have algebraic kernels at all, so they are >>> canonical under FRAC SMP, so previous check is enough. >> >> That is true for Expression(Integer) and probably also for >> Expression(Complex(Integer)), but may fail for more general >> coefficients. Internally we sometimes use >> Expression(Expression(Integer))... >> >> So any such thing must be conditional, limited to "good" >> coefficients. > > Good catch! Yes, limiting to Expression(Integer) is good enough > for 99% situations. See attachment for the updated version. > >>> 2. they have different algebraic kernels. Then there's >>> no way they can be equal. >> >> That looks obvious, but I have seen various strange examples, >> so it would be better to have a proof. >> > > In EXPR(INT), for x,y doesn't share any common algebraic kernels, > then 'reduc' will do nothing for numer(x)*denom(y)-numer(y)*denom(x). > > =$EXPR returns true for x,y > <=> numer(x)*denom(y)-numer(y)*denom(x) = 0 > <=> numer(x)/denom(x)=numer(y)/denom(y) > <=> numer(x)=numer(y) and deonm(x)=denom(y) > (Since FRAC will strip gcd from them). >
Or to summarize it, it is the noZeroDivisors property. So that when two coefficients multiple, they don't vanish. However EXPR(INT) and AN claim they have noZeroDivisors, but they are not. e.g. (x+sqrt(x^2))*(x-sqrt(x^2)) - Qian -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" 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/fricas-devel/6f273514-f0de-4bf3-b3b4-3e540471c8e4%40gmail.com.
