+\providecommand*{\Cn}[1][n]{
+ \mathbb{C}\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*{\unionmany}[3]{ \binopmany{\cup}{#1}{#2}{#3} }
+\providecommand*{\intersectmany}[3]{ \binopmany{\cap}{#1}{#2}{#3} }