CoCoA
# CoCoA

CoCoA System (Computations in Commutative Algebra) è un sistema di algebra computazionale, sviluppato dall'Università di Genova e studiato per affrontare problemi di teoria dei numeri e soprattutto di polinomi.

È programmabile tramite un linguaggio appositamente progettato, CoCoA language, e presenta un'interfaccia testuale (usabile anche tramite Emacs).

Nella sua recente evoluzione è stato meglio delineato e potenziato il cuore matematico, progettato come libreria C++, CoCoALib. CoCoALib è distribuito sotto licenza GPL, e così anche per la versione interattiva (CoCoA-5) del sistema.

Esistono versioni per Mac, Linux, Windows e Solaris.

## Caratteristiche

Alla base di CoCoA c'è la potente libreria GMP, sviluppata per trattare in modo esatto numeri a precisione arbitraria con un'efficienza massima su qualsiasi architettura.

CoCoA può essere utilizzata sia per calcoli semplici sia per complesse operazioni di calcolo simbolico. È in grado di trattare:

* operazioni su numeri
* operazioni su matrici
* operazioni su polinomi
* operazioni su ideali polinomiali
* sistemi lineari
* basi di Gröbner
* formule di Erone

## Storia

Il progetto prese il via nel 1987: A. Giovini e G. Niesi svilupparono ognuno per conto proprio due piccoli progetti, che vennero poi riuniti sotto il coordinamento di L. Robbiano; il codice a quel tempo era scritto in Pascal e girava solo su computer Macintosh.

CoCoA3, sviluppata tra il 1990 e il 1993, è stata la prima versione scritta in C.

CoCoA5 è la prima ad essere interamente basata su CoCoALib, scritta in C++.

L'evoluzione del progetto è strettamente legata ai meeting e scuole su CoCoA che si tengono periodicamente.

## Esempi di utilizzo

Il seguente esempio permette di definire un ideale e stamparne a schermo la base di Gröbner:

Si osserva facilmente che CoCoA non approssima le frazioni, ma le tratta in modo simbolico:

