\documentclass{article}
\usepackage{axiom}
\begin{document}
\title{\$SPAD/src/input skew.input}
\author{The Axiom Team}
\maketitle
\begin{abstract}
\end{abstract}
\eject
\tableofcontents
\eject
\section{License}
<<license>>=
--Copyright The Numerical Algorithms Group Limited 1994.
@
<<*>>=
<<license>>
-- make sure that LALG, EAB, ANTISYM are loaded
--
)cl all

-- We will look at the deRham complex of Euclidean 3-space and use
-- coordinates (x,y,z).
lv:List Symbol := [x,y,z]

-- Next is our ring of functions.  We can have functions of any
-- number of variables, but since we've chosen to work with ordinary
-- Euclidean 3-space, an expression like f(x,t,r,y,u,z) will be treated
-- as a parameterized function of (x,y,z) and will be considered to be
-- constant in the variables t,r,u.  We choose expressions with integer
-- coefficients in this example.
macro coefRing == Integer
R := Expression coefRing

-- The declaration for the deRham complex takes arguments a ring coefRing
-- and a list of variables (lv is of type List Symbol).
der := DERHAM(coefRing,lv)

-- here are some functions chosen at random.
f:R:=x^2*y*z-5*x^3*y^2*z^5
g:R:=z^2*y*cos(z)-7*sin(x^3*y^2)*z^2
h:R:=x*y*z-2*x^3*y*z^2

-- The multiplicative basis elements for the exterior algebra over R are
-- defined here.
dx :der := generator(1)
dy :der := generator(2)
dz :der := generator(3)
-- A nice alternate for the assignments above is
[dx,dy,dz] := [generator(i)$der for i in 1..3]

-- Now some 1-forms chosen at random.
alpha:der := f*dx + g*dy + h*dz
beta:der  := cos(tan(x*y*z)+x*y*z)*dx + x*dy

-- we know that exteriorDifferential^2 = 0, let's see that:
exteriorDifferential alpha
exteriorDifferential %

-- exteriorDifferential is long, let's shorten that.
macro exD == exteriorDifferential

-- we know that exD is a (graded) derivation, let's see that:
gamma := alpha * beta

delta := exD gamma
-- need the "-" because alpha is a 1-form and 1 is odd.
epsilon := exD(alpha)*beta - alpha * exD(beta)

delta - epsilon

-- We define some operators.
a:BOP := operator('a)
b:BOP := operator('b)
c:BOP := operator('c)

-- Now some indeterminate one and two forms.
alpha := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz
beta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz

-- the "gradient".
totalDifferential(a(x,y,z))$der
-- the "curl".
exD alpha
-- the "divergence".
exD beta

-- Note that the deRham complex is an algebra with 1.
id:der := 1

-- Now some parameterized functions (and forms -- left as an exercise).
-- Note how the system keeps track of where your coordinate functions
-- are located in expressions.  By multiplying the expressions below by
-- 1 in the deRham complex, we automatically convert them to 0-forms,
-- i.e., functions on our space.
g1:der := a([x,t,y,u,v,z,e]) * id
h1:der := a([x,y,x,t,x,z,y,r,u,x]) * id

exD g1
exD h1

-- Now note that we can find the coefficient of some basis term in
-- any form (the basis in this case consists of the 8 forms
-- 1,   dx, dx, dz,    dx dy, dx dz, dy dz,   dx dy dz.
coefficient(gamma, dx*dy)
coefficient(gamma, id)
coefficient(g1,id)
@
\eject
\begin{thebibliography}{99}
\bibitem{1} nothing
\end{thebibliography}
\end{document}
