Extensions
An extension is a module that is loaded when all of its dependencies are loaded in the current Julia session. This functionality has been available since Julia version 1.9. See the julia docs on how to setup an extension.
We will maintain extensions of Oscar so long as the dependencies used as part of the extension are actively maintained.
Homotopy Continuation
Homotopy continuation is a general concept that comprises of methods for numerically solving systems of polynomial equations. HomotopyContinuation.jl is a Julia package for working with such methods.
Our extension allows users to call functions from HomotopyContinuation.jl on Oscar types. This is done by overloading HomotopyContinuation.jl contructors Expression, System and witness_set.
To align with Oscar naming conventions and to raise awareness that the underlying methods are numerical we have exported the following functions.
solve_numerical — Function
solve_numerical(I::MPolyIdeal{QQMPolyRingElem}; show_progress=false, args...)
solve_numerical(I::Vector{MPolyRingElem}; show_progress=false, args...)Call HomotopyContinuation.solve on the HomotopyContinuation.System derived from I forwarding all args.
Examples
julia> Qxy, (x, y) = QQ[:x, :y]
(Multivariate polynomial ring in 2 variables over QQ, QQMPolyRingElem[x, y])
julia> I = ideal([x^2 - x * y, y^2 - x])
Ideal generated by
x^2 - x*y
-x + y^2
julia> Oscar.solve_numerical(I)
Result with 2 solutions
=======================
• 4 paths tracked
• 1 non-singular solution (1 real)
• 1 singular solution (1 real)
• random_seed: 0xb3d007cb
• start_system: :polyhedral
• multiplicity table of singular solutions:
╭───────┬───────┬────────┬────────────╮
│ mult. │ total │ # real │ # non-real │
├───────┼───────┼────────┼────────────┤
│ 3 │ 1 │ 1 │ 0 │
╰───────┴───────┴────────┴────────────╯Contact
Please direct questions about this part of OSCAR to the following people:
You can ask questions in the OSCAR Slack.
Alternatively, you can raise an issue on github.