Java Algebra System (JAS) Project

This is the old version implemented in JDK 1.5.

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. The library can be used as any other Java software package or it can be used interactively or interpreted through an jython (Java Python) front end. The focus of JAS is at the moment on commutative and solvable polynomials, Groebner bases and applications. By the use of Java as implementation language JAS is 64-bit and multi-core cpu ready.

The library contains at the moment of the following packages:

edu.jas.structure:
contains interfaces for the most general algebraic structures like RingElem and RingFactory.
edu.jas.arith:
contains classes for arithmetic in the basic coefficient rings like BigRational, BigInteger or BigComplex.
edu.jas.poly:
contains classes for polynomial and solvable polynomial arithmetic like GenPolynomial, GenSolvablePolynomial and others such as AlgebraicNumber and a polynomial parser GenPolynomialTokenizer.
edu.jas.vector:
contains classes for vectors and lists of polynomials and solvable polynomials like GenVector or ModuleList.
edu.jas.ring:
contains classes for polynomial and solvable polynomial reduction, Groebner bases and ideal arithmetic as well as thread parallel and distributed versions of Buchbergers algorithm like ReductionSeq, GroebnerBaseAbstract, GroebnerBaseSeq, GroebnerBaseParallel and GroebnerBaseDistributed.
edu.jas.module:
contains classes for module Groebner bases and syzygies over polynomials and solvable polynomials like ModGroebnerBase or SolvableSyzygy.
edu.jas.application:
contains classes with applications of Groebner bases such as ideal intersections and ideal quotients implemented in Ideal or SolvableIdeal.
edu.jas.util:
finally contains further utilities for parallel and distributed computations like ThreadPool, DistThreadPool or DistHashTable (part of this package has become obsolete with JDK 1.5).

This page contains documentation and the implementation for the new version which is designed using type parameters and requires Java 5 (JDK 1.5). The old version for JDK 1.4 can be found here.

Documentation

Getting started with JAS, a users guide.

JAS interface and class design and API documentation by javadoc (uptodate), as jas-doc.jar. Some design considerations for the new generic version.

README and COPYING (GPL) or COPYING.lgpl (LGPL)

At the PPPJ 2006 conference in Mannheim I presented the design of the jas types, classes and implementation "On the Design of a Java Computer Algebra System" (slides).

At the A3L conference in Passau, 2005 I gave some background information on the development of jas "A Systems Perspective on A3L" (slides).

The history of the jas project can be found in the Web-Log.

Download, instalation and unit tests

Usage with the Jython interpreter

jas.py (imported by other Python files).

To install jas with jython you have to add the above libraries (log4j.jar, junit.jar, tnj.jar and jas.jar) to the Java classpath.

This can be done best when included in a .jythonrc file, e.g. sample.jythonrc.

If this does not help finding the jas classes, try to put the jas.jar also into the CLASSPATH or to unpack the jar into the directory you are starting jython (also to get the correct version of .py files).

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

RunGB Examples

For execution with RunGB.

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,

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


Heinz Kredel

Last modified: Wed May 30 22:05:16 CEST 2007

$Id: index.html 781 2006-03-11 14:57:25Z kredel $