乗算膨張 (Multiexpansion) はBEAFを用いて \(a\{\{2\}\} b = \{a,b,2,2\} = \underbrace{a \{\{1\}\} a \{\{1\}\} \ldots \{\{1\}\} a \{\{1\}\} a}_{\text{b個のa}}\) と表される関数である。[1]
急増加関数においては、 \(f_{\omega+2}(n)\) に近似する。
例[]
- {a,3,2,2} = a{{1}}a{{1}}a= \(\underbrace{a\{a\{a...a\{a\{a\}a\}a...a\}a\}a}_{\underbrace{a\{a\{a...a\{a\{a\}a\}a...a\}a\}a}_{a}}\)
- {3,2,2,2} = 3{{2}}2 = 3{{1}}3 = {3,3,1,2}
- {4,2,2,2} = {4,4,1,2}
- {3,3,2,2} = 3{{2}}3 = 3{{1}}3{{1}}3 = {3,{3,3,1,2},1,2}
- {4,3,2,2} = {4,{4,4,1,2},1,2}
擬似コード[]
下は乗算膨張の擬似コードの例である。
function multiexpansion(a, b): result := a repeat b - 1 times: result := expansion(a, result) return result function expansion(a, b): result := a repeat b - 1 times: result := hyper(a, a, result + 2) return result function hyper(a, b, n): if n = 1: return a + b result := a repeat b - 1 times: result := hyper(a, result, n - 1) return result