title: CoCoA
text: # 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:
  
  