CoCoALib a C++ library for computations in commutative algebra - - PowerPoint PPT Presentation

cocoalib
SMART_READER_LITE
LIVE PREVIEW

CoCoALib a C++ library for computations in commutative algebra - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

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

slide-2
SLIDE 2

Outline

1

Introduction to CoCoA: a brief tour in the web page

2

CoCoA 4.6: the system (demo)

3

CoCoA & CoCoAServer: a step into the future (demo)

4

CoCoALib: the C++ library

design demo current state insights

  • A. Bigatti (Università of Genova)

CoCoALib IMA Oct 2006 2 / 12

slide-3
SLIDE 3

Introduction to CoCoA

A brief tour in the web page Demo (demo.cocoa)

  • A. Bigatti (Università of Genova)

CoCoALib IMA Oct 2006 3 / 12

slide-4
SLIDE 4

design

What is CoCoALib?

CoCoA project is in a transitional phase:

  • ld 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

  • pen 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

slide-5
SLIDE 5

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

slide-6
SLIDE 6

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 Fp, Q, R, and k(a0, . . . , an) 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

slide-7
SLIDE 7

insights

Ring Inheritance Diagram

  • A. Bigatti (Università of Genova)

CoCoALib IMA Oct 2006 7 / 12

slide-8
SLIDE 8

insights

Polynomials and Power Products

  • A. Bigatti (Università of Genova)

CoCoALib IMA Oct 2006 8 / 12

slide-9
SLIDE 9

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.

“Safe” value

  • 1.0000000000000005357

1.0000000000000001079

  • Noise just acceptable
  • 1.0000000000003141592

1.0000000000014142135

  • Noise unacceptable
  • 1.0000000000031415926

1.0000000000141421356

  • ⇒ ERROR insuff. prec.

1

The green and blue digits must always match.

2

We trust only the green digits to be correct.

  • A. Bigatti (Università of Genova)

CoCoALib IMA Oct 2006 9 / 12

slide-10
SLIDE 10

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. Example: 32 bits x2 x0

1

x0

2

x5

3

x0

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

slide-11
SLIDE 11

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

slide-12
SLIDE 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

slide-13
SLIDE 13

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