\section{INTRODUCTION}

In this chapter we suppose that the user is already familiar with
BERGMAN and is able to start and use it in the simplest cases.
The aim of this chapter is to explain  more detailed how to use
BERGMAN, starting from top level procedure such as NCPBHGROEBNER,
 SIMPLE, or STAGSIMPLE, to
feed it input interactively or by means of an input file prepared in
advance, and to quit. In a slightly more sofisticated use, you may
influence the behaviour by various "mode changing" procedures and
flags. In very sofisticated use, you may employ and expand the
experimental procedures enclosed to the program, and/or interact
directly with the underlying lisp representations of the algebraic
objects. This chapter broadly covers the two first uses. For more
sofisticated use guidance, see chapter \ref{prof} and
the documentation within the source files.


BERGMAN is  written in Standard Lisp, and uses Lisp syntax.
Nevertheless in this chapter we do not suppose that the user is
familiar with
LISP, so we start this chapter from the very brief introduction
into LISP, mainly explaining how to understand the notations that follows.
The chapter \ref{LISP-APP} contains more information about LISP
and its dialect PSL, used in BERGMAN. The reader is recommended
to look through it though in this chapter he mainly need not
deep knowledge in LISP.

      \section{BERGMAN - history and philosophy}
BERGMAN was written by J\"{o}rgen Backelin during 1990-1996 years.
It were Prof. J.E.-Roos and Ralf Fr\"oberg, who had a significant
influence on the development of BERGMAN. Originally it was written
for SUN station, but the choice of the language (PSL) permitted
sufficiently easy to transfer the same source (with the insignificant
changes) on several other computers.

In the 1994-1996 several people (two of them are the authors
of this document) from Moldova added some new
possibilities to BERGMAN (both inside and outside BERGMAN),
especially for IBM-PC version, but
J\"{o}rgen Backelin remains the only author of BERGMAN.

The philosophy of BERGMAN is to give a user a possibility
to use Bergman's Diamond Lemma with a maximum flexibility.
It means that BERGMAN is mainly a powerful instrument for
calculating Gr\"{o}bner basis  in the several modifications: commutative and
noncommutative algebras, modules over them.

Besides that it provides some facilities to calculate
appropriate invariants of the algebras and modules:
Poincar\'{e} and Hilbert series, Anick's resolution and
Betti numbers (the last two is under development).

Main principals are maximum efficiency with minimum
restrictions (except one - homogenity). User need not
care how long might be coefficient if he wants to work
over rationals, but should also have a possibility
to work over prime characteristic or to include
indeterminants as coefficients.

Nevertheless BERGMAN is not a language. Rather it is a box,
containing several useful routines, so it takes
some efforts from user to find them here and to use
in a correct way.  Additional problems might appear
because of LISP-oriented form of the procedures. But
this box is not black: user can read, change the procedures
and create its own. Moreover, he can use them together
with REDUCE, so from this point of view, BERGMAN
can be considered as an important package for REDUCE. (You can read
more about this in the Chapter \ref{reduce}).
The aim of this chapter is to explain BERGMAN as a
black box, describing all its main procedures. BERGMAN
inside - is a content of the chapter \ref{prof}


    \section{BERGMAN - main restrictions}
BERGMAN has only two main restrictions. First, it is not a
separate program and cannot be used without PSL (or REDUCE,
which contains PSL). Second, and important - HOMOGENITY.
All input to the simple top level procedures must be
homogeneous (by the natural grading, where each variable has degree
one). There is no automatic check of homogenity. There are some
experimental procedures which under some restrictions test for
homogenity, homogenise input, and dehomogenise output; see the
 sub-section \ref{homog} below.

In the commutative case homogenity is not principal restriction.
It is not so difficult to homogenise relations to obtain the
same, in principal, result. But for the noncommutative algebras
this restriction is essential and this is price for the efficiency.
But unfortunately it means that it is impossible to use BERGMAN
for investigations of the groups or most of the finite dimension
algebras (such as matrix algebras), everything that contains
nontrivial idempotents.

Note also that BERGMAN has no  routines for the polynomial
factorisation. So, the applications of BERGMAN to the solutions
of the nonlinear systems of equations are sufficiently restricted.

\section{LISP NOTATIONS}
