(* ----------------------------------------------------------------------------
 * $Id: MASNC.md,v 1.3 1992/10/16 14:07:55 kredel Exp $
 * ----------------------------------------------------------------------------
 * This file is part of MAS.
 * ----------------------------------------------------------------------------
 * Copyright (c) 1989 - 1992 Universitaet Passau
 * ----------------------------------------------------------------------------
 * $Log: MASNC.md,v $
 * Revision 1.3  1992/10/16  14:07:55  kredel
 * Cosmetic
 *
 * Revision 1.2  1992/02/12  17:33:29  pesch
 * Moved CONST definition to the right place
 *
 * Revision 1.1  1992/01/22  15:13:13  kredel
 * Initial revision
 *
 * ----------------------------------------------------------------------------
 *)

DEFINITION MODULE MASNC;

(* MAS Non-commutative Product Definition Module. *)



FROM MASSTOR IMPORT LIST;

CONST rcsid = "$Id: MASNC.md,v 1.3 1992/10/16 14:07:55 kredel Exp $";
CONST copyright = "Copyright (c) 1989 - 1992 Universitaet Passau";



PROCEDURE DINPPR(T,A,B: LIST): LIST; 
(*Distributive polynomial non-commutative product.
A and B are distributive polynomials. T is a table
of distributive polynomials specifying the non-commutative
relations. C=A*B, the non-commutative product of A and B.
The table T may be modified. *)


PROCEDURE DINPTL(T,EL,FL: LIST;  VAR C,EP,FP: LIST); 
(*Distributive polynomial non-commutative product table lookup.
e and f are exponent vectors. T is a table
of distributive polynomials specifying the non-commutative
relations. C is the non-commutative product of x**es and x**fs.
ep and fp are exponent vectors with es+ep=e and fs+fp=f.
If e=es or f=fs then ep=() or fp=(). *)


PROCEDURE DINPTU(T,EL,FL,C: LIST); 
(*Distributive polynomial non-commutative product table update.
e and f are exponent vectors. T is a table
of distributive polynomials specifying the non-commutative
relations. C is a distributive rational polynomial. The relation
e * f = C is added to T. T is modified. *)


PROCEDURE DINPEX(T,A,NL: LIST): LIST; 
(*Distributive non-commutative polynomial exponentiation. A is a
distributive rational polynomial, n is a non-negative beta-
integer. T is a table of non-commutative relations.
B=A**n. 0**0 is by definition a polynomial in zero variables. *)


PROCEDURE DINLRD(V,T: LIST): LIST; 
(*Distributive non-commutative polynomial list read. V is a
variable list. T is a table of non-commutative relations.
A list of distributive non-commutative polynomials
in r variables, where r=length(V), r ge 0, is read from
the input stream. Any blanks preceding A are skipped. *)


PROCEDURE DINPRD(V,T: LIST): LIST; 
(*Distributive non-commutative polynomial read. V is a variable list.
T is a table on non-commutative relations.
A distributive rational polynomial A in r variables, where
r=length(V), r ge 0, is read from the input stream. Any
blanks preceding A are skipped. *)


PROCEDURE EVZERO(RL: LIST): LIST; 
(*Exponent vector zero. U is an exponent vector of length r,
r ge 0 with all components zero. *)


END MASNC.


(* -EOF- *)