# XOR and II (concatenation) summation symbols

In Latex, in math mode, if I want to express summation over a range I can use the following expression \sum_{from}^{to}. I can do the same for the product.

What is the name of the symbol that does this for XOR or concatenation?

If I do:

\oplus_{i=0}^7


I don't get the i=0 and 7 parts below and above the symbol, respectively, but to the right instead, like this:

With summation (\sum_{i=0}^7), that is not the case - they appear below and below in the output:

How can I make XOR, or concatenation (II) larger and with indices below and above the symbol?

-

You want to use \bigoplus instead of \oplus.

I've never seen concatenation done that way. Addition and XOR are commutative operations so it makes sense to sum over a set (or take the exclusive OR of a set). Concatenation is not like that. I think I would explicitly write out the concatenation. That said, you can use \bigparallel from the stmaryrd package.

\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\newcommand*\concat{\mathbin{\|}}
\begin{document}
$x_1\concat x_2\concat\dotsb\concat x_n$
$\bigparallel_{i=1}^n x_i$
\end{document}


-
I saw these guys using concatenation summation: schneier.com/skein.pdf, pages 17,18. –  axel22 Jun 14 '11 at 9:25
@axel22: Interesting. I'd never seen that before. Let me update my answer. –  TH. Jun 14 '11 at 9:34
I don’t see why the non-commutativity of the concatenation should disqualify it for this notation. In functional programming, a reduction of character strings via concatenation is a well-defined operation, and defined in the same way as a sum. We’re not talking about sets here, we’re talking about (well-ordered) sequences. –  Konrad Rudolph Jun 14 '11 at 12:19
@Konrad: Fair enough. One might write $\sum_{x\in S}x$. A similar expression would be meaningless for concatenation. That's all I was saying. In this case, you're right that there's a canonical well order imposed by the indexing. –  TH. Jun 14 '11 at 12:39

You can use the \DeclareMathOperator* command that defines operator with super/subscripts above/below itself:

\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator*{\OPLUS}{\oplus}
\begin{document}
$\OPLUS^a_b$
\end{document}

-

The usual way to get a larger \oplus symbol that takes limits above and below in display math mode is with \bigoplus. However this symbol might appear too big; a not-so-large symbol can be obtained by

\newcommand{\bigxor}{\mathop{\mathchoice
{\textstyle\bigoplus}{\textstyle\bigoplus}
{\scriptstyle\bigoplus}{\scriptscriptstyle\bigoplus}}}


For a concatenation big symbol one can do a similar thing:

\newcommand{\bigconc}{\mathop{\mathpalette\bigconcinn\relax}}
\newcommand{\bigconcinn}[2]{%
\vcenter{\hbox{$\bigconcchoose#1\bigconcsize|\mkern1mu\bigconcsize|$}}}
\newcommand{\bigconcchoose}[1]{\def\bigconcsize{}%
\ifx#1\displaystyle
\let\bigconcsize\Big
\else
\ifx#1\textstyle
\let\bigconcsize\big
\fi
\fi#1}


Now \bigconc will behave like \sum:

$\bigconc_{i=0}^{3} X_{i}$

-