oscar-system / Singular.jl

Julia package for the Singular library
Other
31 stars 33 forks source link

Make functions that operate on ideals available for ideals consisting of AbstractAlgebra polynomials #56

Open heiderich opened 6 years ago

heiderich commented 6 years ago

Singular.jl makes many Singular functions operating on ideals available to Julia. In pull request #52 I provided a function to convert AbstractAlgebra polynomials to Singular polynomials and pull request #54 (not yet merged) provides the converse.

I think the following could be a typical use case:

_Given one (or more) ideal(s) generated by AbstractAlgebra polynomials, one may want to

  1. convert their generators to Singular polynomials
  2. construct Singular ideals generated by these Singular polynomials
  3. use one the Singular (kernel) functions operating on these ideals
  4. convert the generators of the resulting Singular ideal (if the return type is an ideal) back to AbstractAlgebra polynomials
  5. in order to interpret them as the generators of an ideal of AbstractAlgebra polynomials.

I think this applies in particular to the following functions:

Similarly, one may want to use the following functions from AbstractAlgebra (their inputs and outputs do not only contain ideals):

Currently there is no data structure for ideals in AbstractAlgebra. One may use Arrays containing generators of the ideals. I am not sure whether this is a good idea. And this is rather an issue concerning AbstractAlgebra.

But I think it would be convenient if there were functions operating on AbstractAlgebra ideals (in whatever sense) and AbstractAlgebra polynomials that would handle the conversions and call the Singular functions.

Is this part of the vision of OSCAR and should such functions be added to Singular.jl?

wbhart commented 6 years ago

We certainly have a vision to handle this sort of thing in Oscar. However, there is nothing special about ideals of polynomials. Oscar.jl will have some pretty generic functionality for ideals that builds on AbstractAlgebra.jl and Singular.jl.

But the proper place for this is Oscar.jl, as it isn't adding functionality for Singular.jl objects and couldn't be done in AbstractAlgebra.jl due to the dependence on Singular.jl.

There's still quite a lot of discussion to be had about how modules and ideals will be represented more generally than in Singular.jl. Even Singular.jl will eventually get subquotient modules, which are more general than the modules Singular currently offers.

And there are maps to consider. Very often we are interpreting lists of generators as ideals, rather than thinking of them as mathematical objects. Some of the concepts that are currently blurred need to be properly distinguished and bona fide maps need to be introduced, instead of interpreting matrices as maps, and the like.

wbhart commented 6 years ago

Maybe we could somehow arrange for you to visit Kaiserslautern some time to discuss what you need, to help formulate plans for how to handle all this, and to discuss how to go about implementing them. This is the sort of functionality which doesn't easily grow organically. It needs some prior planning, and for us to have some more in depth discussions, which aren't easy to have in random GitHub issues.

Of course you should come to the next Oscar workshop and we should make this a topic for discussion and coding sprints there.