%
% Standard operations from linear algebra.
%
+\ifx\havemjolinearalgebra\undefined
+\def\havemjolinearalgebra{1}
-% Needed for \lvert, \rVert, etc. and \operatorname.
-\usepackage{amsmath}
-% Wasysym contains the \ocircle that we use in \directsumperp.
-\usepackage{wasysym}
+\ifx\lvert\undefined
+ \usepackage{amsmath} % \lvert, \rVert, etc. and \operatorname.
+\fi
-% Part of the adjustbox package; needed to clip the \perp sign.
-\usepackage{trimclip}
+\ifx\ocircle\undefined
+ \usepackage{wasysym}
+\fi
+
+\ifx\clipbox\undefined
+ % Part of the adjustbox package; needed to clip the \perp sign.
+ \usepackage{trimclip}
+\fi
\input{mjo-common}
% The trace of an operator.
\newcommand*{\trace}[1]{ \operatorname{trace}\of{{#1}} }
+
+% The "rank" of its argument, which is context-dependent. It can mean
+% any or all of,
+%
+% * the rank of a matrix,
+% * the rank of a power-associative algebra (particularly an EJA),
+% * the rank of an element in a Euclidean Jordan algebra.
+%
+\newcommand*{\rank}[1]{ \operatorname{rank}\of{{#1}} }
+
+
% The ``span of'' operator. The name \span is already taken.
\newcommand*{\spanof}[1]{ \operatorname{span}\of{{#1}} }
\newcommand*{\matricize}[1]{ \operatorname{mat}\of{{#1}} }
% An inline column vector, with parentheses and a transpose operator.
-\newcommand*{\colvec}[1]{ \left({#1}\right)^{T} }
+\newcommand*{\colvec}[1]{ \transpose{\left({#1}\right)} }
% Bounded linear operators on some space. The required argument is the
% domain of those operators, and the optional argument is the
% Now declare an orthogonal direct sum in terms of \oplusperp.
\newcommand*{\directsumperp}[2]{ {#1}\oplusperp{#2} }
+
+
+% The space of real symmetric n-by-n matrices. Does not reduce to
+% merely "S" when n=1 since S^{n} does not mean an n-fold cartesian
+% product of S^{1}.
+\newcommand*{\Sn}[1][n]{ \mathcal{S}^{#1} }
+\ifdefined\newglossaryentry
+ \newglossaryentry{Sn}{
+ name={\ensuremath{\Sn}},
+ description={the set of $n$-by-$n$ real symmetric matrices},
+ sort=Sn
+ }
+\fi
+
+% The space of complex Hermitian n-by-n matrices. Does not reduce to
+% merely "H" when n=1 since H^{n} does not mean an n-fold cartesian
+% product of H^{1}.
+\newcommand*{\Hn}[1][n]{ \mathcal{H}^{#1} }
+\ifdefined\newglossaryentry
+ \newglossaryentry{Hn}{
+ name={\ensuremath{\Hn}},
+ description={the set of $n$-by-$n$ complex Hermitian matrices},
+ sort=Hn
+ }
+\fi
+
+
+\fi