clicliclic@freenet.de wrote:   
   >   
   > "Nasser M. Abbasi" schrieb:   
   > >   
   > > On 4/1/2018 2:37 PM, clicliclic@freenet.de wrote:   
   > > >   
   > > > Here is another "moderately-sized square-root pseudo-elliptic integral   
   > > > on which FriCAS is still known to fail".   
   > > >   
   > > > Being confronted with:   
   > > >   
   > > > setSimplifyDenomsFlag(true)   
   > > >   
   > > > integrate((x^2 + 2*x - 3)/((x^4 - 8*x^3 + 94*x^2 + 552*x + 657)   
   > > > *sqrt(x^3 - 15*x - 22)), x)   
   > > >   
   > > > the current web-interface version 1.3.2 responds with:   
   > > >   
   > > >>> Error detected within library code:   
   > > > Not integrable (provided residues have no relations)   
   > > >   
   > > > Why can't FriCAS establish non-integrability here?   
   > > >   
   > >   
   > > FYI, same error shows up in Fricas 1.3.3 on Linux.   
   > >   
      
   > So this failure should be related to limitations of results from   
   > torsionIfCan() when q(z) (whatever this square-free thingy represents:   
   > can a polynomial be doubly-transitive?) has degree > two. The   
   > implementation of torsionIfCan() resides in another source file   
   > (presumably pfo.spad).   
   >   
   > I think NOTI should be improved to inform the user why FriCAS cannot   
   > handle his integral.   
      
   I am not sure what more FriCAS could say. The message is:   
      
    Not integrable (provided residues have no relations)   
      
   Should the message say that 'relations' above mean linear   
   dependence over rationals? Core problem here is that   
   FriCAS has kind of "virtual integral", namely log-like   
   terms (divisors) and we want to convert virtal thing into   
   a real one. For single term it is done by 'torsionIfCan()',   
   it decides if the term is integrable (that is corresponds to   
   log of algebraic function) or not.   
   However, there is potential possiblity that two (or more)   
   nonintegrable terms combine into integrable one. Trager   
   proved that when residues are linearly independent over   
   rationals then the sum is integrable if and only if   
   each term is integrable. So, if we know that residues   
   are linearly independent over rationals, then after finding   
   a nonintegrable term we can declare the integral as   
   nonelementary. If we _know_ linear relation betwen   
   residues we can use it to combine terms and get smaller   
   number of terms.   
      
   So the problem here is to determine structure of linear   
   space over ratinals spanned by residues. FriCAS knows   
   that residues are roots of Trager double resultant.   
   However, the only known method to determine linear   
   dependencies between roots seem to be construction of   
   the splitting field. This is rather heavy process   
   involving several factorizations of polynomials   
   with coefficients in algebraic extensions.   
      
   One problem is that sum of roots gives one of coefficients   
   of polynomial. So if coefficients are rational we   
   get at least one relation. Paradoxicaly, the   
   most troblesome case is when sum of roots is 0   
   (the trace0 case). For polynomial of degree 2 in   
   such case we can note that one root, call it a1, is   
   irrational (because polynomial is irreducible) and   
   the second root a2 satisfies a2 = -a1. Clearly,   
   there can be no more linear relations over rationals.   
      
   Doubly transitive above is about Galois group of q(z).   
   If Galois group is doubly transitive, then one can   
   take a shortcut and combine two terms. If such   
   combination is integrable one can gets whole interal.   
   If not in doubly transitve case the function is   
   not integrable. Theoreticaly assuming that Galois group   
   is doubly transitive is nice condtion, but computing   
   Galois group seem to be almost as hard as computing   
   splitting space.   
      
      
   > The deadly failure reported recently in "elementarily integrable or   
   > not?" is most likely related to torsion too.   
      
   Well, the limitation above exist even if torsionIfCan()   
   works correctly. The failure from the other post most   
   likely means a bug in torsionIfCan().   
      
   --   
    Waldek Hebisch   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|