Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
191 commits
Select commit Hold shift + click to select a range
5d581a5
save WIP
Mar 21, 2024
faae3c5
graph
Mar 22, 2024
193301d
until plot !
Mar 25, 2024
a09b016
end color
Mar 25, 2024
5d292b2
code sous resultant
May 9, 2024
f431807
finish subresultant code
May 10, 2024
9368205
list argument subres
May 10, 2024
2f7dbcb
manage when no singular points
May 11, 2024
cf899f3
refine xboxes
May 11, 2024
60c5c10
move into .jl
May 12, 2024
5c942a8
fix bug graph and square free decomposition
May 12, 2024
9654131
changemat
May 12, 2024
68e38ad
Merge remote-tracking branch 'connectcurves/main' into connectcurves
May 12, 2024
a481408
cleaning files
May 12, 2024
224f3ec
remove tools.jl
May 12, 2024
f243af0
split files
May 12, 2024
5f0817f
rename main.jl
May 12, 2024
f282293
start full integration
May 12, 2024
6f38113
graph methods
May 12, 2024
b9d0b12
add dependancies
May 12, 2024
a578944
compute boxes with msolve
May 15, 2024
43204b3
improvements
May 18, 2024
6e1a836
add interpolation parmetrization
May 20, 2024
880de67
interface with parametrization
May 20, 2024
d1d6a60
better change of variables
May 21, 2024
f027e45
maj code connectivity
Aug 5, 2024
7ea692a
sync with the main repo
Aug 6, 2024
1ee72de
function for changing ring variables
Aug 13, 2024
1bb304c
adapt to new function
Aug 13, 2024
7918a39
add option to force using new variables in parametrization
Aug 13, 2024
db7ea30
add test for singular boxes : mutivariate evaluation
Aug 13, 2024
6f7992c
comment pythonplot
Aug 13, 2024
1db1aae
integer coeff + display node removal + add control points at the end …
Aug 27, 2024
2109126
group abscissa index of control points w.r.t. component
Aug 27, 2024
6f351ee
multiple bug fixes
Aug 28, 2024
7676975
choose the linear form for param
Aug 28, 2024
600ea29
change_ringvars univariate + manage multiple Pcontrol + fix bug refine
Aug 29, 2024
b6756c4
bugfix msolve + manage rational critical coordinates v0 + full subres…
Aug 29, 2024
7ae43d6
control points in plot_graphS
Aug 30, 2024
11b9c7d
multiple lists of vertices for multiple Pcontrols
Aug 30, 2024
1d1dc83
fix bug in variable order for param
Aug 30, 2024
babe943
type of list
Sep 2, 2024
fc8a149
heuristic for fibers
Sep 2, 2024
e8c8079
float output + display control + other methods depending the input
Sep 2, 2024
c5b02d8
function for merging graphs
Sep 2, 2024
a0f60f7
function for forcing parametric variable.s for msolve
Sep 2, 2024
3eff83d
adapted data types
Sep 3, 2024
e22a70b
merge list of graphs
Sep 3, 2024
aba9c46
more flexible plot functions
Sep 3, 2024
bf2cee1
multi-threading with msolve
Sep 7, 2024
2921fe7
multi-threading for curve parametrization
Sep 7, 2024
22339b9
multi-modular subresultant
Sep 7, 2024
d5e8033
tranpose of jac + polarphi
Sep 16, 2024
c7207d7
export some functions
Sep 16, 2024
5ec905c
fix invert variable change
Sep 16, 2024
7249b75
handle ideal parametrization
Sep 16, 2024
7ea060a
fix subplots and gui display
Sep 16, 2024
49d3293
begin interpolation subresultant + fact gcd
Sep 16, 2024
9e1a716
fix problem arb, refine critical boxes + fix inverse coordinate change
Sep 17, 2024
4009bf0
significant improvement of isolation + use default usolve
Sep 17, 2024
71dd357
fix subplt
Sep 17, 2024
f723e20
multiple bugfixes + multi threading on multi-modular subresultants
Sep 17, 2024
4628d5c
integer coefficient function tool
Sep 17, 2024
a49b6c8
use nextprime from Nemo
Sep 17, 2024
d1700e1
start managing conditionnal printing
Sep 24, 2024
3c53de2
minor things
Sep 24, 2024
2aa4978
generalize int_coeffs + macro for conditionnal timing
Sep 24, 2024
0e9f10d
subresultant interpolation + big changes in mmod_subresultant + fix f…
Sep 24, 2024
45e146f
no product of sqfree factors in param_crit_split
Sep 24, 2024
325be89
maj connect curve with paramcritsplit BUT no refinements yet
Sep 24, 2024
2067d20
fix infinite refinement
Sep 25, 2024
c2f099d
Merge branch 'algebraic-solving:main' into connectivity
rprebet Sep 25, 2024
ac9dc10
refine boxes for many parametrizations
Sep 25, 2024
bf4ab72
verbose usolve
Sep 25, 2024
37c968f
trailing spaces
Sep 25, 2024
ebce030
Vertices to subplots
Sep 25, 2024
65b0b24
Add zero coefficients when not generic subresultant
Sep 25, 2024
81c3ea0
Update with new dict data structure; allow having diverse mult; node …
Sep 25, 2024
38f5a52
maj deps
Sep 25, 2024
c9dd99e
manage exact roots when refinment
Sep 26, 2024
d443b84
trailing spaces
Sep 26, 2024
926318b
remove printing
Sep 26, 2024
7bab4af
Manage printing levels + new shortcut functions : plot and nb of comp…
Sep 26, 2024
bd26082
fix typo
Sep 26, 2024
775c90e
minor
Sep 27, 2024
36ab10c
change variable order in param
Sep 27, 2024
854164a
apparent singularities
Sep 27, 2024
dcdbc9d
add change_ringvar for modular base rings
Sep 30, 2024
bafbee1
export change_ringvar_mod
Sep 30, 2024
7a102f9
remove variable
Sep 30, 2024
8b00196
add detection for app sing, with several modular speedups
Sep 30, 2024
18f3324
export appsing related functions for debug
Sep 30, 2024
aa9ddfc
Merge branch 'algebraic-solving:main' into connectivity
rprebet Sep 30, 2024
cec5ddf
build Mpoly function + maj
Oct 16, 2024
a5c68c4
some verbose
Oct 16, 2024
a47835f
fix bresultant interface
Oct 16, 2024
dfe825a
typo
Oct 16, 2024
68f6a41
temp savefig
Oct 16, 2024
154d3d6
parrallelize + fix param_newvars
Oct 16, 2024
c8f3ad9
fix control points
Oct 16, 2024
4103f48
tmp
Oct 16, 2024
9ba84d7
add new function for param + several improvements
Oct 16, 2024
67a58ab
other param comp (commented) + fix control points
Oct 16, 2024
fefb8a1
Merge branch 'algebraic-solving:main' into connectivity
rprebet Oct 16, 2024
9a02642
maj (mainly verbose)
Mar 30, 2025
cdd9fdf
first attempt to add query points
Apr 10, 2025
5bed765
maj from main branch + hilbert + paramcurve
rprebet Apr 17, 2025
f2d5b93
add current files
rprebet Apr 18, 2025
85d734c
simplify computepolar + remove useless functions + remove useless checks
rprebet Apr 18, 2025
7f0c561
remove query points
rprebet Apr 18, 2025
9477d47
remove custom small_mid_point + debut canny param
rprebet Apr 22, 2025
0d81145
roadmap query ideal
rprebet Apr 23, 2025
c65a169
MidRationalPoints: improve + add query points
rprebet Apr 23, 2025
9b2691a
avoid intermediate fibers when already intermediate query points + bi…
rprebet Apr 23, 2025
8c96896
no evaluation during recursive steps of roadmap
rprebet Apr 23, 2025
5de7bd0
correct bug, improve output
rprebet Apr 24, 2025
4366ed4
start Roadmap structure
rprebet Apr 24, 2025
4a9f502
remove abstract trees
rprebet Apr 28, 2025
3d59b60
merge branch paramcurves
Jun 26, 2025
e1a652e
maj dim nothing
Jun 28, 2025
9fef8db
Merge branch 'algebraic-solving:main' into roadmap
rprebet Sep 24, 2025
ee70bc5
move RM struct to types.jl + improve internal functions
Oct 13, 2025
4a93936
start doc + some renamings
Oct 14, 2025
da73da7
add index list for compute polar
Oct 15, 2025
7e67eeb
doc
Oct 15, 2025
bafd3ce
improve genericity checks + choice for determinant function (after so…
Oct 18, 2025
8486af0
internalize functions that must be
Oct 18, 2025
731b7d4
rename files
Oct 18, 2025
6dd94b8
change name of roadmap fct + remove code duplication
Oct 18, 2025
d2646af
new function for interval query points
Oct 18, 2025
e8381ea
improve and simplify minor computations
rprebet Oct 21, 2025
ef34878
complete the doc
rprebet Oct 22, 2025
8881239
revert a change
rprebet Oct 22, 2025
872c715
start documenting ratparams and roadmaps
rprebet Nov 4, 2025
def0143
doc for roadmap
rprebet Nov 5, 2025
8118324
fix args RMnode
rprebet Dec 10, 2025
fd72a6d
typo
rprebet Feb 27, 2026
2bc7a32
fix roadmap doc
rprebet Mar 3, 2026
c5a87ab
Merge branch 'main' into roadmap
rprebet Mar 3, 2026
8d4abfe
exported functions
rprebet Mar 3, 2026
48317c9
merge with roadmap
rprebet Mar 3, 2026
a1222c2
merge
rprebet Mar 22, 2026
87c1f69
correction bug in arb conversion
rprebet Mar 23, 2026
b822792
du nettoyage
rprebet Mar 24, 2026
5e5af35
optimize subresultant for finite field
rprebet Apr 9, 2026
bb5ab5d
start cleaning auxiliary functions
rprebet Apr 10, 2026
4e55cd6
continue cleaning, debug and code factoring
rprebet Apr 10, 2026
7e66f6c
improve and factor build poly
Apr 13, 2026
70ccebb
factor compute insulating boxes
Apr 13, 2026
a4770c5
factor and improve box intersection
Apr 13, 2026
5322f84
small trucs
Apr 13, 2026
eb68779
fixes and TODOs
rprebet Apr 13, 2026
a6ddb2d
start plot export
rprebet Apr 13, 2026
54bea33
todo notes
Apr 13, 2026
f52a011
plot ok, without removing previous
Apr 14, 2026
3a0be5f
big changes in progress
Apr 14, 2026
d68c292
new version of whole code with new data structure
Apr 14, 2026
3d447b9
cleaning remain plot
Apr 14, 2026
17dfd53
clean a bit everything + some small optimination
Apr 14, 2026
dc0562a
remove comment
Apr 14, 2026
ff45f94
clean plots
Apr 14, 2026
69d97be
other cleanings
Apr 14, 2026
92b7963
keep naive subresultant and paramcrit
Apr 14, 2026
6ed305b
improvement of subresultant but bug
Apr 15, 2026
ebcd9d4
fix bug + distinguishable colors plot
Apr 15, 2026
095b49c
bug fixes and improvement of num_biv_rat_mod
rprebet Apr 15, 2026
b558cf6
get rid of ols subresultants + renam subresultants + improve error me…
rprebet Apr 15, 2026
d6cb10b
change also include
rprebet Apr 15, 2026
2a67ccf
manage special cases + consistence LBcrit
rprebet Apr 15, 2026
e8d551b
add test on mmod intersect_biv
rprebet Apr 15, 2026
787b4cd
finish documenting compute_graph
rprebet Apr 15, 2026
bd46e14
bug fixes + genericity tests
Apr 15, 2026
1b783eb
one function for plot
Apr 16, 2026
f0d419e
documentation of graph + start examples
rprebet Apr 16, 2026
7d9e921
more documentation
rprebet Apr 16, 2026
55c687e
more doc (type)
rprebet Apr 16, 2026
a21d325
more doc
rprebet Apr 16, 2026
21232a0
new function with the ideal
rprebet Apr 16, 2026
23725c3
bug fixes + arbtools more robust
Apr 16, 2026
fc56fa4
Finally get all graph functions
Apr 17, 2026
3742fc3
introduce arrangement curves (little bug) + several bug fixes
Apr 17, 2026
840b3a2
several bug fixes
Apr 17, 2026
beb2897
docs+ start tests
Apr 17, 2026
0ece748
Merge branch 'main' into connectPRreal
rprebet Apr 17, 2026
f1e1389
clean and add inclusion
Apr 17, 2026
2f5b435
fix dependancies
Apr 20, 2026
a0ed607
change test location
Apr 20, 2026
5eacc92
remove dependancies
Apr 20, 2026
5e5a612
update doc
Apr 20, 2026
d1831ef
remove manifest.toml
Apr 20, 2026
946f581
fix doc and multiple inclusion
Apr 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ REPL = "1.6"
StaticArrays = "1"
Test = "1.6"
julia = "1.10"
msolve_jll = "0.900.502"
msolve_jll = "0.900.502"
6 changes: 5 additions & 1 deletion docs/make.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
#using Pkg
#Pkg.activate("../../AlgebraicSolving.jl/")
using AlgebraicSolving
using Documenter


push!(LOAD_PATH, "../src")

DocMeta.setdocmeta!(AlgebraicSolving, :DocTestSetup, :(using AlgebraicSolving); recursive=true)
Expand All @@ -24,7 +27,8 @@ makedocs(
"hilbert.md",
"dimension.md",
"solvers.md",
"decomposition.md"],
"decomposition.md",
"connectivity.md"],
"Examples" => "katsura.md"
]
)
Expand Down
138 changes: 138 additions & 0 deletions docs/src/connectivity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
```@meta
CurrentModule = AlgebraicSolving
DocTestSetup = quote
using AlgebraicSolving
end
```

```@setup algebraicsolving
using AlgebraicSolving
```

```@contents
Pages = ["connectivity.md"]
```

# Algorithms for connectivity queries on smooth bounded algebraic sets

## Introduction

AlgebraicSolving allows to compute a roadmap for the real trace of the zero-set
of the ideal spanned by given input generators over the rationals.

It assumes that the underlying algebraic set is **smooth**, and its real trace is **bounded**.

The underlying engine is provided by msolve.

## Functionality

```@docs
roadmap(
I::Ideal{P} where P <: QQMPolyRingElem;
C::Vector{Vector{Vector{QQFieldElem}}}=Vector{Vector{QQFieldElem}}[],
info_level::Int=0,
checks::Bool=false
)
```

In addition, AlgebraicSolving can compute equations definition critical loci of polynomial maps over the given algebraic set.

```@docs
computepolar(
J::Union{Vector{Int},UnitRange{Int}},
V::Ideal{P};
phi::Vector{P} = P[],
dimproj = length(J)-1,
only_mins = false
) where (P <: MPolyRingElem)
```

# Algorithms for connectivity queries on real algebraic curve

## Introduction

AlgebraicSolving allows to compute a graph whose associated (3D) piecewise linear curve is semi-algebraically homeomorphic to a real algebraic curve given as input.
This input can be:
* an `Ideal` given by generators over the rationals, whose real trace is the curve;
* a one-dimensionnal parametrization given as a `RationalCurveParametrization`. We refer to the `Types` page for such a structure.

It is also possible to compute the arrangement of several curves by simply providing the corresponding vector of Ideals.

In both cases, user can, in addition, provide control points that will be correctly identified in the final graph, from a topological point of view.

The underlying engines are
* internal subresultants computations for paramtrization of critical points;
* `msolve` for univariate real root isolation.

## Computing curve graphs

```@docs
curve_graph(
I::Ideal{P}, args...;
generic=true,
outf=true,
v=0,
kwargs...
) where {P <: QQMPolyRingElem}
```

```@docs
curve_arrangement_graph(
curves::Vector{Ideal{P}};
generic=true,
outf=true,
v=0,
kwargs...
) where (P <: MPolyRingElem)
```

## Computing with curve graphs

Once such a graph is computed, it is encoded in a CurveGraph object, whose description can be found in the Types section of this documentation.
These are nothing but sets of verteices and nodes.
One can perform different operations on such strutures.

```@docs
connected_components(
G::CurveGraph{T}
) where T
```

```@docs
group_by_components(
G::CurveGraph
)
```

```@docs
number_of_connected_components(
G::CurveGraph
)
```

```@docs
merge_graphs(
graphs::Vector{CurveGraph}
)
```

## Displaying curve graph

As e.g. Plots.jl is not part of AlgebraicSolving.jl, it cannot provide direct functions for plotting curve graphs. However, functions for exporting curve graphs in a format adapted to most ploting libraries, encoded in a `GraphPlotData` object. We refer to the Types section for more information on this structuree.

```@docs
build_graph_data(
G::CurveGraph{T};
width=3.0,
vert=true,
color="#FF0000"
) where T <: Union{Float64,QQFieldElem}
```

```@docs
build_graph_data(
CG::Vector{CurveGraph{T}};
width=3.0,
vert=true
) where T <: Union{Float64,QQFieldElem}
```
Loading
Loading