# Java Algebra System (JAS) Project

Introduction. The Java Algebra System (JAS) is an object oriented, type safe and multi-threaded approach to computer algebra. JAS provides a well designed software library using generic types for algebraic computations implemented in the Java programming language using the JVM runtime infrastructure. The library can be used as any other Java software package or it can be used interactively or interpreted through a jython (Java Python) or jruby (Java Ruby) front end, there is also an Android App based on Ruboto (jruby for Android). The focus of JAS is at the moment on commutative, solvable and non-commutative polynomials, power series, Groebner bases, factorization, real and complex roots and applications. By the use of Java as implementation language JAS is 64-bit and multi-core CPU ready and can make use of mutiple CPUs where available. JAS can run on a wide variety of devices ranging from Android to compute clusters (using MPJ a Java Message Passing Interface (MPI) or OpenMPI).

## Documentation Overview

The JAS documentation consists of Web overview and summary pages, API documentation of the Java, Ruby and Python implementations and of published papers on specific topics of JAS.

For information on how to get started with JAS see the users guide or the README. For frequently asked questions see FAQ.

The software packages of the JAS library are summarized in the packages page. There is an index of algorithms for the book Gröbner bases and their JAS equivalents. An index of algorithms for the book Algorithms for Computer Algebra and their JAS equivalents is also available.

The JAS API guide describes the interface and class design considerations and contains an overview of the most important classes and methods. An online Javadoc documentation of the API together with source code is contained in the API documentation (also available as jas-doc.jar). Some design considerations for the new generic version are discussed in the problems and issues page.

JAS is open source. The licensing infos are in COPYING.jas (GPL) or COPYING.lgpl.jas (LGPL). The Java bytecode is dual licenced also under the Apache 2.0 licence to allow usage in Android projects.

A list of papers and conference talks about JAS and its design and mathematical packages is contained in the publications page.

This pages contain documentation for the latest version which is designed using type parameters and requires at least Java 8 (JDK 1.8). It may still compile on Java 7 (JDK 1.7) or Java 6 (JDK 1.6). Older versions (no more supported) can be found here: JAS 2.6, JAS 2.5, JAS 2.4, JAS 2.3, JAS 2.2, JAS 2.1, JAS 2.0, JAS using JDK 1.5 and JAS using JDK 1.4.

## Download, installation and usage scenarios

Informations on obtaining JAS and its optional packages is contained in the Download page.

### Usage with the JEclipse IDE

See Download and API guide pages.

### Usage with the Jython interpreter

See Download and Users guide pages.

#### jython examples

Commutative: trinks.py, katsura.py

Solvable: wa_32.py, u_sl_3_prod.py, u_sl_3.py

Modules: armbruster.py, syz.py, syzy2.py

### Usage with the JRuby interpreter

See Download and Users guide pages.

#### jruby examples

Commutative: trinks.rb, all_rings.rb, gbs.rb

### RunGB Examples

The following are examples can be executed with the class `edu.jas.application.RunGB`. E.g.
`java -cp .:log4j.jar:jas.jar:... edu.jas.application.RunGB <args>`

Commutative: gbks.jas, katsura2.jas, katsura3.jas, katsura4.jas, katsura5.jas, katsura5s.jas, katsura5w.jas, katsura6.jas, katsura6w.jas, katsura7.jas, katsura8.jas, rose.jas, trinks6.jas, trinks7.jas, vw.jas,

The following are examples can be executed with
`java -cp .:log4j.jar:jas.jar:... edu.jas.application.RunSGB <args>`

Solvable: kw_18.jas, ore_t.jas, sgb.jas, u_sl_3.jas, wa_1.jas, wa_32.jas, wa_34.jas, wa_39.jas, wa_41.jas, wa_61.jas

Last modified: Mon Jan 2 10:06:29 CET 2023