Skip to content

Conversation

@sumiya11
Copy link
Collaborator

@sumiya11 sumiya11 commented Jan 27, 2022

Hi! It would be nice to escape from a deprecated package, and use windows-compatible groebner bases. For this, I propose integrating Groebner.jl, it could fix #70 and #56 .

Before this replacement could be plausible, there is a minimal todo to cover:

  • Produce benchmarks for Groebner.jl over rationals
  • Implement quotient space operations in Groebner.jl: obtaining dimensionality and basis of R/I. This will be used in check_primality
  • Implement saturation in Groebner.jl to use it in simplify_field_generators (?)
  • Currently, Singular.jl verifies the resulting basis in rationals, and Groebner.jl does not. Add optional result verification in Groebner.jl
  • Compare the performance of SI with Singular.jl against the one with Groebner.jl

In this PR I'll update on the progress in development of those! Please let me know if I'm missing something 🍰

@pogudingleb
Copy link
Collaborator

@sumiya11 , thanks for the summary!
Indeed, I forgot about checking primality, this is some work indeed. Let me think whether there is a workaround.

Saturation is currently done by simply adding a new variable, and we can proceed this way. Of course dedicated algorithm would be cool.

@sumiya11
Copy link
Collaborator Author

@pogudingleb do you think we can just check cancellation property for all residuals?

@iliailmer iliailmer added dependency enhancement New feature or request labels Jan 27, 2022
@pogudingleb
Copy link
Collaborator

@pogudingleb do you think we can just check cancellation property for all residuals?

Do you mean checking directly whether there are zero divisors? I am a bit sceptical about this. What I thought that one could maybe compute the quotient ring easier thanks to the special form of the polynomials.

@sumiya11
Copy link
Collaborator Author

Yep, exactly. Probably checking O(n^2) normal forms over finite field of random characteristic with existing f4 should not be slower than a basis computation itself.
However, I think there could be no need to change check_primality_zerodim a lot: I can just implement kbase in Groebner.jl, which as I understand is not very untrivial having a basis alsready computed

@pogudingleb
Copy link
Collaborator

Yes, I would expect kbase to be relatively straightforward task. By the way, don't you need it for FGLM anyway?

@sumiya11
Copy link
Collaborator Author

I do actually!

@pogudingleb
Copy link
Collaborator

I would go even further an say that I do not really need kbase but I use it to compute the multiplication matrices modulo the ideal. And I guess you would also compute them if you are doing FGLM, is that correct? (but really would like to have them in char zero...)

@sumiya11
Copy link
Collaborator Author

@pogudingleb We use a non-sparse fglm very similar to the one described here. We don't have multiplication matrices (yet) =(

@fkrauer
Copy link

fkrauer commented Mar 14, 2022

is this still WIP? I encounter the same issue with the package not precompiling due to Singular.jl and GroebnerBasis.jl. Thanks!

Julia Version 1.7.2
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz

@sumiya11
Copy link
Collaborator Author

Hi @fkrauer , Yes, the work is ongoing ! I still need to get JuliaLang/julia#44566 merged and implement quotient space interface

@iliailmer
Copy link
Collaborator

@sumiya11 Let me know if you need any help

@iliailmer
Copy link
Collaborator

Hi, @fkrauer, this is a known compatibility issue for Windows (e.g. #70). Meanwhile, we have a Maple web-interface for quick and comprehensive identifiability analysis. I hope this helps!

@fkrauer
Copy link

fkrauer commented Mar 14, 2022

Hi, @fkrauer, this is a known compatibility issue for Windows (e.g. #70). Meanwhile, we have a Maple web-interface for quick and comprehensive identifiability analysis. I hope this helps!

Looks awesome, thanks. I am trying it out now. I hope I didn't break the interface, the model is quite large :/

@pogudingleb
Copy link
Collaborator

Hi, @fkrauer, this is a known compatibility issue for Windows (e.g. #70). Meanwhile, we have a Maple web-interface for quick and comprehensive identifiability analysis. I hope this helps!

Looks awesome, thanks. I am trying it out now. I hope I didn't break the interface, the model is quite large :/

@fkrauer, if the model does finish, feel free to send it to me. We like challenging models.

@fkrauer
Copy link

fkrauer commented Mar 14, 2022

uh sorry there was a typo in the model equations and I reloaded too many times I think 🙈 apologies! I might have crashed the application.

@sumiya11
Copy link
Collaborator Author

Yaay, finally fglm in Groebner works over rational fields 😄 . So, the quotient space operations should be implemented soon

@pogudingleb
Copy link
Collaborator

Cool!

@sumiya11
Copy link
Collaborator Author

Hi! All needed functions are finally implemented.

@pogudingleb and I are now testing performance with Groebner.jl vs. Singular ⏳

@iliailmer
Copy link
Collaborator

Hi @sumiya11, I tried to run some experiments locally with this code, but I got an error saying
"ERROR: LoadError: UndefVarError: Singular not defined"

Will this PR remove Singular.jl from dependencies?

@pogudingleb
Copy link
Collaborator

@iliailmer
This PR was more for a discussion and not intended to be run. I am working on removing Singular and switching to Groebner in a separate branch.

@pogudingleb
Copy link
Collaborator

@fkrauer
The new version 0.4.0 of the package works on Windows. Please let us know if you encounter any issues with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependency enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test StructuralIdentifiability fails : libsingular not defined

4 participants