ハイパー演算子

ハイパー演算子（ハイパーえんざんし、hyper operator）は、加算、乗算、冪乗を一般化した演算のための演算子である。 表記の制約のため、以後丸囲み文字(①,②,③,…)を丸かっこ入り文字 (n) で表すものとする。 加算演算子を上付き(1) (a + b = a (1)b)、乗算演算子を上付き(2) (ab = a (2)b)、冪乗演算子を上付き(3) (ab = a (3)b)で表し、それらを一般の非負整数nに一般化した上付き(n) (a (n) b) がハイパー演算子である。 それらを関数形式で表す hypern、nを変数とした3変数関数 hyper も定義される。hyper1は加算、hyper2は乗算、hyper3は冪乗であり、さらにhyper4はテトレーション (tetration)、hyper5はペンテーション (pentation)、hyper6はヘキセーション (hexation)･･･と呼ばれる。 n = 0～4 の例は次のとおり。 hyper0 ⁡ ( a , b ) = hyper ⁡ ( a , 0 , b ) = a ( 0 ) b = b + 1 hyper1 ⁡ ( a , b ) = hyper ⁡ ( a , 1 , b ) = a ( 1 ) b = a + b hyper2 ⁡ ( a , b ) = hyper ⁡ ( a , 2 , b ) = a ( 2 ) b = a b = a + a + ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ + a + a ⏟ 長さ b = ∫ 0 b a d b hyper3 ⁡ ( a , b ) = hyper ⁡ ( a , 3 , b ) = a ( 3 ) b = a b = a ↑ b = a × a × ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ × a × a ⏟ 長さ b hyper4 ⁡ ( a , b ) = hyper ⁡ ( a , 4 , b ) = a ( 4 ) b = b a = a ↑↑ b = a a ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ a a ⏟ 高さ b {\displaystyle {\begin{aligned}\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{aligned}}} hyper0は、第2被演算子 b の後者関数（第1オペランド a は無視される）とする。ただし、他の定義を使うこともある。 n > 4 の場合は次のように定める。これは n > 1 の場合全てに成り立つが、n = 1 では成り立たない。 hyper ⁡ n ( a , b ) = hyper ⁡ ( a , n , b ) = a ( n ) b = a ( n − 1 ) a ( n − 1 ) ⋯ ( n − 1 ) a ⏟ b  copies of  a {\displaystyle \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 ≥ 3 に対しては、クヌースの矢印表記やコンウェイのチェーン表記との間に次の関係が成り立つ。 hyper ⁡ ( a , n , b ) = a ( n ) b = a ↑ n − 2 b = a → b → ( n − 2 )  when  n ≥ 3 {\displaystyle \operatorname {hyper} (a,n,b)=a^{(n)}b=a\uparrow ^{n-2}b=a\rightarrow b\rightarrow (n-2)\quad {\mbox{ when }}n\geq 3} また、n ≥ 1 に対しては、Bowerの拡張演算子 (Jonathan Bowers' Extended Operator) との間に次の関係が成り立つ。 hyper ⁡ ( a , n , b ) = a ( n ) b = a ⟨ n ⟩ b  when  n ≥ 1 {\displaystyle \operatorname {hyper} (a,n,b)=a^{(n)}b=a\langle n\rangle b\quad {\mbox{ when }}n\geq 1} 次のように再帰的に定義できる。b = 0のときの例外処理がnによって違うことに注意。 hyper ⁡ ( a , n , b ) = a ( n ) b = { b + 1 , if  n = 0 a , if  n = 1 , b = 0 0 , if  n = 2 , b = 0 1 , if  n ≥ 3 , b = 0 a ( n − 1 ) ( a ( n ) ( b − 1 ) ) otherwise {\displaystyle \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\geq 3,b=0\\a^{(n-1)}(a^{(n)}(b-1))&{\mbox{otherwise}}\end{cases}}} 冪乗を指数関数に拡張したような、b、n の実数への自然な拡張はなされていない。 n ≥ 3（冪乗） 以上では結合律が成り立たないので、右からの優先順位が定められていて、 hyper ⁡ ( n + 1 ) ( a , b ) = a ( n + 1 ) b = a ( n ) a ( n ) ⋯ ( n ) a ( n ) a ⏟ b  copies of  a = a ( n ) ( a ( n ) ⋯ ( n ) ( a ( n ) a ) ⋯ ) ⏟ b  copies of  a {\displaystyle \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}} である。 それに対し、ハイパー演算子を下付きにすることで、優先順位を左からとする演算を表せる。つまり、 hyper n + 1 ⁡ ( a , b ) = a ( n + 1 ) b = ( ⋯ ( a ( n ) a ) ( n ) ⋯ ( n ) a ) ( n ) a ⏟ b  copies of  a {\displaystyle \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 ( 4 ) b = a ( 3 ) a ( 3 ) ( b − 1 ) = a a ( b − 1 ) {\displaystyle 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 （英語）