Skip to content

Commit 071c9c8

Browse files
committed
adds new docu
1 parent 7a0abb9 commit 071c9c8

9 files changed

Lines changed: 394 additions & 0 deletions

File tree

decomposition.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["decomposition.md"]
14+
```
15+
16+
# Equidimensional Decomposition
17+
18+
## Introduction
19+
20+
AlgebraicSolving allows to compute equidimensional decompositions of polynomial
21+
ideals. This is to be understood in a geometric sense, i.e. given a polynomial
22+
ideal $I$ it computes ideals $I_1,\dots,I_k$ s.t. $V(I)=\bigcup_{i=1}^{k} V(I_j)$
23+
and such that each $V(I_j)$ is equidimensional.
24+
25+
The implemented algorithm is the one given in [this paper](https://arxiv.org/abs/2409.17785).
26+
27+
## Functionality
28+
29+
```@docs
30+
equidimensional_decomposition(
31+
I::Ideal{T};
32+
info_level::Int=0
33+
) where {T <: MPolyRingElem}
34+
```

dimension.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["dimension.md"]
14+
```
15+
16+
# Krull dimension of an ideal
17+
18+
## Introduction
19+
20+
AlgebraicSolving allows to compute the Krull dimension for the ideal spanned
21+
by given input generators over finite fields of characteristic smaller
22+
$2^{31}$ and over the rationals.
23+
24+
The underlying engine is provided by msolve.
25+
26+
## Functionality
27+
28+
```@docs
29+
dimension(I::Ideal{T}) where T <: MPolyRingElem
30+
```
31+

groebner-bases.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["groebner-bases.md"]
14+
```
15+
16+
# Gröbner bases
17+
18+
## Introduction
19+
20+
AlgebraicSolving allows to compute Gröbner bases for input generators over prime
21+
fields of characteristic smaller $2^{31}$ or over the rationals w.r.t. the degree
22+
reverse lexicographical monomial order.
23+
24+
At the moment different variants of Faugère's F4 Algorithm are implemented as
25+
well as a signature based algorithm to compute Gröbner bases.
26+
27+
## Functionality
28+
29+
```@docs
30+
groebner_basis(
31+
I::Ideal{T} where T <: MPolyRingElem;
32+
initial_hts::Int=17,
33+
nr_thrds::Int=1,
34+
max_nr_pairs::Int=0,
35+
la_option::Int=2,
36+
eliminate::Int=0,
37+
intersect::Bool=true,
38+
complete_reduction::Bool=true,
39+
info_level::Int=0
40+
)
41+
```
42+
43+
The engine supports the elimination of one block of variables considering the
44+
product monomial ordering of two blocks, both ordered w.r.t. the degree
45+
reverse lexicographical order. One can either directly add the number of
46+
variables of the first block via the `eliminate` parameter in the
47+
`groebner_basis` call. By using `intersect=false` it is possible to only
48+
use block ordering without intersecting. We have also implemented an alias
49+
for this call:
50+
51+
```@docs
52+
eliminate(
53+
I::Ideal{T} where T <: MPolyRingElem,
54+
eliminate::Int;
55+
intersect::Bool=true,
56+
initial_hts::Int=17,
57+
nr_thrds::Int=1,
58+
max_nr_pairs::Int=0,
59+
la_option::Int=2,
60+
complete_reduction::Bool=true,
61+
info_level::Int=0
62+
)
63+
```
64+
65+
To compute signature Gröbner bases use
66+
67+
```@docs
68+
sig_groebner_basis(sys::Vector{T}; info_level::Int = 0, degbound::Int = 0, mod_ord::Symbol=:POT) where {T <: MPolyRingElem}
69+
```

hilbert.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["hilbert.md"]
14+
```
15+
16+
# Hilbert series of an ideal
17+
18+
## Introduction
19+
20+
AlgebraicSolving allows to compute the Hilbert series for the ideal spanned
21+
by given input generators over finite fields of characteristic smaller
22+
$2^{31}$ and over the rationals.
23+
24+
The underlying engine is provided by msolve.
25+
26+
## Functionality
27+
28+
```@docs
29+
hilbert_series(I::Ideal{T}) where T <: MPolyRingElem
30+
```
31+
32+
In addition, from the same input, AlgebraicSolving can also compute the dimension and degree of the ideal, as well as the Hilbert polynomial and index of regularity.
33+
34+
```@docs
35+
hilbert_dimension(I::Ideal{T}) where T <: MPolyRingElem
36+
37+
hilbert_degree(I::Ideal{T}) where T <: MPolyRingElem
38+
39+
hilbert_polynomial(I::Ideal{T}) where T <: MPolyRingElem
40+
```

index.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Getting Started
2+
3+
AlgebraicSolving is a computer algebra package for the Julia programming
4+
language, maintained by Christian Eder, Mohab Safey El Din, Rafael Mohr, Rémi Prébet.
5+
6+
- <https://github.com/algebraic-solving/AlgebraicSolving.jl> (Source code)
7+
8+
The features of AlgebraicSolving include algorithms for computing
9+
Gröbner bases over finite fields and for computing real solutions.
10+
The main workhorse of AlgebraicSolving is the [msolve
11+
library](https://msolve.lip6.fr/) .
12+
13+
## Installation
14+
15+
To use Nemo we require Julia 1.6 or higher. Please see
16+
<https://julialang.org/downloads/> for instructions on
17+
how to obtain julia for your system.
18+
19+
At the Julia prompt simply type
20+
21+
```
22+
julia> using Pkg; Pkg.add("AlgebraicSolving")
23+
```

katsura.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["katsura.md"]
14+
```
15+
16+
# Examples
17+
18+
Here we include some well-known example multivariate polynomial systems.
19+
20+
## Katsura-n
21+
22+
These systems appeared in a problem of magnetism in physics.
23+
For a given $n$ `katsura(n)` has $2^n$ solutions and is defined in a
24+
polynomial ring with $n+1$ variables. For a given polynomial ring `R`
25+
with $n$ variables `katsura(R)` defines the corresponding system with
26+
$2^{n-1}$ solutions.
27+
28+
### Functionality
29+
30+
```@docs
31+
katsura(n::Int)
32+
katsura(R::MPolyRing)
33+
```
34+

normal-forms.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["normal-forms.md"]
14+
```
15+
16+
# Normal forms
17+
18+
## Introduction
19+
20+
AlgebraicSolving allows to compute normal forms of a polynomial resp. a finite
21+
array of polynomials w.r.t. some given ideal over a finite field of
22+
characteristic smaller $2^{31}$ w.r.t. the degree reverse lexicographical
23+
monomial order.
24+
25+
**Note:** It therefore might first compute a Gröbner bases for the ideal.
26+
## Functionality
27+
28+
```@docs
29+
normal_form(
30+
f::T,
31+
I::Ideal{T};
32+
nr_thrds::Int=1,
33+
info_level::Int=0
34+
) where T <: MPolyRingElem
35+
```
36+
37+
```@docs
38+
normal_form(
39+
F::Vector{T},
40+
I::Ideal{T};
41+
nr_thrds::Int=1,
42+
info_level::Int=0
43+
) where T <: MPolyRingElem
44+
```

solvers.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
```@meta
2+
CurrentModule = AlgebraicSolving
3+
DocTestSetup = quote
4+
using AlgebraicSolving
5+
end
6+
```
7+
8+
```@setup algebraicsolving
9+
using AlgebraicSolving
10+
```
11+
12+
```@contents
13+
Pages = ["solvers.md"]
14+
```
15+
16+
# Algebraic Systems Solving
17+
18+
## Introduction
19+
20+
AlgebraicSolving allows to solve systems for input generators over finite
21+
fields of characteristic smaller $2^{31}$ and over the rationals.
22+
23+
The underlying engine is provided by msolve.
24+
25+
## Functionality
26+
27+
```@docs
28+
rational_parametrization(
29+
I::Ideal{T} where T <: MPolyRingElem;
30+
initial_hts::Int=17,
31+
nr_thrds::Int=1,
32+
max_nr_pairs::Int=0,
33+
la_option::Int=2,
34+
info_level::Int=0,
35+
precision::Int=32
36+
)
37+
38+
real_solutions(
39+
I::Ideal{T} where T <: MPolyRingElem;
40+
initial_hts::Int=17,
41+
nr_thrds::Int=1,
42+
max_nr_pairs::Int=0,
43+
la_option::Int=2,
44+
info_level::Int=0,
45+
precision::Int=32
46+
)
47+
rational_solutions(
48+
I::Ideal{T} where T <: MPolyRingElem;
49+
initial_hts::Int=17,
50+
nr_thrds::Int=1,
51+
max_nr_pairs::Int=0,
52+
la_option::Int=2,
53+
info_level::Int=0,
54+
precision::Int=32
55+
)
56+
57+
rational_curve_parametrization(
58+
I::Ideal{P} where P<:QQMPolyRingElem;
59+
info_level::Int=0,
60+
use_lfs::Bool = false,
61+
cfs_lfs::Vector{Vector{ZZRingElem}} = Vector{ZZRingElem}[],
62+
nr_thrds::Int=1,
63+
check_gen::Bool = true
64+
)
65+
```
66+

0 commit comments

Comments
 (0)