+
+% The space of real symmetric n-by-n matrices.
+\providecommand*{\Sn}[1][n]{
+ \mathcal{S}\if\detokenize{#1}\detokenize{1}{}\else^{#1}\fi
+}
+
+% The space of complex Hermitian n-by-n matrices.
+\providecommand*{\Hn}[1][n]{
+ \mathcal{H}\if\detokenize{#1}\detokenize{1}{}\else^{#1}\fi
+}
+
+%
+% Basic set operations
+%
+
+% The union of its two arguments.
+\providecommand*{\union}[2]{ {#1}\cup{#2} }
+
+% A three-argument union.
+\providecommand*{\unionthree}[3]{ \union{\union{#1}{#2}}{#3} }
+
+% The intersection of its two arguments.
+\providecommand*{\intersect}[2]{ {#1}\cap{#2} }
+
+% A three-argument intersection.
+\providecommand*{\intersectthree}[3]{ \intersect{\intersect{#1}{#2}}{#3} }
+
+% An indexed arbitrary binary operation such as the union or
+% intersection of an infinite number of sets. The first argument is
+% the operator symbol to use, such as \cup for a union. The second
+% argument is the lower index, for example k=1. The third argument is
+% the upper index, such as \infty. Finally the fourth argument should
+% contain the things (e.g. indexed sets) to be operated on.
+\providecommand*{\binopmany}[4]{
+ \mathchoice{ \underset{#2}{\overset{#3}{#1}}{#4} }
+ { {#1}_{#2}^{#3}{#4} }
+ { {#1}_{#2}^{#3}{#4} }
+ { {#1}_{#2}^{#3}{#4} }
+}
+
+\providecommand*{\intersectmany}[3]{ \binopmany{\bigcap}{#1}{#2}{#3} }
+\providecommand*{\cartprodmany}[3]{ \binopmany{\bigtimes}{#1}{#2}{#3} }
+\providecommand*{\directsummany}[3]{ \binopmany{\bigoplus}{#1}{#2}{#3} }
+\providecommand*{\unionmany}[3]{ \binopmany{\bigcup}{#1}{#2}{#3} }