Gauge theories on noncommutative euclidean spaces
Albert Schwarz
%EndAName Department of Mathematics
Davis
CA 95616
We consider gauge theories on noncommutative euclidean space . In particular, we discuss the structure of gauge group following standard mathematical definitions and using the ideas of hep-th/0102182 .
hep-th0111174.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                     %
%              Scientific Word   Wrap/Unwrap  Version 2.5             %
%              Scientific Word   Wrap/Unwrap  Version 3.0             %
%                                                                     %
% If you are separating the files in this message by hand, you will   %
% need to identify the file type and place it in the appropriate      %
% directory.  The possible types are: Document, DocAssoc, Other,      %
% Macro, Style, Graphic, PastedPict, and PlotPict. Extract files      %
% tagged as Document, DocAssoc, or Other into your TeX source file    %
% directory.  Macro files go into your TeX macros directory. Style    %
% files are used by Scientific Word and do not need to be extracted.  %
% Graphic, PastedPict, and PlotPict files should be placed in a       %
% graphics directory.                                                 %
%                                                                     %
% Graphic files need to be converted from the text format (this is    %
% done for e-mail compatability) to the original 8-bit binary format. %
%                                                                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                     %
% Files included:                                                     %
%                                                                     %
% "/document/discuss.tex", Document, 30583, 6/29/2001, 5:46:18, ""    %
% "/macros/base/article.cls", Macro, 20830, 2/3/2000, 3:37:54, ""     %
% "/macros/packages/amsfonts/amssymb.sty", Macro, 15507, 5/25/2000, 18:38:48, ""%
% "/macros/amsmath/amsmath.sty", Macro, 77684, 1/18/2000, 6:47:38, "" %
% "/macros/tci/tcilatex.tex", Macro, 37169, 5/25/2000, 18:38:54, ""   %
% "/macros/base/leqno.clo", Macro, 1560, 2/3/2000, 3:37:50, ""        %
% "/macros/base/fleqn.clo", Macro, 3502, 2/3/2000, 3:37:50, ""        %
%                                                                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%% Start /document/discuss.tex %%%%%%%%%%%%%%%%%%%%%


\documentclass{article}
\usepackage{amssymb}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{amsmath}

%TCIDATA{OutputFilter=LATEX.DLL}
%TCIDATA{Created=Saturday, May 26, 2001 14:18:45}
%TCIDATA{LastRevised=Thursday, June 28, 2001 22:46:17}
%TCIDATA{<META NAME="GraphicsSave" CONTENT="32">}
%TCIDATA{<META NAME="DocumentShell" CONTENT="General\Blank Document">}
%TCIDATA{Language=American English}
%TCIDATA{CSTFile=article.cst}
%TCIDATA{PageSetup=72,72,72,72,0}
%TCIDATA{AllPages=
%F=36,\PARA{038<p type="texpara" tag="Body Text" >\hfill \thepage}
%}


\newtheorem{theorem}{Theorem}
\newtheorem{acknowledgement}[theorem]{Acknowledgement}
\newtheorem{algorithm}[theorem]{Algorithm}
\newtheorem{axiom}[theorem]{Axiom}
\newtheorem{case}[theorem]{Case}
\newtheorem{claim}[theorem]{Claim}
\newtheorem{conclusion}[theorem]{Conclusion}
\newtheorem{condition}[theorem]{Condition}
\newtheorem{conjecture}[theorem]{Conjecture}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{criterion}[theorem]{Criterion}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\newtheorem{exercise}[theorem]{Exercise}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{notation}[theorem]{Notation}
\newtheorem{problem}[theorem]{Problem}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{remark}[theorem]{Remark}
\newtheorem{solution}[theorem]{Solution}
\newtheorem{summary}[theorem]{Summary}
\newenvironment{proof}[1][Proof]{\textbf{#1.} }{\ \rule{0.5em}{0.5em}}
\input{tcilatex}

\begin{document}

\title{Gauge theories on noncommutative euclidean spaces}

\author{Albert Schwarz \\
%EndAName
Department of Mathematics, University of California, Davis, CA 95616}
\maketitle

\begin{abstract}
We consider gauge theories on noncommutative euclidean space . In
particular, we discuss the structure of gauge group following standard
mathematical definitions and using the ideas of hep-th/0102182 .
\end{abstract}


\bigskip\ 

The goal of this note is to consider gauge theories on noncommutative
euclidean space and, in particular, to study the structure of gauge group.
This group was analyzed by J.Harvey in recent paper [1]. It was suggested in
this paper that the definition of the gauge group ''presumably can be
derived from the first principles''. We would like to analyze the relation
of Harvey's definition to the standard mathematical definition using as
a starting point some ideas of [2], in particular, the idea that the theory
becomes more transparent if along with simple modules $A^{n}$ we consider
more complicated modules $\mathcal{F}_{rn}$. (The central point of [2]-the
suggestion to work with unitized algebras-is mentioned only in passing at
the very end.)

Mathematical definition of a gauge field is based on a notion of connection
on a module $E$ over associative algebra $A$. There exist different versions
of this notion (see [4] for details, [5] for more general treatment). Our
consideration does not depend on these subtleties. We can use, for example,
the very first definition [3]; in this definition linear operators $\nabla
_{1,...,}\nabla _{d}$ specify a connection on right $A$-module $E$ if they
satisfy Leibniz rule: 
\begin{equation*}
\nabla _{\alpha }(ea)=(\nabla _{\alpha }e)\cdot a+e\partial _{\alpha }a
\end{equation*}%
where $\partial _{1},...,\partial _{d}$ are derivations on $A$, $e\in E$, $%
a\in A$. One assumes that these derivations (i. e. infinitesimal
automorphisms) constitute a basis of a Lie algebra. By definition a gauge
field is a unitary connection (i. e. $\nabla _{\alpha }$ should be anti
Hermitian operators).

It is supposed usually that $A$ is a unital Banach algebra over $\mathbb{C}$
and  $E$ is a Hilbert $A$-module (i. e. $E$ is equipped with $A$%
-valued Hermitian inner product \TEXTsymbol{<} , \TEXTsymbol{>}; then the
condition of unitarity of connection takes the form

\begin{equation*}
<\nabla _{\alpha }a,b>+<a,\nabla _{\alpha }b>=\partial _{\alpha }<a,b>
\end{equation*}

(By definition a Banach algebra is an associative algebra with a norm and an
involution obeying natural conditions. The vector space $A^{n}$ of column
vectors with entries from $A$, considered as a right $A$-module, can be
equipped with $A$-valued Hermitian inner product $%
a_{1}^{+}b_{1}+...+a_{n}^{+}b_{n}$. Hence all projective $A$-modules, i. e.
direct summands in $A^{n}$, can be considered as Hilbert modules.)

For every unital Banach algebra $A$ we can construct a group $U(A)$
consisting of unitary elements of $A$. The topology of this group and of
groups $U_{n}(A)=U($Mat$_{n}(A))$ is closely related to the $K$-theory of $A$%
; namely 
\begin{equation*}
K_{i}(A)=\pi _{i-1}(U_{\infty }(A))
\end{equation*}%
where $U_{\infty }(A)=\cup U_{n}(A)$ is a union (or more precisely direct
limit) of groups $U_{n}(A)$. (This is one of possible definitions of $K$%
-groups.) Notice, that $\pi _{i}(U_{\infty }(A))=\pi _{i+2}(U_{\infty }(A))$
(Bott periodicity theorem) for $i\geq 0;$ using this periodicity we can
define groups $\pi _{i}(U_{\infty }(A))$ for negative $i$.

The definitions and results that we formulated for Banach algebras can be
applied also to more general  algebras, equipped with antilinear 
involution.
  
In the definition of connection we have used the role of gauge
transformations is played by unitary endomorphisms of $E$ (unitary $A$%
-linear maps of $E$ into itself). This follows from the fact that for every
unitary endomorphism $\varphi $ the correspondence $\nabla _{\alpha
}\rightarrow \nabla ^{\prime }=\varphi \nabla _{\alpha }\varphi ^{-1}$
transforms a unitary connection $\nabla _{\alpha }$ into a unitary
connection $\nabla ^{\prime }$; corresponding curvatures are related in
standard way: $F_{\alpha \beta }^{\prime }=\varphi F_{\alpha \beta }\varphi
^{-1}$. Considering the curvature of unitary connection as a field strength
of a gauge field we obtain that all reasonable action functionals are
invariant with respect to unitary endomorphisms. It is possible to consider
the group of unitary endomorphisms $U($End$_{A}E)$ (the group of unitary
elements of endomorphism algebra End$_{A}E$) as a gauge group. If $E=A^{1}$ (%
$U(1)$-gauge field in the terminology of physicists) this group is
isomorphic to $U(A)$ and in the case of $E=A^{n}$ (the case of $U(n)$-gauge
fields), it is isomorphic to $U_{n}(A)=U($Mat$_{n}(A))$. (We use the
notation Mat$_{n}(A)$ for the algebra of $n\times n$ matrices with entries
from $A$. The endomorphisms of $A^{n},$ considered as a right module, can be
identified with elements of Mat$_{n}(A)$ acting on $A^{n}$ from the left.)
It is important to notice that usually physicists work with a little bit
different definition of gauge field, that is equivalent to the above
definition restricted to the modules $E=A^{n}$ (free modules).

The above consideration can be applied also to non-unital algebras; the only
essential difference is that the elements of Mat$_{n}(A)$ don't exhaust in
this case all endomorphisms of $A^{n}$(the modules $A^{n}$ cannot be
considered as free modules). The algebra $M(A)$ of endomorphisms of $A^{1}$
is called multiplier algebra of $A;$ using this definition one can represent
endomorphisms of $A^{n}$ as matrices with entries from $M(A)$. We see that $%
U($End$_{A}A^{n})=U($Mat$_{n}(M(A)))$. 


As we have seen one can consider $U($End$_{A}E)$ as a gauge group. This
means that we can identify two gauge fields connected by gauge
transformation and use the integration over the quotient space $\mathcal{C}$ 
$/G$ where $G=U($End$_{A}E)$ to quantize the gauge theory. (Here $\mathcal{C}
$ stands for the space of all gauge fields.) However, sometimes it is more
convenient to introduce a stronger notion of gauge equivalence replacing $%
G=U($End$_{A}E)$ with its subgroup $G^{\prime }\subset G$. As long as $%
G/G^{\prime }$ is compact we can use $\mathcal{C}$ $/G^{\prime }$ instead of 
$\mathcal{C}$ $/G$ in the quantization procedure. However, if $G^{\prime
}$ acts freely on $\mathcal{C}$ it is more convenient to work with $\mathcal{%
C}$ $/G^{\prime }$.(This space is non-singular and its homotopy groups can
be calculated in terms of homotopy groups of $G^{\prime }$.)

For example, if we work with ordinary $U(n)$-gauge theory on compact
manifold $X$ (i. e. $A=C(X)$ is a commutative algebra of functions on $X$)
and $E=A^{n}$ is a trivial Hermitian vector bundle then $G=U$(End$_{A}E$)
consists of functions on $X$ taking values in unitary matrices. In this case
it is more convenient to consider as a gauge group the subgroup $G^{\prime }$
of $G$ consisting of functions $\varphi \in G$ obeying $\varphi (x_{0})=1$
for a fixed point $x_{0}$ of $X$. The quotient group $G/G^{\prime }$ can be
identified with the group of global gauge transformations. Notice that the
separation of gauge transformations (that we use to define gauge classes)
and global symmetry transformations is not physical in this case (it depends
on the choice of $x_{0}$.) However, sometimes the reduction of $G$ to $%
G^{\prime }$ is prompted not only by mathematical convenience, but also by
physical considerations. (It can happen, that it is necessary to consider
observables that are $G^{\prime }$-invariant, but not $G$-invariant.)

In particular, if we consider ordinary $U(n)$-gauge theory on $\mathbb{R}%
^{d} $, the action functional is invariant with respect to gauge
transformations corresponding to $U(n)$-valued functions $g(x)$, that have a
limit as $x\rightarrow \infty $. However, it is reasonable to consider as a
gauge group a smaller group $G^{\prime }$ imposing a condition $%
\lim_{x\rightarrow \infty }g(x)=1$. (This means that we exclude global gauge
transformations.)

The idea that one can modify the notion of gauge group without changing
physics is reinforced by obvious remark that we can impose conditions
partially removing gauge freedom (i. e. making the gauge group smaller).

Let consider now gauge theories on noncommutative euclidean space $\mathbb{R}%
^{d}$ following the ideas of [2].

In this case we can work with various algebras corresponding to different
behavior of gauge fields at infinity. Let us start with a (non-unital)
algebra $A=$ $S(\mathbb{R}_{\theta }^{d})$ of Schwartz functions on $\mathbb{%
R}^{d}$ equipped with star-product. Every connection on $A^{n}$ has the form 
\begin{equation}
\nabla _{\mu }=\partial _{\mu }+a_{\mu }
\end{equation}%
where $a_{\mu }$ is an $n\times n$ matrix with entries the multiplier
algebra $M(A)=M($ $S(\mathbb{R}_{\theta }^{d}))$.One can consider the 
multiplier algebra as an algebra of generalized functions ( distributions) 
with the multiplication  defined as a
star-product.
In the case $\theta =0$ the 
algebra $M(A)\;$
consists of  smooth functions, having derivatives with at
most polynomial growth at infinity. For nonvanishing $\theta$ the 
description of $M(A)\;$ is more complicated; see [11],[12],[13].
This algebra essentially depends on the choice of $\theta$. 
 One can prove  that for 
nondegenerate $\theta$  a  continuous functional on Schwartz space
$S(\mathbb{R})^d$ ( a  distribution) specifies an element of
$M(A)=M($ $S(\mathbb{R}_{\theta }^{d}))$ if at infinity ( i.e.in the 
complement to a compact set) it can be represented by a smooth function
with all derivatives bounded by polynomials of the same degree  [13].
However,there exist multipliers that do not belong to this class [13].
 
Notice, that we worked with right modules; then multipliers are 
realized by means of multiplication from the left. In the case of left
modules multipliers act from the right. There exists an interesting
algebra consisting of distributions that can be considered as 
left and 
right multipliers at the same time [11],[12],[13].

Considering $a_{\mu }$ as a gauge field we can say that our
gauge fields not necessarily decrease at infinity (they can even grow, but
at most polynomially). Therefore we should impose an additional condition
that gauge fields at hand have finite euclidean action (or finite energy).
In the ideology of functional integral this condition follows from the fact
the contribution of fields with infinite action vanishes. Notice that
instead of the algebra $A=$ $S(\mathbb{R}_{\theta }^{d})$ we can work, for
example, with algebra of functions on $\mathbb{R}^{d}$ that have derivatives
of all orders and all these derivatives tend to zero at infinity (the
multiplication is again defined as a star-product). This algebra is bigger,
it has less connections (gauge fields are bounded in this case). However,
this makes no difference: gauge fields having finite action are the same
(if we impose some mild regularity condititions).

The condition of finiteness is a complicated non-linear condition.In the
case when the dimension of the space is at least 4  we
replace it with a condition that the gauge field is gauge trivial at
infinity. We say that a connection on $A^{n}=(S(\mathbb{R}_{\theta
}^{d}))^{n}$ is gauge trivial at infinity if it can be represented in the
form%
\begin{equation}
\nabla _{\mu }=T\circ \partial _{\mu }\circ S+(1-TS)\circ \partial _{\mu
}+\sigma _{\mu }
\end{equation}%
where $T,S\in $End$_{A}(A^{n})$ are operators obeying $1-TS=\Pi \in
A,1-ST=\Pi ^{\prime }\in A$ and $\sigma _{\mu }$ is small at infinity in
appropriate sense. We will always assume that $T$ belongs to $H\Gamma
_{1}^{m,m_{0}},$ then there exists such $S\in H\Gamma _{1}^{-m,-m_{0}}$ that 
$1-TS\in A$, $1-ST\in A$. (See [6],[2] or Appendix for the definition of the
class of hypoelliptic symbols $H\Gamma _{\rho }^{m,m_{0}}$ and for the
definition of the class $\Gamma _{\rho }^{m}$; roughly speaking $a\in \Gamma
_{\rho }^{m}$ if $\left\| a\right\| \leq $ const $\left\| x\right\| ^{m}$ at
infinity and $T\in H\Gamma _{\rho }^{m,m_{0}}$ if at infinity $T\in \Gamma
_{\rho }^{m}$ and $T^{-1}\in \Gamma _{\rho }^{-m_{0}}$.) We will make
precise the statement that $\sigma _{\mu }$ is small at infinity requiring
that $\sigma _{\mu }\in \Gamma $ where $\Gamma $ stands for the union of $%
\Gamma _{1}^{m}$ with $m<-1$ (this means that $\sigma _{\mu }$ tends to zero
faster than $\Vert x\Vert ^{-1},$ i.e. faster than the first term in (2) ).
Let us denote by $\mathcal{C}(T)$ the class of connections that can be
represented in the form (2)\ with fixed $T$ and $\sigma _{\mu }\in \Gamma $.
Considering $T\in H\Gamma _{1}^{m,m_{0}}$ as a matrix valued function on $%
\mathbb{R}^{d}$ we obtain an element of $\pi _{d-1}(GL(n))=\pi _{d-1}(U(n))$
as a homotopy class of the map of large sphere $S^{d-1}\subset \mathbb{R}%
^{d}$.The class $H\Gamma _{1}^{m,m_{0}}$ consists of components labelled
by
elements of $\pi _{d-1}(U(n))$. Let us fix an element $T_{k}$ in every
component of $H\Gamma _{1}^{0,0}$ and define $\mathcal{C}^{(k)}$ as $%
\mathcal{C}(T_{k})$.

If $T$ and $T_{k}$ determine the same element of $\pi _{d-1}(U(n))$ one can
prove that a gauge field (unitary connection) belonging to $\mathcal{C}(T)$
is gauge equivalent to a gauge field from $\mathcal{C}^{(k)}=\mathcal{C}%
(T_{k})$ (i.e. these two gauge fields are related by unitary endomorphism).\
Moreover, in the case $\theta \neq 0$ this statement remains correct if we
impose weaker condition that $T$ and $T_{k}$ determine the same element of
stable homotopy group $\pi _{d-1}(U(\infty ))$ ( we will prove this
statement below for the case of nondegenerate $\theta $ ).

Working with gauge fields (unitary connections) it is convenient to replace
(2) by an explicitly unitary expression 
\begin{equation}
\nabla _{\mu }=T\circ \partial _{\mu }\circ T^{+}+\Pi \circ \partial _{\mu
}\circ \Pi +\rho _{\mu }
\end{equation}%
where $T\in H\Gamma _{1}^{0,0}$,
 $\Pi =1-TT^{+}\in A$, $\Pi ^{\prime
}=1-T^{+}T\in A$, $\rho _{\mu }=\rho _{\mu }^{+}\in \Gamma $. It is easy to
check that every unitary connection belonging to $\mathcal{C}(T)$ where $%
T\in H\Gamma _{1}^{0,0}$ can be represented in the form (3). Notice, that in
the case of non$\deg $enerate $\theta $ we can consider elements of Mat$%
_{n}(M(A))$ as pseudodifferential operators acting on $S(\mathbb{R}^{m})$
where $d=2p$. The topological class of $T$ can be considered as index of
corresponding pseudodifferential operator $\widehat{T}$. Without loss of
generality we can assume that either $T^{+}T=1$ (i.e. Ker $\widehat{T}=0$)
or $TT^{+}=1$ (i.e. Ker $\widehat{T^{+}}=0$).

We conjecture that calculating correlation functions we can do functional 
integral
over fields that are gauge trivial at infinity. In very vague way one can
say that ``almost all'' (but not necessarily all) fields having finite
action are gauge trivial at infinity.(One can say that the finiteness of 
action implies gauge triviality  for fields obeying some regularity 
conditions at infinity.Some results of this kind can be derived in
commutative case from Uhlenbeck theorem [10])


It is convenient to modify the definition of gauge triviality at infinity in
the following way: we say that the gauge field belongs to the class $%
\mathcal{C}_{m}$ if $T$ in (3) belongs to $H\Gamma _{1}^{0,0}$ and $\rho
_{\mu }$ belongs to $\Gamma ^{m}$ where $\Gamma ^{m}$stands for the union of 
$\Gamma _{1}^{m^{\prime }}$with $m^{\prime }<m$. We always assume
that $m\leq -1$; under this assumption $\mathcal{C}_{m}\subset \mathcal{C}%
_{-1},$ i.e. a gauge field of the class $\mathcal{C}_{m}$ is gauge trivial
at infinity. It easy to check that the euclidean action of a gauge field
from $\mathcal{C}_{m}$ is finite if $m\leq 1-\frac{d}{2}$. (Here $d$ stands
for the dimension of noncommutative euclidean space.)

Let us consider for definiteness the case $d=4$. Noticing that $\pi
_{3}(U(n))=\mathbb{Z}$ we obtain that $H\Gamma _{1}^{0,0}$ consists of
countable number of components labelled by an integer. Let us fix one
operator $T_{k}$ in every component and define $\mathcal{C}_{m}^{k}$as a set
of gauge fields of the form (3) with $T=T_{k}$ and $\rho _{\mu }\in \Gamma
^{m}=\underset{m^{\prime }<m}{\cup }\Gamma _{1}^{m^{\prime }}$.
Every gauge field $\nabla _{\mu }\in \mathcal{C}_{m}$ is gauge equivalent to
a gauge field from $\mathcal{C}_{m}^{\prime }=\underset{k\in \mathbb{Z}}{%
\cup }\mathcal{C}_{m}^{k}$. (Recall that we consider the group of unitary
endomorphisms $U($Mat$_{n}(M(A)))$ as a gauge group.) We see that we can
restrict ourselves to the gauge fields from $\mathcal{C}_{m}^{\prime }$. 
The
gauge group becomes smaller after this restriction.

Similar statements are correct in any dimension. There are some
complications related to the fact that in general the group $\pi
_{d-1}(U(n)) $ does not coincide with stable homotopy group $\pi
_{d-1}(U(\infty ))=\pi _{d-1}(U_{\infty }(\mathbb{C})).$ However, in
noncommutative case ($\theta \neq 0$) the sets $\mathcal{C}_{m}^{k}$ and $%
\mathcal{C}_{m}^{l}$ defined by means $T_{k}$ and $T_{l}$ correspondingly
are related by gauge transformation if $T_{k}$ and $T_{l}$ determine the
same element of $\pi _{d-1}(U(\infty ))$. ( A proof for nondegenerate $%
\theta $ is given below$.$)This means that for odd $d$ we need only one
$T,$
and for even $d$ we should take $\mathcal{C}_{m}^{\prime }=\cup _{r\in 
\mathbb{Z}}\mathcal{C}_{m}^{r}$ where the index $r$ labels elements of $\pi
_{d-1}(U(\infty ))=\mathbb{Z}$.

It is easy to check that a unitary endomorphism $\varphi =1+\tau $, where $%
\tau $ is a matrix with entries from $\Gamma ^{m+1}$ transforms $\mathcal{C}%
_{m}^{\prime }$ into itself. It is convenient to consider the group $%
G=G^{(m+1)}$ consisting of endomorphisms of such a kind as residual gauge
group, that remains when we restrict ourselves to the gauge fields from $%
\mathcal{C}^{\prime }=\mathcal{C}_{m}^{\prime }$. (We omit the index $m$ in
topological considerations, because homotopy groups of $G$ and $\mathcal{C}%
^{\prime }$ don't depend on $m$.) It is easy to describe the topology of the
group $G$. If $\theta $ is nondegenerate then $\pi _{i}(G)=\pi
_{i}(U_{\infty }(\mathbb{C}))$; this homotopy group vanishes for odd $i$ and
is isomorphic to $\mathbb{Z}$ for even $i$ (Bott periodicity theorem). This
statement becomes almost obvious if we take into account that the group $G$
lies between $U_{\infty }(\mathbb{C})$ and the group $\mathcal{K}$ of
unitary transformations of the form $1+\tau $ where $\tau $ is a compact
operator. (See [7], [8],[9] for the analysis of topological properties of
different spaces of operators in infinite-dimensional case.)

If $\theta =0$ it is easy to check that $\pi _{i}(G)=\pi _{i+d}(U(n))$. If $%
\theta $ is degenerate, but $\theta \neq 0$ we have for even $d$ the same
answer as for the case of non-degenerate $\theta $; for odd $d$ we obtain
that $\pi _{i}(G)=\pi _{i+d+1}(U_{\infty }(\mathbb{C}))$ (i. e. $\pi
_{2k}(G)=0$, $\pi _{2k+1}(G)=\mathbb{Z}$). The calculations for degenerate $%
\theta $ are based on the remark that in this case an element of $G$ can be
considered as a map of $S^{d-\text{rank }\theta }$ into $\mathcal{K}$. (If $%
\theta $ is degenerate, but not equal to zero, we can assume that the first $%
d-$rank $\theta $ coordinates commute with all coordinates and the last rank 
$\theta $ coordinates obey canonical commutation relations. Considering the
first coordinates as parameters we obtain that an element of $G$ can be
regarded as a map of $\mathbb{R}^{d-\text{rank }\theta }$ into $\mathcal{K}$%
. This map can be extended to a continuous map of $S^{d-\text{rank }\theta }$
into $\mathcal{K}$.)

The group $G$ deserves the name of gauge group of Yang -Mills theory on $%
\mathbb{R}_{\theta }^{d}$ if we are working only with gauge fields from $%
\mathcal{C}^{\prime }=\mathcal{C}_{m}^{\prime }$.This means, in particular,
that corresponding functional integral can be taken over $\mathcal{C}%
^{\prime }/G$. (Notice that $\mathcal{C}^{\prime }$ is a disjoint union of
contractible sets, therefore it is easy to analyze the topology of $\mathcal{%
C}^{\prime }/G$ using the results above). However, one can show that the
group $\widetilde{G}$ consisting of unitary endomorphisms (of elements of $U(
$Mat $_{n}(M(A)))$ ) that transform $\mathcal{C}^{\prime }$ into itself is
larger then $G$. This follows from the consideration below, but it is
possible to show this directly. Namely, if the commutator  of  unitary
endomorphism $U$ with the operator $T_{k}$ that enters the definition of $%
\mathcal{C}^{\prime }$belongs to $\Gamma ^{m\text{ }}$then $U\subset $ $%
\widetilde{G}$. It is easy to construct examples of such endomorphisms that
don't belong to $G,$but it is not so easy to give a complete description of  
$\widetilde{G}$ . 

There exists another language that is more convenient to deal with fields
gauge trivial at infinity. Let us consider at first the case when the
parameter of noncommutativity $\theta $ is a non-degenerate matrix. Then the
dimension $d$ is even and the algebra $S(\mathbb{R}_{\theta }^{d})$ is
isomorphic to the algebra of integral operators acting on the space $S(%
\mathbb{R}^{p})$ where $2p=d$ and having a kernel, belonging to
$S(\mathbb{R}%
^{d})$. This means that we can consider $S(\mathbb{R}^{m})$ as a $A$-module;
we denote this module (Fock module) by $\mathcal{F}.$ The $\func{mod}$ule $%
\mathcal{F}$ can be considered as a Hilbert module over $A=S(\mathbb{R}%
_{\theta }^{d}).$ We assume that in the definition of gauge triviality at
infinity we have $T\in H\Gamma _{1}^{0,0}$ and $T^{+}T=1$ (i. e. $\Pi
^{\prime }=0$). Then one can prove that Ker$T^{+}=$Ker$TT^{+}=$Ker$%
(1-\Pi )=$Im$\Pi $ considered as $A$-$\func{mod}$ule is isomorphic to $%
\mathcal{F}^{r}$ for some $r\geq 0$. (The proof is based on a remark that $%
\Pi \in $ $S(\mathbb{R}_{\theta }^{d})$ obeys $\Pi ^{2}=\Pi ,\Pi =\Pi ^{+},$%
and therefore the corresponding integral operator is a projector on
finite-dimensional subspace of $S(\mathbb{R}^{p})$ .)

Using this fact we construct a map of $A^{n}$ onto $\mathcal{F}^{r}\oplus
A^{n}$ transforming $y\in A^{n}$ into $(\Pi y,T^{+}y)$. This map is an
isomorphism of $A$-modules. (The inverse map transforms $(\xi ,x)\in $Ker$%
T^{+}\oplus A^{n}$ into $\xi +Tx\in A^{n}$.)

Notice, that the isomorphism class of the module Ker $T^{+}$  
depends
only on the element of stable homotopy group $\pi _{d-1}(U(\infty ))$
determined by $T$. This remark proves the statement that gauge fields in $%
\mathcal{C}(T)$ are gauge equivalent to the fields in $\mathcal{C}%
(T^{^{\prime }})$ if $T$ and $T^{^{\prime }}$ determine the same element of $%
\pi _{d-1}(U(\infty ))$ (for the case when $\theta $ is non-degenerate).

Every connection on a module $\mathcal{F}_{rn}=\mathcal{F}^{r}\oplus A^{n}=$%
Ker $T^{+}\oplus A^{n}$ has the form 
\begin{equation}
\nabla _{\mu }=\nabla _{\mu }^{st}+\nu _{\mu }
\end{equation}%
where $\nabla _{\mu }^{st}$ stands for the standard connection $(i(\theta
^{-1})_{\alpha \beta }\widehat{x}^{\beta },\partial _{\alpha })=(\Pi
\partial _{\mu }\Pi ,\partial _{\mu })$ and%
\begin{equation}
\nu _{\mu }=\left( 
\begin{array}{cc}
M_{\mu } & N_{\mu } \\ 
R_{\mu } & S_{\mu }%
\end{array}%
\right)
\end{equation}%
is an endomorphism of $\mathcal{F}_{rn}$ represented by a block matrix where 
$M_{\mu }$ is an $r\times r$ matrix with entries from $\mathbb{C}$, $N_{\mu
} $ is an $r\times n$ matrix with entries from $\mathcal{F}$, $R_{\mu }$ is
an $n\times r$ matrix with entries from $\overline{\mathcal{F}}$, and $%
S_{\mu }$ is an $r\times r$ matrix with entries from $M(A)$.

Notice that in the above consideration instead of $A=S(\mathbb{R}_{\theta
}^{d})$ we can consider other algebras; for example, one can take $A=\Gamma
^{m}$ with $m\leq 0$.

Let us consider now a gauge field (3) where $\rho _{\mu }\in \Gamma ^{m}$
(i. e. a gauge field from the class $\mathcal{C}_{m}$). Then it is easy to
check that the for corresponding gauge field on $\mathcal{F}_{rn}$ we have $%
S_{\mu }\in \Gamma ^{m}$. (More precisely, $S_{\mu }$ has the same behavior
at infinity as $\rho _{\mu }$). This means that instead of gauge fields that
belong to the class $\mathcal{C}_{m}^{r}$ we can work with the class $%
\widetilde{\mathcal{C}}_{m}^{r}$ consisting of gauge fields on $\mathcal{F}%
_{rn}$ obeying $S_{\mu }\in \Gamma ^{m}$. (We constructed a one-to-one
correspondence between $\mathcal{C}_{m}^{r}$ and $\widetilde{\mathcal{C}}%
_{m}^{r}$.)

The gauge group  in this formalism should be considered as the group of
unitary endomorphisms of $\mathcal{F}_{rn}$ that are represented by matrices
of the form%
\begin{equation}
\left( 
\begin{array}{cc}
\mathcal{M} & \mathcal{N} \\ 
\mathcal{R} & \mathcal{S}%
\end{array}%
\right) 
\end{equation}%
where $\mathcal{S}-1\in \Gamma ^{m+1}$. Due to the correspondence between $%
\mathcal{C}_{m}^{r}$ and $\widetilde{\mathcal{C}}_{m}^{r}$ this group can be
considered also as a group of gauge transformations acting on $\mathcal{C}%
_{m}^{r}$ . Imposing conditions $\mathcal{M}=1$, $\mathcal{N}=\mathcal{R}=0$%
, we obtain transformations of $\mathcal{C}_{m}^{r}$ belonging to $%
G=G^{(m+1)}$; if these conditions are not satisfied we obtain gauge
transformations of $\mathcal{C}_{m}^{r}$ that don't belong to $G,$but belong
to $\widetilde{G}$. We see that the gauge group is larger than $G$.However,
it is easy to verify, that its topological properties are the same.They
coincide with the topological properties of the gauge group considered in
[1]. 

It seems that the simplest way to work with noncommutative gauge theories on 
$\mathbb{R}^{d}$ is to consider unitized algebras. (This is the viewpoint
advocated in [2].) We can reformulate the above consideration working with
the algebra $\Gamma ^{m}$ and corresponding unitized algebra $\widetilde{%
\Gamma }^{m}$. The gauge fields from $\widetilde{\mathcal{C}}_{m}^{r}$ are
precisely the fields that can be regarded as connections on $\mathcal{F}_{rn}
$, considered as $\widetilde{\Gamma }^{m}$-module.

Let us consider now the case when the dimension of the space
$(\mathbb{R}^{d})$ is less than 4. In this case  
 fields of the form
$\nabla_{\mu}=\partial _{\mu}+\rho _{\mu}$
where $\rho_{\mu}\in \Gamma ^m$ and $m=1-{d\over 2}$ have finite
euclidean action.Let us denote the class of fields of this kind
by $\cal D$.We expect that "almost
all'' gauge fields having finite euclidean action  are gauge equivalent
to the fields belonging to $\cal D$.It is easy to check that a unitary
endomorphism corresponding to a matrix  $T\in H\Gamma _{1}^{0,0}$,
transforms $\cal D$ into itself.The group consisting of endomorphisms 
of this kind be considered as a gauge group. 

{\bf Acknowledgments}

I am indebted to M. Kontsevich,  N. Nekrasov and M. Rieffel for useful
remarks. 
  
{\bf Appendix}.

Let us denote by $(\mathbb{R}^{d})$ the class of smooth matrix functions $%
a(z)$ on $\mathbb{R}^{d}$ obeying 
\begin{equation}
\left\| \partial _{\alpha }a(z)\right\| \leq C_{\alpha }\left\langle
z\right\rangle ^{m-\rho \left| \alpha \right| }
\end{equation}%
where $\alpha =(\alpha _{1},...,\alpha _{d})$, $\left| \alpha \right|
=\alpha _{1}+...+\alpha _{d},m\in \mathbb{R}$, $0<\rho \leq 1$, $%
\left\langle z\right\rangle =(1+\left\| z\right\| ^{2})^{1/2}$. We define
star-product of matrix functions using star-products of their entries and
standard rules of matrix multiplication. (The star-product $a\star _{\theta
}b$ as always depends on antisymmetric matrix $\theta $.) One can prove that
the star-product of functions $a^{\prime }\in \Gamma _{\rho }^{m_{1}}$ and $%
a^{^{\prime \prime }}\in $ $\Gamma _{\rho }^{m_{2}}$ belongs to $\Gamma
_{\rho }^{m_{1}+m_{2}}$. (In particular, $\Gamma _{\rho }^{m}$ is an algebra
if $m\leq 0$).

A matrix function $a(z)$ belongs to the class $\widetilde{\Gamma }_{\rho
}^{m}(\mathbb{R}^{d})$ if

\begin{equation}
\left\| a(z)\right\| \leq \text{const}\cdot \left\langle z\right\rangle
^{m},\left\| \partial _{\alpha }a(z)\right\| \leq C_{\alpha }\left\|
a(z)\right\| \left\langle z\right\rangle ^{-\rho \left| \alpha \right| },
\end{equation}%
(This condition is stronger than (7).).

One says that $a$ $\in H\Gamma _{\rho }^{m,m_{0}}$ if $a\in \widetilde{%
\Gamma }_{\rho }^{m}$ and $a^{-1}\in \widetilde{\Gamma }_{\rho }^{-m_{0}}$.
(We don't assume that $a(z)$ is invertible for all $z\in \mathbb{R}^{d}$,
however, we suppose that $a^{-1}(z)$exists for sufficiently large $\left\|
z\right\| $.) One can prove that for every function $a(z)$ from $H\Gamma
_{\rho }^{m,m_{0}}$ and for any $\theta $ in the definition of star-product
there exists such a function $b(z)\in \Gamma _{\rho }^{-m,-m_{0}}$ that $%
1-a\star _{\theta }b$ and $1-b\star _{\theta }a$ are matrix functions with
entries from $S(\mathbb{R}^{d}).$

\bigskip \textbf{References}

\bigskip 1. J. A. Harvey, \textit{Topology of the Gauge Group in
Noncommutative Gauge Theory,} hep-th/0105242

2. A. Schwarz, \textit{Noncommutative instantons: a new approach, }hep-th/
0102182

3. A.Connes, \textit{C*-algebres et Geometrie Differentielle, }C.
R. Acad. Sci.\textit{\ }Paris \textbf{290 }\textit{(1980), 599-604,
}English translation hep-th/0101093

4. A.Connes, \textit{Noncommutative Geometry, }Academic Press (1994), 1-655

5. A. Schwarz, \textit{Noncommutative supergeometry and duality, } Lett.
Math. Phys. \textbf{50} (1999), 309-321, hep-th/9912212

6. M. Shubin, \textit{Pseudodifferential operators, }Berlin, Springer
(1987), 1-278

7. A. Schwarz, \textit{On homotopic topology of Banach spaces, } Dokl. Akad.
Nauk SSSR, 154(1964), 61--63

8. R. S. Palais, \textit{\ On the homotopy type of certain groups of
operators, }Topology, (1964)

9. N. H. Kuiper, \textit{The homotopy type of the unitary group in Hilbert
space, }Topology, \textbf{3}, 1 (1965), 19-30.

10. K. K. Uhlenbeck, \textit{The Chern classes of Sobolev connections, }
Comm. Math. Phys., 101 (1985) 449-457.

11.M. Antonets, \textit{ Classical limit of Weyl quantization}
Teoret.Mat. Fiz. 38 (1979)331-344

12.J. M. Gracia-Bondia, J. Varilly, \textit {
Algebras od distributions suitable for phase-space quantum mechanics}
J. Math.Phys. 29 (1988) 869-879

13.R. Estrada, J. M. Gracia-Bondia, J. Varilly, \textit {
On asymptotic expansion of twisted products.} J. Math. Phys.
30 (1989) 2789-2796

\end{document}
If an algebra $A$ does not have a
unit element one can define its $K$-theory groups in terms of unital algebra 
$M(A)$; namely one can identify $K_{i}(A)$ with the kernel of natural
homomorphism of $K_{i}(M(A))$ onto $K_{i}(\mathbb{C})$.

%%%%%%%%%%%%%%%%%%%%%% End /document/discuss.tex %%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%% Start /macros/base/article.cls %%%%%%%%%%%%%%%%%%%

%%
%% This is file `article.cls',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% classes.dtx  (with options: `article')
%% 
%% This is a generated file.
%% 
%% Copyright 1993 1994 1995 1996 1997 1998 1999
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%% 
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%% 
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%% 
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%% 
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%% 
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{article}
              [1999/09/10 v1.4a
 Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
\newif\if@titlepage
\@titlepagefalse
\if@compatibility\else
\DeclareOption{a4paper}
   {\setlength\paperheight {297mm}%
    \setlength\paperwidth  {210mm}}
\DeclareOption{a5paper}
   {\setlength\paperheight {210mm}%
    \setlength\paperwidth  {148mm}}
\DeclareOption{b5paper}
   {\setlength\paperheight {250mm}%
    \setlength\paperwidth  {176mm}}
\DeclareOption{letterpaper}
   {\setlength\paperheight {11in}%
    \setlength\paperwidth  {8.5in}}
\DeclareOption{legalpaper}
   {\setlength\paperheight {14in}%
    \setlength\paperwidth  {8.5in}}
\DeclareOption{executivepaper}
   {\setlength\paperheight {10.5in}%
    \setlength\paperwidth  {7.25in}}
\DeclareOption{landscape}
   {\setlength\@tempdima   {\paperheight}%
    \setlength\paperheight {\paperwidth}%
    \setlength\paperwidth  {\@tempdima}}
\fi
\if@compatibility
  \renewcommand\@ptsize{0}
\else
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\fi
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\if@compatibility\else
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\fi
\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\if@compatibility\else
\DeclareOption{final}{\setlength\overfullrule{0pt}}
\fi
\DeclareOption{titlepage}{\@titlepagetrue}
\if@compatibility\else
\DeclareOption{notitlepage}{\@titlepagefalse}
\fi
\if@compatibility\else
\DeclareOption{onecolumn}{\@twocolumnfalse}
\fi
\DeclareOption{twocolumn}{\@twocolumntrue}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
\DeclareOption{openbib}{%
  \AtEndOfPackage{%
   \renewcommand\@openbib@code{%
      \advance\leftmargin\bibindent
      \itemindent -\bibindent
      \listparindent \itemindent
      \parsep \z@
      }%
   \renewcommand\newblock{\par}}%
}
\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
\ProcessOptions
\input{size1\@ptsize.clo}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty   51
\@medpenalty  151
\@highpenalty 301
\setcounter{topnumber}{2}
\renewcommand\topfraction{.7}
\setcounter{bottomnumber}{1}
\renewcommand\bottomfraction{.3}
\setcounter{totalnumber}{3}
\renewcommand\textfraction{.2}
\renewcommand\floatpagefraction{.5}
\setcounter{dbltopnumber}{2}
\renewcommand\dbltopfraction{.7}
\renewcommand\dblfloatpagefraction{.5}
\if@twoside
  \def\ps@headings{%
      \let\@oddfoot\@empty\let\@evenfoot\@empty
      \def\@evenhead{\thepage\hfil\slshape\leftmark}%
      \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
      \let\@mkboth\markboth
    \def\sectionmark##1{%
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\z@
          \thesection\quad
        \fi
        ##1}}{}}%
    \def\subsectionmark##1{%
      \markright {%
        \ifnum \c@secnumdepth >\@ne
          \thesubsection\quad
        \fi
        ##1}}}
\else
  \def\ps@headings{%
    \let\@oddfoot\@empty
    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
    \let\@mkboth\markboth
    \def\sectionmark##1{%
      \markright {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \thesection\quad
        \fi
        ##1}}}}
\fi
\def\ps@myheadings{%
    \let\@oddfoot\@empty\let\@evenfoot\@empty
    \def\@evenhead{\thepage\hfil\slshape\leftmark}%
    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
    \let\@mkboth\@gobbletwo
    \let\sectionmark\@gobble
    \let\subsectionmark\@gobble
    }
  \if@titlepage
  \newcommand\maketitle{\begin{titlepage}%
  \let\footnotesize\small
  \let\footnoterule\relax
  \let \footnote \thanks
  \null\vfil
  \vskip 60\p@
  \begin{center}%
    {\LARGE \@title \par}%
    \vskip 3em%
    {\large
     \lineskip .75em%
      \begin{tabular}[t]{c}%
        \@author
      \end{tabular}\par}%
      \vskip 1.5em%
    {\large \@date \par}%       % Set date in \large size.
  \end{center}\par
  \@thanks
  \vfil\null
  \end{titlepage}%
  \setcounter{footnote}{0}%
  \global\let\thanks\relax
  \global\let\maketitle\relax
  \global\let\@thanks\@empty
  \global\let\@author\@empty
  \global\let\@date\@empty
  \global\let\@title\@empty
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
  \global\let\and\relax
}
\else
\newcommand\maketitle{\par
  \begingroup
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
    \long\def\@makefntext##1{\parindent 1em\noindent
            \hb@xt@1.8em{%
                \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
    \if@twocolumn
      \ifnum \col@number=\@ne
        \@maketitle
      \else
        \twocolumn[\@maketitle]%
      \fi
    \else
      \newpage
      \global\@topnum\z@   % Prevents figures from going at top of page.
      \@maketitle
    \fi
    \thispagestyle{plain}\@thanks
  \endgroup
  \setcounter{footnote}{0}%
  \global\let\thanks\relax
  \global\let\maketitle\relax
  \global\let\@maketitle\relax
  \global\let\@thanks\@empty
  \global\let\@author\@empty
  \global\let\@date\@empty
  \global\let\@title\@empty
  \global\let\title\relax
  \global\let\author\relax
  \global\let\date\relax
  \global\let\and\relax
}
\def\@maketitle{%
  \newpage
  \null
  \vskip 2em%
  \begin{center}%
  \let \footnote \thanks
    {\LARGE \@title \par}%
    \vskip 1.5em%
    {\large
      \lineskip .5em%
      \begin{tabular}[t]{c}%
        \@author
      \end{tabular}\par}%
    \vskip 1em%
    {\large \@date}%
  \end{center}%
  \par
  \vskip 1.5em}
\fi
\setcounter{secnumdepth}{3}
\newcounter {part}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thepart {\@Roman\c@part}
\renewcommand \thesection {\@arabic\c@section}
\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}
\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
\newcommand\part{%
   \if@noskipsec \leavevmode \fi
   \par
   \addvspace{4ex}%
   \@afterindentfalse
   \secdef\@part\@spart}

\def\@part[#1]#2{%
    \ifnum \c@secnumdepth >\m@ne
      \refstepcounter{part}%
      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
    \else
      \addcontentsline{toc}{part}{#1}%
    \fi
    {\parindent \z@ \raggedright
     \interlinepenalty \@M
     \normalfont
     \ifnum \c@secnumdepth >\m@ne
       \Large\bfseries \partname~\thepart
       \par\nobreak
     \fi
     \huge \bfseries #2%
     \markboth{}{}\par}%
    \nobreak
    \vskip 3ex
    \@afterheading}
\def\@spart#1{%
    {\parindent \z@ \raggedright
     \interlinepenalty \@M
     \normalfont
     \huge \bfseries #1\par}%
     \nobreak
     \vskip 3ex
     \@afterheading}
\newcommand\section{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                                   {\normalfont\Large\bfseries}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\large\bfseries}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\normalsize\bfseries}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
                                    {3.25ex \@plus1ex \@minus.2ex}%
                                    {-1em}%
                                    {\normalfont\normalsize\bfseries}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
                                       {3.25ex \@plus1ex \@minus .2ex}%
                                       {-1em}%
                                      {\normalfont\normalsize\bfseries}}
\if@twocolumn
  \setlength\leftmargini  {2em}
\else
  \setlength\leftmargini  {2.5em}
\fi
\leftmargin  \leftmargini
\setlength\leftmarginii  {2.2em}
\setlength\leftmarginiii {1.87em}
\setlength\leftmarginiv  {1.7em}
\if@twocolumn
  \setlength\leftmarginv  {.5em}
  \setlength\leftmarginvi {.5em}
\else
  \setlength\leftmarginv  {1em}
  \setlength\leftmarginvi {1em}
\fi
\setlength  \labelsep  {.5em}
\setlength  \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty   -\@lowpenalty
\@itempenalty     -\@lowpenalty
\renewcommand\theenumi{\@arabic\c@enumi}
\renewcommand\theenumii{\@alph\c@enumii}
\renewcommand\theenumiii{\@roman\c@enumiii}
\renewcommand\theenumiv{\@Alph\c@enumiv}
\newcommand\labelenumi{\theenumi.}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{\theenumiv.}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi(\theenumii)}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
\newcommand\labelitemi{\textbullet}
\newcommand\labelitemii{\normalfont\bfseries \textendash}
\newcommand\labelitemiii{\textasteriskcentered}
\newcommand\labelitemiv{\textperiodcentered}
\newenvironment{description}
               {\list{}{\labelwidth\z@ \itemindent-\leftmargin
                        \let\makelabel\descriptionlabel}}
               {\endlist}
\newcommand*\descriptionlabel[1]{\hspace\labelsep
                                \normalfont\bfseries #1}
\if@titlepage
  \newenvironment{abstract}{%
      \titlepage
      \null\vfil
      \@beginparpenalty\@lowpenalty
      \begin{center}%
        \bfseries \abstractname
        \@endparpenalty\@M
      \end{center}}%
     {\par\vfil\null\endtitlepage}
\else
  \newenvironment{abstract}{%
      \if@twocolumn
        \section*{\abstractname}%
      \else
        \small
        \begin{center}%
          {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
        \end{center}%
        \quotation
      \fi}
      {\if@twocolumn\else\endquotation\fi}
\fi
\newenvironment{verse}
               {\let\\\@centercr
                \list{}{\itemsep      \z@
                        \itemindent   -1.5em%
                        \listparindent\itemindent
                        \rightmargin  \leftmargin
                        \advance\leftmargin 1.5em}%
                \item\relax}
               {\endlist}
\newenvironment{quotation}
               {\list{}{\listparindent 1.5em%
                        \itemindent    \listparindent
                        \rightmargin   \leftmargin
                        \parsep        \z@ \@plus\p@}%
                \item\relax}
               {\endlist}
\newenvironment{quote}
               {\list{}{\rightmargin\leftmargin}%
                \item\relax}
               {\endlist}
\if@compatibility
\newenvironment{titlepage}
    {%
      \if@twocolumn
        \@restonecoltrue\onecolumn
      \else
        \@restonecolfalse\newpage
      \fi
      \thispagestyle{empty}%
      \setcounter{page}\z@
    }%
    {\if@restonecol\twocolumn \else \newpage \fi
    }
\else
\newenvironment{titlepage}
    {%
      \if@twocolumn
        \@restonecoltrue\onecolumn
      \else
        \@restonecolfalse\newpage
      \fi
      \thispagestyle{empty}%
      \setcounter{page}\@ne
    }%
    {\if@restonecol\twocolumn \else \newpage \fi
     \if@twoside\else
        \setcounter{page}\@ne
     \fi
    }
\fi
\newcommand\appendix{\par
  \setcounter{section}{0}%
  \setcounter{subsection}{0}%
  \gdef\thesection{\@Alph\c@section}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\renewcommand \theequation {\@arabic\c@equation}
\newcounter{figure}
\renewcommand \thefigure {\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}
               {\@float{figure}}
               {\end@float}
\newenvironment{figure*}
               {\@dblfloat{figure}}
               {\end@dblfloat}
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}
               {\@float{table}}
               {\end@float}
\newenvironment{table*}
               {\@dblfloat{table}}
               {\end@dblfloat}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    #1: #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg{2.55em}
\newcommand\@dotsep{4.5}
\setcounter{tocdepth}{3}
\newcommand\tableofcontents{%
    \section*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }
\newcommand*\l@part[2]{%
  \ifnum \c@tocdepth >-2\relax
    \addpenalty\@secpenalty
    \addvspace{2.25em \@plus\p@}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      {\leavevmode
       \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
       \nobreak
       \if@compatibility
         \global\@nobreaktrue
         \everypar{\global\@nobreakfalse\everypar{}}%
      \fi
    \endgroup
  \fi}
\newcommand*\l@section[2]{%
  \ifnum \c@tocdepth >\z@
    \addpenalty\@secpenalty
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
    \endgroup
  \fi}
\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
\newcommand\listoffigures{%
    \section*{\listfigurename
      \@mkboth{\MakeUppercase\listfigurename}%
              {\MakeUppercase\listfigurename}}%
    \@starttoc{lof}%
    }
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\newcommand\listoftables{%
    \section*{\listtablename
      \@mkboth{%
          \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
    \@starttoc{lot}%
    }
\let\l@table\l@figure
\newdimen\bibindent
\setlength\bibindent{1.5em}
\newenvironment{thebibliography}[1]
     {\section*{\refname
        \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
      \endlist}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
\let\@openbib@code\@empty
\newenvironment{theindex}
               {\if@twocolumn
                  \@restonecolfalse
                \else
                  \@restonecoltrue
                \fi
                \columnseprule \z@
                \columnsep 35\p@
                \twocolumn[\section*{\indexname}]%
                \@mkboth{\MakeUppercase\indexname}%
                        {\MakeUppercase\indexname}%
                \thispagestyle{plain}\parindent\z@
                \parskip\z@ \@plus .3\p@\relax
                \let\item\@idxitem}
               {\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
\renewcommand\footnoterule{%
  \kern-3\p@
  \hrule\@width.4\columnwidth
  \kern2.6\p@}
\newcommand\@makefntext[1]{%
    \parindent 1em%
    \noindent
    \hb@xt@1.8em{\hss\@makefnmark}#1}
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
\def\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\day, \number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\pagestyle{plain}
\pagenumbering{arabic}
\if@twoside
\else
  \raggedbottom
\fi
\if@twocolumn
  \twocolumn
  \sloppy
  \flushbottom
\else
  \onecolumn
\fi
\endinput
%%
%% End of file `article.cls'.

%%%%%%%%%%%%%%%%%%%%% End /macros/base/article.cls %%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%% Start /macros/packages/amsfonts/amssymb.sty %%%%%%%%%%%%%

%%
%% This is file `amssymb.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% amssymb.dtx 
%% 
%%% ====================================================================
%%%  @LaTeX-file{
%%%     filename        = "amssymb.dtx",
%%%     version         = "2.2c",
%%%     date            = "1997/05/15",
%%%     time            = "11:10:27",
%%%     author          = "American Mathematical Society",
%%%     copyright       = "Copyright (C) 1996 American Mathematical Society,
%%%                        all rights reserved.  Copying of this file is
%%%                        authorized only if either:
%%%                        (1) you make absolutely no changes to your copy,
%%%                        including name; OR
%%%                        (2) if you do make changes, you first rename it
%%%                        to some other name.",
%%%     address         = "American Mathematical Society,
%%%                        Technical Support,
%%%                        Electronic Products and Services,
%%%                        P. O. Box 6248,
%%%                        Providence, RI 02940,
%%%                        USA",
%%%     telephone       = "401-455-4080 or (in the USA and Canada)
%%%                        800-321-4AMS (321-4267)",
%%%     FAX             = "401-331-3842",
%%%     checksum        = "01698 351 1072 17688",
%%%     email           = "tech-support@ams.org (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "latex, amslatex, ams-latex, math symbol,
%%%                        amsfonts, msam, msbm",
%%%     supported       = "yes",
%%%     abstract        = "This is part of the AMSFonts distribution.
%%%                        It is a \LaTeX{} option that defines symbol
%%%                        names for all the math symbols in the fonts
%%%                        MSAM and MSBM, of the AMSFonts (2.0+) package.",
%%%     docstring       = "The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%  }
%%% ====================================================================
\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
[1994/12/01]% LaTeX date must be December 1994 or later
\ProvidesPackage{amssymb}[1996/11/03 v2.2b]
\DeclareOption{psamsfonts}{\PassOptionsToPackage{psamsfonts}{amsfonts}}
\ProcessOptions\relax
\RequirePackage{amsfonts}[1995/01/01]
\let\square\relax \let\rightsquigarrow\square \let\lozenge\square
\let\vartriangleright\square \let\vartriangleleft\square
\let\trianglerighteq\square \let\trianglelefteq\square
\DeclareMathSymbol{\boxdot}       {\mathbin}{AMSa}{"00}
\DeclareMathSymbol{\boxplus}      {\mathbin}{AMSa}{"01}
\DeclareMathSymbol{\boxtimes}     {\mathbin}{AMSa}{"02}
\DeclareMathSymbol{\square}       {\mathord}{AMSa}{"03}
\DeclareMathSymbol{\blacksquare}  {\mathord}{AMSa}{"04}
\DeclareMathSymbol{\centerdot}    {\mathbin}{AMSa}{"05}
\DeclareMathSymbol{\lozenge}      {\mathord}{AMSa}{"06}
\DeclareMathSymbol{\blacklozenge} {\mathord}{AMSa}{"07}
\DeclareMathSymbol{\circlearrowright}   {\mathrel}{AMSa}{"08}
\DeclareMathSymbol{\circlearrowleft}    {\mathrel}{AMSa}{"09}
%% In amsfonts.sty:
%%\DeclareMathSymbol{\rightleftharpoons}{\mathrel}{AMSa}{"0A}
\DeclareMathSymbol{\leftrightharpoons}  {\mathrel}{AMSa}{"0B}
\DeclareMathSymbol{\boxminus}     {\mathbin}{AMSa}{"0C}
\DeclareMathSymbol{\Vdash}        {\mathrel}{AMSa}{"0D}
\DeclareMathSymbol{\Vvdash}       {\mathrel}{AMSa}{"0E}
\DeclareMathSymbol{\vDash}        {\mathrel}{AMSa}{"0F}
\DeclareMathSymbol{\twoheadrightarrow}  {\mathrel}{AMSa}{"10}
\DeclareMathSymbol{\twoheadleftarrow}   {\mathrel}{AMSa}{"11}
\DeclareMathSymbol{\leftleftarrows}     {\mathrel}{AMSa}{"12}
\DeclareMathSymbol{\rightrightarrows}   {\mathrel}{AMSa}{"13}
\DeclareMathSymbol{\upuparrows}         {\mathrel}{AMSa}{"14}
\DeclareMathSymbol{\downdownarrows} {\mathrel}{AMSa}{"15}
\DeclareMathSymbol{\upharpoonright} {\mathrel}{AMSa}{"16}
 \let\restriction\upharpoonright
\DeclareMathSymbol{\downharpoonright}   {\mathrel}{AMSa}{"17}
\DeclareMathSymbol{\upharpoonleft}  {\mathrel}{AMSa}{"18}
\DeclareMathSymbol{\downharpoonleft}{\mathrel}{AMSa}{"19}
\DeclareMathSymbol{\rightarrowtail} {\mathrel}{AMSa}{"1A}
\DeclareMathSymbol{\leftarrowtail}  {\mathrel}{AMSa}{"1B}
\DeclareMathSymbol{\leftrightarrows}{\mathrel}{AMSa}{"1C}
\DeclareMathSymbol{\rightleftarrows}{\mathrel}{AMSa}{"1D}
\DeclareMathSymbol{\Lsh}            {\mathrel}{AMSa}{"1E}
\DeclareMathSymbol{\Rsh}            {\mathrel}{AMSa}{"1F}
\DeclareMathSymbol{\rightsquigarrow}  {\mathrel}{AMSa}{"20}
\DeclareMathSymbol{\leftrightsquigarrow}{\mathrel}{AMSa}{"21}
\DeclareMathSymbol{\looparrowleft}  {\mathrel}{AMSa}{"22}
\DeclareMathSymbol{\looparrowright} {\mathrel}{AMSa}{"23}
\DeclareMathSymbol{\circeq}       {\mathrel}{AMSa}{"24}
\DeclareMathSymbol{\succsim}      {\mathrel}{AMSa}{"25}
\DeclareMathSymbol{\gtrsim}       {\mathrel}{AMSa}{"26}
\DeclareMathSymbol{\gtrapprox}    {\mathrel}{AMSa}{"27}
\DeclareMathSymbol{\multimap}     {\mathrel}{AMSa}{"28}
\DeclareMathSymbol{\therefore}    {\mathrel}{AMSa}{"29}
\DeclareMathSymbol{\because}      {\mathrel}{AMSa}{"2A}
\DeclareMathSymbol{\doteqdot}     {\mathrel}{AMSa}{"2B}
 \let\Doteq\doteqdot
\DeclareMathSymbol{\triangleq}    {\mathrel}{AMSa}{"2C}
\DeclareMathSymbol{\precsim}      {\mathrel}{AMSa}{"2D}
\DeclareMathSymbol{\lesssim}      {\mathrel}{AMSa}{"2E}
\DeclareMathSymbol{\lessapprox}   {\mathrel}{AMSa}{"2F}
\DeclareMathSymbol{\eqslantless}  {\mathrel}{AMSa}{"30}
\DeclareMathSymbol{\eqslantgtr}   {\mathrel}{AMSa}{"31}
\DeclareMathSymbol{\curlyeqprec}  {\mathrel}{AMSa}{"32}
\DeclareMathSymbol{\curlyeqsucc}  {\mathrel}{AMSa}{"33}
\DeclareMathSymbol{\preccurlyeq}  {\mathrel}{AMSa}{"34}
\DeclareMathSymbol{\leqq}         {\mathrel}{AMSa}{"35}
\DeclareMathSymbol{\leqslant}     {\mathrel}{AMSa}{"36}
\DeclareMathSymbol{\lessgtr}      {\mathrel}{AMSa}{"37}
\DeclareMathSymbol{\backprime}    {\mathord}{AMSa}{"38}
\DeclareMathSymbol{\risingdotseq} {\mathrel}{AMSa}{"3A}
\DeclareMathSymbol{\fallingdotseq}{\mathrel}{AMSa}{"3B}
\DeclareMathSymbol{\succcurlyeq}  {\mathrel}{AMSa}{"3C}
\DeclareMathSymbol{\geqq}         {\mathrel}{AMSa}{"3D}
\DeclareMathSymbol{\geqslant}     {\mathrel}{AMSa}{"3E}
\DeclareMathSymbol{\gtrless}      {\mathrel}{AMSa}{"3F}
%% in amsfonts.sty
%% \DeclareMathSymbol{\sqsubset}    {\mathrel}{AMSa}{"40}
%% \DeclareMathSymbol{\sqsupset}    {\mathrel}{AMSa}{"41}
\DeclareMathSymbol{\vartriangleright}{\mathrel}{AMSa}{"42}
\DeclareMathSymbol{\vartriangleleft} {\mathrel}{AMSa}{"43}
\DeclareMathSymbol{\trianglerighteq} {\mathrel}{AMSa}{"44}
\DeclareMathSymbol{\trianglelefteq}  {\mathrel}{AMSa}{"45}
\DeclareMathSymbol{\bigstar}    {\mathord}{AMSa}{"46}
\DeclareMathSymbol{\between}    {\mathrel}{AMSa}{"47}
\DeclareMathSymbol{\blacktriangledown}  {\mathord}{AMSa}{"48}
\DeclareMathSymbol{\blacktriangleright} {\mathrel}{AMSa}{"49}
\DeclareMathSymbol{\blacktriangleleft}  {\mathrel}{AMSa}{"4A}
\DeclareMathSymbol{\vartriangle}        {\mathrel}{AMSa}{"4D}
\DeclareMathSymbol{\blacktriangle}      {\mathord}{AMSa}{"4E}
\DeclareMathSymbol{\triangledown}       {\mathord}{AMSa}{"4F}
\DeclareMathSymbol{\eqcirc}       {\mathrel}{AMSa}{"50}
\DeclareMathSymbol{\lesseqgtr}    {\mathrel}{AMSa}{"51}
\DeclareMathSymbol{\gtreqless}    {\mathrel}{AMSa}{"52}
\DeclareMathSymbol{\lesseqqgtr}   {\mathrel}{AMSa}{"53}
\DeclareMathSymbol{\gtreqqless}   {\mathrel}{AMSa}{"54}
\DeclareMathSymbol{\Rrightarrow}  {\mathrel}{AMSa}{"56}
\DeclareMathSymbol{\Lleftarrow}   {\mathrel}{AMSa}{"57}
\DeclareMathSymbol{\veebar}       {\mathbin}{AMSa}{"59}
\DeclareMathSymbol{\barwedge}     {\mathbin}{AMSa}{"5A}
\DeclareMathSymbol{\doublebarwedge} {\mathbin}{AMSa}{"5B}
%% In amsfonts.sty
%%\DeclareMathSymbol{\angle}        {\mathord}{AMSa}{"5C}
\DeclareMathSymbol{\measuredangle}  {\mathord}{AMSa}{"5D}
\DeclareMathSymbol{\sphericalangle} {\mathord}{AMSa}{"5E}
\DeclareMathSymbol{\varpropto}    {\mathrel}{AMSa}{"5F}
\DeclareMathSymbol{\smallsmile}   {\mathrel}{AMSa}{"60}
\DeclareMathSymbol{\smallfrown}   {\mathrel}{AMSa}{"61}
\DeclareMathSymbol{\Subset}       {\mathrel}{AMSa}{"62}
\DeclareMathSymbol{\Supset}       {\mathrel}{AMSa}{"63}
\DeclareMathSymbol{\Cup}          {\mathbin}{AMSa}{"64}
 \let\doublecup\Cup
\DeclareMathSymbol{\Cap}          {\mathbin}{AMSa}{"65}
 \let\doublecap\Cap
\DeclareMathSymbol{\curlywedge}   {\mathbin}{AMSa}{"66}
\DeclareMathSymbol{\curlyvee}     {\mathbin}{AMSa}{"67}
\DeclareMathSymbol{\leftthreetimes} {\mathbin}{AMSa}{"68}
\DeclareMathSymbol{\rightthreetimes}{\mathbin}{AMSa}{"69}
\DeclareMathSymbol{\subseteqq}    {\mathrel}{AMSa}{"6A}
\DeclareMathSymbol{\supseteqq}    {\mathrel}{AMSa}{"6B}
\DeclareMathSymbol{\bumpeq}       {\mathrel}{AMSa}{"6C}
\DeclareMathSymbol{\Bumpeq}       {\mathrel}{AMSa}{"6D}
\DeclareMathSymbol{\lll}          {\mathrel}{AMSa}{"6E}
 \let\llless\lll
\DeclareMathSymbol{\ggg}          {\mathrel}{AMSa}{"6F}
 \let\gggtr\ggg
\DeclareMathSymbol{\circledS}     {\mathord}{AMSa}{"73}
\DeclareMathSymbol{\pitchfork}    {\mathrel}{AMSa}{"74}
\DeclareMathSymbol{\dotplus}      {\mathbin}{AMSa}{"75}
\DeclareMathSymbol{\backsim}      {\mathrel}{AMSa}{"76}
\DeclareMathSymbol{\backsimeq}    {\mathrel}{AMSa}{"77}
\DeclareMathSymbol{\complement}   {\mathord}{AMSa}{"7B}
\DeclareMathSymbol{\intercal}     {\mathbin}{AMSa}{"7C}
\DeclareMathSymbol{\circledcirc}  {\mathbin}{AMSa}{"7D}
\DeclareMathSymbol{\circledast}   {\mathbin}{AMSa}{"7E}
\DeclareMathSymbol{\circleddash}  {\mathbin}{AMSa}{"7F}
%%   Begin AMSb declarations
\DeclareMathSymbol{\lvertneqq}    {\mathrel}{AMSb}{"00}
\DeclareMathSymbol{\gvertneqq}    {\mathrel}{AMSb}{"01}
\DeclareMathSymbol{\nleq}         {\mathrel}{AMSb}{"02}
\DeclareMathSymbol{\ngeq}         {\mathrel}{AMSb}{"03}
\DeclareMathSymbol{\nless}        {\mathrel}{AMSb}{"04}
\DeclareMathSymbol{\ngtr}         {\mathrel}{AMSb}{"05}
\DeclareMathSymbol{\nprec}        {\mathrel}{AMSb}{"06}
\DeclareMathSymbol{\nsucc}        {\mathrel}{AMSb}{"07}
\DeclareMathSymbol{\lneqq}        {\mathrel}{AMSb}{"08}
\DeclareMathSymbol{\gneqq}        {\mathrel}{AMSb}{"09}
\DeclareMathSymbol{\nleqslant}    {\mathrel}{AMSb}{"0A}
\DeclareMathSymbol{\ngeqslant}    {\mathrel}{AMSb}{"0B}
\DeclareMathSymbol{\lneq}         {\mathrel}{AMSb}{"0C}
\DeclareMathSymbol{\gneq}         {\mathrel}{AMSb}{"0D}
\DeclareMathSymbol{\npreceq}      {\mathrel}{AMSb}{"0E}
\DeclareMathSymbol{\nsucceq}      {\mathrel}{AMSb}{"0F}
\DeclareMathSymbol{\precnsim}     {\mathrel}{AMSb}{"10}
\DeclareMathSymbol{\succnsim}     {\mathrel}{AMSb}{"11}
\DeclareMathSymbol{\lnsim}        {\mathrel}{AMSb}{"12}
\DeclareMathSymbol{\gnsim}        {\mathrel}{AMSb}{"13}
\DeclareMathSymbol{\nleqq}        {\mathrel}{AMSb}{"14}
\DeclareMathSymbol{\ngeqq}        {\mathrel}{AMSb}{"15}
\DeclareMathSymbol{\precneqq}     {\mathrel}{AMSb}{"16}
\DeclareMathSymbol{\succneqq}     {\mathrel}{AMSb}{"17}
\DeclareMathSymbol{\precnapprox}  {\mathrel}{AMSb}{"18}
\DeclareMathSymbol{\succnapprox}  {\mathrel}{AMSb}{"19}
\DeclareMathSymbol{\lnapprox}     {\mathrel}{AMSb}{"1A}
\DeclareMathSymbol{\gnapprox}     {\mathrel}{AMSb}{"1B}
\DeclareMathSymbol{\nsim}         {\mathrel}{AMSb}{"1C}
\DeclareMathSymbol{\ncong}        {\mathrel}{AMSb}{"1D}
\DeclareMathSymbol{\diagup}       {\mathord}{AMSb}{"1E}
\DeclareMathSymbol{\diagdown}     {\mathord}{AMSb}{"1F}
\DeclareMathSymbol{\varsubsetneq}   {\mathrel}{AMSb}{"20}
\DeclareMathSymbol{\varsupsetneq}   {\mathrel}{AMSb}{"21}
\DeclareMathSymbol{\nsubseteqq}     {\mathrel}{AMSb}{"22}
\DeclareMathSymbol{\nsupseteqq}     {\mathrel}{AMSb}{"23}
\DeclareMathSymbol{\subsetneqq}     {\mathrel}{AMSb}{"24}
\DeclareMathSymbol{\supsetneqq}     {\mathrel}{AMSb}{"25}
\DeclareMathSymbol{\varsubsetneqq}  {\mathrel}{AMSb}{"26}
\DeclareMathSymbol{\varsupsetneqq}  {\mathrel}{AMSb}{"27}
\DeclareMathSymbol{\subsetneq}      {\mathrel}{AMSb}{"28}
\DeclareMathSymbol{\supsetneq}      {\mathrel}{AMSb}{"29}
\DeclareMathSymbol{\nsubseteq}      {\mathrel}{AMSb}{"2A}
\DeclareMathSymbol{\nsupseteq}      {\mathrel}{AMSb}{"2B}
\DeclareMathSymbol{\nparallel}      {\mathrel}{AMSb}{"2C}
\DeclareMathSymbol{\nmid}           {\mathrel}{AMSb}{"2D}
\DeclareMathSymbol{\nshortmid}      {\mathrel}{AMSb}{"2E}
\DeclareMathSymbol{\nshortparallel} {\mathrel}{AMSb}{"2F}
\DeclareMathSymbol{\nvdash}         {\mathrel}{AMSb}{"30}
\DeclareMathSymbol{\nVdash}         {\mathrel}{AMSb}{"31}
\DeclareMathSymbol{\nvDash}         {\mathrel}{AMSb}{"32}
\DeclareMathSymbol{\nVDash}         {\mathrel}{AMSb}{"33}
\DeclareMathSymbol{\ntrianglerighteq}{\mathrel}{AMSb}{"34}
\DeclareMathSymbol{\ntrianglelefteq}{\mathrel}{AMSb}{"35}
\DeclareMathSymbol{\ntriangleleft}  {\mathrel}{AMSb}{"36}
\DeclareMathSymbol{\ntriangleright} {\mathrel}{AMSb}{"37}
\DeclareMathSymbol{\nleftarrow}     {\mathrel}{AMSb}{"38}
\DeclareMathSymbol{\nrightarrow}    {\mathrel}{AMSb}{"39}
\DeclareMathSymbol{\nLeftarrow}     {\mathrel}{AMSb}{"3A}
\DeclareMathSymbol{\nRightarrow}    {\mathrel}{AMSb}{"3B}
\DeclareMathSymbol{\nLeftrightarrow}{\mathrel}{AMSb}{"3C}
\DeclareMathSymbol{\nleftrightarrow}{\mathrel}{AMSb}{"3D}
\DeclareMathSymbol{\divideontimes}  {\mathbin}{AMSb}{"3E}
\DeclareMathSymbol{\varnothing}     {\mathord}{AMSb}{"3F}
\DeclareMathSymbol{\nexists}        {\mathord}{AMSb}{"40}
\DeclareMathSymbol{\Finv}           {\mathord}{AMSb}{"60}
\DeclareMathSymbol{\Game}           {\mathord}{AMSb}{"61}
%% In amsfonts.sty:
%%\DeclareMathSymbol{\mho}          {\mathord}{AMSb}{"66}
\DeclareMathSymbol{\eth}            {\mathord}{AMSb}{"67}
\DeclareMathSymbol{\eqsim}          {\mathrel}{AMSb}{"68}
\DeclareMathSymbol{\beth}           {\mathord}{AMSb}{"69}
\DeclareMathSymbol{\gimel}          {\mathord}{AMSb}{"6A}
\DeclareMathSymbol{\daleth}         {\mathord}{AMSb}{"6B}
\DeclareMathSymbol{\lessdot}        {\mathbin}{AMSb}{"6C}
\DeclareMathSymbol{\gtrdot}         {\mathbin}{AMSb}{"6D}
\DeclareMathSymbol{\ltimes}         {\mathbin}{AMSb}{"6E}
\DeclareMathSymbol{\rtimes}         {\mathbin}{AMSb}{"6F}
\DeclareMathSymbol{\shortmid}       {\mathrel}{AMSb}{"70}
\DeclareMathSymbol{\shortparallel}  {\mathrel}{AMSb}{"71}
\DeclareMathSymbol{\smallsetminus}  {\mathbin}{AMSb}{"72}
\DeclareMathSymbol{\thicksim}       {\mathrel}{AMSb}{"73}
\DeclareMathSymbol{\thickapprox}    {\mathrel}{AMSb}{"74}
\DeclareMathSymbol{\approxeq}       {\mathrel}{AMSb}{"75}
\DeclareMathSymbol{\succapprox}     {\mathrel}{AMSb}{"76}
\DeclareMathSymbol{\precapprox}     {\mathrel}{AMSb}{"77}
\DeclareMathSymbol{\curvearrowleft} {\mathrel}{AMSb}{"78}
\DeclareMathSymbol{\curvearrowright}{\mathrel}{AMSb}{"79}
\DeclareMathSymbol{\digamma}        {\mathord}{AMSb}{"7A}
\DeclareMathSymbol{\varkappa}       {\mathord}{AMSb}{"7B}
\DeclareMathSymbol{\Bbbk}           {\mathord}{AMSb}{"7C}
\DeclareMathSymbol{\hslash}         {\mathord}{AMSb}{"7D}
%% In amsfonts.sty:
%%\DeclareMathSymbol{\hbar}         {\mathord}{AMSb}{"7E}
\DeclareMathSymbol{\backepsilon}    {\mathrel}{AMSb}{"7F}
\endinput
%%
%% End of file `amssymb.sty'.

%%%%%%%%%%%%%% End /macros/packages/amsfonts/amssymb.sty %%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%% Start /macros/amsmath/amsmath.sty %%%%%%%%%%%%%%%%%%

%%
%% This is file `amsmath.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% amsmath.dtx 
%% 
%%% ====================================================================
%%% @LaTeX-file{
%%%   filename  = "amsmath.dtx",
%%%   version   = "2.05",
%%%   date      = "2000/01/15",
%%%   time      = "18:47:02 EST",
%%%   author    = "American Mathematical Society",
%%%   copyright = "Copyright 1995, 1999 American Mathematical Society,
%%%                all rights reserved.  Copying of this file is
%%%                authorized only if either:
%%%                (1) you make absolutely no changes to your copy,
%%%                including name; OR
%%%                (2) if you do make changes, you first rename it
%%%                to some other name.",
%%%   address   = "American Mathematical Society,
%%%                Technical Support,
%%%                Electronic Products and Services,
%%%                P. O. Box 6248,
%%%                Providence, RI 02940,
%%%                USA",
%%%   telephone = "401-455-4080 or (in the USA and Canada)
%%%                800-321-4AMS (321-4267)",
%%%   FAX       = "401-331-3842",
%%%   checksum  = "00242 5602 20272 192780",
%%%   email     = "tech-support@ams.org (Internet)",
%%%   codetable = "ISO/ASCII",
%%%   keywords  = "latex, amslatex, math, amsmath",
%%%   supported = "yes",
%%%   abstract  = "This is a \LaTeX{} package that provides a variety of
%%%                extra mathematical features, largely derived from
%%%                AMS-\TeX{}.",
%%%   docstring = "The checksum field above contains a CRC-16 checksum
%%%                as the first value, followed by the equivalent of
%%%                the standard UNIX wc (word count) utility output of
%%%                lines, words, and characters.  This is produced by
%%%                Robert Solovay's checksum utility.",
%%% }
%%% ====================================================================
\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
[1994/12/01]% LaTeX date must be December 1994 or later
\ProvidesPackage{amsmath}[2000/01/15 v2.05 AMS math features]
\DeclareOption{intlimits}{\let\ilimits@\displaylimits}
\DeclareOption{nointlimits}{\let\ilimits@\nolimits}
\DeclareOption{sumlimits}{\let\slimits@\displaylimits}
\DeclareOption{nosumlimits}{\let\slimits@\nolimits}
\DeclareOption{namelimits}{\PassOptionsToPackage{namelimits}{amsopn}}
\DeclareOption{nonamelimits}{%
  \PassOptionsToPackage{nonamelimits}{amsopn}}
\newif\ifctagsplit@
\newif\iftagsleft@
\DeclareOption{leqno}{\tagsleft@true}
\DeclareOption{reqno}{\tagsleft@false}
\DeclareOption{centertags}{\ctagsplit@true}
\DeclareOption{tbtags}{\ctagsplit@false}
\DeclareOption{cmex10}{%
  \ifnum\cmex@opt=\@ne \def\cmex@opt{0}%
  \else \def\cmex@opt{10}\fi
}
\@ifundefined{cmex@opt}{\def\cmex@opt{7}}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\if@fleqn
\newskip\@mathmargin
\@mathmargin\@centering
\DeclareOption{fleqn}{%
    \@fleqntrue
    \@mathmargin = -1sp
    \let\mathindent=\@mathmargin
    \AtBeginDocument{%
        \ifdim\@mathmargin= -1sp
            \@mathmargin\leftmargini minus\leftmargini
        \fi
    }%
}
\DeclareOption{?}{}
\ExecuteOptions{nointlimits,sumlimits,namelimits,centertags}
\ProcessOptions\par
\@ifpackagewith{amsmath}{?}{%
  \typeout{^^J%
Documentation for the amsmath package is found in amsldoc.dvi^^J%
(or .pdf or .tex).^^J%
^^J%
See also http://www.ams.org/tex/amslatex.html.^^J%
^^J%
Note: Using the first edition of The LaTeX Companion (1994) without^^J%
errata as a guide for amsmath use is not recommended.^^J%
  }%
}{%
  \typeout{%
For additional information on amsmath, use the \lq ?\rq\space option.%
  }%
}
\ifnum\cmex@opt=7 \relax
  \DeclareFontShape{OMX}{cmex}{m}{n}{%
    <-8>cmex7<8>cmex8<9>cmex9%
    <10><10.95><12><14.4><17.28><20.74><24.88>cmex10%
  }{}%
  \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
\else
  \ifnum\cmex@opt=\z@ % need to override cmex7 fontdef from amsfonts
    \begingroup
    \fontencoding{OMX}\fontfamily{cmex}%
    \expandafter\let\csname OMX+cmex\endcsname\relax
    \try@load@fontshape
    \endgroup
    \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
    \def\cmex@opt{10}%
  \fi
\fi
\RequirePackage{amstext}[1995/01/25]
\RequirePackage{amsbsy}[1995/01/20]
\RequirePackage{amsopn}[1995/01/20]
\def\@amsmath@err{\PackageError{amsmath}}
\providecommand{\AmS}{{\protect\AmSfont
  A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
\newcommand{\AmSfont}{%
  \usefont{OMS}{cmsy}{\if\@xp\@car\f@series\@nil bb\else m\fi}{n}}
\def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen@everymath\@emptytoks
  \m@th$#2#3$}}
\@ifundefined{inf@bad}{%
  \newcount\inf@bad \inf@bad=1000000 \relax
}{}
\DeclareRobustCommand{\tmspace}[3]{%
  \ifmmode\mskip#1#2\else\kern#1#3\fi\relax}
\renewcommand{\,}{\tmspace+\thinmuskip{.1667em}}
\let\thinspace\,
\renewcommand{\!}{\tmspace-\thinmuskip{.1667em}}
\let\negthinspace\!
\renewcommand{\:}{\tmspace+\medmuskip{.2222em}}
\let\medspace\:
\newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}}
\renewcommand{\;}{\tmspace+\thickmuskip{.2777em}}
\let\thickspace\;
\newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}}
\newcommand{\mspace}[1]{\mskip#1\relax}
\begingroup \catcode`\"=12 % in case activated by a preceding package
\def\@tempa#1#2\@nil{%
  \ifx\delimiter#1\@tempcnta#2\relax\else\@tempcnta\z@\fi
}
\@xp\@tempa\vert\@empty\@nil
\ifnum\@tempcnta>\z@
  \advance\@tempcnta "4000000
  \xdef\lvert{\delimiter\number\@tempcnta\space }
  \advance\@tempcnta "1000000
  \xdef\rvert{\delimiter\number\@tempcnta\space }
\else
  \ifx\@@undefined\lvert
    % Fall back to cmex encoding since we don't know what else to do.
    \DeclareMathDelimiter{\lvert}
      {\mathopen}{symbols}{"6A}{largesymbols}{"0C}
    \DeclareMathDelimiter{\rvert}
      {\mathclose}{symbols}{"6A}{largesymbols}{"0C}
  \fi
\fi
\@xp\@tempa\Vert\@empty\@nil
\ifnum\@tempcnta>\z@
  \advance\@tempcnta "4000000
  \xdef\lVert{\delimiter\number\@tempcnta\space }
  \advance\@tempcnta "1000000
  \xdef\rVert{\delimiter\number\@tempcnta\space }
\else
  \ifx\@@undefined\lVert
    \DeclareMathDelimiter{\lVert}
      {\mathopen}{symbols}{"6B}{largesymbols}{"0D}
    \DeclareMathDelimiter{\rVert}
      {\mathclose}{symbols}{"6B}{largesymbols}{"0D}
  \fi
\fi
\endgroup % restore "
\@saveprimitive\over\@@over
\@saveprimitive\atop\@@atop
\@saveprimitive\above\@@above
\@saveprimitive\overwithdelims\@@overwithdelims
\@saveprimitive\atopwithdelims\@@atopwithdelims
\@saveprimitive\abovewithdelims\@@abovewithdelims
\DeclareRobustCommand{\primfrac}[1]{%
  \PackageWarning{amsmath}{%
Foreign command \@backslashchar#1;\MessageBreak
\protect\frac\space or \protect\genfrac\space should be used instead%
\MessageBreak
  }
  \global\@xp\let\csname#1\@xp\endcsname\csname @@#1\endcsname
  \csname#1\endcsname
}
\renewcommand{\over}{\primfrac{over}}
\renewcommand{\atop}{\primfrac{atop}}
\renewcommand{\above}{\primfrac{above}}
\renewcommand{\overwithdelims}{\primfrac{overwithdelims}}
\renewcommand{\atopwithdelims}{\primfrac{atopwithdelims}}
\renewcommand{\abovewithdelims}{\primfrac{abovewithdelims}}
\DeclareRobustCommand{\frac}[2]{{\begingroup#1\endgroup\@@over#2}}
\newcommand{\dfrac}{\genfrac{}{}{}0}
\newcommand{\tfrac}{\genfrac{}{}{}1}
\DeclareRobustCommand{\binom}{\genfrac()\z@{}}
\newcommand{\dbinom}{\genfrac(){0pt}0}
\newcommand{\tbinom}{\genfrac(){0pt}1}
\DeclareRobustCommand{\genfrac}[4]{%
  \def\@tempa{#1#2}%
  \edef\@tempb{\@nx\@genfrac\@mathstyle{#4}%
    \csname @@\ifx @#3@over\else above\fi
    \ifx\@tempa\@empty \else withdelims\fi\endcsname}
  \@tempb{#1#2#3}}
\def\@genfrac#1#2#3#4#5{{#1{\begingroup#4\endgroup#2#3\relax#5}}}
\def\@mathstyle#1{%
  \ifx\@empty#1\@empty\relax
  \else\ifcase#1\displaystyle % case 0
    \or\textstyle\or\scriptstyle\else\scriptscriptstyle\fi\fi}
\begingroup \catcode`\"=12
\edef\@tempa{\string\mathchar"}
\def\@tempb#1"#2\@nil{#1"}
\edef\@tempc{\expandafter\@tempb\meaning\coprod "\@nil}
\ifx\@tempa\@tempc
  \global\let\coprod@\coprod
  \gdef\coprod{\DOTSB\coprod@\slimits@}
  \global\let\bigvee@\bigvee
  \gdef\bigvee{\DOTSB\bigvee@\slimits@}
  \global\let\bigwedge@\bigwedge
  \gdef\bigwedge{\DOTSB\bigwedge@\slimits@}
  \global\let\biguplus@\biguplus
  \gdef\biguplus{\DOTSB\biguplus@\slimits@}
  \global\let\bigcap@\bigcap
  \gdef\bigcap{\DOTSB\bigcap@\slimits@}
  \global\let\bigcup@\bigcup
  \gdef\bigcup{\DOTSB\bigcup@\slimits@}
  \global\let\prod@\prod
  \gdef\prod{\DOTSB\prod@\slimits@}
  \global\let\sum@\sum
  \gdef\sum{\DOTSB\sum@\slimits@}
  \global\let\bigotimes@\bigotimes
  \gdef\bigotimes{\DOTSB\bigotimes@\slimits@}
  \global\let\bigoplus@\bigoplus
  \gdef\bigoplus{\DOTSB\bigoplus@\slimits@}
  \global\let\bigodot@\bigodot
  \gdef\bigodot{\DOTSB\bigodot@\slimits@}
  \global\let\bigsqcup@\bigsqcup
  \gdef\bigsqcup{\DOTSB\bigsqcup@\slimits@}
\fi
\endgroup
\newcommand{\leftroot}{\@amsmath@err{\Invalid@@\leftroot}\@eha}
\newcommand{\uproot}{\@amsmath@err{\Invalid@@\uproot}\@eha}
\newcount\uproot@
\newcount\leftroot@
\renewcommand{\root}{\relaxnext@
  \DN@{\ifx\@let@token\uproot\let\next@\nextii@\else
   \ifx\@let@token\leftroot\let\next@\nextiii@\else
   \let\next@\plainroot@\fi\fi\next@}%
  \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}%
  \def\nextiv@{\ifx\@let@token\@sptoken\DN@. {\FN@\nextv@}\else
   \DN@.{\FN@\nextv@}\fi\next@.}%
  \def\nextv@{\ifx\@let@token\leftroot\let\next@\nextvi@\else
   \let\next@\plainroot@\fi\next@}%
  \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
   \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
  \def\nextvii@{\ifx\@let@token\@sptoken
   \DN@. {\FN@\nextviii@}\else
   \DN@.{\FN@\nextviii@}\fi\next@.}%
  \def\nextviii@{\ifx\@let@token\uproot\let\next@\nextix@\else
   \let\next@\plainroot@\fi\next@}%
  \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
  \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
\def\plainroot@#1\of#2{\setbox\rootbox\hbox{%
 $\m@th\scriptscriptstyle{#1}$}%
 \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
 {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}

\@ifundefined{sqrtsign}{\let\sqrtsign\@@sqrt}{}
\def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrtsign{#2}$}%
 \dimen@\ht\z@\advance\dimen@-\dp\z@
 \setbox\@ne\hbox{$\m@th#1\mskip\uproot@ mu$}%
 \advance\dimen@ by1.667\wd\@ne
 \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
 \mkern-10mu\mkern\leftroot@ mu\boxz@}
\begingroup \catcode`\"=12
\@ifundefined{varGamma}{%
  \toks@{%
    \DeclareMathSymbol{\varGamma}{\mathord}{letters}{"00}
    \DeclareMathSymbol{\varDelta}{\mathord}{letters}{"01}
    \DeclareMathSymbol{\varTheta}{\mathord}{letters}{"02}
    \DeclareMathSymbol{\varLambda}{\mathord}{letters}{"03}
    \DeclareMathSymbol{\varXi}{\mathord}{letters}{"04}
    \DeclareMathSymbol{\varPi}{\mathord}{letters}{"05}
    \DeclareMathSymbol{\varSigma}{\mathord}{letters}{"06}
    \DeclareMathSymbol{\varUpsilon}{\mathord}{letters}{"07}
    \DeclareMathSymbol{\varPhi}{\mathord}{letters}{"08}
    \DeclareMathSymbol{\varPsi}{\mathord}{letters}{"09}
    \DeclareMathSymbol{\varOmega}{\mathord}{letters}{"0A}
  }%
}{%
  \toks@{}
}
\expandafter
\endgroup
\the\toks@
\@saveprimitive\overline\@@overline
\DeclareRobustCommand{\overline}[1]{\@@overline{#1}}
\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}
\newcommand{\implies}{\DOTSB\;\Longrightarrow\;}
\newcommand{\impliedby}{\DOTSB\;\Longleftarrow\;}
\begingroup \catcode`\"=12 % in case activated by a preceding package
\gdef\And{\DOTSB\;\mathchar"3026 \;}
\endgroup
\newcommand{\nobreakdash}{\leavevmode
  \toks@\@emptytoks \def\@tempa##1{\toks@\@xp{\the\toks@-}\FN@\next@}%
  \DN@{\ifx\@let@token-\@xp\@tempa
       \else\setboxz@h{\the\toks@\nobreak}\unhbox\z@\fi}%
  \FN@\next@
}
\renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
  \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}
\let\ifgtest@\iffalse                              % initial value
\def\gtest@true{\global\let\ifgtest@\iftrue}
\def\gtest@false{\global\let\ifgtest@\iffalse}
\let\DOTSI\relax
\let\DOTSB\relax
\let\DOTSX\relax
{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h
 \uppercase{%
  \gdef\math@#1#2#3#4#5#6\math@{\gtest@false\ifx 7#1\ifx 8#2%
  \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\gtest@true
  \fi\fi\fi\fi\fi}}}
{\uccode`7=`c \uccode`8=`h \uccode`9=`\"
 \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\gtest@false
  \ifx 7#1\ifx 8#2\ifx 9#5\gtest@true\xdef\meaning@{9#6}\fi\fi\fi}}}
\newcount\classnum@
\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096
 \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
 \gdef\thedots@{\dotsb@}\fi}
{\uccode`4=`b \uccode`5=`i \uccode`6=`n
 \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@
  \def\nextii@##1\mathbin@{\ifx\@sptoken\@let@token\gtest@true\fi}%
  \gtest@false\DN@##1\mathbin@{}%
 \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
{\uccode`4=`r \uccode`5=`e \uccode`6=`l
 \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@
  \def\nextii@##1\mathrel@{\ifx\@sptoken\@let@token\gtest@true\fi}%
 \gtest@false\DN@##1\mathrel@{}%
 \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
{\uccode`5=`m \uccode`6=`a \uccode`7=`c
 \uppercase{\gdef\macro@#1#2#3#4\macro@{\gtest@false
  \ifx 5#1\ifx 6#2\ifx 7#3\gtest@true
  \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
\def\macro@@#1->#2\macro@@{#2}
\newcount\DOTSCASE@
{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
 \uppercase{\gdef\DOTS@#1#2#3#4#5{\gtest@false\DN@##1\DOTS@{}%
  \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@
  \fi\fi\fi\fi\fi
  \next@}}}
{\uccode`3=`B \uccode`4=`I \uccode`5=`X
 \uppercase{\gdef\DOTS@@#1{\relaxnext@
  \def\nextii@##1\DOTS@{\ifx\@sptoken\@let@token\gtest@true\fi}%
  \DN@{\FN@\nextii@}%
  \ifx 3#1\global\DOTSCASE@\z@\else
  \ifx 4#1\global\DOTSCASE@\@ne\else
  \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}%
  \fi\fi\fi\next@}}}
{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
 \uppercase{\gdef\not@#1#2#3#4{\relaxnext@
  \def\nextii@##1\not@{\ifx\@sptoken\@let@token\gtest@true\fi}%
 \gtest@false\DN@##1\not@{}%
 \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi
 \fi\next@}}}
\def\keybin@{\gtest@true
 \ifx\@let@token+\else\ifx\@let@token=\else
 \ifx\@let@token<\else\ifx\@let@token>\else
 \ifx\@let@token-\else\ifx\@let@token*\else\ifx\@let@token:\else
   \gtest@false\fi\fi\fi\fi\fi\fi\fi}
\@ifundefined{@ldots}{\def\@ldots{\mathellipsis}}{}
\DeclareRobustCommand{\ldots}{%
  \ifmmode \mathellipsis \else \textellipsis \fi
}
\DeclareRobustCommand{\dots}{%
  \ifmmode \@xp\mdots@\else \@xp\textellipsis \fi
}
\def\tdots@{\leavevmode\unskip\relaxnext@
 \DN@{$\m@th\@ldots\,
   \ifx\@let@token,\,$\else\ifx\@let@token.\,$\else
   \ifx\@let@token;\,$\else\ifx\@let@token:\,$\else
   \ifx\@let@token?\,$\else\ifx\@let@token!\,$\else
     $ \fi\fi\fi\fi\fi\fi}%
  \ \FN@\next@}
\def\mdots@{\FN@\mdots@@}
\def\mdots@@{\gdef\thedots@{\dotso@}%
 \ifx\@let@token\boldsymbol \gdef\thedots@\boldsymbol{\boldsymboldots@}%
 \else\ifx,\@let@token \gdef\thedots@{\dotsc}%
 \else\ifx\not\@let@token \gdef\thedots@{\dotsb@}%
 \else\keybin@
 \ifgtest@\gdef\thedots@{\dotsb@}%
 \else\xdef\meaning@{\meaning\@let@token..........}%
   \xdef\meaning@@{\meaning@}%
  \@xp\math@\meaning@\math@
  \ifgtest@
   \@xp\mathch@\meaning@\mathch@
   \ifgtest@\@xp\getmathch@\meaning@\getmathch@\fi
  \else\@xp\macro@\meaning@@\macro@
  \ifgtest@
   \@xp\not@\meaning@\not@\ifgtest@\gdef\thedots@{\dotsb@}%
  \else\@xp\DOTS@\meaning@\DOTS@
  \ifgtest@
   \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
    \or\gdef\thedots@{\dotsi}\else\fi
  \else\@xp\math@\meaning@\math@
  \ifgtest@\@xp\mathbin@\meaning@\mathbin@
  \ifgtest@\gdef\thedots@{\dotsb@}%
  \else\@xp\mathrel@\meaning@\mathrel@
  \ifgtest@\gdef\thedots@{\dotsb@}%
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
 \thedots@}
\def\boldsymboldots@#1{%
  \bold@true\let\@let@token=#1\let\delayed@=#1\mdots@@
  \boldsymbol#1\bold@false}
\def\@cdots{\mathinner{\cdotp\cdotp\cdotp}}
\newcommand{\dotsi}{\!\@cdots}
\let\dotsb@\@cdots
\def\rightdelim@{\gtest@true
 \ifx\@let@token)\else
 \ifx\@let@token]\else
 \ifx\@let@token\rbrack\else
 \ifx\@let@token\}\else
 \ifx\@let@token\rbrace\else
 \ifx\@let@token\rangle\else
 \ifx\@let@token\rceil\else
 \ifx\@let@token\rfloor\else
 \ifx\@let@token\rgroup\else
 \ifx\@let@token\rmoustache\else
 \ifx\@let@token\right\else
 \ifx\@let@token\bigr\else
 \ifx\@let@token\biggr\else
 \ifx\@let@token\Bigr\else
 \ifx\@let@token\Biggr\else\gtest@false
 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
\def\extra@{%
 \rightdelim@\ifgtest@
 \else\ifx\@let@token$\gtest@true
 \else\xdef\meaning@{\meaning\@let@token..........}%
 \@xp\macro@\meaning@\macro@\ifgtest@
 \@xp\DOTS@\meaning@\DOTS@
 \ifgtest@
 \ifnum\DOTSCASE@=\tw@\gtest@true\else\gtest@false
 \fi\fi\fi\fi\fi}
\newif\ifbold@
\def\dotso@{\relaxnext@
 \ifbold@
  \let\@let@token\delayed@
  \def\nextii@{\extra@\@ldots\ifgtest@\,\fi}%
 \else
  \def\nextii@{\DN@{\extra@\@ldots\ifgtest@\,\fi}\FN@\next@}%
 \fi
 \nextii@}
\def\extrap@#1{%
 \DN@{#1\,}%
 \ifx\@let@token,\else
 \ifx\@let@token;\else
 \ifx\@let@token.\else\extra@
 \ifgtest@\else
 \let\next@#1\fi\fi\fi\fi\next@}
\DeclareRobustCommand{\cdots}{\DN@{\extrap@\@cdots}\FN@\next@}
\let\dotsb\cdots
\let\dotsm\cdots
\DeclareRobustCommand{\dotso}{\relax
  \ifmmode \DN@{\extrap@\@ldots}%
  \else \let\next@\tdots@\fi
  \FN@\next@}
\DeclareRobustCommand{\dotsc}{%
  \DN@{\ifx\@let@token;\@ldots\,%
       \else \ifx\@let@token.\@ldots\,%
       \else \extra@\@ldots \ifgtest@\,\fi
       \fi\fi}%
  \FN@\next@}
\renewcommand{\longrightarrow}{%
  \DOTSB\protect\relbar\protect\joinrel\rightarrow}
\renewcommand{\Longrightarrow}{%
  \DOTSB\protect\Relbar\protect\joinrel\Rightarrow}
\renewcommand{\longleftarrow}{%
  \DOTSB\leftarrow\protect\joinrel\protect\relbar}
\renewcommand{\Longleftarrow}{%
  \DOTSB\Leftarrow\protect\joinrel\protect\Relbar}
\renewcommand{\longleftrightarrow}{\DOTSB\leftarrow\joinrel\rightarrow}
\renewcommand{\Longleftrightarrow}{\DOTSB\Leftarrow\joinrel\Rightarrow}
\renewcommand{\mapsto}{\DOTSB\mapstochar\rightarrow}
\renewcommand{\longmapsto}{\DOTSB\mapstochar\longrightarrow}
\renewcommand{\hookrightarrow}{\DOTSB\lhook\joinrel\rightarrow}
\renewcommand{\hookleftarrow}{\DOTSB\leftarrow\joinrel\rhook}
\renewcommand{\iff}{\DOTSB\;\Longleftrightarrow\;}
\renewcommand{\doteq}{%
  \DOTSB\mathrel{\mathop{\kern0pt =}\limits^{\textstyle.}}}
\newif\if@display
\everydisplay\@xp{\the\everydisplay \@displaytrue}
\renewcommand{\int}{\DOTSI\intop\ilimits@}
\renewcommand{\oint}{\DOTSI\ointop\ilimits@}
\def\intkern@{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}}
\def\intdots@{\mathchoice{\@cdots}%
 {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}%
 {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}%
 {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
\newcommand{\iint}{\DOTSI\protect\MultiIntegral{2}}
\newcommand{\iiint}{\DOTSI\protect\MultiIntegral{3}}
\newcommand{\iiiint}{\DOTSI\protect\MultiIntegral{4}}
\newcommand{\idotsint}{\DOTSI\protect\MultiIntegral{0}}
\newcommand{\MultiIntegral}[1]{%
  \edef\ints@c{\noexpand\intop
    \ifnum#1=\z@\noexpand\intdots@\else\noexpand\intkern@\fi
    \ifnum#1>\tw@\noexpand\intop\noexpand\intkern@\fi
    \ifnum#1>\thr@@\noexpand\intop\noexpand\intkern@\fi
    \noexpand\intop
    \noexpand\ilimits@
  }%
  \futurelet\@let@token\ints@a
}
\def\ints@a{%
  \ifx\limits\@let@token \ints@b
  \else \ifx\displaylimits\@let@token
    \ints@b
  \fi\fi
  \ints@c
}
\def\ints@b{%
  \mkern-7mu\mathchoice{\mkern-2mu}{}{}{}%
  \mathop\bgroup
    \mkern7mu\mathchoice{\mkern2mu}{}{}{}%
    \let\ilimits@\egroup
}%
\newbox\Mathstrutbox@
\setbox\Mathstrutbox@=\hbox{}
\def\Mathstrut@{\copy\Mathstrutbox@}
\begingroup \catcode`\"=12
\gdef\resetMathstrut@{%
  \setbox\z@\hbox{%
    \mathchardef\@tempa\mathcode`\(\relax
    \def\@tempb##1"##2##3{\the\textfont"##3\char"}%
    \expandafter\@tempb\meaning\@tempa \relax
  }%
  \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
}
\endgroup
\addto@hook\every@math@size{\resetMathstrut@}
\newbox\strutbox@
\def\strut@{\copy\strutbox@}
\addto@hook\every@math@size{%
  \global\setbox\strutbox@\hbox{\lower.5\normallineskiplimit
         \vbox{\kern-\normallineskiplimit\copy\strutbox}}}
\renewcommand{\big}{\bBigg@\@ne}
\renewcommand{\Big}{\bBigg@{1.5}}
\renewcommand{\bigg}{\bBigg@\tw@}
\renewcommand{\Bigg}{\bBigg@{2.5}}
\def\bBigg@#1#2{%
  {\@mathmeasure\z@{\nulldelimiterspace\z@}%
     {\left#2\vcenter to#1\big@size{}\right.}%
   \box\z@}}
\addto@hook\every@math@size{%
  \global\big@size 1.2\ht\Mathstrutbox@
  \global\advance\big@size 1.2\dp\Mathstrutbox@ }
\newdimen\big@size
\def\accentclass@{7}
\def\noaccents@{\def\accentclass@{0}}
\DeclareFontEncoding{OML}{}{\noaccents@}
\DeclareFontEncoding{OMS}{}{\noaccents@}
\newcommand{\dddot}[1]{%
  {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
   \hbox{\normalfont ...}\vss}}}}
\newcommand{\ddddot}[1]{%
  {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
   \hbox{\normalfont....}\vss}}}}
\newdimen\macc@skew
\begingroup \catcode`\"=12
\gdef\mathaccentV#1#2#3#4#5{%
  \ifmmode
    \mathaccent"\accentclass@ #2#3#4{%
      \let\mathaccentV\inner@mathaccent #5\acc@check\@empty
    }%
  \else
    \@xp\nonmatherr@\csname#1\endcsname
  \fi
}
\endgroup
\newcommand{\acc@check}{}
\newcommand{\acc@error}{}
\def\acc@check{\@ifnextchar\@empty\relax\acc@error}
\def\acc@error{%
  \@amsmath@err{%
    Improper argument for math accent:\MessageBreak
    Extra braces must be added to prevent wrong output%
  }\@ehc
}
\def\macc@aftergroup{\aftergroup\macc@last \let\macc@aftergroup\@empty}
\begingroup \catcode`\"=12
\gdef\inner@mathaccent#1#2#3#4#5{%
  \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group}%
  \edef\macc@group{\ifnum\mathgroup=\m@ne 1\else\the\mathgroup\fi}%
  \count@=\skewchar\textfont
    \ifnum\skewchar\textfont\macc@group=\m@ne \@ne \else \macc@group\fi
  \advance\count@"\accentclass@ 100 \mathchardef\macc@skewchar\count@
  \let\mathaccentV\macc@a
  \macc@a \@empty#2#3#4{#5}%
  \ifdim\lastkern=-\macc@skew \unkern\else\kern\macc@skew\fi
}
\endgroup
\begingroup \catcode`\"=12
\gdef\macc@a#1#2#3#4#5{%
  \global\let\macc@cont\macc@c
  \mathchardef\macc@code="\accentclass@#2#3#4\relax
  \macc@aftergroup
  \macc@palette\macc@b{#5}%
}
\endgroup
\def\macc@palette#1#2{#1\textstyle{#2}}
\def\macc@b#1#2{%
  \def\macc@palette##1{##1#1}%
  \global\let\macc@cont\macc@f
  \setbox\z@\hbox{$#1#2\macc@skewchar$}%
  \macc@cont#1{#2}%
}
\def\macc@f#1#2{%
  \mathaccent\macc@code{#2\kern\macc@skew}%
  \kern-\macc@skew
}
\def\macc@f#1#2{%
  \gdef\macc@last{\kern-\macc@skew\macc@back#2}%
  \setbox\tw@\hbox{$#1#2\mathord{}\macc@skewchar$}%
  \global\macc@skew\tw@\wd\z@ \global\advance\macc@skew-\tw@\wd\tw@
  #1\mathaccent\macc@code{%
    \setbox\z@\hbox{$#1#2$}%
    \setbox\tw@\hbox{}\ht\tw@\ht\z@ \dp\tw@\dp\z@
    \dimen@\wd\z@ \advance\dimen@\macc@skew \wd\tw@\dimen@
    \xdef\macc@back{\kern-\the\wd\z@}%
    \box\tw@
  }%
  \kern-\macc@skew
}
\def\Hat{\hat}
\def\Check{\check}
\def\Tilde{\tilde}
\def\Acute{\acute}
\def\Grave{\grave}
\def\Dot{\dot}
\def\Ddot{\ddot}
\def\Breve{\breve}
\def\Bar{\bar}
\def\Vec{\vec}
\def\set@mathaccent#1#2#3#4{%
  \xdef#2{\@nx\protect\@nx\mathaccentV
    {\@xp\@gobble\string#2}\hexnumber@#1#4}%
}
\begingroup\catcode`\"=12
\def\@tempa#1{\@xp\@tempb\meaning#1\@nil#1}
\def\@tempb#1>#2#3 #4\@nil#5{%
  \@xp\ifx\csname#3\endcsname\mathaccent
    \@tempc#4?"7777\@nil#5%
  \else
    \PackageWarningNoLine{amsmath}{%
      Unable to redefine math accent \string#5}%
  \fi
}
\def\@tempc#1"#2#3#4#5#6\@nil#7{%
  \chardef\@tempd="#3\relax\set@mathaccent\@tempd{#7}{#2}{#4#5}}
\@tempa{\hat}
\@tempa{\check}
\@tempa{\tilde}
\@tempa{\acute}
\@tempa{\grave}
\@tempa{\dot}
\@tempa{\ddot}
\@tempa{\breve}
\@tempa{\bar}
\@tempa{\vec}
%%\@tempa\widetilde
%%\@tempa\widehat
\endgroup
\def\nonmatherr@#1{\@amsmath@err{\protect
  #1 allowed only in math mode}\@ehd}
\renewcommand{\bmod}{\nonscript\mskip-\medmuskip\mkern5mu\mathbin
  {\operator@font mod}\penalty900
  \mkern5mu\nonscript\mskip-\medmuskip}
\newcommand{\pod}[1]{\allowbreak
  \if@display\mkern18mu\else\mkern8mu\fi(#1)}
\renewcommand{\pmod}[1]{\pod{{\operator@font mod}\mkern6mu#1}}
\newcommand{\mod}[1]{\allowbreak\if@display\mkern18mu
  \else\mkern12mu\fi{\operator@font mod}\,\,#1}
\newcommand{\cfrac}[3][c]{{\displaystyle\frac{%
  \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}%
  \kern-\nulldelimiterspace}
\newcommand{\overset}[2]{\binrel@{#2}%
  \binrel@@{\mathop{\kern\z@#2}\limits^{#1}}}
\newcommand{\underset}[2]{\binrel@{#2}%
  \binrel@@{\mathop{\kern\z@#2}\limits_{#1}}}
\newcommand{\sideset}[3]{%
  \@mathmeasure\z@\displaystyle{#3}%
  \global\setbox\@ne\vbox to\ht\z@{}\dp\@ne\dp\z@
  \setbox\tw@\box\@ne
  \@mathmeasure4\displaystyle{\copy\tw@#1}%
  \@mathmeasure6\displaystyle{#3\nolimits#2}%
  \dimen@-\wd6 \advance\dimen@\wd4 \advance\dimen@\wd\z@
  \hbox to\dimen@{}\mathop{\kern-\dimen@\box4\box6}%
}
\renewcommand{\smash}[1][tb]{%
  \def\mb@t{\ht}\def\mb@b{\dp}\def\mb@tb{\ht\z@\z@\dp}%
  \edef\finsm@sh{\csname mb@#1\endcsname\z@\z@ \box\z@}%
  \ifmmode \@xp\mathpalette\@xp\mathsm@sh
  \else \@xp\makesm@sh
  \fi
}
\mathchardef\std@minus\mathcode`\-\relax
\mathchardef\std@equal\mathcode`\=\relax
\AtBeginDocument{%
  \mathchardef\std@minus\mathcode`\-\relax
  \mathchardef\std@equal\mathcode`\=\relax
}
\def\relbar{\mathrel{\mathpalette\mathsm@sh\std@minus}}
\def\Relbar{\mathrel\std@equal}
\def\arrowfill@#1#2#3#4{%
  $\m@th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip
   \relax#4#1\mkern-7mu%
   \cleaders\hbox{$#4\mkern-2mu#2\mkern-2mu$}\hfill
   \mkern-7mu#3$%
}
\def\leftarrowfill@{\arrowfill@\leftarrow\relbar\relbar}
\def\rightarrowfill@{\arrowfill@\relbar\relbar\rightarrow}
\def\leftrightarrowfill@{\arrowfill@\leftarrow\relbar\rightarrow}
\def\Leftarrowfill@{\arrowfill@\Leftarrow\Relbar\Relbar}
\def\Rightarrowfill@{\arrowfill@\Relbar\Relbar\Rightarrow}
\def\Leftrightarrowfill@{\arrowfill@\Leftarrow\Relbar\Rightarrow}
\def\overarrow@#1#2#3{\vbox{\ialign{##\crcr#1#2\crcr
 \noalign{\nointerlineskip}$\m@th\hfil#2#3\hfil$\crcr}}}
\renewcommand{\overrightarrow}{%
  \mathpalette{\overarrow@\rightarrowfill@}}
\renewcommand{\overleftarrow}{%
  \mathpalette{\overarrow@\leftarrowfill@}}
\newcommand{\overleftrightarrow}{%
  \mathpalette{\overarrow@\leftrightarrowfill@}}
\def\underarrow@#1#2#3{%
 \vtop{\ialign{##\crcr$\m@th\hfil#2#3\hfil$\crcr
 \noalign{\nointerlineskip\kern1.3\ex@}#1#2\crcr}}}
\newcommand{\underrightarrow}{%
  \mathpalette{\underarrow@\rightarrowfill@}}
\newcommand{\underleftarrow}{%
  \mathpalette{\underarrow@\leftarrowfill@}}
\newcommand{\underleftrightarrow}{%
  \mathpalette{\underarrow@\leftrightarrowfill@}}
\def\ext@arrow#1#2#3#4#5#6#7{%
  \mathrel{\mathop{%
    \setbox\z@\hbox{#5\displaystyle}%
    \setbox\tw@\vbox{\m@th
      \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}%
      \hbox{$\scriptstyle\mkern#3mu{#7}\mkern#4mu$}%
      \copy\z@
    }%
    \hbox to\wd\tw@{\unhbox\z@}}%
  \limits
    \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi
                       #7\if0#2\else\mkern#2mu\fi}}%
    \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi
                       #6\if0#2\else\mkern#2mu\fi}}}%
}
\newcommand{\xrightarrow}[2][]{\ext@arrow 0359\rightarrowfill@{#1}{#2}}
\newcommand{\xleftarrow}[2][]{\ext@arrow 3095\leftarrowfill@{#1}{#2}}
\newenvironment{subarray}[1]{%
  \vcenter\bgroup
  \Let@ \restore@math@cr \default@tag
  \baselineskip\fontdimen10 \scriptfont\tw@
  \advance\baselineskip\fontdimen12 \scriptfont\tw@
  \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
  \lineskiplimit\lineskip
  \ialign\bgroup\ifx c#1\hfil\fi
    $\m@th\scriptstyle##$\hfil\crcr
}{%
  \crcr\egroup\egroup
}
\newcommand{\substack}[1]{\subarray{c}#1\endsubarray}
\newenvironment{smallmatrix}{\null\,\vcenter\bgroup
  \Let@\restore@math@cr\default@tag
  \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip
  \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\thickspace\hfil
  $\m@th\scriptstyle##$\hfil\crcr
}{%
  \crcr\egroup\egroup\,%
}
\renewenvironment{matrix}{%
  \matrix@check\matrix\env@matrix
}{%
  \endarray \hskip -\arraycolsep
}
\def\env@matrix{\hskip -\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{*\c@MaxMatrixCols c}}
\newcount\c@MaxMatrixCols \c@MaxMatrixCols=10
\def\matrix@check#1{%
  \@xp\ifx\csname\@currenvir\endcsname#1%
  \else\matrix@error#1%
    \@xp\@gobble
  \fi
}
\def\matrix@error#1{%
  \@amsmath@err{%
Old form `\string#1' should be \string\begin{\@xp\@gobble\string#1}%
  }{%
`\string#1{...}' is old Plain-TeX syntax whose use is
ill-advised in LaTeX.%
  }%
}
\renewenvironment{pmatrix}{%
  \left(%
  \matrix@check\pmatrix\env@matrix
}{
  \endmatrix\right)%
}
\newenvironment{bmatrix}{\left[\env@matrix}{\endmatrix\right]}
\newenvironment{Bmatrix}{%
  \left\lbrace\env@matrix
}{%
  \endmatrix\right\rbrace
}
\newenvironment{vmatrix}{\left\lvert\env@matrix}{\endmatrix\right\rvert}
\newenvironment{Vmatrix}{\left\lVert\env@matrix}{\endmatrix\right\rVert}
\let\hdots\@ldots
\newcommand{\hdotsfor}[1]{%
  \ifx[#1\@xp\shdots@for\else\hdots@for\@ne{#1}\fi}
\newmuskip\dotsspace@
\def\shdots@for#1]{\hdots@for{#1}}
\def\hdots@for#1#2{\multicolumn{#2}c%
  {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@
   \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}%
           \hfill
   \mkern-#1\dotsspace@}%
   }
\renewenvironment{cases}{%
  \matrix@check\cases\env@cases
}{%
  \endarray\right.%
}
\def\env@cases{%
  \let\@ifnextchar\new@ifnextchar
  \left\lbrace
  \def\arraystretch{1.2}%
  \array{@{}l@{\quad}l@{}}%
}
\newcounter{parentequation}% Counter for ``parent equation''.
\@ifundefined{ignorespacesafterend}{%
  \def\ignorespacesafterend{\global\@ignoretrue}%
}{}
\newenvironment{subequations}{%
  \refstepcounter{equation}%
  \protected@edef\theparentequation{\theequation}%
  \setcounter{parentequation}{\value{equation}}%
  \setcounter{equation}{0}%
  \def\theequation{\theparentequation\alph{equation}}%
  \ignorespaces
}{%
  \setcounter{equation}{\value{parentequation}}%
  \ignorespacesafterend
}
\newcommand{\numberwithin}[3][\arabic]{%
  \@ifundefined{c@#2}{\@nocounterr{#2}}{%
    \@ifundefined{c@#3}{\@nocnterr{#3}}{%
      \@addtoreset{#2}{#3}%
      \@xp\xdef\csname the#2\endcsname{%
        \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}}}}%
}
\newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
\newcount\dspbrk@lvl
\dspbrk@lvl=-1
\interdisplaylinepenalty\@M
\newcommand{\allowdisplaybreaks}{%
  \new@ifnextchar[\allowdspbrks@{\allowdspbrks@[4]}}
\def\allowdspbrks@[#1]{%
  \interdisplaylinepenalty\getdsp@pen{#1}}
\def\getdsp@pen#1{%
  \ifcase #1\relax \@M
    \or 9999
    \or 6999
    \or 2999
    \or \z@\fi}
\newcommand{\displaybreak}{\new@ifnextchar[\dspbrk@{\dspbrk@[4]}}
\chardef\dspbrk@context=\sixt@@n
\def\dspbrk@[#1]{%
  \ifmeasuring@
  \else
    \ifcase\dspbrk@context % case 0 --- OK
      \global\dspbrk@lvl #1\relax
    \or                    % case 1 --- inside a box
      \nogood@displaybreak
    \else                  % other cases --- outside of a display
      \@amsmath@err{\Invalid@@\displaybreak}\@eha
    \fi
  \fi
}
\def\nogood@displaybreak{%
  \@amsmath@err{\protect
\displaybreak\space cannot be applied here}%
{One of the enclosing environments creates an
  unbreakable box\MessageBreak
(e.g., split, aligned, gathered, ...).}%
}
\def\math@cr{\relax\iffalse{\fi\ifnum0=`}\fi
  \@ifstar{\global\@eqpen\@M\math@cr@}%
          {\global\@eqpen
             \ifnum\dspbrk@lvl <\z@ \interdisplaylinepenalty
              \else -\@getpen\dspbrk@lvl \fi
           \math@cr@}}
\def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}}
\def\math@cr@@[#1]{\ifnum0=`{\fi \iffalse}\fi\math@cr@@@
  \noalign{\vskip#1\relax}}
\def\Let@{\let\\\math@cr}
\def\restore@math@cr{\def\math@cr@@@{\cr}}
\restore@math@cr
\newcommand{\intertext}{\@amsmath@err{\Invalid@@\intertext}\@eha}
\def\intertext@{%
  \def\intertext##1{%
    \ifvmode\else\\\@empty\fi
    \noalign{%
      \penalty\postdisplaypenalty\vskip\belowdisplayskip
      \vbox{\normalbaselines
        \ifdim\linewidth=\columnwidth
        \else \parshape\@ne \@totalleftmargin \linewidth
        \fi
        \noindent##1\par}%
      \penalty\predisplaypenalty\vskip\abovedisplayskip%
    }%
}}
\newhelp\tag@help
  {tag cannot be used at this point.\space
   If you don't understand why^^Jyou should consult
   the documentation.^^JBut don't worry: just continue, and I'll
   forget what happened.}
\def\gobble@tag{\@ifstar\@gobble\@gobble}
\def\invalid@tag#1{\@amsmath@err{#1}{\the\tag@help}\gobble@tag}
\def\dft@tag{\invalid@tag{\string\tag\space not allowed here}}
\def\default@tag{\let\tag\dft@tag}
\default@tag
\def\maketag@@{\@ifstar\maketag@@@\tagform@}
\def\maketag@@@#1{\hbox{\m@th\normalfont#1}}
\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
\iftagsleft@
  \def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor
    \hskip -\displaywidth\tagform@\theequation}}
\else
  \def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}}
\fi
\newcommand{\thetag}{\leavevmode\tagform@}
\def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@}
\def\make@df@tag@@#1{%
  \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
\def\make@df@tag@@@#1{\gdef\df@tag{\tagform@{#1}%
  \toks@\@xp{\p@equation{#1}}\edef\@currentlabel{\the\toks@}}}
\let\ltx@label\label
\def\label@in@display{%
    \ifx\df@label\@empty\else
        \@amsmath@err{Multiple \string\label's:
            label '\df@label' will be lost}\@eha
    \fi
    \gdef\df@label
}
\toks@\@xp{\@arrayparboxrestore \let\label\ltx@label}%
\edef\@arrayboxrestore{\the\toks@}
\let\df@label\@empty
\def\make@display@tag{%
    \if@eqnsw
        \refstepcounter{equation}%
        \tagform@\theequation
    \else
        \iftag@
            \df@tag
            \global\let\df@tag\@empty
        \fi
    \fi
    \ifmeasuring@
    \else
      \ifx\df@label\@empty\else
        \@xp\ltx@label\@xp{\df@label}%
        \global\let\df@label\@empty
      \fi
    \fi
}
\def\tag@in@align{%
    \relax
    \iftag@
        \DN@{\invalid@tag{Multiple \string\tag}}%
    \else
    \global\tag@true
    \nonumber
        \let\next@\make@df@tag
    \fi
    \next@
}
\newcommand{\raisetag}[1]{\skip@#1\relax
  \xdef\raise@tag{\vskip\iftagsleft@\else-\fi\the\skip@\relax}%
}
\let\raise@tag\@empty
\newcommand{\notag}{\nonumber}
\newif\ifinalign@
\newif\ifingather@
\@xp\def\@xp\@arrayparboxrestore\@xp{\@arrayparboxrestore
  \ingather@false\inalign@false \default@tag
  \let\spread@equation\@spread@equation
  \let\reset@equation\@empty
}
\newif\iftag@
\newif\ifst@rred
\newif\ifmeasuring@
\newif\ifshifttag@
\newcount\row@
\newcount\column@
\def\column@plus{%
    \global\advance\column@\@ne
}
\newcount\maxfields@
\def\add@amp#1{\if m#1&\@xp\add@amp\fi}
\def\add@amps#1{%
    \begingroup
    \count@#1\advance\count@-\column@
    \edef\@tempa{\endgroup
      \@xp\add@amp\romannumeral\number\count@ 000q}%
    \@tempa
}
\newhelp\andhelp@
{An extra & here is so disastrous that you should probably exit^^J
and fix things up.}
\newdimen\eqnshift@
\newdimen\alignsep@
\newdimen\tagshift@
\newcommand{\mintagsep}{.5\fontdimen6\textfont\tw@}
\newcommand{\minalignsep}{10pt}
\newdimen\tagwidth@
\newdimen\totwidth@
\newdimen\lineht@
\def\tag@width#1{%
    \ifcase\@xp#1\tag@lengths\fi
}

\def\savetaglength@{%
    \begingroup
        \let\or\relax
        \xdef\tag@lengths{\tag@lengths\or \the\wdz@}%
    \endgroup
}

\def\shift@tag#1{%
    \ifcase\@xp#1\tag@shifts\fi\relax
}

\let\tag@shifts\@empty
\def\saveshift@#1{%
    \begingroup
        \let\or\relax
        \xdef\tag@shifts{\or#1\tag@shifts}%
    \endgroup
}
\def\spread@equation{\openup\jot \let\spread@equation\@empty}
\let\@spread@equation\spread@equation
\def\displ@y{\@display@init{}}
\def\@display@init#1{%
    \global\dt@ptrue \spread@equation
    \everycr{%
        \noalign{%
            #1%
            \ifdt@p
                \global\dt@pfalse
                \vskip-\lineskiplimit
                \vskip\normallineskiplimit
            \else
                \penalty\@eqpen \global\dspbrk@lvl\m@ne
            \fi
        }%
    }%
}
\def\displ@y@{\@display@init{%
  \global\column@\z@ \global\dspbrk@lvl\m@ne
  \global\tag@false \global\let\raise@tag\@empty
}}
\def\black@#1{%
    \noalign{%
        \ifdim#1>\displaywidth
            \dimen@\prevdepth
            \nointerlineskip
            \vskip-\ht\strutbox@
            \vskip-\dp\strutbox@
            \vbox{\noindent\hbox to#1{\strut@\hfill}}%
            \prevdepth\dimen@
        \fi
    }%
}
\def\savecounters@{%
    \begingroup
        \def\@elt##1{%
          \global\csname c@##1\endcsname\the\csname c@##1\endcsname}%
        \xdef\@gtempa{%
            \cl@@ckpt
            \let\@nx\restorecounters@\@nx\@empty
        }%
    \endgroup
    \let\restorecounters@\@gtempa
}
\let\restorecounters@\@empty
\def\savealignstate@{%
    \begingroup
        \let\or\relax
        \xdef\@gtempa{%
            \global\totwidth@\the\totwidth@
            \global\row@\the\row@
            \gdef\@nx\tag@lengths{\tag@lengths}%
            \let\@nx\restorealignstate@\@nx\@empty
        }%
    \endgroup
    \let\restorealignstate@\@gtempa
}

\let\restorealignstate@\@empty
\def\savecolumn@{%
  \edef\restorecolumn@{%
    \global\column@\number\column@
    \let\@nx\restorecolumn@\@nx\@empty
  }%
}
\let\restorecolumn@\@empty
\newtoks\@envbody
\def\addto@envbody#1{\global\@envbody\@xp{\the\@envbody#1}}
\def\collect@body#1{%
  \@envbody{\@xp#1\@xp{\the\@envbody}}%
  \edef\process@envbody{\the\@envbody\@nx\end{\@currenvir}}%
  \@envbody\@emptytoks \def\begin@stack{b}%
  \begingroup
  \@xp\let\csname\@currenvir\endcsname\collect@@body
  \edef\process@envbody{\@xp\@nx\csname\@currenvir\endcsname}%
  \process@envbody
}
\def\push@begins#1\begin#2{%
  \ifx\end#2\else b\@xp\push@begins\fi
}
\def\collect@@body#1\end#2{%
  \edef\begin@stack{\push@begins#1\begin\end \@xp\@gobble\begin@stack}%
  \ifx\@empty\begin@stack
    \endgroup
    \@checkend{#2}%
    \addto@envbody{#1}%
  \else
    \addto@envbody{#1\end{#2}}%
  \fi
  \process@envbody % A little tricky! Note the grouping
}
\def\math@cr@@@aligned{%
  \ifodd\column@ \let\next@\@empty
  \else \def\next@{&\kern-\alignsep@}%
  \fi
  \next@ \cr
}
\newcommand{\start@aligned}[2]{%
    \RIfM@\else
        \nonmatherr@{\begin{\@currenvir}}%
    \fi
    \savecolumn@ % Assumption: called inside a group
    \null\,%
    \if #1t\vtop \else \if#1b \vbox \else \vcenter \fi \fi \bgroup
        \maxfields@#2\relax
        \ifnum\maxfields@>\m@ne
            \multiply\maxfields@\tw@
            \let\math@cr@@@\math@cr@@@alignedat
            \alignsep@\z@skip
        \else
            \let\math@cr@@@\math@cr@@@aligned
            \alignsep@\minalignsep
        \fi
        \Let@ \chardef\dspbrk@context\@ne
        \default@tag
        \spread@equation % no-op if already called
        \global\column@\z@
        \ialign\bgroup
           &\column@plus
            \hfil
            \strut@
            $\m@th\displaystyle{##}$%
            \tabskip\z@skip
           &\column@plus
            $\m@th\displaystyle{{}##}$%
            \hfil
            \tabskip\alignsep@
            \crcr
}
\def\math@cr@@@alignedat{%
    \ifnum\column@>\maxfields@
        \begingroup
          \measuring@false
          \@amsmath@err{Extra & on this line}%
            {\the\andhelp@}% "An extra & here is disastrous"
        \endgroup
    \fi
    \global\column@\z@
    \cr
}
\def\alignsafe@testopt#1#2{%
  \relax\iffalse{\fi\ifnum`}=0\fi
  \@ifnextchar[%
    {\let\@let@token\relax \ifnum`{=\z@\fi\iffalse}\fi#1}%
    {\let\@let@token\relax \ifnum`{=\z@\fi\iffalse}\fi#1[#2]}%
}
\newenvironment{aligned}{%
  \let\@testopt\alignsafe@testopt
  \aligned@a
}{%
  \crcr\egroup
  \restorecolumn@
  \egroup
}
\newcommand{\aligned@a}[1][c]{\start@aligned{#1}\m@ne}
\newenvironment{alignedat}{%
  \let\@testopt\alignsafe@testopt
  \alignedat@a
}{%
  \endaligned
}
\newcommand{\alignedat@a}[1][c]{\start@aligned{#1}}
\newenvironment{gathered}[1][c]{%
    \RIfM@\else
        \nonmatherr@{\begin{gathered}}%
    \fi
    \null\,%
    \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi \bgroup
        \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
        \spread@equation
        \ialign\bgroup
            \hfil\strut@$\m@th\displaystyle##$\hfil
            \crcr
}{%
  \endaligned
}
\def\start@gather#1{%
    \RIfM@
        \nomath@env
        \DN@{\@namedef{end\@currenvir}{}\@gobble}%
    \else
        $$%
        #1%
        \ifst@rred \else \global\@eqnswtrue \fi
        \let\next@\gather@
    \fi
    \collect@body\next@
}
\newenvironment{gather}{%
  \start@gather\st@rredfalse
}{%
  \math@cr \black@\totwidth@ \egroup
  $$\ignorespacesafterend
}

\newenvironment{gather*}{%
  \start@gather\st@rredtrue
}{%
  \endgather
}
\def\gather@#1{%
    \ingather@true \let\split\insplit@
    \let\tag\tag@in@align \let\label\label@in@display
    \chardef\dspbrk@context\z@
    \intertext@ \displ@y@ \Let@
    \let\math@cr@@@\math@cr@@@gather
    \gmeasure@{#1}%
    \global\shifttag@false
    \tabskip\z@skip
    \global\row@\@ne
    \halign to\displaywidth\bgroup
        \strut@
        \setboxz@h{$\m@th\displaystyle{##}$}%
        \calc@shift@gather
        \set@gather@field
        \tabskip\@centering
       &\setboxz@h{\strut@{##}}%
        \place@tag@gather
        \tabskip \iftagsleft@ \gdisplaywidth@ \else \z@skip \span\fi
        \crcr
        #1%
}
\def\gmeasure@#1{%
    \begingroup
        \measuring@true
        \totwidth@\z@
        \global\let\tag@lengths\@empty
        \savecounters@
        \setbox\@ne\vbox{%
            \everycr{\noalign{\global\tag@false
              \global\let\raise@tag\@empty \global\column@\z@}}%
            \let\label\@gobble
            \halign{%
                \setboxz@h{$\m@th\displaystyle{##}$}%
                \ifdim\wdz@>\totwidth@
                    \global\totwidth@\wdz@
                \fi
               &\setboxz@h{\strut@{##}}%
                \savetaglength@
                \crcr
                #1%
                \math@cr@@@
            }%
        }%
        \restorecounters@
        \if@fleqn
            \global\advance\totwidth@\@mathmargin
        \fi
        \iftagsleft@
            \ifdim\totwidth@>\displaywidth
                \global\let\gdisplaywidth@\totwidth@
            \else
                \global\let\gdisplaywidth@\displaywidth
            \fi
        \fi
    \endgroup
}
\def\math@cr@@@gather{%
    \ifst@rred\nonumber\fi
   &\relax
    \make@display@tag
    \ifst@rred\else\global\@eqnswtrue\fi
    \global\advance\row@\@ne
    \cr
}
\def\calc@shift@gather{%
    \dimen@\mintagsep\relax
    \tagwidth@\tag@width\row@\relax
    \if@fleqn
        \global\eqnshift@\@mathmargin
        \ifdim\tagwidth@>\z@
            \advance\dimen@\tagwidth@
            \iftagsleft@
                \ifdim\dimen@>\@mathmargin
                    \global\shifttag@true
                \fi
            \else
                \advance\dimen@\@mathmargin
                \advance\dimen@\wdz@
                \ifdim\dimen@>\displaywidth
                   \global\shifttag@true
                \fi
            \fi
        \fi
    \else
        \global\eqnshift@\displaywidth
        \global\advance\eqnshift@-\wdz@
        \ifdim\tagwidth@>\z@
            \multiply\dimen@\tw@
            \advance\dimen@\wdz@
            \advance\dimen@\tagwidth@
            \ifdim\dimen@>\displaywidth
                \global\shifttag@true
            \else
                \ifdim\eqnshift@<4\tagwidth@
                    \global\advance\eqnshift@-\tagwidth@
                \fi
            \fi
        \fi
        \global\divide\eqnshift@\tw@
        \iftagsleft@
            \global\eqnshift@-\eqnshift@
            \global\advance\eqnshift@\displaywidth
            \global\advance\eqnshift@-\wdz@
        \fi
        \ifdim\eqnshift@<\z@
            \global\eqnshift@\z@
        \fi
    \fi
}
\def\place@tag@gather{%
    \iftagsleft@
        \kern-\gdisplaywidth@
        \ifshifttag@
            \rlap{\vbox{%
                \normalbaselines
                \boxz@
                \vbox to\lineht@{}%
                \raise@tag
            }}%
            \global\shifttag@false
        \else
            \rlap{\boxz@}%
        \fi
    \else
        \ifdim\totwidth@>\displaywidth
            \dimen@\totwidth@
            \advance\dimen@-\displaywidth
            \kern-\dimen@
        \fi
        \ifshifttag@
            \llap{\vtop{%
                \raise@tag
                \normalbaselines
                \setbox\@ne\null
                \dp\@ne\lineht@
                \box\@ne
                \boxz@
            }}%
            \global\shifttag@false
        \else
            \llap{\boxz@}%
        \fi
    \fi
}
\def\set@gather@field{%
    \iftagsleft@
        \global\lineht@\ht\z@
    \else
        \global\lineht@\dp\z@
    \fi
    \kern\eqnshift@
    \boxz@
    \hfil
}
\newif\ifxxat@

\newif\ifcheckat@

\let\xatlevel@\@empty
\def\start@align#1#2#3{%
    \let\xatlevel@#1% always \z@, \@ne, or \tw@
    \maxfields@#3\relax
    \ifnum\maxfields@>\m@ne
        \checkat@true
        \ifnum\xatlevel@=\tw@
            \xxat@true
        \fi
        \multiply\maxfields@\tw@
    \else
        \checkat@false
    \fi
    \ifingather@
        \iffalse{\fi\ifnum0=`}\fi
        \DN@{\vcenter\bgroup\savealignstate@\align@#2}%
    \else
        \ifmmode
          \if@display
             \DN@{\align@recover}%
          \else
            \nomath@env
            \DN@{\@namedef{end\@currenvir}{}\@gobble}%
          \fi
        \else
            $$%
            \let\split\insplit@
            \DN@{\align@#2}%
        \fi
    \fi
    \collect@body\next@
}
\def\align@recover#1#2#3{%
  \endgroup
  \@amsmath@err{%
Erroneous nesting of equation structures;\MessageBreak
trying to recover with `aligned'%
  }\@ehc
  \begin{aligned}\relax#1\end{aligned}%
}
\newenvironment{alignat}{%
  \start@align\z@\st@rredfalse
}{%
  \endalign
}
\newenvironment{alignat*}{%
  \start@align\z@\st@rredtrue
}{%
  \endalign
}
\newenvironment{xalignat}{%
  \start@align\@ne\st@rredfalse
}{%
  \endalign
}
\newenvironment{xalignat*}{%
  \start@align\@ne\st@rredtrue
}{%
  \endalign
}
\newenvironment{xxalignat}{%
  \start@align\tw@\st@rredtrue
}{%
  \endalign
}
\newenvironment{align}{%
  \start@align\@ne\st@rredfalse\m@ne
}{%
  \math@cr \black@\totwidth@
  \egroup
  \ifingather@
    \restorealignstate@
    \egroup
    \nonumber
    \ifnum0=`{\fi\iffalse}\fi
  \else
    $$%
  \fi
  \ignorespacesafterend
}
\newenvironment{align*}{%
  \start@align\@ne\st@rredtrue\m@ne
}{%
  \endalign
}
\newenvironment{flalign}{%
  \start@align\tw@\st@rredfalse\m@ne
}{%
  \endalign
}
\newenvironment{flalign*}{%
  \start@align\tw@\st@rredtrue\m@ne
}{%
  \endalign
}
\def\align@#1#2{%
    \inalign@true \intertext@ \Let@ \chardef\dspbrk@context\z@
    \ifingather@\else\displ@y@\fi
    \let\math@cr@@@\math@cr@@@align
    \ifxxat@\else \let\tag\tag@in@align \fi
    \let\label\label@in@display
    #1% set st@r
    \ifst@rred\else \global\@eqnswtrue \fi
    \measure@{#2}%
    \global\row@\z@
    \tabskip\eqnshift@
    \halign\bgroup
        \span\align@preamble\crcr
        #2%
}
\def\math@cr@@@align{%
  \ifst@rred\nonumber\fi
  \if@eqnsw \global\tag@true \fi
  \global\advance\row@\@ne
  \add@amps\maxfields@
  \omit
  \kern-\alignsep@
  \iftag@
    \setboxz@h{\@lign\strut@{\make@display@tag}}%
    \place@tag
  \fi
  \ifst@rred\else\global\@eqnswtrue\fi
  \global\lineht@\z@
  \cr
}
\def\math@cr@@@align@measure{%
   &\omit
    \global\advance\row@\@ne
    \ifst@rred\nonumber\fi
    \if@eqnsw \global\tag@true \fi
    \ifnum\column@>\maxfields@
        \ifcheckat@
            \begingroup
              \measuring@false
              \@amsmath@err{Extra & on this line}%
                {\the\andhelp@}% "An extra & here is disastrous"
            \endgroup
        \else
            \global\maxfields@\column@
        \fi
    \fi
    \setboxz@h{\@lign\strut@{%
        \if@eqnsw
            \stepcounter{equation}%
            \tagform@\theequation
        \else
            \iftag@\df@tag\fi
        \fi
    }}%
    \savetaglength@
    \ifst@rred\else\global\@eqnswtrue\fi
    \cr
}
\let\field@lengths\@empty

\def\savefieldlength@{%
    \begingroup
        \let\or\relax
        \xdef\field@lengths{%
            \field@lengths
            \ifnum\column@=0
                \or
            \else
                ,%
            \fi
            \the\wdz@
        }%
    \endgroup
}

\def\fieldlengths@#1{%
    \ifcase\@xp#1\field@lengths\fi
}
\let\maxcolumn@widths\@empty
\def\maxcol@width#1{%
    \ifcase\@xp#1\maxcolumn@widths\fi\relax
}
\def\measure@#1{%
    \begingroup
        \measuring@true
        \global\eqnshift@\z@
        \global\alignsep@\z@
        \global\let\tag@lengths\@empty
        \global\let\field@lengths\@empty
        \savecounters@
        \global\setbox0\vbox{%
            \let\math@cr@@@\math@cr@@@align@measure
            \everycr{\noalign{\global\tag@false
              \global\let\raise@tag\@empty \global\column@\z@}}%
            \let\label\@gobble
            \global\row@\z@
            \tabskip\z@
            \halign{\span\align@preamble\crcr
                #1%
                \math@cr@@@
                \global\column@\z@
                \add@amps\maxfields@\cr
            }%
        }%
        \restorecounters@
        \ifodd\maxfields@
            \global\advance\maxfields@\@ne
        \fi
        \ifnum\xatlevel@=\tw@
            \ifnum\maxfields@<\thr@@
                \let\xatlevel@\z@
            \fi
        \fi
        \setbox\z@\vbox{%
          \unvbox\z@ \unpenalty \global\setbox\@ne\lastbox
        }%
        \global\totwidth@\wd\@ne
        \if@fleqn \global\advance\totwidth@\@mathmargin \fi
        \global\let\maxcolumn@widths\@empty
        \begingroup
          \let\or\relax
          \loop
            \global\setbox\@ne\hbox{%
              \unhbox\@ne \unskip \global\setbox\thr@@\lastbox
            }%
          \ifhbox\thr@@
           \xdef\maxcolumn@widths{ \or \the\wd\thr@@ \maxcolumn@widths}%
          \repeat
        \endgroup
        \dimen@\displaywidth
        \advance\dimen@-\totwidth@
        \ifcase\xatlevel@
            \global\alignsep@\z@
            \let\minalignsep\z@
            \@tempcntb\z@
            \if@fleqn
                \@tempcnta\@ne
                \global\eqnshift@\@mathmargin
            \else
                \@tempcnta\tw@
                \global\eqnshift@\dimen@
                \global\divide\eqnshift@\@tempcnta
            \fi
        \or
            \@tempcntb\maxfields@
            \divide\@tempcntb\tw@
            \@tempcnta\@tempcntb
            \advance\@tempcntb\m@ne
            \if@fleqn
                \global\eqnshift@\@mathmargin
                \global\alignsep@\dimen@
                \global\divide\alignsep@\@tempcnta
            \else
                \global\advance\@tempcnta\@ne
                \global\eqnshift@\dimen@
                \global\divide\eqnshift@\@tempcnta
                \global\alignsep@\eqnshift@
            \fi
        \or
            \@tempcntb\maxfields@
            \divide\@tempcntb\tw@
            \global\advance\@tempcntb\m@ne
            \global\@tempcnta\@tempcntb
            \global\eqnshift@\z@
            \global\alignsep@\dimen@
            \if@fleqn
                \global\advance\alignsep@\@mathmargin\relax
            \fi
            \global\divide\alignsep@\@tempcntb
        \fi
        \ifdim\alignsep@<\minalignsep\relax
            \global\alignsep@\minalignsep\relax
            \ifdim\eqnshift@>\z@
                \if@fleqn\else
                    \global\eqnshift@\displaywidth
                    \global\advance\eqnshift@-\totwidth@
                    \global\advance\eqnshift@-\@tempcntb\alignsep@
                    \global\divide\eqnshift@\tw@
                \fi
            \fi
        \fi
        \ifdim\eqnshift@<\z@
            \global\eqnshift@\z@
        \fi
        \calc@shift@align
        \global\tagshift@\totwidth@
        \global\advance\tagshift@\@tempcntb\alignsep@
        \if@fleqn
            \ifnum\xatlevel@=\tw@
                \global\advance\tagshift@-\@mathmargin\relax
            \fi
        \else
            \global\advance\tagshift@\eqnshift@
        \fi
        \iftagsleft@ \else
            \global\advance\tagshift@-\displaywidth
        \fi
        \dimen@\minalignsep\relax
        \global\advance\totwidth@\@tempcntb\dimen@
        \ifdim\totwidth@>\displaywidth
            \global\let\displaywidth@\totwidth@
        \else
            \global\let\displaywidth@\displaywidth
        \fi
    \endgroup
}
\iftagsleft@\if@fleqn
    \def\calc@shift@align{%
        \global\let\tag@shifts\@empty
        \begingroup
            \@tempdima\@mathmargin\relax
            \advance\@tempdima-\mintagsep\relax
            \loop
                \ifnum\row@>0
                    \ifdim\tag@width\row@>\z@
                        \x@calc@shift@lf
                    \else
                        \saveshift@0%
                    \fi
                    \advance\row@\m@ne
            \repeat
        \endgroup
    }
    \def\x@calc@shift@lf{%
        \ifdim\eqnshift@=\z@
            \global\eqnshift@\@mathmargin\relax
            \alignsep@\displaywidth
            \advance\alignsep@-\totwidth@
            \global\divide\alignsep@\@tempcntb
            \ifdim\alignsep@<\minalignsep\relax
                \global\alignsep@\minalignsep\relax
            \fi
        \fi
        \ifdim\tag@width\row@>\@tempdima
            \saveshift@1%
        \else
            \saveshift@0%
        \fi
    }
\fi\fi
\iftagsleft@\else\if@fleqn
    \def\calc@shift@align{%
        \global\let\tag@shifts\@empty
        \begingroup
            \loop
                \ifnum\row@>0
                    \ifdim\tag@width\row@>\z@
                        \x@calc@shift@rf
                    \else
                        \saveshift@0%
                    \fi
                    \advance\row@\m@ne
            \repeat
        \endgroup
    }
    \def\x@calc@shift@rf{%
        \column@\z@
        \@tempdimb\z@
        \@tempdimc\z@
        \edef\@tempb{\fieldlengths@\row@}%
        \@for\@tempa:=\@tempb\do{%
            \advance\column@\@ne
            \x@rcalc@width
        }%
        \begingroup
            \advance\column@\m@ne
            \divide\column@\tw@
            \ifnum\@tempcntb>\column@
                \advance\@tempcnta-\@tempcntb
                \advance\@tempcnta\column@
                \@tempcntb\column@
            \fi
            \tagwidth@\tag@width\row@\relax
            \@tempdima\eqnshift@
            \advance\@tempdima\@tempdimc\relax
            \advance\@tempdima\tagwidth@
            \dimen@\minalignsep\relax
            \multiply\dimen@\@tempcntb
            \advance\dimen@\mintagsep\relax
            \advance\dimen@\@tempdima
            \ifdim\dimen@>\displaywidth
                \saveshift@1%
            \else
                \saveshift@0%
                \dimen@\alignsep@\relax
                \multiply\dimen@\@tempcntb
                \advance\dimen@\@tempdima
                \advance\dimen@\tagwidth@
                \ifdim\dimen@>\displaywidth
                    \dimen@\displaywidth
                    \advance\dimen@-\@tempdima
                    \ifnum\xatlevel@=\tw@
                        \advance\dimen@-\mintagsep\relax
                    \fi
                    \divide\dimen@\@tempcnta
                    \ifdim\dimen@<\minalignsep\relax
                        \global\alignsep@\minalignsep\relax
                    \else
                        \global\alignsep@\dimen@
                    \fi
                \fi
            \fi
        \endgroup
    }
\fi\fi
\iftagsleft@\else\if@fleqn\else
    \def\calc@shift@align{%
        \global\let\tag@shifts\@empty
        \begingroup
            \loop
                \ifnum\row@>0
                    \ifdim\tag@width\row@>\z@
                        \x@calc@shift@rc
                    \else
                        \saveshift@0%
                    \fi
                    \advance\row@\m@ne
            \repeat
        \endgroup
    }
    \def\x@calc@shift@rc{%
        \column@\z@
        \@tempdimb\z@
        \@tempdimc\z@
        \edef\@tempb{\fieldlengths@\row@}%
        \@for\@tempa:=\@tempb\do{%
            \advance\column@\@ne
            \x@rcalc@width
        }%
        \begingroup
            \advance\column@\m@ne
            \divide\column@\tw@
            \ifnum\@tempcntb>\column@
                \advance\@tempcnta-\@tempcntb
                \advance\@tempcnta\column@
                \@tempcntb\column@
            \fi
            \tagwidth@\tag@width\row@\relax
            \@tempdima\@tempdimc
            \advance\@tempdima\tagwidth@
            \dimen@\minalignsep\relax
            \multiply\dimen@\@tempcntb
            \advance\dimen@\mintagsep\relax
            \ifnum\xatlevel@=\tw@ \else
                \advance\dimen@\mintagsep\relax
            \fi
            \advance\dimen@\@tempdima
            \ifdim\dimen@>\displaywidth
                \saveshift@1%
            \else
                \saveshift@0%
                \dimen@\eqnshift@
                \advance\dimen@\@tempdima
                \advance\dimen@\@tempcntb\alignsep@
                \advance\dimen@\tagwidth@
                \ifdim\dimen@>\displaywidth
                    \dimen@\displaywidth
                    \advance\dimen@-\@tempdima
                    \ifnum\xatlevel@=\tw@
                        \advance\dimen@-\mintagsep\relax
                    \fi
                    \divide\dimen@\@tempcnta
                    \ifdim\dimen@<\minalignsep\relax
                        \global\alignsep@\minalignsep\relax
                        \eqnshift@\displaywidth
                        \advance\eqnshift@-\@tempdima
                        \advance\eqnshift@-\@tempcntb\alignsep@
                        \global\divide\eqnshift@\tw@
                    \else
                        \ifdim\dimen@<\eqnshift@
                            \ifdim\dimen@<\z@
                                \global\eqnshift@\z@
                            \else
                                \global\eqnshift@\dimen@
                            \fi
                        \fi
                        \ifdim\dimen@<\alignsep@
                            \global\alignsep@\dimen@
                        \fi
                    \fi
                \fi
            \fi
        \endgroup
    }
\fi\fi
\iftagsleft@\else
    \def\x@rcalc@width{%
        \ifdim\@tempa > \z@
            \advance\@tempdimc\@tempdimb
            \ifodd\column@
                \advance\@tempdimc\maxcol@width\column@
                \@tempdimb\z@
            \else
                \advance\@tempdimc\@tempa\relax
                \@tempdimb\maxcol@width\column@
                \advance\@tempdimb-\@tempa\relax
            \fi
        \else
            \advance\@tempdimb\maxcol@width\column@\relax
        \fi
    }
\fi
\iftagsleft@\if@fleqn\else
    \def\calc@shift@align{%
        \global\let\tag@shifts\@empty
        \begingroup
            \loop
                \ifnum\row@>\z@
                    \ifdim\tag@width\row@>\z@
                        \x@calc@shift@lc
                    \else
                        \saveshift@0%
                    \fi
                    \advance\row@\m@ne
            \repeat
        \endgroup
    }
    \def\x@calc@shift@lc{%
        \column@\z@
        \@tempdima\z@ % ``width of equation''
        \@tempdimb\z@ % ``indent of equation''
        \edef\@tempb{\fieldlengths@\row@}%
        \@for\@tempa:=\@tempb\do{%
            \advance\column@\@ne
            \x@lcalc@width
        }%
        \begingroup
            \tagwidth@\tag@width\row@\relax
            \@tempdima\totwidth@
            \advance\@tempdima-\@tempdimb
            \advance\@tempdima\tagwidth@
            \dimen@\minalignsep\relax
            \multiply\dimen@\@tempcntb
            \advance\dimen@\mintagsep\relax
            \ifnum\xatlevel@=\tw@ \else
                \advance\dimen@\mintagsep\relax
            \fi
            \advance\dimen@\@tempdima
            \ifdim\dimen@>\displaywidth
                \saveshift@1%
            \else
                \saveshift@0%
                \dimen@\alignsep@
                \multiply\dimen@\count@
                \advance\dimen@\eqnshift@
                \advance\dimen@\@tempdimb
                \ifdim\dimen@<2\tagwidth@
                    \dimen@\displaywidth
                    \advance\dimen@-\@tempdima
                    \ifnum\xatlevel@=\tw@
                        \advance\dimen@-\mintagsep\relax
                    \fi
                    \divide\dimen@\@tempcnta
                    \ifdim\dimen@<\minalignsep\relax
                        \global\alignsep@\minalignsep\relax
                        \dimen@\displaywidth
                        \advance\dimen@-\@tempdima
                        \advance\dimen@-\@tempcntb\alignsep@
                        \global\divide\dimen@\tw@
                    \else
                        \ifdim\dimen@<\alignsep@
                            \global\alignsep@\dimen@
                        \fi
                    \fi
                    \ifnum\xatlevel@=\tw@
                        \dimen@\mintagsep\relax
                    \fi
                    \advance\dimen@\tagwidth@
                    \advance\dimen@-\@tempdimb
                    \advance\dimen@-\count@\alignsep@
                    \ifdim\dimen@>\eqnshift@
                        \global\eqnshift@\dimen@
                    \fi
                \fi
            \fi
        \endgroup
    }
    \def\x@lcalc@width{%
        \ifdim\@tempdima = \z@
            \ifdim\@tempa > \z@
                \@tempdima\p@
                \ifodd\column@
                    \advance\@tempdimb \maxcol@width\column@
                    \advance\@tempdimb-\@tempa
                \fi
                \count@\column@
                \advance\count@\m@ne
                \divide\count@\tw@
                \advance\@tempcnta-\count@
                \advance\@tempcntb-\count@
            \else
                \advance\@tempdimb \maxcol@width\column@\relax
            \fi
        \fi
    }
\fi\fi
\def\place@tag{%
    \iftagsleft@
        \kern-\tagshift@
        \if1\shift@tag\row@\relax
            \rlap{\vbox{%
                \normalbaselines
                \boxz@
                \vbox to\lineht@{}%
                \raise@tag
            }}%
        \else
            \rlap{\boxz@}%
        \fi
        \kern\displaywidth@
    \else
        \kern-\tagshift@
        \if1\shift@tag\row@\relax
            \llap{\vtop{%
                \raise@tag
                \normalbaselines
                \setbox\@ne\null
                \dp\@ne\lineht@
                \box\@ne
                \boxz@
            }}%
        \else
            \llap{\boxz@}%
        \fi
    \fi
}
\def\align@preamble{%
   &\hfil
    \strut@
    \setboxz@h{\@lign$\m@th\displaystyle{##}$}%
    \ifmeasuring@\savefieldlength@\fi
    \set@field
    \tabskip\z@skip
   &\setboxz@h{\@lign$\m@th\displaystyle{{}##}$}%
    \ifmeasuring@\savefieldlength@\fi
    \set@field
    \hfil
    \tabskip\alignsep@
}
\def\set@field{%
    \column@plus
    \iftagsleft@
        \ifdim\ht\z@>\lineht@
            \global\lineht@\ht\z@
        \fi
    \else
        \ifdim\dp\z@>\lineht@
            \global\lineht@\dp\z@
        \fi
    \fi
    \boxz@
}
\edef\split@err#1{%
    \@nx\@amsmath@err{%
        \string\begin{split} won't work here%
    }{%
        \@xp\@nx\csname
  Did you forget a preceding \string\begin{equation}?^^J%
  If not, perhaps the `aligned' environment is what
  you want.\endcsname}%
}
\newenvironment{split}{%
  \if@display
    \ifinner
      \@xp\@xp\@xp\split@aligned
    \else
      \ifst@rred \else \global\@eqnswtrue \fi
    \fi
  \else \let\endsplit\@empty \@xp\collect@body\@xp\split@err
  \fi
  \collect@body\gather@split
}{%
      \crcr
    \egroup
  \egroup
  \iftagsleft@ \@xp\lendsplit@ \else \@xp\rendsplit@ \fi
}
\let\split@tag\relax % init
\def\gather@split#1#2#3{%
  \@xp\endgroup \reset@equation % math@cr will handle equation numbering
  \iftag@
     \toks@\@xp{\df@tag}%
     \edef\split@tag{%
       \gdef\@nx\df@tag{\the\toks@}%
       \global\@nx\tag@true \@nx\nonumber
     }%
  \else \let\split@tag\@empty
  \fi
  \spread@equation
  \vcenter\bgroup
    \gather@{\split@tag  \begin{split}#1\end{split}}%
    \def\endmathdisplay@a{%
      \math@cr \black@ \totwidth@ \egroup
      \egroup
    }%
}
\def\insplit@{%
  \global\setbox\z@\vbox\bgroup
    \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
    \default@tag % disallow use of \tag here
    \ialign\bgroup
      \hfil
      \strut@
      $\m@th\displaystyle{##}$%
     &$\m@th\displaystyle{{}##}$%
      \hfill % Why not \hfil?---dmj, 1994/12/28
      \crcr
}
\def\rendsplit@{%
    \ifinalign@
        \global\setbox9 \vtop{%
            \unvcopy\z@
            \global\setbox8 \lastbox
            \unskip
        }%
        \setbox\@ne\hbox{%
            \unhcopy8
            \unskip
            \global\setbox\tw@\lastbox
            \unskip
            \global\setbox\thr@@\lastbox
        }%
        \ifctagsplit@
            \gdef\split@{%
                \hbox to\wd\thr@@{}%
               &\vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}%
            }%
        \else
            \global\setbox7 \hbox{\unhbox\tw@\unskip}%
            \gdef\split@{%
                \global\@tempcnta\column@
               &\setboxz@h{}%
                \savetaglength@
                \global\advance\row@\@ne
                \vbox{\moveleft\wd\thr@@\box9}%
                \crcr
                \noalign{\global\lineht@\z@}%
                \add@amps\@tempcnta
                \box\thr@@
               &\box7
            }%
        \fi
    \else
        \ifctagsplit@
            \gdef\split@{\vcenter{\boxz@}}%
        \else
            \gdef\split@{%
                \boxz@
            }%
        \fi
    \fi
    \aftergroup\split@
}
\def\lendsplit@{%
    \global\setbox9\vtop{\unvcopy\z@}%
    \ifinalign@
        \setbox\@ne\vbox{%
            \unvcopy\z@
            \global\setbox8\lastbox
        }%
        \setbox\@ne\hbox{%
            \unhcopy8%
            \unskip
            \setbox\tw@\lastbox
            \unskip
            \global\setbox\thr@@\lastbox
        }%
        \ifctagsplit@
            \gdef\split@{%
                \hbox to\wd\thr@@{}%
               &\vcenter{\vbox{\moveleft\wd\thr@@\box9}}%
            }%
        \else
            \gdef\split@{%
                \hbox to\wd\thr@@{}%
               &\vbox{\moveleft\wd\thr@@\box9}%
            }%
        \fi
    \else
        \ifctagsplit@
            \gdef\split@{\vcenter{\box9}}%
        \else
            \gdef\split@{\box9}%
        \fi
    \fi
    \aftergroup\split@
}
\def\split@aligned#1#2{%
   \iffalse{\fi\ifnum0=`}\fi
   \collect@body\split@al@a}
\def\split@al@a#1#2#3{%
  \split@warning
   \endgroup
   \begin{aligned}\relax#1\end{aligned}%
   \ifnum0=`{\fi\iffalse}\fi
}
\def\split@warning{%
  \PackageWarning{amsmath}{%
Cannot use `split' here;\MessageBreak trying to recover with `aligned'}%
}
\newskip\multlinegap
\multlinegap10pt
\newskip\multlinetaggap
\multlinetaggap10pt
\def\start@multline#1{%
    \RIfM@
        \nomath@env
        \DN@{\@namedef{end\@currenvir}{}\@gobble}%
    \else
        $$%
        #1%
        \ifst@rred
            \nonumber
        \else
            \global\@eqnswtrue
        \fi
        \let\next@\multline@
    \fi
    \collect@body\next@
}
\newenvironment{multline}{%
  \start@multline\st@rredfalse
}{%
  \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi
  \ignorespacesafterend
}
\newenvironment{multline*}{\start@multline\st@rredtrue}{\endmultline}
\def\multline@#1{%
    \Let@
    \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}%
    \chardef\dspbrk@context\z@
    \restore@math@cr
    \let\tag\tag@in@align
    \global\tag@false \global\let\raise@tag\@empty
    \mmeasure@{#1}%
    \let\tag\gobble@tag \let\label\@gobble
    \tabskip \if@fleqn \@mathmargin \else \z@skip \fi
    \totwidth@\displaywidth
    \if@fleqn
        \advance\totwidth@-\@mathmargin
    \fi
    \halign\bgroup
        \hbox to\totwidth@{%
            \if@fleqn
                \hskip \@centering \relax
            \else
                \hfil
            \fi
            \strut@
            $\m@th\displaystyle{}##\endmultline@math
            \hfil
        }%
        \crcr
        \if@fleqn
            \hskip-\@mathmargin
            \def\multline@indent{\hskip\@mathmargin}% put it back
        \else
            \hfilneg
            \def\multline@indent{\hskip\multlinegap}%
        \fi
        \iftagsleft@
            \iftag@
                \begingroup
                    \ifshifttag@
                        \rlap{\vbox{%
                                \normalbaselines
                                \hbox{%
                                    \strut@
                                    \make@display@tag
                                }%
                                \vbox to\lineht@{}%
                                \raise@tag
                        }}%
                        \multline@indent
                    \else
                        \setbox\z@\hbox{\make@display@tag}%
                        \dimen@\@mathmargin \advance\dimen@-\wd\z@
                        \ifdim\dimen@<\multlinetaggap
                          \dimen@\multlinetaggap
                        \fi
                        \box\z@ \hskip\dimen@\relax
                    \fi
                \endgroup
            \else
                \multline@indent
            \fi
        \else
            \multline@indent
        \fi
    #1%
}
\def\endmultline@math{$}
\def\lendmultline@{%
        \hfilneg
        \hskip\multlinegap
        \math@cr
    \egroup
    $$%
}
\def\rendmultline@{%
    \iftag@
        $\let\endmultline@math\relax
            \ifshifttag@
                \hskip\multlinegap
                \llap{\vtop{%
                    \raise@tag
                    \normalbaselines
                    \setbox\@ne\null
                    \dp\@ne\lineht@
                    \box\@ne
                    \hbox{\strut@\make@display@tag}%
                }}%
            \else
                \hskip\multlinetaggap
                \make@display@tag
            \fi
    \else
        \hskip\multlinegap
    \fi
    \hfilneg
        \math@cr
    \egroup$$%
}
\def\mmeasure@#1{%
    \begingroup
        \measuring@true
        \def\label##1{%
          \begingroup\measuring@false\label@in@display{##1}\endgroup}%
        \def\math@cr@@@{\cr}%
        \let\shoveleft\@iden \let\shoveright\@iden
        \savecounters@
        \global\row@\z@
        \setbox\@ne\vbox{%
            \global\let\df@tag\@empty
            \halign{%
                \setboxz@h{\@lign$\m@th\displaystyle{}##$}%
                \iftagsleft@
                    \ifnum\row@=\@ne
                        \global\totwidth@\wdz@
                        \global\lineht@\ht\z@
                    \fi
                \else
                    \global\totwidth@\wdz@
                    \global\lineht@\dp\z@
                \fi
                \crcr
                #1%
                \crcr
            }%
        }%
        \ifx\df@tag\@empty\else\global\tag@true\fi
        \if@eqnsw\global\tag@true\fi
        \iftag@
            \setboxz@h{%
                \if@eqnsw
                    \stepcounter{equation}%
                    \tagform@\theequation
                \else
                    \df@tag
                \fi
            }%
            \global\tagwidth@\wdz@
            \dimen@\totwidth@
            \advance\dimen@\tagwidth@
            \advance\dimen@\multlinetaggap
            \iftagsleft@\else
                \if@fleqn
                    \advance\dimen@\@mathmargin
                \fi
            \fi
            \ifdim\dimen@>\displaywidth
                \global\shifttag@true
            \else
                \global\shifttag@false
            \fi
        \fi
        \restorecounters@
    \endgroup
}
\iftagsleft@
    \def\shoveright#1{%
        #1%
        \hfilneg
        \hskip\multlinegap
    }
\else
    \def\shoveright#1{%
        #1%
        \hfilneg
        \iftag@
            \ifshifttag@
                \hskip\multlinegap
            \else
                \hskip\tagwidth@
                \hskip\multlinetaggap
            \fi
        \else
            \hskip\multlinegap
        \fi
    }
\fi

\if@fleqn
    \def\shoveleft#1{#1}%
\else
    \iftagsleft@
        \def\shoveleft#1{%
            \setboxz@h{$\m@th\displaystyle{}#1$}%
            \setbox\@ne\hbox{$\m@th\displaystyle#1$}%
            \hfilneg
            \iftag@
                \ifshifttag@
                    \hskip\multlinegap
                \else
                    \hskip\tagwidth@
                    \hskip\multlinetaggap
                \fi
            \else
                \hskip\multlinegap
            \fi
            \hskip.5\wd\@ne
            \hskip-.5\wdz@
            #1%
        }
    \else
        \def\shoveleft#1{%
            \setboxz@h{$\m@th\displaystyle{}#1$}%
            \setbox\@ne\hbox{$\m@th\displaystyle#1$}%
            \hfilneg
            \hskip\multlinegap
            \hskip.5\wd\@ne
            \hskip-.5\wdz@
            #1%
        }
    \fi
\fi
\@saveprimitive\leqno\@@leqno
\@saveprimitive\eqno\@@eqno
\def\eqno{\@@eqno\let\eqno\relax\let\leqno\relax}
\def\leqno{\@@leqno\let\leqno\relax\let\eqno\relax}
\let\veqno=\@@eqno
\iftagsleft@ \let\veqno=\@@leqno \fi
\@ifundefined{SK@@label}{%
  \let\SK@@label\relax \let\SK@equationtrue\relax
}{}
\let\reset@equation\@empty
\let\alt@tag\@empty
\def\tag@in@display#1#{\relax\tag@in@display@a{#1}}
\def\tag@in@display@a#1#2{%
  \iftag@
    \invalid@tag{Multiple \string\tag}\relax
  \else
    \global\tag@true \nonumber \reset@equation \st@rredtrue
    \if *\string#1%
      \gdef\alt@tag{\def\SK@tagform@{#2\@gobble}%
        \ifx\SK@@label\relax \let\tagform@\SK@tagform@ \fi
      }%
      \make@df@tag@@{#2}%
    \else
      \make@df@tag@@@{#2}%
    \fi
  \fi
}
\let\restore@hfuzz\@empty
\def\mathdisplay#1{%
  \ifmmode \@badmath
  \else
    $$\def\@currenvir{#1}%
    \let\dspbrk@context\z@
    \let\tag\tag@in@display \let\label\label@in@display \SK@equationtrue
    \global\let\df@label\@empty \global\let\df@tag\@empty
    \global\tag@false
    \if@fleqn
      \edef\restore@hfuzz{\hfuzz\the\hfuzz\relax}%
      \hfuzz\maxdimen
      \setbox\z@\hbox to\displaywidth\bgroup
        \let\split@warning\relax \restore@hfuzz
        \everymath\@emptytoks \m@th $\displaystyle
    \fi
  \fi
}
\def\endmathdisplay#1{%
  \ifmmode \else \@badmath \fi
  \endmathdisplay@a
  $$%
  \global\let\df@label\@empty \global\let\df@tag\@empty
  \global\tag@false \global\let\alt@tag\@empty
  \global\@eqnswfalse
}
\def\endmathdisplay@a{%
  \if@eqnsw \gdef\df@tag{\tagform@\theequation}\fi
  \if@fleqn \@xp\endmathdisplay@fleqn
  \else \ifx\df@tag\@empty \else \veqno \alt@tag \df@tag \fi
    \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi
  \fi
  \ifnum\dspbrk@lvl>\m@ne
    \postdisplaypenalty -\@getpen\dspbrk@lvl
    \global\dspbrk@lvl\m@ne
  \fi
}
\let\too@wide\@ne
\def\endmathdisplay@fleqn{%
  $\hfil\hskip\@mathmargin\egroup
  \ifnum\badness<\inf@bad \let\too@wide\@ne \else \let\too@wide\z@ \fi
  \ifx\@empty\df@tag
  \else
    \setbox4\hbox{\df@tag
      \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi
    }%
  \fi
  \csname emdf@%
    \ifx\df@tag\@empty U\else \iftagsleft@ L\else R\fi\fi
  \endcsname
}
\def\emdf@U{%
  \restore@hfuzz
  \ifodd\too@wide % not too wide: just need to swap the glue around
    \hbox to\displaywidth{\hskip\@mathmargin\unhbox\z@\unskip}%
  \else % M+B > displaywidth
    \emdf@Ua
  \fi
}
\def\emdf@Ua{%
  \hbox to\columnwidth{%
    \ifdim\displayindent>\z@
      \hskip\displayindent minus\displayindent
    \fi
    \hskip\@mathmargin \unhbox\z@ \unskip
  }%
  \displayindent\z@ \displaywidth\columnwidth
}
\def\emdf@R{%
  \setbox\tw@\hbox to\displaywidth{%
    \hskip\@mathmargin \unhcopy\z@\unskip\hfil\hskip\mintagsep\copy4
  }%
  \restore@hfuzz
  \ifnum\badness<\inf@bad \box\tw@ \else \emdf@Ra \fi
}
\def\emdf@Ra{%
  \skip@\displayindent minus\displayindent
  \displayindent\z@ \displaywidth\columnwidth
  \spread@equation \everycr{}\tabskip\z@skip
  \halign{\hbox to\displaywidth{##}\cr
    \relax
    \ifdim\skip@>\z@ \hskip\skip@ \fi
    \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr
    \noalign{\raise@tag}%
    \hfil\box4 \cr}%
}
\def\emdf@L{%
  \@tempdima\@mathmargin
  \advance\@tempdima-\wd4 \advance\@tempdima-\mintagsep
  \skip@\@tempdima minus\@tempdima
  \setbox\tw@\hbox to\displaywidth{%
    \copy4\hskip\mintagsep
    \ifdim\skip@>\z@ \hskip\skip@\fi
    \unhcopy\z@\unskip
  }%
  \restore@hfuzz
  \ifnum\badness<\inf@bad \box\tw@ \else \emdf@La \fi
}
\def\emdf@La{%
  \spread@equation \everycr{}\tabskip\z@skip
  \halign{\hbox to\displaywidth{##}\cr
    \box4 \hfil \cr
    \noalign{\raise@tag}%
    \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr}%
}
\renewenvironment{equation}{%
  \edef\reset@equation{%
    \@nx\setcounter{equation}{\number\c@equation}}%
  \refstepcounter{equation}%
  \st@rredfalse \global\@eqnswtrue
  \mathdisplay{equation}%
}{%
  \endmathdisplay{equation}%
  \ignorespacesafterend
}
\newenvironment{equation*}{%
  \st@rredtrue \global\@eqnswfalse
  \mathdisplay{equation*}%
}{%
  \endmathdisplay{equation*}%
  \ignorespacesafterend
}
\DeclareRobustCommand{\[}{\begin{equation*}}
\DeclareRobustCommand{\]}{\end{equation*}}
\endinput
%%
%% End of file `amsmath.sty'.

%%%%%%%%%%%%%%%%%%% End /macros/amsmath/amsmath.sty %%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%% Start /macros/tci/tcilatex.tex %%%%%%%%%%%%%%%%%%%

% Macros for Scientific Word 3.5 documents saved with the LaTeX filter.
% Copyright (C) 2000 Mackichan Software, Inc.

\typeout{TCILATEX Macros for Scientific Word 3.5 <3 Jan 2000>.}
\typeout{NOTICE:  This macro file is NOT proprietary and may be 
freely copied and distributed.}
%
\makeatletter

%%%%%%%%%%%%%%%%%%%%%
% FMTeXButton
% This is used for putting TeXButtons in the 
% frontmatter of a document. Add a line like
% \QTagDef{FMTeXButton}{101}{} to the filter 
% section of the cst being used. Also add a
% new section containing:
%     [f_101]
%     ALIAS=FMTexButton
%     TAG_TYPE=FIELD
%     TAG_LEADIN=TeX Button:
%
% It also works to put \defs in the preamble after 
% the \input tcilatex
\def\FMTeXButton{}
%
%%%%%%%%%%%%%%%%%%%%%%
% macros for time
\newcount\@hour\newcount\@minute\chardef\@x10\chardef\@xv60
\def\tcitime{
\def\@time{%
  \@minute\time\@hour\@minute\divide\@hour\@xv
  \ifnum\@hour<\@x 0\fi\the\@hour:%
  \multiply\@hour\@xv\advance\@minute-\@hour
  \ifnum\@minute<\@x 0\fi\the\@minute
  }}%

%%%%%%%%%%%%%%%%%%%%%%
% macro for hyperref
%%% \@ifundefined{hyperref}{\def\hyperref#1#2#3#4{#2\ref{#4}#3}}{}

\def\x@hyperref#1#2#3{%
   % Trun off various catcodes before reading parameter 4
   \catcode`\~ = 12
   \catcode`\% = 12
   \catcode`\$ = 12
   \catcode`\_ = 12
   \catcode`\# = 12
   \catcode`\& = 12
   \y@hyperref{#1}{#2}{#3}%
}

\def\y@hyperref#1#2#3#4{%
   #2\ref{#4}#3
   \catcode`\~ = 13
   \catcode`\% = 14
   \catcode`\$ = 3
   \catcode`\_ = 8
   \catcode`\# = 6
   \catcode`\& = 4
}

\@ifundefined{hyperref}{\let\hyperref\x@hyperref}{}


% macro for external program call
\@ifundefined{qExtProgCall}{\def\qExtProgCall#1#2#3#4#5#6{\relax}}{}
%%%%%%%%%%%%%%%%%%%%%%
%
% macros for graphics
%
\def\FILENAME#1{#1}%
%
\def\QCTOpt[#1]#2{%
  \def\QCTOptB{#1}
  \def\QCTOptA{#2}
}
\def\QCTNOpt#1{%
  \def\QCTOptA{#1}
  \let\QCTOptB\empty
}
\def\Qct{%
  \@ifnextchar[{%
    \QCTOpt}{\QCTNOpt}
}
\def\QCBOpt[#1]#2{%
  \def\QCBOptB{#1}%
  \def\QCBOptA{#2}%
}
\def\QCBNOpt#1{%
  \def\QCBOptA{#1}%
  \let\QCBOptB\empty
}
\def\Qcb{%
  \@ifnextchar[{%
    \QCBOpt}{\QCBNOpt}%
}
\def\PrepCapArgs{%
  \ifx\QCBOptA\empty
    \ifx\QCTOptA\empty
      {}%
    \else
      \ifx\QCTOptB\empty
        {\QCTOptA}%
      \else
        [\QCTOptB]{\QCTOptA}%
      \fi
    \fi
  \else
    \ifx\QCBOptA\empty
      {}%
    \else
      \ifx\QCBOptB\empty
        {\QCBOptA}%
      \else
        [\QCBOptB]{\QCBOptA}%
      \fi
    \fi
  \fi
}
\newcount\GRAPHICSTYPE
%\GRAPHICSTYPE 0 is for TurboTeX
%\GRAPHICSTYPE 1 is for DVIWindo (PostScript)
%%%(removed)%\GRAPHICSTYPE 2 is for psfig (PostScript)
\GRAPHICSTYPE=\z@
\def\GRAPHICSPS#1{%
 \ifcase\GRAPHICSTYPE%\GRAPHICSTYPE=0
   \special{ps: #1}%
 \or%\GRAPHICSTYPE=1
   \special{language "PS", include "#1"}%
%%%\or%\GRAPHICSTYPE=2
%%%  #1%
 \fi
}%
%
\def\GRAPHICSHP#1{\special{include #1}}%
%
% \graffile{ body }                                  %#1
%          { contentswidth (scalar)  }               %#2
%          { contentsheight (scalar) }               %#3
%          { vertical shift when in-line (scalar) }  %#4

\def\graffile#1#2#3#4{%
%%% \ifnum\GRAPHICSTYPE=\tw@
%%%  %Following if using psfig
%%%  \@ifundefined{psfig}{\input psfig.tex}{}%
%%%  \psfig{file=#1, height=#3, width=#2}%
%%% \else
  %Following for all others
  % JCS - added BOXTHEFRAME, see below
    \bgroup
	   \@inlabelfalse
       \leavevmode
       \@ifundefined{bbl@deactivate}{\def~{\string~}}{\activesoff}%
        \raise -#4 \BOXTHEFRAME{%
           \hbox to #2{\raise #3\hbox to #2{\null #1\hfil}}}%
    \egroup
}%
%
% A box for drafts
\def\draftbox#1#2#3#4{%
 \leavevmode\raise -#4 \hbox{%
  \frame{\rlap{\protect\tiny #1}\hbox to #2%
   {\vrule height#3 width\z@ depth\z@\hfil}%
  }%
 }%
}%
%
\newcount\draft
\draft=\z@
\let\nographics=\draft
\newif\ifwasdraft
\wasdraftfalse

%  \GRAPHIC{ body }                                  %#1
%          { draft name }                            %#2
%          { contentswidth (scalar)  }               %#3
%          { contentsheight (scalar) }               %#4
%          { vertical shift when in-line (scalar) }  %#5
\def\GRAPHIC#1#2#3#4#5{%
   \ifnum\draft=\@ne\draftbox{#2}{#3}{#4}{#5}%
   \else\graffile{#1}{#3}{#4}{#5}%
   \fi
}
%
\def\addtoLaTeXparams#1{%
    \edef\LaTeXparams{\LaTeXparams #1}}%
%
% JCS -  added a switch BoxFrame that can 
% be set by including X in the frame params.
% If set a box is drawn around the frame.

\newif\ifBoxFrame \BoxFramefalse
\newif\ifOverFrame \OverFramefalse
\newif\ifUnderFrame \UnderFramefalse

\def\BOXTHEFRAME#1{%
   \hbox{%
      \ifBoxFrame
         \frame{#1}%
      \else
         {#1}%
      \fi
   }%
}


\def\doFRAMEparams#1{\BoxFramefalse\OverFramefalse\UnderFramefalse\readFRAMEparams#1\end}%
\def\readFRAMEparams#1{%
 \ifx#1\end%
  \let\next=\relax
  \else
  \ifx#1i\dispkind=\z@\fi
  \ifx#1d\dispkind=\@ne\fi
  \ifx#1f\dispkind=\tw@\fi
  \ifx#1t\addtoLaTeXparams{t}\fi
  \ifx#1b\addtoLaTeXparams{b}\fi
  \ifx#1p\addtoLaTeXparams{p}\fi
  \ifx#1h\addtoLaTeXparams{h}\fi
  \ifx#1X\BoxFrametrue\fi
  \ifx#1O\OverFrametrue\fi
  \ifx#1U\UnderFrametrue\fi
  \ifx#1w
    \ifnum\draft=1\wasdrafttrue\else\wasdraftfalse\fi
    \draft=\@ne
  \fi
  \let\next=\readFRAMEparams
  \fi
 \next
 }%
%
%Macro for In-line graphics object
%   \IFRAME{ contentswidth (scalar)  }               %#1
%          { contentsheight (scalar) }               %#2
%          { vertical shift when in-line (scalar) }  %#3
%          { draft name }                            %#4
%          { body }                                  %#5
%          { caption}                                %#6


\def\IFRAME#1#2#3#4#5#6{%
      \bgroup
      \let\QCTOptA\empty
      \let\QCTOptB\empty
      \let\QCBOptA\empty
      \let\QCBOptB\empty
      #6%
      \parindent=0pt
      \leftskip=0pt
      \rightskip=0pt
      \setbox0=\hbox{\QCBOptA}%
      \@tempdima=#1\relax
      \ifOverFrame
          % Do this later
          \typeout{This is not implemented yet}%
          \show\HELP
      \else
         \ifdim\wd0>\@tempdima
            \advance\@tempdima by \@tempdima
            \ifdim\wd0 >\@tempdima
               \setbox1 =\vbox{%
                  \unskip\hbox to \@tempdima{\hfill\GRAPHIC{#5}{#4}{#1}{#2}{#3}\hfill}%
                  \unskip\hbox to \@tempdima{\parbox[b]{\@tempdima}{\QCBOptA}}%
               }%
               \wd1=\@tempdima
            \else
               \textwidth=\wd0
               \setbox1 =\vbox{%
                 \noindent\hbox to \wd0{\hfill\GRAPHIC{#5}{#4}{#1}{#2}{#3}\hfill}\\%
                 \noindent\hbox{\QCBOptA}%
               }%
               \wd1=\wd0
            \fi
         \else
            \ifdim\wd0>0pt
              \hsize=\@tempdima
              \setbox1=\vbox{%
                \unskip\GRAPHIC{#5}{#4}{#1}{#2}{0pt}%
                \break
                \unskip\hbox to \@tempdima{\hfill \QCBOptA\hfill}%
              }%
              \wd1=\@tempdima
           \else
              \hsize=\@tempdima
              \setbox1=\vbox{%
                \unskip\GRAPHIC{#5}{#4}{#1}{#2}{0pt}%
              }%
              \wd1=\@tempdima
           \fi
         \fi
         \@tempdimb=\ht1
         %\advance\@tempdimb by \dp1
         \advance\@tempdimb by -#2
         \advance\@tempdimb by #3
         \leavevmode
         \raise -\@tempdimb \hbox{\box1}%
      \fi
      \egroup%
}%
%
%Macro for Display graphics object
%   \DFRAME{ contentswidth (scalar)  }               %#1
%          { contentsheight (scalar) }               %#2
%          { draft label }                           %#3
%          { name }                                  %#4
%          { caption}                                %#5
\def\DFRAME#1#2#3#4#5{%
 \begin{center}
     \let\QCTOptA\empty
     \let\QCTOptB\empty
     \let\QCBOptA\empty
     \let\QCBOptB\empty
	 \vbox\bgroup
        \ifOverFrame 
           #5\QCTOptA\par
        \fi
        \GRAPHIC{#4}{#3}{#1}{#2}{\z@}
        \ifUnderFrame 
           \par#5\QCBOptA
        \fi
	 \egroup
 \end{center}%
 }%
%
%Macro for Floating graphic object
%   \FFRAME{ framedata f|i tbph x F|T }              %#1
%          { contentswidth (scalar)  }               %#2
%          { contentsheight (scalar) }               %#3
%          { caption }                               %#4
%          { label }                                 %#5
%          { draft name }                            %#6
%          { body }                                  %#7
\def\FFRAME#1#2#3#4#5#6#7{%
 %If float.sty loaded and float option is 'h', change to 'H'  (gp) 1998/09/05
  \@ifundefined{floatstyle}
    {%floatstyle undefined (and float.sty not present), no change
     \begin{figure}[#1]%
    }
    {%floatstyle DEFINED
	 \ifx#1h%Only the h parameter, change to H
      \begin{figure}[H]%
	 \else
      \begin{figure}[#1]%
	 \fi
	}
  \let\QCTOptA\empty
  \let\QCTOptB\empty
  \let\QCBOptA\empty
  \let\QCBOptB\empty
  \ifOverFrame
    #4
    \ifx\QCTOptA\empty
    \else
      \ifx\QCTOptB\empty
        \caption{\QCTOptA}%
      \else
        \caption[\QCTOptB]{\QCTOptA}%
      \fi
    \fi
    \ifUnderFrame\else
      \label{#5}%
    \fi
  \else
    \UnderFrametrue%
  \fi
  \begin{center}\GRAPHIC{#7}{#6}{#2}{#3}{\z@}\end{center}%
  \ifUnderFrame
    #4
    \ifx\QCBOptA\empty
      \caption{}%
    \else
      \ifx\QCBOptB\empty
        \caption{\QCBOptA}%
      \else
        \caption[\QCBOptB]{\QCBOptA}%
      \fi
    \fi
    \label{#5}%
  \fi
  \end{figure}%
 }%
%
%
%    \FRAME{ framedata f|i tbph x F|T }              %#1
%          { contentswidth (scalar)  }               %#2
%          { contentsheight (scalar) }               %#3
%          { vertical shift when in-line (scalar) }  %#4
%          { caption }                               %#5
%          { label }                                 %#6
%          { name }                                  %#7
%          { body }                                  %#8
%
%    framedata is a string which can contain the following
%    characters: idftbphxFT
%    Their meaning is as follows:
%             i, d or f : in-line, display, or floating
%             t,b,p,h   : LaTeX floating placement options
%             x         : fit contents box to contents
%             F or T    : Figure or Table. 
%                         Later this can expand
%                         to a more general float class.
%
%
\newcount\dispkind%

\def\makeactives{
  \catcode`\"=\active
  \catcode`\;=\active
  \catcode`\:=\active
  \catcode`\'=\active
  \catcode`\~=\active
}
\bgroup
   \makeactives
   \gdef\activesoff{%
      \def"{\string"}
      \def;{\string;}
      \def:{\string:}
      \def'{\string'}
      \def~{\string~}
      %\bbl@deactivate{"}%
      %\bbl@deactivate{;}%
      %\bbl@deactivate{:}%
      %\bbl@deactivate{'}%
    }
\egroup

\def\FRAME#1#2#3#4#5#6#7#8{%
 \bgroup
 \ifnum\draft=\@ne
   \wasdrafttrue
 \else
   \wasdraftfalse%
 \fi
 \def\LaTeXparams{}%
 \dispkind=\z@
 \def\LaTeXparams{}%
 \doFRAMEparams{#1}%
 \ifnum\dispkind=\z@\IFRAME{#2}{#3}{#4}{#7}{#8}{#5}\else
  \ifnum\dispkind=\@ne\DFRAME{#2}{#3}{#7}{#8}{#5}\else
   \ifnum\dispkind=\tw@
    \edef\@tempa{\noexpand\FFRAME{\LaTeXparams}}%
    \@tempa{#2}{#3}{#5}{#6}{#7}{#8}%
    \fi
   \fi
  \fi
  \ifwasdraft\draft=1\else\draft=0\fi{}%
  \egroup
 }%
%
% This macro added to let SW gobble a parameter that
% should not be passed on and expanded. 

\def\TEXUX#1{"texux"}

%
% Macros for text attributes:
%
\def\BF#1{{\bf {#1}}}%
\def\NEG#1{\leavevmode\hbox{\rlap{\thinspace/}{$#1$}}}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
% macros for user - defined functions
\def\limfunc#1{\mathop{\rm #1}}%
\def\func#1{\mathop{\rm #1}\nolimits}%
% macro for unit names
\def\unit#1{\mathop{\rm #1}\nolimits}%

%
% miscellaneous 
\long\def\QQQ#1#2{%
     \long\expandafter\def\csname#1\endcsname{#2}}%
\@ifundefined{QTP}{\def\QTP#1{}}{}
\@ifundefined{QEXCLUDE}{\def\QEXCLUDE#1{}}{}
\@ifundefined{Qlb}{\def\Qlb#1{#1}}{}
\@ifundefined{Qlt}{\def\Qlt#1{#1}}{}
\def\QWE{}%
\long\def\QQA#1#2{}%
\def\QTR#1#2{{\csname#1\endcsname #2}}%(gp) Is this the best?
\long\def\TeXButton#1#2{#2}%
\long\def\QSubDoc#1#2{#2}%
\def\EXPAND#1[#2]#3{}%
\def\NOEXPAND#1[#2]#3{}%
\def\PROTECTED{}%
\def\LaTeXparent#1{}%
\def\ChildStyles#1{}%
\def\ChildDefaults#1{}%
\def\QTagDef#1#2#3{}%

% Constructs added with Scientific Notebook
\@ifundefined{correctchoice}{\def\correctchoice{\relax}}{}
\@ifundefined{HTML}{\def\HTML#1{\relax}}{}
\@ifundefined{TCIIcon}{\def\TCIIcon#1#2#3#4{\relax}}{}
\if@compatibility
  \typeout{Not defining UNICODE  U or CustomNote commands for LaTeX 2.09.}
\else
  \providecommand{\UNICODE}[2][]{\protect\rule{.1in}{.1in}}
  \providecommand{\U}[1]{\protect\rule{.1in}{.1in}}
  \providecommand{\CustomNote}[3][]{\marginpar{#3}}
\fi

%
% Macros for style editor docs
\@ifundefined{StyleEditBeginDoc}{\def\StyleEditBeginDoc{\relax}}{}
%
% Macros for footnotes
\def\QQfnmark#1{\footnotemark}
\def\QQfntext#1#2{\addtocounter{footnote}{#1}\footnotetext{#2}}
%
% Macros for indexing.
%
\@ifundefined{TCIMAKEINDEX}{}{\makeindex}%
%
% Attempts to avoid problems with other styles
\@ifundefined{abstract}{%
 \def\abstract{%
  \if@twocolumn
   \section*{Abstract (Not appropriate in this style!)}%
   \else \small 
   \begin{center}{\bf Abstract\vspace{-.5em}\vspace{\z@}}\end{center}%
   \quotation 
   \fi
  }%
 }{%
 }%
\@ifundefined{endabstract}{\def\endabstract
  {\if@twocolumn\else\endquotation\fi}}{}%
\@ifundefined{maketitle}{\def\maketitle#1{}}{}%
\@ifundefined{affiliation}{\def\affiliation#1{}}{}%
\@ifundefined{proof}{\def\proof{\noindent{\bfseries Proof. }}}{}%
\@ifundefined{endproof}{\def\endproof{\mbox{\ \rule{.1in}{.1in}}}}{}%
\@ifundefined{newfield}{\def\newfield#1#2{}}{}%
\@ifundefined{chapter}{\def\chapter#1{\par(Chapter head:)#1\par }%
 \newcount\c@chapter}{}%
\@ifundefined{part}{\def\part#1{\par(Part head:)#1\par }}{}%
\@ifundefined{section}{\def\section#1{\par(Section head:)#1\par }}{}%
\@ifundefined{subsection}{\def\subsection#1%
 {\par(Subsection head:)#1\par }}{}%
\@ifundefined{subsubsection}{\def\subsubsection#1%
 {\par(Subsubsection head:)#1\par }}{}%
\@ifundefined{paragraph}{\def\paragraph#1%
 {\par(Subsubsubsection head:)#1\par }}{}%
\@ifundefined{subparagraph}{\def\subparagraph#1%
 {\par(Subsubsubsubsection head:)#1\par }}{}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% These symbols are not recognized by LaTeX
\@ifundefined{therefore}{\def\therefore{}}{}%
\@ifundefined{backepsilon}{\def\backepsilon{}}{}%
\@ifundefined{yen}{\def\yen{\hbox{\rm\rlap=Y}}}{}%
\@ifundefined{registered}{%
   \def\registered{\relax\ifmmode{}\r@gistered
                    \else$\m@th\r@gistered$\fi}%
 \def\r@gistered{^{\ooalign
  {\hfil\raise.07ex\hbox{$\scriptstyle\rm\text{R}$}\hfil\crcr
  \mathhexbox20D}}}}{}%
\@ifundefined{Eth}{\def\Eth{}}{}%
\@ifundefined{eth}{\def\eth{}}{}%
\@ifundefined{Thorn}{\def\Thorn{}}{}%
\@ifundefined{thorn}{\def\thorn{}}{}%
% A macro to allow any symbol that requires math to appear in text
\def\TEXTsymbol#1{\mbox{$#1$}}%
\@ifundefined{degree}{\def\degree{{}^{\circ}}}{}%
%
% macros for T3TeX files
\newdimen\theight
\@ifundefined{Column}{\def\Column{%
 \vadjust{\setbox\z@=\hbox{\scriptsize\quad\quad tcol}%
  \theight=\ht\z@\advance\theight by \dp\z@\advance\theight by \lineskip
  \kern -\theight \vbox to \theight{%
   \rightline{\rlap{\box\z@}}%
   \vss
   }%
  }%
 }}{}%
%
\@ifundefined{qed}{\def\qed{%
 \ifhmode\unskip\nobreak\fi\ifmmode\ifinner\else\hskip5\p@\fi\fi
 \hbox{\hskip5\p@\vrule width4\p@ height6\p@ depth1.5\p@\hskip\p@}%
 }}{}%
%
\@ifundefined{cents}{\def\cents{\hbox{\rm\rlap/c}}}{}%
\@ifundefined{miss}{\def\miss{\hbox{\vrule height2\p@ width 2\p@ depth\z@}}}{}%
%
\@ifundefined{vvert}{\def\vvert{\Vert}}{}%  %always translated to \left| or \right|
%
\@ifundefined{tcol}{\def\tcol#1{{\baselineskip=6\p@ \vcenter{#1}} \Column}}{}%
%
\@ifundefined{dB}{\def\dB{\hbox{{}}}}{}%        %dummy entry in column 
\@ifundefined{mB}{\def\mB#1{\hbox{$#1$}}}{}%   %column entry
\@ifundefined{nB}{\def\nB#1{\hbox{#1}}}{}%     %column entry (not math)
%
\@ifundefined{note}{\def\note{$^{\dag}}}{}%
%
\def\newfmtname{LaTeX2e}
% No longer load latexsym.  This is now handled by SWP, which uses amsfonts if necessary
%
\ifx\fmtname\newfmtname
  \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
  \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
  \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
  \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
  \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
  \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
  \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\fi

%
% Greek bold macros
% Redefine all of the math symbols 
% which might be bolded	 - there are 
% probably others to add to this list

\def\alpha{{\Greekmath 010B}}%
\def\beta{{\Greekmath 010C}}%
\def\gamma{{\Greekmath 010D}}%
\def\delta{{\Greekmath 010E}}%
\def\epsilon{{\Greekmath 010F}}%
\def\zeta{{\Greekmath 0110}}%
\def\eta{{\Greekmath 0111}}%
\def\theta{{\Greekmath 0112}}%
\def\iota{{\Greekmath 0113}}%
\def\kappa{{\Greekmath 0114}}%
\def\lambda{{\Greekmath 0115}}%
\def\mu{{\Greekmath 0116}}%
\def\nu{{\Greekmath 0117}}%
\def\xi{{\Greekmath 0118}}%
\def\pi{{\Greekmath 0119}}%
\def\rho{{\Greekmath 011A}}%
\def\sigma{{\Greekmath 011B}}%
\def\tau{{\Greekmath 011C}}%
\def\upsilon{{\Greekmath 011D}}%
\def\phi{{\Greekmath 011E}}%
\def\chi{{\Greekmath 011F}}%
\def\psi{{\Greekmath 0120}}%
\def\omega{{\Greekmath 0121}}%
\def\varepsilon{{\Greekmath 0122}}%
\def\vartheta{{\Greekmath 0123}}%
\def\varpi{{\Greekmath 0124}}%
\def\varrho{{\Greekmath 0125}}%
\def\varsigma{{\Greekmath 0126}}%
\def\varphi{{\Greekmath 0127}}%

\def\nabla{{\Greekmath 0272}}
\def\FindBoldGroup{%
   {\setbox0=\hbox{$\mathbf{x\global\edef\theboldgroup{\the\mathgroup}}$}}%
}

\def\Greekmath#1#2#3#4{%
    \if@compatibility
        \ifnum\mathgroup=\symbold
           \mathchoice{\mbox{\boldmath$\displaystyle\mathchar"#1#2#3#4$}}%
                      {\mbox{\boldmath$\textstyle\mathchar"#1#2#3#4$}}%
                      {\mbox{\boldmath$\scriptstyle\mathchar"#1#2#3#4$}}%
                      {\mbox{\boldmath$\scriptscriptstyle\mathchar"#1#2#3#4$}}%
        \else
           \mathchar"#1#2#3#4% 
        \fi 
    \else 
        \FindBoldGroup
        \ifnum\mathgroup=\theboldgroup % For 2e
           \mathchoice{\mbox{\boldmath$\displaystyle\mathchar"#1#2#3#4$}}%
                      {\mbox{\boldmath$\textstyle\mathchar"#1#2#3#4$}}%
                      {\mbox{\boldmath$\scriptstyle\mathchar"#1#2#3#4$}}%
                      {\mbox{\boldmath$\scriptscriptstyle\mathchar"#1#2#3#4$}}%
        \else
           \mathchar"#1#2#3#4% 
        \fi     	    
	  \fi}

\newif\ifGreekBold  \GreekBoldfalse
\let\SAVEPBF=\pbf
\def\pbf{\GreekBoldtrue\SAVEPBF}%
%

\@ifundefined{theorem}{\newtheorem{theorem}{Theorem}}{}
\@ifundefined{lemma}{\newtheorem{lemma}[theorem]{Lemma}}{}
\@ifundefined{corollary}{\newtheorem{corollary}[theorem]{Corollary}}{}
\@ifundefined{conjecture}{\newtheorem{conjecture}[theorem]{Conjecture}}{}
\@ifundefined{proposition}{\newtheorem{proposition}[theorem]{Proposition}}{}
\@ifundefined{axiom}{\newtheorem{axiom}{Axiom}}{}
\@ifundefined{remark}{\newtheorem{remark}{Remark}}{}
\@ifundefined{example}{\newtheorem{example}{Example}}{}
\@ifundefined{exercise}{\newtheorem{exercise}{Exercise}}{}
\@ifundefined{definition}{\newtheorem{definition}{Definition}}{}


\@ifundefined{mathletters}{%
  %\def\theequation{\arabic{equation}}
  \newcounter{equationnumber}  
  \def\mathletters{%
     \addtocounter{equation}{1}
     \edef\@currentlabel{\theequation}%
     \setcounter{equationnumber}{\c@equation}
     \setcounter{equation}{0}%
     \edef\theequation{\@currentlabel\noexpand\alph{equation}}%
  }
  \def\endmathletters{%
     \setcounter{equation}{\value{equationnumber}}%
  }
}{}

%Logos
\@ifundefined{BibTeX}{%
    \def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
                 T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}%
\@ifundefined{AmS}%
    {\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}%
                A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}}{}%
\@ifundefined{AmSTeX}{\def\AmSTeX{\protect\AmS-\protect\TeX\@}}{}%
%

% This macro is a fix to eqnarray
\def\@@eqncr{\let\@tempa\relax
    \ifcase\@eqcnt \def\@tempa{& & &}\or \def\@tempa{& &}%
      \else \def\@tempa{&}\fi
     \@tempa
     \if@eqnsw
        \iftag@
           \@taggnum
        \else
           \@eqnnum\stepcounter{equation}%
        \fi
     \fi
     \global\tag@false
     \global\@eqnswtrue
     \global\@eqcnt\z@\cr}


\def\TCItag{\@ifnextchar*{\@TCItagstar}{\@TCItag}}
\def\@TCItag#1{%
    \global\tag@true
    \global\def\@taggnum{(#1)}}
\def\@TCItagstar*#1{%
    \global\tag@true
    \global\def\@taggnum{#1}}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\def\tfrac#1#2{{\textstyle {#1 \over #2}}}%
\def\dfrac#1#2{{\displaystyle {#1 \over #2}}}%
\def\binom#1#2{{#1 \choose #2}}%
\def\tbinom#1#2{{\textstyle {#1 \choose #2}}}%
\def\dbinom#1#2{{\displaystyle {#1 \choose #2}}}%
\def\QATOP#1#2{{#1 \atop #2}}%
\def\QTATOP#1#2{{\textstyle {#1 \atop #2}}}%
\def\QDATOP#1#2{{\displaystyle {#1 \atop #2}}}%
\def\QABOVE#1#2#3{{#2 \above#1 #3}}%
\def\QTABOVE#1#2#3{{\textstyle {#2 \above#1 #3}}}%
\def\QDABOVE#1#2#3{{\displaystyle {#2 \above#1 #3}}}%
\def\QOVERD#1#2#3#4{{#3 \overwithdelims#1#2 #4}}%
\def\QTOVERD#1#2#3#4{{\textstyle {#3 \overwithdelims#1#2 #4}}}%
\def\QDOVERD#1#2#3#4{{\displaystyle {#3 \overwithdelims#1#2 #4}}}%
\def\QATOPD#1#2#3#4{{#3 \atopwithdelims#1#2 #4}}%
\def\QTATOPD#1#2#3#4{{\textstyle {#3 \atopwithdelims#1#2 #4}}}%
\def\QDATOPD#1#2#3#4{{\displaystyle {#3 \atopwithdelims#1#2 #4}}}%
\def\QABOVED#1#2#3#4#5{{#4 \abovewithdelims#1#2#3 #5}}%
\def\QTABOVED#1#2#3#4#5{{\textstyle 
   {#4 \abovewithdelims#1#2#3 #5}}}%
\def\QDABOVED#1#2#3#4#5{{\displaystyle 
   {#4 \abovewithdelims#1#2#3 #5}}}%
%
% Macros for text size operators:
%
\def\tint{\mathop{\textstyle \int}}%
\def\tiint{\mathop{\textstyle \iint }}%
\def\tiiint{\mathop{\textstyle \iiint }}%
\def\tiiiint{\mathop{\textstyle \iiiint }}%
\def\tidotsint{\mathop{\textstyle \idotsint }}%
\def\toint{\mathop{\textstyle \oint}}%
\def\tsum{\mathop{\textstyle \sum }}%
\def\tprod{\mathop{\textstyle \prod }}%
\def\tbigcap{\mathop{\textstyle \bigcap }}%
\def\tbigwedge{\mathop{\textstyle \bigwedge }}%
\def\tbigoplus{\mathop{\textstyle \bigoplus }}%
\def\tbigodot{\mathop{\textstyle \bigodot }}%
\def\tbigsqcup{\mathop{\textstyle \bigsqcup }}%
\def\tcoprod{\mathop{\textstyle \coprod }}%
\def\tbigcup{\mathop{\textstyle \bigcup }}%
\def\tbigvee{\mathop{\textstyle \bigvee }}%
\def\tbigotimes{\mathop{\textstyle \bigotimes }}%
\def\tbiguplus{\mathop{\textstyle \biguplus }}%
%
%
%Macros for display size operators:
%
\def\dint{\displaystyle \int}%
\def\diint{\displaystyle \iint}%
\def\diiint{\displaystyle \iiint}%
\def\diiiint{\mathop{\displaystyle \iiiint }}%
\def\didotsint{\mathop{\displaystyle \idotsint }}%
\def\doint{\mathop{\displaystyle \oint}}%
\def\dsum{\mathop{\displaystyle \sum }}%
\def\dprod{\mathop{\displaystyle \prod }}%
\def\dbigcap{\mathop{\displaystyle \bigcap }}%
\def\dbigwedge{\mathop{\displaystyle \bigwedge }}%
\def\dbigoplus{\mathop{\displaystyle \bigoplus }}%
\def\dbigodot{\mathop{\displaystyle \bigodot }}%
\def\dbigsqcup{\mathop{\displaystyle \bigsqcup }}%
\def\dcoprod{\mathop{\displaystyle \coprod }}%
\def\dbigcup{\mathop{\displaystyle \bigcup }}%
\def\dbigvee{\mathop{\displaystyle \bigvee }}%
\def\dbigotimes{\mathop{\displaystyle \bigotimes }}%
\def\dbiguplus{\mathop{\displaystyle \biguplus }}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% NOTE: The rest of this file is read only if amstex has not been
% loaded.  This section is used to define amstex constructs in the
% event they have not been defined.
%
%


\def\ExitTCILatex{\makeatother\endinput}

\bgroup
\ifx\ds@amstex\relax
   \message{amstex already loaded}\aftergroup\ExitTCILatex
\else
   \@ifpackageloaded{amsmath}%
      {\message{amsmath already loaded}\aftergroup\ExitTCILatex}
      {}
   \@ifpackageloaded{amstex}%
      {\message{amstex already loaded}\aftergroup\ExitTCILatex}
      {}
   \@ifpackageloaded{amsgen}%
      {\message{amsgen already loaded}\aftergroup\ExitTCILatex}
      {}
\fi
\egroup


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%
%
%  Macros to define some AMS LaTeX constructs when 
%  AMS LaTeX has not been loaded
% 
% These macros are copied from the AMS-TeX package for doing
% multiple integrals.
%
\typeout{TCILATEX defining AMS-like constructs}
\let\DOTSI\relax
\def\RIfM@{\relax\ifmmode}%
\def\FN@{\futurelet\next}%
\newcount\intno@
\def\iint{\DOTSI\intno@\tw@\FN@\ints@}%
\def\iiint{\DOTSI\intno@\thr@@\FN@\ints@}%
\def\iiiint{\DOTSI\intno@4 \FN@\ints@}%
\def\idotsint{\DOTSI\intno@\z@\FN@\ints@}%
\def\ints@{\findlimits@\ints@@}%
\newif\iflimtoken@
\newif\iflimits@
\def\findlimits@{\limtoken@true\ifx\next\limits\limits@true
 \else\ifx\next\nolimits\limits@false\else
 \limtoken@false\ifx\ilimits@\nolimits\limits@false\else
 \ifinner\limits@false\else\limits@true\fi\fi\fi\fi}%
\def\multint@{\int\ifnum\intno@=\z@\intdots@                          %1
 \else\intkern@\fi                                                    %2
 \ifnum\intno@>\tw@\int\intkern@\fi                                   %3
 \ifnum\intno@>\thr@@\int\intkern@\fi                                 %4
 \int}%                                                               %5
\def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi
 \ifnum\intno@>\tw@\intop\intkern@\fi
 \ifnum\intno@>\thr@@\intop\intkern@\fi\intop}%
\def\intic@{%
    \mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}}%
\def\negintic@{\mathchoice
 {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}}%
\def\ints@@{\iflimtoken@                                              %1
 \def\ints@@@{\iflimits@\negintic@
   \mathop{\intic@\multintlimits@}\limits                             %2
  \else\multint@\nolimits\fi                                          %3
  \eat@}%                                                             %4
 \else                                                                %5
 \def\ints@@@{\iflimits@\negintic@
  \mathop{\intic@\multintlimits@}\limits\else
  \multint@\nolimits\fi}\fi\ints@@@}%
\def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}%
\def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}}%
\def\intdots@{\mathchoice{\plaincdots@}%
 {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}%
 {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}%
 {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}%
%
%
%  These macros are for doing the AMS \text{} construct
%
\def\RIfM@{\relax\protect\ifmmode}
\def\text{\RIfM@\expandafter\text@\else\expandafter\mbox\fi}
\let\nfss@text\text
\def\text@#1{\mathchoice
   {\textdef@\displaystyle\f@size{#1}}%
   {\textdef@\textstyle\tf@size{\firstchoice@false #1}}%
   {\textdef@\textstyle\sf@size{\firstchoice@false #1}}%
   {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}%
   \glb@settings}

\def\textdef@#1#2#3{\hbox{{%
                    \everymath{#1}%
                    \let\f@size#2\selectfont
                    #3}}}
\newif\iffirstchoice@
\firstchoice@true
%
%These are the AMS constructs for multiline limits.
%
\def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}%
\def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}}%
\def\multilimits@{\bgroup\vspace@\Let@
 \baselineskip\fontdimen10 \scriptfont\tw@
 \advance\baselineskip\fontdimen12 \scriptfont\tw@
 \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
 \lineskiplimit\lineskip
 \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr}%
\def\Sb{_\multilimits@}%
\def\endSb{\crcr\egroup\egroup\egroup}%
\def\Sp{^\multilimits@}%
\let\endSp\endSb
%
%
%These are AMS constructs for horizontal arrows
%
\newdimen\ex@
\ex@.2326ex
\def\rightarrowfill@#1{$#1\m@th\mathord-\mkern-6mu\cleaders
 \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill
 \mkern-6mu\mathord\rightarrow$}%
\def\leftarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders
 \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill\mkern-6mu\mathord-$}%
\def\leftrightarrowfill@#1{$#1\m@th\mathord\leftarrow
\mkern-6mu\cleaders
 \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill
 \mkern-6mu\mathord\rightarrow$}%
\def\overrightarrow{\mathpalette\overrightarrow@}%
\def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr
 \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}%
\let\overarrow\overrightarrow
\def\overleftarrow{\mathpalette\overleftarrow@}%
\def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr
 \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}%
\def\overleftrightarrow{\mathpalette\overleftrightarrow@}%
\def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr
   \leftrightarrowfill@#1\crcr
 \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}%
\def\underrightarrow{\mathpalette\underrightarrow@}%
\def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil
  $\crcr\noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}}%
\let\underarrow\underrightarrow
\def\underleftarrow{\mathpalette\underleftarrow@}%
\def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil
  $\crcr\noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}}%
\def\underleftrightarrow{\mathpalette\underleftrightarrow@}%
\def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th
  \hfil#1#2\hfil$\crcr
 \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}}%
%%%%%%%%%%%%%%%%%%%%%

\def\qopnamewl@#1{\mathop{\operator@font#1}\nlimits@}
\let\nlimits@\displaylimits
\def\setboxz@h{\setbox\z@\hbox}


\def\varlim@#1#2{\mathop{\vtop{\ialign{##\crcr
 \hfil$#1\m@th\operator@font lim$\hfil\crcr
 \noalign{\nointerlineskip}#2#1\crcr
 \noalign{\nointerlineskip\kern-\ex@}\crcr}}}}

 \def\rightarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@
  $#1\copy\z@\mkern-6mu\cleaders
  \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
  \mkern-6mu\mathord\rightarrow$}
\def\leftarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@
  $#1\mathord\leftarrow\mkern-6mu\cleaders
  \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
  \mkern-6mu\box\z@$}


\def\projlim{\qopnamewl@{proj\,lim}}
\def\injlim{\qopnamewl@{inj\,lim}}
\def\varinjlim{\mathpalette\varlim@\rightarrowfill@}
\def\varprojlim{\mathpalette\varlim@\leftarrowfill@}
\def\varliminf{\mathpalette\varliminf@{}}
\def\varliminf@#1{\mathop{\underline{\vrule\@depth.2\ex@\@width\z@
   \hbox{$#1\m@th\operator@font lim$}}}}
\def\varlimsup{\mathpalette\varlimsup@{}}
\def\varlimsup@#1{\mathop{\overline
  {\hbox{$#1\m@th\operator@font lim$}}}}

%
%Companion to stackrel
\def\stackunder#1#2{\mathrel{\mathop{#2}\limits_{#1}}}%
%
%
% These are AMS environments that will be defined to
% be verbatims if amstex has not actually been 
% loaded
%
%
\begingroup \catcode `|=0 \catcode `[= 1
\catcode`]=2 \catcode `\{=12 \catcode `\}=12
\catcode`\\=12 
|gdef|@alignverbatim#1\end{align}[#1|end[align]]
|gdef|@salignverbatim#1\end{align*}[#1|end[align*]]

|gdef|@alignatverbatim#1\end{alignat}[#1|end[alignat]]
|gdef|@salignatverbatim#1\end{alignat*}[#1|end[alignat*]]

|gdef|@xalignatverbatim#1\end{xalignat}[#1|end[xalignat]]
|gdef|@sxalignatverbatim#1\end{xalignat*}[#1|end[xalignat*]]

|gdef|@gatherverbatim#1\end{gather}[#1|end[gather]]
|gdef|@sgatherverbatim#1\end{gather*}[#1|end[gather*]]

|gdef|@gatherverbatim#1\end{gather}[#1|end[gather]]
|gdef|@sgatherverbatim#1\end{gather*}[#1|end[gather*]]


|gdef|@multilineverbatim#1\end{multiline}[#1|end[multiline]]
|gdef|@smultilineverbatim#1\end{multiline*}[#1|end[multiline*]]

|gdef|@arraxverbatim#1\end{arrax}[#1|end[arrax]]
|gdef|@sarraxverbatim#1\end{arrax*}[#1|end[arrax*]]

|gdef|@tabulaxverbatim#1\end{tabulax}[#1|end[tabulax]]
|gdef|@stabulaxverbatim#1\end{tabulax*}[#1|end[tabulax*]]


|endgroup
  

  
\def\align{\@verbatim \frenchspacing\@vobeyspaces \@alignverbatim
You are using the "align" environment in a style in which it is not defined.}
\let\endalign=\endtrivlist
 
\@namedef{align*}{\@verbatim\@salignverbatim
You are using the "align*" environment in a style in which it is not defined.}
\expandafter\let\csname endalign*\endcsname =\endtrivlist




\def\alignat{\@verbatim \frenchspacing\@vobeyspaces \@alignatverbatim
You are using the "alignat" environment in a style in which it is not defined.}
\let\endalignat=\endtrivlist
 
\@namedef{alignat*}{\@verbatim\@salignatverbatim
You are using the "alignat*" environment in a style in which it is not defined.}
\expandafter\let\csname endalignat*\endcsname =\endtrivlist




\def\xalignat{\@verbatim \frenchspacing\@vobeyspaces \@xalignatverbatim
You are using the "xalignat" environment in a style in which it is not defined.}
\let\endxalignat=\endtrivlist
 
\@namedef{xalignat*}{\@verbatim\@sxalignatverbatim
You are using the "xalignat*" environment in a style in which it is not defined.}
\expandafter\let\csname endxalignat*\endcsname =\endtrivlist




\def\gather{\@verbatim \frenchspacing\@vobeyspaces \@gatherverbatim
You are using the "gather" environment in a style in which it is not defined.}
\let\endgather=\endtrivlist
 
\@namedef{gather*}{\@verbatim\@sgatherverbatim
You are using the "gather*" environment in a style in which it is not defined.}
\expandafter\let\csname endgather*\endcsname =\endtrivlist


\def\multiline{\@verbatim \frenchspacing\@vobeyspaces \@multilineverbatim
You are using the "multiline" environment in a style in which it is not defined.}
\let\endmultiline=\endtrivlist
 
\@namedef{multiline*}{\@verbatim\@smultilineverbatim
You are using the "multiline*" environment in a style in which it is not defined.}
\expandafter\let\csname endmultiline*\endcsname =\endtrivlist


\def\arrax{\@verbatim \frenchspacing\@vobeyspaces \@arraxverbatim
You are using a type of "array" construct that is only allowed in AmS-LaTeX.}
\let\endarrax=\endtrivlist

\def\tabulax{\@verbatim \frenchspacing\@vobeyspaces \@tabulaxverbatim
You are using a type of "tabular" construct that is only allowed in AmS-LaTeX.}
\let\endtabulax=\endtrivlist

 
\@namedef{arrax*}{\@verbatim\@sarraxverbatim
You are using a type of "array*" construct that is only allowed in AmS-LaTeX.}
\expandafter\let\csname endarrax*\endcsname =\endtrivlist

\@namedef{tabulax*}{\@verbatim\@stabulaxverbatim
You are using a type of "tabular*" construct that is only allowed in AmS-LaTeX.}
\expandafter\let\csname endtabulax*\endcsname =\endtrivlist

% macro to simulate ams tag construct


% This macro is a fix to the equation environment
 \def\endequation{%
     \ifmmode\ifinner % FLEQN hack
      \iftag@
        \addtocounter{equation}{-1} % undo the increment made in the begin part
        $\hfil
           \displaywidth\linewidth\@taggnum\egroup \endtrivlist
        \global\tag@false
        \global\@ignoretrue   
      \else
        $\hfil
           \displaywidth\linewidth\@eqnnum\egroup \endtrivlist
        \global\tag@false
        \global\@ignoretrue 
      \fi
     \else   
      \iftag@
        \addtocounter{equation}{-1} % undo the increment made in the begin part
        \eqno \hbox{\@taggnum}
        \global\tag@false%
        $$\global\@ignoretrue
      \else
        \eqno \hbox{\@eqnnum}% $$ BRACE MATCHING HACK
        $$\global\@ignoretrue
      \fi
     \fi\fi
 } 

 \newif\iftag@ \tag@false
 
 \def\TCItag{\@ifnextchar*{\@TCItagstar}{\@TCItag}}
 \def\@TCItag#1{%
     \global\tag@true
     \global\def\@taggnum{(#1)}}
 \def\@TCItagstar*#1{%
     \global\tag@true
     \global\def\@taggnum{#1}}

  \@ifundefined{tag}{
     \def\tag{\@ifnextchar*{\@tagstar}{\@tag}}
     \def\@tag#1{%
         \global\tag@true
         \global\def\@taggnum{(#1)}}
     \def\@tagstar*#1{%
         \global\tag@true
         \global\def\@taggnum{#1}}
  }{}
% Do not add anything to the end of this file.  
% The last section of the file is loaded only if 
% amstex has not been.



\makeatother
\endinput

%%%%%%%%%%%%%%%%%%%%% End /macros/tci/tcilatex.tex %%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%% Start /macros/base/leqno.clo %%%%%%%%%%%%%%%%%%%%

%%
%% This is file `leqno.clo',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ltmath.dtx  (with options: `leqno')
%% 
%% This is a generated file.
%% 
%% Copyright 1993 1994 1995 1996 1997 1998 1999
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%% 
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%% 
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%% 
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%% 
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%% 
%%% From File: ltmath.dtx
\ProvidesFile{leqno.clo}
        [1998/08/17 v1.1c Standard LaTeX option
                                   (left equation numbers)]
\renewcommand\@eqnnum{\hb@xt@.01\p@{}%
                      \rlap{\normalfont\normalcolor
                        \hskip -\displaywidth(\theequation)}}
\endinput
%%
%% End of file `leqno.clo'.

%%%%%%%%%%%%%%%%%%%%%% End /macros/base/leqno.clo %%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%% Start /macros/base/fleqn.clo %%%%%%%%%%%%%%%%%%%%

%%
%% This is file `fleqn.clo',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ltmath.dtx  (with options: `fleqn')
%% 
%% This is a generated file.
%% 
%% Copyright 1993 1994 1995 1996 1997 1998 1999
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%% 
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%% 
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%% 
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%% 
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%% 
%%% From File: ltmath.dtx
\ProvidesFile{fleqn.clo}
        [1998/08/17 v1.1c Standard LaTeX option
                                   (flush left equations)]
\newdimen\mathindent
\AtEndOfClass{\mathindent\leftmargini}
\renewcommand\[{\relax
                \ifmmode\@badmath
                \else
                  \begin{trivlist}%
                    \@beginparpenalty\predisplaypenalty
                    \@endparpenalty\postdisplaypenalty
                    \item[]\leavevmode
                    \hb@xt@\linewidth\bgroup $\m@th\displaystyle %$
                      \hskip\mathindent\bgroup
                \fi}
\renewcommand\]{\relax
                \ifmmode
                      \egroup $\hfil% $
                    \egroup
                  \end{trivlist}%
                \else \@badmath
                \fi}
\renewenvironment{equation}%
    {\@beginparpenalty\predisplaypenalty
     \@endparpenalty\postdisplaypenalty
     \refstepcounter{equation}%
     \trivlist \item[]\leavevmode
       \hb@xt@\linewidth\bgroup $\m@th% $
         \displaystyle
         \hskip\mathindent}%
        {$\hfil % $
         \displaywidth\linewidth\hbox{\@eqnnum}%
       \egroup
     \endtrivlist}
\renewenvironment{eqnarray}{%
    \stepcounter{equation}%
    \def\@currentlabel{\p@equation\theequation}%
    \global\@eqnswtrue\m@th
    \global\@eqcnt\z@
    \tabskip\mathindent
    \let\\=\@eqncr
    \setlength\abovedisplayskip{\topsep}%
    \ifvmode
      \addtolength\abovedisplayskip{\partopsep}%
    \fi
    \addtolength\abovedisplayskip{\parskip}%
    \setlength\belowdisplayskip{\abovedisplayskip}%
    \setlength\belowdisplayshortskip{\abovedisplayskip}%
    \setlength\abovedisplayshortskip{\abovedisplayskip}%
    $$\everycr{}\halign to\linewidth% $$
    \bgroup
      \hskip\@centering
      $\displaystyle\tabskip\z@skip{##}$\@eqnsel&%
      \global\@eqcnt\@ne \hskip \tw@\arraycolsep \hfil${##}$\hfil&%
      \global\@eqcnt\tw@ \hskip \tw@\arraycolsep
        $\displaystyle{##}$\hfil \tabskip\@centering&%
      \global\@eqcnt\thr@@
        \hb@xt@\z@\bgroup\hss##\egroup\tabskip\z@skip\cr}%
      {\@@eqncr
    \egroup
    \global\advance\c@equation\m@ne$$% $$
    \@ignoretrue
    }
\endinput
%%
%% End of file `fleqn.clo'.

%%%%%%%%%%%%%%%%%%%%%% End /macros/base/fleqn.clo %%%%%%%%%%%%%%%%%%%%%
