# Main Page

## Welcome to the ApCoCoA Website

**ApCoCoA**, which is the acronym of **Ap**plied **Co**mputations in **Co**mputer **A**lgebra, is a computer algebra framework based on the computer algebra system CoCoA. In this Wiki you can find the complete ApCoCoA manual, the newest versions and useful How To's around ApCoCoA and its packages.

### What is CoCoA?

**Latest Version:** CoCoA-5.3.2 (09.10.2020)

CoCoA is a computer algebra software used for computations with multivariate polynomial rings. Originally, this Wiki was designed to contain manual pages for CoCoA-4, an earlier version of CoCoA. The articles concerning CoCoA-4 can be found in the CoCoA section of this Wiki and Category:CoCoA4.

Although CoCoA-4 can still be downloaded, it is no longer developed since CoCoA-5 was released in June 2011 with a new syntax and a techically advanced implementation in C++.

Informations about functions in CoCoA-5 can be found in the official CoCoA-5 Manual. More informations about CoCoA itself can be found on http://cocoa.dima.unige.it/.

### What is ApCoCoA-1?

**Latest Version:** ApCoCoA-1.9.1 (11.10.2013)

ApCoCoA-1 is a computer algebra framework based on CoCoA-4. In brief, ApCoCoA-1 is CoCoA-4 wrapped in an Eclipse GUI and provided with a lot of additional functionalities like e.g. extra packages and access from CoCoA-4 code to external libraries like GLPK, Gnuplot, CryptoMiniSat and many more. For a detailed description and a full list of provided functionalities, see What is ApCoCoA. For a manual, see ApCoCoA-1 Manual.

After the end of the developement of CoCoA-4, ApCoCoA-1 soon also stopped being updated.

### What is ApCoCoA-2?

**Latest Version:** ApCoCoA-2.0 Beta (05.11.2020)

The main idea of ApCoCoA-2 is to create something like ApCoCoA-1, but based on CoCoA-5 and wrapped in a GUI based on IntelliJ.

For testing ApCoCoA-2, just download the latest version and proceed as explained on the download page.

A detailed description for building ApCoCoA-2 by yourself can be found at the page Developer Documentation.

For a list and documentation of already available packages, see the package list containing all ApCoCoA-2 packages, which are already documented in this Wiki.

### What is CoCoALib?

CoCoALib is a C++ library for doing computations in Commutative Algebra. It is the kernel of CoCoA-5 and strictly spoken still under developement, but can already be downloaded from the official CoCoA website.

### What is ApCoCoALib?

ApCoCoALib is a C++ library extending CoCoALib. It is included in ApCoCoA-1 and can be accessed through the ApCoCoA Server.

### Contribute

ApCoCoA is developed by the ApCoCoA Team, which is lead by Martin Kreuzer. Since we are a small team and there is much to do, new contributors are always welcome. If you want to help with the Wiki, you need to get an account, so please contact one of our team members who is working on the Wiki about creating an account for you. Contact Details can be found at the website of the Chair of Symbolic Computation at the University of Passau.

In order to contribute a package to ApCoCoA-2, please follow the steps described in HowTo:Contribute an ApCoCoA-2 Package. There you get all informations about how to write a package and how to document it in the Wiki. A list of requested Packages can be found at ApCoCoAWiki:Requested Packages.

A to-do list especially for this Wiki can be found at ApCoCoAWiki:Todo. If you are familiar with CoCoA and want to write How To's, then you can go to ApCoCoAWiki:Requested HowTo's for a list of requested HowTo's.

If you have any questions, concerns or suggestions about ApCoCoA and this Wiki, please do not hesitate to contact us.

### Application Examples

Computing reduced Gröbner bases:

Use P ::= QQ[x,y,z], DegRevLex; I := ideal(P,[y-x^2,z-x^3]); GBasis(I); -- reduced DegRevLex Gröbner basis of I

Computing reduced SAGBI bases:

Use P ::= QQ[x,y,z], DegLex; S := SB.Subalgebra(P,[y-x^2,z-x^3]); SB.SAGBI(S); -- reduced DegLex-SAGBI basis of S

Solving polynomial equations over using a SAT solver:

Use ZZ/(2)[x,y,z]; f1 := x*y + x*z + y*z + z; f2 := y + 1; f3 := x*y + z; SAT.Solve([f1,f2,f3]); -- [0, 1, 0]