Skip to content

Singular Development Roadmap

simonbrandhorst edited this page Jul 19, 2021 · 58 revisions

On this page we collect and organize the current development plans for Singular, in particular in the context of the the second round of SFB-TRR 195, the respecitve Singular Project B5 Massively parallel structures in algebraic geometry, and the integration with OSCAR.

Direct connection from Singular to OSCAR via Singular.jl:

Access to the Singular libraries

The goals are to specify the important functionality to be wrapped, the creation of the data structures in OSCAR necessary to wrap the respective library, and to do the wrapping.

Links to the respective files in the Oscar repository?

Which data structures have been created, what has been wrapped?

creating rings from the rings that singular creates: https://github.com/oscar-system/Singular.jl/pull/336

Wolfram?

Who wants to oversee which library:

See the list of Singular libraries.

All ?

Wolfram (mit Hans und Gerhard):

normal.lib (und andere libs zur Normalisierung) primdec.lib (und andere libs zur Primärzerlegung)

Janko (mit Wolfram resp. Anne): paraplanecurves.lib classify2.lib integralbasis.lib divisors.lib gitfan.lib

Christian: ffsolve.lib grwalk.lib modstd.lib modular.lib parallel.lib ringgb.lib rwalk.lib solve.lib symodstd.lib tasks.lib

Viktor, PLURAL Libs: bfun.lib dmod.lib dmodapp.lib dmodideal.lib dmodloc.lib dmodvar.lib involut.lib ncalg.lib ncdecomp.lib nchilbert.lib nchomolog.lib ncpreim.lib nctools.lib purityfiltration.lib ratgb.lib bimodules.lib

Viktor, LETTERPLACE Libs: fpadim.lib fpalgebras.lib fpaprops.lib freegb.lib

Johannes Hoffmann (SB) via Viktor's request: olga.lib ncfrac.lib ncloc.lib ncrat.lib

Albert Heinle (somewhat accessible via Viktor's request): ncfactor.lib

O. Motsak (?) can be requested (works at Imaginary), preferrably by Gert-Martin: central.lib perron.lib

Sharwan Tiwari (?) need to be requested, preferrably by Wolfram: ncModslimgb.lib ncHilb.lib

Anne: sing.lib classify*.lib (with Janko and Magdaleen) hnoether.lib spcurve.lib deform.lib (hopefully with help...) resolve.lib (and related)

Access to Kernel functionality

The goal is to specify the functionality of the kernel to be passed on to OSCAR, and to create the necessary data structures in OSCAR.

Todo-List: missing functions:

  • connected to primary decomposition: charseries, finduni, indepSet
  • connect to GB: janet, sba, fwalk, fglmquot
  • use Nemo instead: gcd, factorize, sqrfree
  • numerical solving: lagsolve, uressolve
  • linear algebra: tensor, mpresmat, resultant, minor simplex, wedge, vandermond
  • non-commutative Plural (applies to GR-algebras): nc_algebra, twostd (in additional to the classical std, slimgb, lift, NF, syz, modulo, which apply to left-sided objects)
  • non-commutative Letterplace (applies to general, also free, algebras): twostd, lift, syz, modulo, NF, lpDivision (apply to two-sided objects) and rightstd (+more functions to apply to right-sided and left-sided objects, preferrably over qring)
  • combinatoric: hilb, hilbert, mult

Hans ?

What specifically has to be done for the non-commutative algebra functionality in Plural, Letterplace, etc:

Roadmap for data structures to be created in OSCAR and functionality to be wrapped:

Viktor:

PLURAL: first Bernstein-Sato theories (for a hypersurface, for an ideal resp. morphism, for a variety); factorization (of functional operators like differential, recurrence etc.)

LETTERPLACE: (Two-sided) Groebner bases in the free algebra and the normal form (division algorithm), then bi-syzygies and bi-lifts; factorization.

To start with something easy but reasonable, let us offer the computation of the Bernstein-Sato ideal of an affine map.

Function bernstein_sato_ideal_of_morphism(F)

Input: an ideal F=<f_1,\ldots,f_m> in a commutative ring Q[x_1,\ldots,x_n] Output: an ideal B in a commutative ring Q[s_1,\ldots,s_m] (variables s_i correspond to the generators f_i) internally, a couple of noncommutative PLURAL algebras will be created and several noncommutative Groebner bases will be computed.

Remark: if m=1, i.e. F is generated by a single polynomial, the output is a univariate monic polynomial from Q[s_1], called the Bernstein-Sato polynomial of f_1.

Necessary Data Structures in OSCAR to wrap the libraries and procedures to be wrapped

paraplanecurves.lib:

Data structures:

  • ring homomorphisms
  • affine/projective algebraic varieties/schemes
  • open subsets thereof
  • coordinate ring
  • rational functions
  • morphisms
  • rational maps

At a later stage:

  • divisors
  • sections
  • data structure for L(D) aka abstract vector spaces

Procedures to be wrapped:

Commutative Algebra and Algebraic Geometry in OSCAR

Siehe auch https://oscar-system.github.io/Oscar.jl/previews/PR209/Rings/affine zur enstehenden Dokumentation.

Operations on ideals

Claus and coworkers are about to provide the following functionality:

constructors

I = ideal(...)

conversions

.....

operations on ideals

power:                  I^m
sum:                    I+J
product:                I*J

intersection:           intersect(I,J)  oder    I\cap J
ideal quotient:         I:J
saturation:             saturate(I,J) 

homogenization:         homogenize(I,t)
dehomogenization:       dehomogenize(I,t)

elimination:            eliminate(I,S)    -- S a list of variables

tests on ideals

homogeneity test:       ishomogeneous(I)
equality test:          I==J
containment test:       issubset(I,J)    oder    I \subseteq J
.....

data associated to ideals

generators:            gens(I)                                (type list)
dimension:             dim(I)                                 (type integer)
codimension:           codim(I)                               (type integer)

data associated to homogeneous ideals

degree:                  degree(I)                             (type integer)
Hilbert function:        hilbert_function(I)                   (abstract function)
Hilbert series:          hilbert_series(I)                     (type list (of two polynomials))
reduced Hilbert series:  reduced_Hilbert_series(I)             (type univariate rational function)
Hilbert polynomial:      hilbert_polynomial(I)                 (type univariate polynomial)

ideals and ring maps

kernel:               kernel(phi)
preimage:             preimage(phi,I)
surjectivity test:   issurjective(phi)

Normalization of rings

Dan is about to provide the following functionality taken from normal.lib (later: include different options):

normalization(R)   --->  normal(I)       

Primary Decomposition for ideals

Christian and Dan, with the help of Claus (julia/OSCAR) and Gerhard, Hans, Wolfram (algorithms), will provide the following functionality (Claus and Christian will discuss on how to realize the use of different methods (algorithms) and options in OSCAR), taken from primdec.lib, if not otherwise mentioned:

Complete primary decomposition

primary_decomposition(I)   --->  primdecGTZ(I) by default if I is from polynomial ring over field
                                 primdecSY(I) if user writes method = SY
			     primdecZ(I) taken from primdecint.lib if I is from polynomial ring over integers

Minimal associated primes

minimal_primes(I)          --->  minAssGTZ(I) by default if I is from polynomial ring over field
                                 minAssChar(I) if user writes method = charSets (or whatever is agreed upon here)
			     minAssZ(I) taken from primdecint.lib if I is from polynomial ring over integers

Radical

radical(I)                 ---> radical(I) if I is polynomial ring over field
                                radicalZ(I) taken from primdecint.lib if I is from polynomial ring over integers

Equidimensional decomposition

 weak_equidimensional_decomposition(I)          --->  equidim(I) 

 equidimensional_hull(I)                        --->  equidimMax(I) if I is from polynomial ring over field
                                                --->  equidimZ(I) taken from primdecint.lib if I is from polynomial ring over integers

 radical_equidimensional_hull(I)                --->  equiRadical(I)        

 decomposition_radical_equidimensional_hull(I)  --->  prepareAss(I)      

Absolute primary decomposition

absolute_primary_decomposition(I)               --->  absPrimdecGTZ(I)  

Algebraic Schemes

Schemes in Charts, fundamental birational constructions (blowups, contraction, etc).

Applications: resolution of singularities, cohomology (local), computation of linear systems, elliptically fibered K3 surfaces

More details what is needed for elliptic fibrations.

  • basic functionality for elliptic curves over (1D-function-)fields:
    -- Weierstrass models, creation of Weierstrass models from cubic or y^2=quartic with a point. -- group structure -- Weierstrass automorphisms -- Tate's algorithm and/or resolution of ADE surface singularities and exceptional divisors
  • intersection multiplicities, saturation, valuations
  • Weil divisors, Cartier divisors, pullback, pushforward
  • principal open sets, localizations
  • birational maps, that is, computations with function fields in several variables could sometimes be convenient ... though maybe too inefficient?

More details what is needed for resolution. Anne?

Some detail on how an implementation may look like.

Affine schemes Consists of the following data:

base ring
ambient polynomial algebra over a base ring
ideal
hash?
special type for principal open subsets?

Morphisms of affine schemes

abstract type
domain -> affine scheme
codomain -> affine scheme
the associated algebra homomorphism
concrete types: isomorphism (knows about its inverse), open inclusion, closed embedding

glueing affine schemes We work with principal open subsets D(f) where f is an element of the coordinate ring. We want to glue the arffine schemes U and V along W=U \cap V . We have two representations for W as principal open subsets. One as

U_f = U \cap D(f)
V_g = V \cap D(g)
The glueing should consist of the following data:
the inclusions U_f -> U and V_g -> V
and an isomorphism U_f -> V_g.

open subsets of a (noetherian) affine scheme X=Spec R

an open subset U is written as U\V(J) for some ideal J of R
If J = (f1,...,fn), then U is the union of the D(f1),...,D(fn).
want the global section functor for such an open subset.
Tool: Cech complex indexed by f1,...,fn

Global geometry

Geometry in terms of (multi-)graded rings.

Singular locus, cohomology, divisors, intersection numbers, rational maps, elimination, etc

What is needed? Wolfram?

Interdisciplinary Algorithms

Computing GIT-Fans uses Gröbner bases, group theory, polyhedral geometry.

Further ideas?

Subquotient Modules

Subquotients, Hom, Ext, Tor, Baer sum, mapping cone, etc

Over polynomial rings, quotients thereof, Euclidean rings.

Integrate the code based on AbstractAlgebra.jl into OSCAR through an abstraction layer (Alexander Dinges).

Localizations

Rings and modules, localization at prime ideals, see graal.lib, germs.

Viktor: I want to point out at the implementation by Johannes Hoffmann (now a postdoc at SB, with Roland Speicher), which realizes algorithms from two joint papers of us (JSC spec issues for ISSAC 17 and 18) for constructive arithmetics with left and right fractions from fairly general Ore localizations (3 types, loc. at a prime ideal is just one of them). It applies to GR-algebras and therefore to commutative affine rings. There are three libraries, which differ in interfaces/object-oriented or not aspects mainly: olga.lib, ncfrac.lib and ncloc.lib.

Singular/GPI-Space Framework

One of the key goals of the B5 project is to exploit parallel structures in algebraic geometry to do massively parallel computations.

To support this goal and further applications from computer algebra, we develop the Singular/GPI-Space Framework.

A first case to use parallel structures in terms of charts in algebraic geometry to create an algorithm with scales superlinar with the number of cores by finding an optimal covering in a parallel way has been implemented with the Hironaka style smoothness test algorithm.

Further applications include the computation of GIT-fans, tropicalizations, and IBP relations for Feynman integrals.

In the B5 project we aim at algorithms for elliptically fibered K3 surfaces, Feynman integrals, resolution of singularities, and algorithms for algebraic schemes in general.

More details what is needed for K3. Simon?

Polynomial Solving

There will be a new package msolve.jl soon which implements exact polynomial system solving. The C binary of msolve is already in beta status: https://msolve.lip6.fr/

Webpage

Plans, Links to renew the webpage of Singular.

Clone this wiki locally