ハイパー演算子

**ハイパー演算子**（ハイパーえんざんし、hyper operator）は、加算、乗算、冪乗を一般化した演算のための演算子である。

## 表記
表記の制約のため、以後丸囲み文字(①,②,③,…)を丸かっこ入り文字 (*n*) で表すものとする。

加算演算子を上付き(1) (*a* + *b* = *a* (1)*b*)、乗算演算子を上付き(2) (*ab* = *a* (2)*b*)、冪乗演算子を上付き(3) (*a**b* = *a* (3)*b*)で表し、それらを一般の非負整数*n*に一般化した上付き(n) (*a* (n) *b*) がハイパー演算子である。

それらを関数形式で表す hyper*n*、*n*を変数とした3変数関数 hyper も定義される。hyper1は加算、hyper2は乗算、hyper3は冪乗であり、さらにhyper4はテトレーション (tetration)、hyper5はペンテーション (pentation)、hyper6はヘキセーション (hexation)･･･と呼ばれる。

*n* = 0 ~ 4 の例は次のとおり。

:\begin{align} \operatorname{hyper0} \left(a, b\right) = \operatorname{hyper}\left(a, 0, b\right) = a ^ {\left(0\right)} b =& b+1 \\
\operatorname{hyper1} \left(a, b\right) = \operatorname{hyper}\left(a, 1, b\right) = a ^ {\left(1\right)} b =& a+b \\
\operatorname{hyper2} \left(a, b\right) = \operatorname{hyper}\left(a, 2, b\right) = a ^ {\left(2\right)} b =& ab = \underbrace{ a+{a+{\cdots\cdots\cdots\cdots\cdots\cdots+{a+{a}}}} }_{\text{長さ }b} = \int_{0}^{b}a\,db \\
\operatorname{hyper3} \left(a, b\right) = \operatorname{hyper}\left(a, 3, b\right) = a ^ {\left(3\right)} b =& a^b = a \uparrow b = \underbrace{ a\times{a\times{\cdots\cdots\cdots\cdots\cdots\cdots\times{a\times{a}}}} }_{\text{長さ }b} \\
\operatorname{hyper4} \left(a, b\right) = \operatorname{hyper}\left(a, 4, b\right) = a ^ {\left(4\right)} b =& \,^b a = a \uparrow
\uparrow b = \underbrace{ a^{a^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{\cdot^{a^{a}}}}}}}}}}}}}}}}}}}}} }_{\text{高さ }b} \end{align} 

hyper0は、第2被演算子 *b* の後者関数（第1被演算子 *a* は無視される）とする。ただし、他の定義を使うこともある。

*n* &gt; 4 の場合は次のように定める。これは *n* &gt; 1 の場合全てに成り立つが、*n* = 1 では成り立たない。

:\operatorname{hyper}n \left(a, b\right) = \operatorname{hyper}\left(a, n, b\right) = a ^ {\left(n\right)} b = \underbrace{ a ^{\left(n-1\right)} a ^{\left(n-1\right)} \cdots ^{\left(n-1\right)} a }_{b \text{ copies of } a}

## 他の表記法との関係
*n* &ge; 3 に対しては、クヌースの矢印表記やコンウェイのチェーン表記との間に次の関係が成り立つ。
:\operatorname{hyper}(a, n, b) = a ^ {(n)} b = a \uparrow^{n-2} b = a \rightarrow b \rightarrow (n -2) \quad \mbox{ when } n \ge 3

また、*n* &ge; 1 に対しては、Bowerの拡張演算子 (Jonathan Bowers' Extended Operator) との間に次の関係が成り立つ。
:\operatorname{hyper}(a, n, b) = a ^ {(n)} b = a \langle n \rangle b \quad \mbox{ when } n \ge 1

## 再帰的定義
次のように再帰的に定義できる。*b* = 0のときの例外処理が*n*によって違うことに注意。
:
  \operatorname{hyper}(a, n, b) = a ^ {(n)} b=
   \begin{cases}
    b+1, & \mbox{if }n=0 \\
    a, & \mbox{if }n=1,b=0 \\
    0, & \mbox{if }n=2,b=0 \\
    1, & \mbox{if }n\ge 3,b=0 \\
    a ^ {(n-1)} ( a ^ {(n)} (b - 1)) & \mbox{otherwise}
   \end{cases}
 

## 実数への拡張
冪乗を指数関数に拡張したような、*b*、*n* の実数への自然な拡張はなされていない。

## 下付きハイパー演算子
*n* &ge; 3（冪乗） 以上では結合律が成り立たないので、右からの優先順位が定められていて、
:\operatorname{hyper}\left(n+1\right) \left(a, b\right) = a ^ {\left(n+1\right)} b = \underbrace{ a ^{\left(n\right)} a ^{\left(n\right)} \cdots ^{\left(n\right)} a ^{\left(n\right)} a}_{b\text{ copies of }a}  = \underbrace{ a ^{\left(n\right)} \left(a ^{\left(n\right)} \cdots ^{\left(n\right)} \left(a ^{\left(n\right)} a\right)\cdots\right) }_{b\text{ copies of }a}
である。

それに対し、ハイパー演算子を下付きにすることで、優先順位を左からとする演算を表せる。つまり、
:\operatorname{hyper}_{n+1} \left(a, b\right) = a _ {\left(n+1\right)} b = \underbrace{ \left(\cdots\left( a ^{\left(n\right)} a\right) ^{\left(n\right)} \cdots ^{\left(n\right)} a\right) ^{\left(n\right)} a}_{b\text{ copies of }a}
である。

ただし、下付きハイパー*n*+1演算子はハイパー*n*演算子を使って簡単に表せる、たとえば
:a _{\left(4\right)} b = a _{\left(3\right)} a _{\left(3\right)} \left(b-1\right) = a ^ {a ^ {\left(b-1\right)}}
（冪乗法則より）なので、本質的に新しい演算ではなく、下付きハイパー演算子の用途はあまりない。

## 外部リンク
*Large Numbers