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.

Reply via email to