Function "diffEval" in fspace.spad is not called during
creation of formal derivatives.

It is called in situations when k is a %diff kernel,
  (operator(k)) (someTransformation argument k)
which is common in recursive simplification functions.

So, I can't think of any reason that a new dummy variable
is required and a substitution is needed here.

Because of alpha substitution, I don't think the old code
is doing anything of value.

- Qian

 diffEval l ==
   k : K
   g := retract(second l)@K
   ((u := retractIfCan(first l)@Union(K, "failed")) case "failed")
     or (u case K and symbolIfCan(k := u@K) case SY) => dfeval(l, g)
   op := operator k
   (ud := derivative op) case "failed" =>
        -- possible trouble
        -- make sure it is a dummy var
        dumm : % := symsub(gendiff, 1)::%
        ss := subst(l.1, l.2 = dumm)
        -- output(nl::OutputForm)$OutputPackage
        -- output("fixed"::OutputForm)$OutputPackage
        nl := [ss, dumm, l.3]
        kernel(opdiff, nl)
   (n := position(second l, argument k)) < minIndex l =>
         dfeval(l, g)
   d := ud::List(List % -> %)
   eval((d.n)(argument k), g, third l)

-- 
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/a756180e-faa4-4b26-b2c8-fffcb0b35554%40gmail.com.

Reply via email to