\usepackage{amsfonts}
\fi
+\ifx\restriction\undefined
+ \usepackage{amssymb}
+\fi
+
% Place the argument in matching left/right parentheses.
\newcommand*{\of}[1]{ \left({#1}\right) }
% A seven-tuple of things.
\newcommand*{\septuple}[7]{ \left({#1},{#2},{#3},{#4},{#5},{#6},{#7}\right) }
-% The direct sum of two things.
-\newcommand*{\directsum}[2]{ {#1}\oplus{#2} }
+% A free-form tuple of things. Useful for when the exact number is not
+% known, such as when \ldots will be stuck in the middle of the list,
+% and when you don't want to think in column-vector terms, e.g. with
+% elements of an abstract Cartesian product space.
+\newcommand*{\tuple}[1]{ \left({#1}\right) }
-% The direct sum of three things.
-\newcommand*{\directsumthree}[3]{ \directsum{#1}{\directsum{#2}{#3}} }
+% The "least common multiple of" function. Takes a nonempty set of
+% things that can be multiplied and ordered as its argument. Name
+% chosen for synergy with \gcd, which *does* exist already.
+\newcommand*{\lcm}[1]{ \operatorname{lcm}\of{{#1}} }
+\ifdefined\newglossaryentry
+ \newglossaryentry{lcm}{
+ name={\ensuremath{\lcm{X}}},
+ description={the least common multiple of the elements of $X$},
+ sort=l
+ }
+\fi
% The factorial operator.
\newcommand*{\factorial}[1]{ {#1}! }
+% Restrict the first argument (a function) to the second argument (a
+% subset of that functions domain). Abused for polynomials to specify
+% an associated function with a particular domain (also its codomain,
+% in the case of univariate polynomials).
+\newcommand*{\restrict}[2]{{#1}{\restriction}_{#2}}
+\ifdefined\newglossaryentry
+ \newglossaryentry{restriction}{
+ name={\ensuremath{\restrict{f}{X}}},
+ description={the restriction of $f$ to $X$},
+ sort=r
+ }
+\fi
+
%
% Product spaces
%
}
\fi
+% The n-dimensional product space of a generic field F.
+\newcommand*{\Fn}[1][n]{
+ \mathbb{F}\if\detokenize{#1}\detokenize{1}{}\else^{#1}\fi
+}
+
+\ifdefined\newglossaryentry
+ \newglossaryentry{F}{
+ name={\ensuremath{\Fn[1]}},
+ description={a generic field},
+ sort=F
+ }
+\fi
+
% An indexed arbitrary binary operation such as the union or
% intersection of an infinite number of sets. The first argument is
}
-\newcommand*{\directsummany}[3]{ \binopmany{\bigoplus}{#1}{#2}{#3} }
-
-
% The four standard (UNLESS YOU'RE FRENCH) types of intervals along
% the real line.
\newcommand*{\intervaloo}[2]{ \left({#1},{#2}\right) } % open-open