CoCoALib a C++ library for computations in commutative algebra http://cocoa.dima.unige.it/ Anna Bigatti Università di Genova, Italy A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 1 / 12
Outline Introduction to CoCoA : a brief tour in the web page 1 CoCoA 4.6 : the system (demo) 2 CoCoA & CoCoAServer : a step into the future (demo) 3 CoCoALib : the C++ library 4 design demo current state insights A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 2 / 12
Introduction to CoCoA A brief tour in the web page Demo ( demo.cocoa ) A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 3 / 12
design What is CoCoALib? CoCoA project is in a transitional phase: old interactive system CoCoA 4.6 written in C new implementation in C++ accessible as: GPL C++ library: CoCoALib 0.96 ... almost 1.0 ;-) server communicating in “OpenMath”: CoCoAServer prototype interactive system: CoCoA 5 prototype To justify the development effort, CoCoALib must become popular. Basic goals of the design to achieve popularity easy and pleasant to use efficient and well-documented reliable and robust good error checking, exception safe open and free (in GPL sense) Firmer mathematical basis (in tandem with Robbiano & Kreuzer’s book) A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 4 / 12
design “For all tastes” For all users natural syntax with extensive checking a = b + c; For experienced users syntax for faster unchecked operations R->myAdd(rawa, rawb, rawc); For developers there are several debugging aids MemPool examples/ focus on a class and give all its functions e.g. ex-RingElem1.C “pieces of code” explaining particular functions, e.g. ex-PolyRing1.C workarounds for missing or incomplete aspects, e.g. ex-AlexanderDual.C DEMO ( demo-PolyRing.C ) A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 5 / 12
current state Current state types for representing polynomial rings, ideals and submodules general term-orderings and multi-gradings (for both polynomial rings and modules over them) Gröbner bases and several other ideal/module operations (faster than CoCoA 4.6, also on D-modules) the coefficient rings include F p , Q , R , and k ( a 0 , . . . , a n ) ring homomorphisms for mapping values between rings some exact matrix operations Accessible from CoCoA 4.6 via prototype CoCoAServer A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 6 / 12
insights Ring Inheritance Diagram A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 7 / 12
insights Polynomials and Power Products A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 8 / 12
insights Twin Floats Each value is represented as a 2-tuple of high-precision floats, and all components must have approximately the same value. (Traverso & Zanoni, ISSAC 2002). Colour key: Precision requested; guard digits; trouble; noise. � � 1 . 0000000000000005357 “Safe” value 1 . 0000000000000001079 � � 1 . 0000000000003141592 Noise just acceptable 1 . 0000000000014142135 � � 1 . 0000000000031415926 Noise unacceptable ⇒ ERROR insuff. prec. 1 . 0000000000 1 41421356 The green and blue digits must always match. 1 We trust only the green digits to be correct. 2 A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 9 / 12
insights DivMask Implementation Idea: define map φ : PP → { 0 , 1 } s from PPs to s -bitsets s.t. t | t ′ = ⇒ φ ( t ) ⊆ φ ( t ′ ) Such φ are DivMask rules; many exist, none is obviously best. x 2 x 0 x 0 x 5 x 0 Example: 32 bits ...... 0 1 2 3 4 C++ Inheritance: user can choose DivMask rule at run-time, so computing a DivMask is “slow”, but subset test is the same for all rules − → inline − → fast. A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 10 / 12
conclusion Some Future Plans CoCoALib version 1.0 in early 2007 import Hilbert function from CoCoA 4 import factorizer from CoCoA 4 approximate Buchberger-Möller algorithm for ideal of points more linear algebra operations new interactive system , “new” language and interpreter develop CoCoAServer and “OpenMath” communication collaboration with Sage project A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 11 / 12
conclusion Getting Started CoCoA 4.6: Download CoCoA 4.6 for your platform Install (double-click) Play examples from the web page and/or the manual CoCoALib: Write an email to cocoa@dima.unige.it “I want to be an alpha tester” − → download Download CoCoALib latest version: cocoalib-0.96(01) cocoalib-0.97(08) Configure and compile ./configure; make Play examples/ex-empty.C A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 12 / 12
conclusion Getting Started CoCoA 4.6: Download CoCoA 4.6 for your platform Install (double-click) Play examples from the web page and/or the manual CoCoALib: Write an email to cocoa@dima.unige.it “I want to be an alpha tester” − → download Download CoCoALib latest version: cocoalib-0.96(01) cocoalib-0.97(08) Configure and compile ./configure; make Play examples/ex-empty.C A. Bigatti (Università of Genova) CoCoALib IMA Oct 2006 12 / 12
Recommend
More recommend