Open Syz-MS opened 1 week ago
Conversion from Oscar to Singular orderings for modules is missing.
@jankoboehm If it were missing in total, i.e. would throw an error, it were significantly less dangerous than the current state.
Right now, it appears to be working at first glance and you only see at a closer look that there is even an inconsistency between taking the leading_term
of a groebner basis (works correctly) and groebner_basis
/leading_module
(with the two module orderings swapped). This has the potential to pass undetected and lead to wrong conclusions, if people do casual computations while thinking about some problem, or cause work-arounds all over the place, if people are actually writing their own code.
@afkafkafk13 that is not so easy. We have mathematical data structures, e.g. modules, which we can ask mathematical questions (perhaps the underlying question can be handled this way as an short term fix) and get as far as we know correct answers. For modules these homological questions are over various rings internally translated directly or indirectly to Gröbner basis questions to answer these questions. So throwing an error might make this machine inoperable. So I think, as we have observed multiple times, someone has to pick up on the module orderings since the original author (Daniel) is not here any more. There is to some extent a conversion function singular(ord::ModuleOrdering), so this is probably not so difficult, one has to understand what is there.
Some things to take into account that come to my mind: Oscar orderings can be used in a two-fold way: Do comparisons on the Oscar side, translate the ordering to Singular to do computations there. Some questions can in principle be addressed in both ways and have to give consistent answers. Some orderings created on the Oscar side might not have a direct Singular counterpart and would have to use a matrix ordering.
@Jankoboehm I am fully aware of this situation. I do not suggest to throw an error, but I wanted to point out that the current state is even more dangerous (but currently without alternative).
On the other hand, the longer we wait, the more 'creative solutions by people bypassing this inconsistency' we will see and need to clean up later on.
Describe the bug While computing some Gröbner bases for modules I encountered some differences between documentation and behaviour in Oscar. It seems like the Gröbner basis is not computed with respect to the requested module ordering. In the example below it looks like during the computation of
groebner_basis
andleading_module
the orderinginvlex(M)*deglex(R)
is replaced bylex(M)*deglex(R)
and therefore does not return a correct result.To Reproduce
Expected behavior The expected result can currently be computed by the following, mathmatically wrong code by replacing
invlex(M)*deglex(R)
withlex(M)*deglex(R)
.Version Information
Additional context The same problem also occurs with the orderings
deglex(R)*lex(M)
anddeglex(R)*invlex(M)
.