@@ -1,143 +1,143 @@ -\documentstyle[11pt,reduce]{article} -\newcommand{\nl}{\hfill\newline} -\newcommand{\bq}{\begin{quotation}} -\newcommand{\eq}{\end{quotation}} -\newcommand{\bi}{\begin{itemize}} -\newcommand{\ei}{\end{itemize}} -\date{} -\title{{\bf DUMMY}\\[3pt] -A package to find the canonical form of expressions involving -dummy variables\\[5pt] - \mbox{\hfill Version 1.0\hfil}} -\author{Alain Dresse \\ -Universit\'e Libre de Bruxelles \\ -Boulevard du Triomphe, CP 210/01 \\ -B--1050 BRUXELLES \\[3pt] -E--mail: adresse@ulb.ac.be} -\begin{document} -\maketitle -\index{DUMMY package} -\section{Introduction} -The proper use of dummy variables in computer algebra is difficult -because of the problem of simplifications. However, it is very important -to keep large expressions in a concise form and to manipulate them -efficiently. -The routines in the file allows to find the canonical form of expressions -involving dummy variables. In that way, the simplification of -polynomial expressions can be fully done. The indeterminates are general -operator objects endowed with as few properties as possible. In that way -the package may be used in a large spectrum of applications. - -In section 2, the convention for writing expressions is described and -the available declarations to distinguish between dummy and free variables -are explained. - -In section 3, the various declarations on the algebraic properties -of the operators as well as on their operational properties are -given. The use of the ready-to-use function {\tt canonuical} is illustrated. -In section 4, installation is explained. -\section{Dummy and Free Variables} -An expression of the type -$$ -\sum_{a=1}^{n} f(a) -$$ -for any $n$ is simply written as -$$ -f(a) -$$ -and $a$ is a {\em dummy} index. -If the previous expression is written as -$$ -\sum_{b=1}^{n} f(b) -$$ -$b$ is also a dummy index and, obviously we should be able to get the -equality -$$ -f(a)-f(b);\, \rightarrow 0 -$$ -To declare dummy variables, two declarations are available: -\begin{itemize} -\item{i.} -\begin{verbatim} - dummy_base ; -\end{verbatim} -where {\tt idp} is the name of any unassigned identifier. -\item{ii.} -\begin{verbatim} - dummy_names ,, ....; -\end{verbatim} -\end{itemize} -The first declares {\tt idp1,$\cdots$, idpn} as dummy variables i.e. -all variables of the form ``{\tt idxxx}'' where {\tt xxx} is a number -will be dummy variables, such as {\tt id1, id2, ... , id23}. -The second gives special names for dummy variables. -All other arguments are assumed to be {\tt free}.\\ -An example: -\begin{verbatim} - - dummy_base dv; ==> dv - - % dummy indices are dv1, dv2, dv3, ... - - dummy_names i,j,k; ==> t - - % dummy names are i,j,k. - -\end{verbatim} -When this is done, an expression like -\begin{verbatim} - op(dv1)*sin(dv2)*abs(x)*op(i)^3*op(dv2)$ -\end{verbatim} -is allowed. Notice that, dummy indices may not be repeated (it is not -limited to tensor calculus) or that they be repeated many times inside -the expression. -\section{Operators and Use of {\tt CANONICAL}} -All dummy variables are arguments of operators. These operators are -quite general, they may be element of an algebra, they may be tensors, -spinors, grassman variables, etc. $\ldots$ -By default they are assumed to be {\em commutative} and without symmetry -properties. Several commands allow to make variations about this default. - -First, the declarations {\tt NONCOM, SYMMETRIC and AN\-TI\-SYM\-ME\-TRIC} - may be used on the operators.\\ -Second, they may be declared anticommutative. -\begin{verbatim} - anticom ao1, ao2; -\end{verbatim} -Third, one may, declare partial symmetries for them thanks to the -declaration {\tt SYMTREE}. -Here is the corresponding declaration for the Riemann tensor -\begin{verbatim} - symtree (r, {!+, {!-, 1, 2}, {!-, 3, 4}}); -\end{verbatim} -The symbols !*, !+ and !- at the beginning of each list mean that -the operator has no symmetry, is symmetric and is antisymmetric with respect -to the indices inside the list. Notices that the indices are not designated -by their names but merely by their natural order of appearance. 1 means the -first written argument of {\tt r}, 2 its second argument etc. -In the example above r is symmetric with respect to interchange of the -pairs of indices 1,2 and 3,4 respectively. - -Notice that all the declarations here are valid whether the indices -are free or not. -It is then left to apply {CANONICAL} on any polynomial containing operators -to get its canonical representation. In that way full simplifications -are guaranteed. - -There are two limitations to the package. The first is that non-commuting -operators are assumed to commute with anticommuting ones. The second is -that it does not add anything to the problem of simplifications when -side relations (like Bianchi identities) are present. -\section{Installation} -The use of DUMMY requires that the package ASSIST version 2.2 be loaded. -It is also available in the \REDUCE\ library. Assuming that you got the -source files, use the script {\tt MKFASL} and do -\begin{verbatim} - mkfasl assist -\end{verbatim} -when done do -\begin{verbatim} - mkfasl dummy -\end{verbatim} -Finally, run the test file. -\end{document} +\documentstyle[11pt,reduce]{article} +\newcommand{\nl}{\hfill\newline} +\newcommand{\bq}{\begin{quotation}} +\newcommand{\eq}{\end{quotation}} +\newcommand{\bi}{\begin{itemize}} +\newcommand{\ei}{\end{itemize}} +\date{} +\title{{\bf DUMMY}\\[3pt] +A package to find the canonical form of expressions involving +dummy variables\\[5pt] + \mbox{\hfill Version 1.0\hfil}} +\author{Alain Dresse \\ +Universit\'e Libre de Bruxelles \\ +Boulevard du Triomphe, CP 210/01 \\ +B--1050 BRUXELLES \\[3pt] +E--mail: adresse@ulb.ac.be} +\begin{document} +\maketitle +\index{DUMMY package} +\section{Introduction} +The proper use of dummy variables in computer algebra is difficult +because of the problem of simplifications. However, it is very important +to keep large expressions in a concise form and to manipulate them +efficiently. +The routines in the file allows to find the canonical form of expressions +involving dummy variables. In that way, the simplification of +polynomial expressions can be fully done. The indeterminates are general +operator objects endowed with as few properties as possible. In that way +the package may be used in a large spectrum of applications. + +In section 2, the convention for writing expressions is described and +the available declarations to distinguish between dummy and free variables +are explained. + +In section 3, the various declarations on the algebraic properties +of the operators as well as on their operational properties are +given. The use of the ready-to-use function {\tt canonuical} is illustrated. +In section 4, installation is explained. +\section{Dummy and Free Variables} +An expression of the type +$$ +\sum_{a=1}^{n} f(a) +$$ +for any $n$ is simply written as +$$ +f(a) +$$ +and $a$ is a {\em dummy} index. +If the previous expression is written as +$$ +\sum_{b=1}^{n} f(b) +$$ +$b$ is also a dummy index and, obviously we should be able to get the +equality +$$ +f(a)-f(b);\, \rightarrow 0 +$$ +To declare dummy variables, two declarations are available: +\begin{itemize} +\item{i.} +\begin{verbatim} + dummy_base ; +\end{verbatim} +where {\tt idp} is the name of any unassigned identifier. +\item{ii.} +\begin{verbatim} + dummy_names ,, ....; +\end{verbatim} +\end{itemize} +The first declares {\tt idp1,$\cdots$, idpn} as dummy variables i.e. +all variables of the form ``{\tt idxxx}'' where {\tt xxx} is a number +will be dummy variables, such as {\tt id1, id2, ... , id23}. +The second gives special names for dummy variables. +All other arguments are assumed to be {\tt free}.\\ +An example: +\begin{verbatim} + + dummy_base dv; ==> dv + + % dummy indices are dv1, dv2, dv3, ... + + dummy_names i,j,k; ==> t + + % dummy names are i,j,k. + +\end{verbatim} +When this is done, an expression like +\begin{verbatim} + op(dv1)*sin(dv2)*abs(x)*op(i)^3*op(dv2)$ +\end{verbatim} +is allowed. Notice that, dummy indices may not be repeated (it is not +limited to tensor calculus) or that they be repeated many times inside +the expression. +\section{Operators and Use of {\tt CANONICAL}} +All dummy variables are arguments of operators. These operators are +quite general, they may be element of an algebra, they may be tensors, +spinors, grassman variables, etc. $\ldots$ +By default they are assumed to be {\em commutative} and without symmetry +properties. Several commands allow to make variations about this default. + +First, the declarations {\tt NONCOM, SYMMETRIC and AN\-TI\-SYM\-ME\-TRIC} + may be used on the operators.\\ +Second, they may be declared anticommutative. +\begin{verbatim} + anticom ao1, ao2; +\end{verbatim} +Third, one may, declare partial symmetries for them thanks to the +declaration {\tt SYMTREE}. +Here is the corresponding declaration for the Riemann tensor +\begin{verbatim} + symtree (r, {!+, {!-, 1, 2}, {!-, 3, 4}}); +\end{verbatim} +The symbols !*, !+ and !- at the beginning of each list mean that +the operator has no symmetry, is symmetric and is antisymmetric with respect +to the indices inside the list. Notices that the indices are not designated +by their names but merely by their natural order of appearance. 1 means the +first written argument of {\tt r}, 2 its second argument etc. +In the example above r is symmetric with respect to interchange of the +pairs of indices 1,2 and 3,4 respectively. + +Notice that all the declarations here are valid whether the indices +are free or not. +It is then left to apply {CANONICAL} on any polynomial containing operators +to get its canonical representation. In that way full simplifications +are guaranteed. + +There are two limitations to the package. The first is that non-commuting +operators are assumed to commute with anticommuting ones. The second is +that it does not add anything to the problem of simplifications when +side relations (like Bianchi identities) are present. +\section{Installation} +The use of DUMMY requires that the package ASSIST version 2.2 be loaded. +It is also available in the \REDUCE\ library. Assuming that you got the +source files, use the script {\tt MKFASL} and do +\begin{verbatim} + mkfasl assist +\end{verbatim} +when done do +\begin{verbatim} + mkfasl dummy +\end{verbatim} +Finally, run the test file. +\end{document}