The following examples show how to compute associated primes of cellular ideals, cellular decompositions of binomial ideals and primary decompositions of binomial ideals.
For further imformation see
At current state, running this notebook requires an experimental version of OSCAR.
using Oscar
----- ----- ----- - -----
| | | | | | | | | |
| | | | | | | |
| | ----- | | | |-----
| | | | |-----| | |
| | | | | | | | | |
----- ----- ----- - - - -
...combining (and extending) ANTIC, GAP, Polymake and Singular
Version 0.3.0-dev ...
... which comes with absolutely no warranty whatsoever
Type: '?Oscar' for more information
(c) 2019-2020 by The Oscar Development Team
Oscar.example("BinomIdeal2.jl")
Qab = QabField()
For cellular ideals we can compute the associated primes and the minimal associated primes.
R, x = PolynomialRing(Qab, :x => 1:6)
I = ideal([x[5]*(x[1]-x[2]),x[6]*(x[3]-x[4]),x[5]^2,x[6]^2,x[5]*x[6]])
The ideal is {$1,2,3,4$}-cellular.
iscellular(I)
The witness monomials of embedded associated lattices to the ideal are the following.
Cellular.witness_monomials(I)
Now we compute the minimal associated primes, as well as the associated primes.
Cellular.minimal_associated_primes(I)
Cellular.associated_primes(I)
We consider a noncellular ideal in a polynomial ring with three variables.
R, (x, y, z) = PolynomialRing(Qab, ["x", "y", "z"])
I = ideal([x-y,x^3-1,z*y^2-z])
In fact, the ideal is noncellular, which can be verified as follows:
iscellular(I)
The output means that the variable $z$ is a zerodivisor modulo $I$ but not nilpotent modulo $I$. Hence the ideal cannot be cellular.
We now compute the decomposition of $I$ into cellular binomial ideals.
bcd = Cellular.decomposition(I)
The intersection is equal to the original ideal.
bcd[1] ∩ bcd[2] == I
To compute the primary decomposition of a binomial ideal $I$, the algorithm first decomposes $I$ into cellular ideals as above and then computes for each of the cellular binomial ideals a binomial primary decomposition.
Binomial.primary_decomposition(I)[1]