Abhinav Baid wrote:
> 
> 
> On 01/30/2015 07:47 PM, Waldek Hebisch wrote:
> > Abhinav Baid wrote:
> >> On Thursday, January 29, 2015 at 8:42:54 AM UTC+5:30, Waldek Hebisch wrote:
> >>> Abhinav Baid wrote:
> >>>
> >>> Also, I've implemented the integrate_sols procedure
> >>>> from ISSAC'97 Abramov/Hoeij paper [4] in SPAD and think that it can be
> >>>> added as an operation to the LinearOrdinaryDifferentialOperator1 domain
> >>>> [5]. I'd be glad to hear any comments on this too.
> >>> I took a quck look at it: the code looks good.  We need to think
> >>> a bit where to put it.
> >>>
> >>> Another place (which, on second thought, I believe would be more apt)
> >> where the function could be added
> >> is the RationalLODE package, as it deals with LODO/LODE having rational
> >> function coefficients.
> >>
> > This one point of view.  However Abramov and van Hoeij claim that
> > the method works for Ore algebras.  FriCAS has quite general
> > implementation of Ore algebras, so it make sense to make
> > routine more general.  ATM important ingredient, that is
> > "rational" solver is implemented only for differential operators
> > with rational coefficients, but there are methods to handle
> > operators with more general coefficients.  So in the future
> > we should be able to use your routine in more general context.
> >
> Oh, the situation seems to be similar to the one in Maple. However, in 
> Maple, the function is included in the diffop package. So, wouldn't it 
> be better to include this in RationalLODE instead of waiting for a 
> rational solver for Ore algebras?

I do not want to wait.  One trick is to have a general function
which takes needed operations as parameters.  So one can
have something like:

IntegrateSols(F, L) : Exports == Implementation where
    F : Join(Field, CharacteristicZero, RetractableTo Integer,
             RetractableTo Fraction Integer)
    L : UnivariateSkewPolynomialCategory(F)
    U   ==> Union(F, "failed")
    SF  ==> (L, F) -> Record(particular : U, basis : List F)
    Exports ==> with
        integrate_sols : (L, L, L -> L, SF) -> Union(L, List(L))
          ++ integrate_sols(op, D, adjoint, rat_solve) ...

or put extra requirements on L like

   L : UnivariateSkewPolynomialCategory(F) with 
          adjoint : % -> %
          D : () -> %


Then in some other place (like RationalLODE) we can place a wrapper
which just passes extra parameters.

-- 
                              Waldek Hebisch
[email protected] 

-- 
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to