New developments in Singular H. Sch¨ onemann University of Kaiserslautern, Germany 2016/03/31 1 / 43
What is Singular ? A computer algebra system for polynomial computations, with special emphasis on algebraic geometry, commutative and non-commutative algebra, singularity theory, and with packages for convex and tropical geometry. It is free and open-source under the GNU General Public Licence. 2 / 43
Open development model 3 / 43
Open development model Singular issue tracker Interaction with user base, bug & feature tracking 4 / 43
What is Singular ? Over 30 development teams worldwide, over 170 libraries for advanced topics. 5 / 43
What is Singular ? Singular consists of a kernel, written in C / C + +, and containing the core algorithms, libraries, written in the Singular language which provides a convenient way of user interaction and adding new mathematical features, and a comprehensive online manual and help function. 6 / 43
Singular Libraries 7 / 43
Example: Parametrizing Rational Curves Example > ring R = 0, (x,y,z), dp; > poly f = x5+10x4y+20x3y2+130x2y3-20xy4+20y5-2x4z-40x3yz-150x2y2z -90xy3z-40y4z+x3z2+30x2yz2+110xy2z2+20y3z2; > LIB "paraplanecurves.lib"; > genus(f); 0 > paraPlaneCurve(f); // ’paraPlaneCurve’ created a ring together with an ideal PARA. > def RP1 = paraPlaneCurve(f);setring RP1;PARA; PARA[1]=25s5-1025s4t+14825s3t2-85565s2t3+146420st4-20780t5 PARA[2]=25s5-1400s4t+30145s3t2-305650s2t3+1396410st4-2023972t5 PARA[3]=25s5-1025s4t+15575s3t2-116205s2t3+562440st4-1898652t5 8 / 43
Example: Intersection Theory Example > LIB "schubert.lib"; > variety G = Grassmannian(2,4); > def r = G.baseRing; > setring r; > sheaf S = makeSheaf(G,subBundle); > sheaf B = dualSheaf(S)^3; > integral(G,topChernClass(B)); 9 / 43
Example: Intersection Theory Example (continued) 27 Some keywords Schubert calculus, double point formulas, excess intersection formula, equivariant intersection theory using Bott’s formula, Gromov-Witten invariants. 10 / 43
Key Algorithms in Singular Basic stuff Gr¨ obner and standard Bases; free resolutions; polynomial factorization: Factory . More advanced stuff Primary decomposition: algorithms of Gianni-Trager-Zacharias, Shimoyama-Yokoyama, Eisenbud-Huneke-Vasconcelos: primdec.lib .; normalization: normal.lib , locnormal.lib , modnormal.lib . parametrization of rational plane curves: paraplanecurves.lib ... 11 / 43
Parallelization: Processes processes, different memory areas Problem: data transfer can use a cluster of machines uses for Gr¨ obner base computation: Chinese Remainder Theorem and Rational Reconstruction 12 / 43
Parallelization: Gr¨ obner bases via Chinese Remainder Theorem choose (lucky) primes according to available CPU cores/machines compute a complete reduced Gr¨ obner basis modulo these primes combine by rational reconstruction (Farey) 13 / 43
Parallelization: Threads threads - same process, common memory Problem: synchronization of data access uses for Gr¨ obner base computation: Matrix operations (Gauss, F4) 14 / 43
Parallelization: Threads MathicGB (B. Roune): Gr¨ obner basis computation via matrix operations matrix of machine size integers (modulo p) pivot parts used by all threads 15 / 43
Parallelization: Thread safe interpreter threads - same process, common memory Problem: synchronization of data access different memory domains 16 / 43
Example: Coarse Grained Parallelism in Singular Example > LIB"parallel.lib"; > LIB"random.lib"; > ring R = 0,x(1..4),dp; > ideal I = randomid(maxideal(3),3,100); > proc sizeStd(ideal I, string monord) { def R = basering; list RL = ringlist(R); RL[3][1][1] = monord; def S = ring(RL); setring(S); return(size(std(imap(R,I)))); } 17 / 43
Example: Coarse Grained Parallelism in Singular Example > list commands = " sizeStd"," sizeStd"; > list args = list(I,"lp"),list(I,"dp"); > parallelWaitFirst(commands, args); [1] empty list [2] 11 > parallelWaitAll(commands, args); [1] 55 [2] 11 18 / 43
Example: Adjoint Ideals We develop Parallel local-to-global algorithm computing G as intersection of local adjoint ideals. For C over Q , parallel modular approach with efficient verification test. Implementation in adjointideal.lib . Applications to computation of Riemann-Roch spaces ( brillnoether.lib ) rational parametrizations ( paraplanecurves.lib ). 19 / 43
Example: De Rham Cohomology General implementation of the algorithm of Oaku/Takayama/Walther for computing the de Rham cohomology of the complement U of a complex affine variety: deRham.lib . De Rham cohomology of U is the hypercohomology of the de Rham complex on U , i.e. the complex of algebraic differential forms on U . Grothendieck and Deligne showed that it agrees with singular cohomology, hence, can be used to compute Betti numbers. Ongoing: Compute Gauss-Manin systems (direct images of D -modules), local monodromy. 20 / 43
New Libraries in Singular Framework for hyperplane arrangements: arr.lib ; Riemann-Roch spaces: hess.lib , brillnoether.lib ; Intersection theory: schubert.lib ; New algorithms for computing tropical varieties: gfanlib.so ; De Rham Cohomology: deRham.lib ; GIT-fans in geometric invariant theory: gitfan.lib . Parallel Computation of Gr¨ obner Bases over Q ( modstd.lib ) and over algebraic function fields ( ffmodstd.lib,nfmodstd.lib ) Symbolic Computation with Chern Classes: chern.lib ... 21 / 43
Connections to other Systems Singular GAP Algebraic Geometry Groups polymake ANTIC Convex Geometry Number Theory Included subsystems Factory : Polynomial Factorization; NTL : arithmetic for Number Theory; Flint : arithmetic for Number Theory; Plural : non-commutative stuff. 22 / 43
Homalg Example: From groups to vector bundles gap> LoadPackage( "repsn" );; gap> LoadPackage( "GradedModules" );; gap> G := SmallGroup( 1000, 93 ); <pc group of size 1000 with 6 generators> gap> Display( StructureDescription( G ) ); ((C5 x C5) : C5) : Q8 23 / 43
Homalg Example: From groups to vector bundles gap> V := Irr( G )[6];; Degree( V ); 5 gap> T0 := Irr( G )[5];; Degree( T0 ); 2 gap> T1 := Irr( G )[8];; Degree( T1 ); 5 gap> mu0 := ConstructTateMap( V, T0, T1, 2 ); <A homomorphism of graded left modules> 24 / 43
Homalg Example: From groups to vector bundles gap> A := HomalgRing( mu0 ); Q{e0,e1,e2,e3,e4} (weights: [ -1, -1, -1, -1, -1 ]) gap> M:=GuessModuleOfGlobalSectionsFromATateMap(2, mu0);; gap> ByASmallerPresentation( M ); <A graded non-zero module presented by 92 relations for 19 generators> 25 / 43
Homalg Example: From groups to vector bundles gap> S := HomalgRing( M ); Q[x0,x1,x2,x3,x4] (weights: [ 1, 1, 1, 1, 1 ]) gap> ChernPolynomial( M ); ( 2 | 1-h+4*h^2 ) -> P^4 gap> tate := TateResolution( M, -5, 5 );; 26 / 43
Homalg Example: From groups to vector bundles gap> Display( BettiTable( tate ) ); total: 100 37 14 10 5 2 5 10 14 37 100 ? ? ? ? ----------|---|---|---|---|---|---|---|---|---|---|---|---|---|---| 4: 100 35 4 . . . . . . . . 0 0 0 0 3: * . 2 10 10 5 . . . . . . 0 0 0 2: * * . . . . . 2 . . . . . 0 0 1: * * * . . . . . . 5 10 10 2 . 0 0: * * * * . . . . . . . . 4 35 100 ----------|---|---|---|---|---|---|---|---|---|---|---|---|---|---S twist: -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ------------------------------------------------------------------- Euler: 100 35 2 -10 -10 -5 0 2 0 -5 -10 -10 2 35 100 27 / 43
Computational Primary Decomposition: History algorithm by Wu in Maple (Wu-Ritt-process, 1989): via characteristic sets algorithm by Gianni,Traeger,Zacharias in AXIOM (1988) via factorization algorithm by Eisenbud, Huneke, Vasconcelos (1992) via equidimensional decomposition algorithm by Shimoyama, Yokoyama (1996) via characteristic series Singular implements GTZ, SY (1998), EHV (2001) 28 / 43
Computational Primary Decomposition by the Algorithm of Eisenbud, Huneke, Vasconcelos The algorithm by Eisenbud, Huneke, Vasconcelos decomposes into equidimensional parts Its main splitting tools is If I ⊆ R = K [ x 1 , .. x n ] is an ideal, then the equidimensional Proposition. hull of I E ( I ) = AnnExt n − d ( R / I , R ), where d = dim ( I ). R 29 / 43
Computational Primary Decomposition by Characteristic Series Let < be the lexicographical ordering on R = K [ x 1 , ..., x n ] with x 1 < ... < x n . For f ∈ R let lvar( f ) (the leading variable of f ) be the largest variable in f , i.e., if f = a s ( x 1 , ..., x k − 1 ) x s k + ... + a 0 ( x 1 , ..., x k − 1 ) for some k ≤ n then lvar( f ) = x k . 30 / 43
Computational Primary Decomposition by Characteristic Series Let ini( f ) := a s ( x 1 , ..., x k − 1 ). The pseudoremainder r = prem( g , f ) of g with respect to f is defined by the equality ini( f ) a · g = qf + r with deg lvar ( f ) ( r ) < deg lvar ( f ) ( f ) and a minimal. A set T = { f 1 , ..., f r } ⊂ R is called triangular if lvar( f 1 ) < ... < lvar( f r ). Moreover, let U ⊂ T , then ( T , U ) is called a triangular system, if T is a triangular set such that ini( T ) does not vanish on V ( T ) \ V ( U )(=: V ( T \ U )). 31 / 43
Recommend
More recommend