> 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 : () -> %

Actually, either way is fine, but I would somehow prefer the second
variant. The bad thing is anyway that if (as in (*)) only the name of
the function is listed, i.e., without its axioms, then it's pretty
unclear what the exact requirements of L are. So instead of listing just
the function signatures, it should be similar to the introduction of
DifferentialRing.
https://github.com/fricas/fricas/blob/master/src/algebra//catdef.spad#L269

Another point, is the return type of integrate_sols. Isn't it a bit
unhandy to go for Union(L, List L)?

Wouldn't List(L) or Union(L, Record(ltilde: L, r: L)) be better? Or
maybe  Record(ltilde: L, r: Union(L, failed))?

Ralf

-- 
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