+
+% 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} }