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