\(\nabla\)演算子ゲーム

\(\nabla\)演算子ゲームというカードゲームを知っていますか. これは二人で行う対戦ゲームで,互いの場に複数の関数があり,微分や積分などの演算により関数を強化したり倒したりするものです. この記事では,このゲームでの最強の関数を紹介します. 可能な操作を明確にするために厳密なルールが必要ですが, 公式サイトなどを見ても厳密なルールが載っているものがなかったので,ここで厳密にルールを定めようと思います.


始める前に

まず,対戦の前に公理系を決めましょう.特にこだわりがないなら無難に\(ZFC\)でいいでしょう. また,必要があれば十分大きい\(\alpha\in ON\)に対する\(R_\alpha(\mathbb{R})\)の整列順序\(\triangleleft\)を固定しておくといいでしょう.

このゲームでは積分をします.どの積分を使うかも決めましょう.特にこだわりがないならルベーグ積分でいいでしょう.

このゲームでは,二人のプレイヤーそれぞれに,"場"とよばれる集合\(S\)があります. 場は実関数の部分関数からなる集合で,初期状態だとどちらも\(\displaystyle S=\{1(x\in\mathbb{R}), x(x\in\mathbb{R}), x^2(x\in\mathbb{R})\}\)です. この場Sは,実関数全体のなす\(\mathbb{R}\)-線形空間\(\mathbb{R}^\mathbb{R}\)の部分集合とみなされます.ただし,場の元\(f\)は部分関数なので\(dom(f)=\mathbb{R}\)とは限りません. なので,定義域外では0を取る関数\(\dot{f}=f\cup(\mathbb{R}-dom(f))\times\{0\}\)が属する\(\dot{S}\subset\mathbb{R}^\mathbb{R}\)を考えることにします.

\(\dot{S}\)は線形独立である必要があります. プレイヤーが操作を行ったことで\(\dot{S}\)が線形独立でなくなった場合,操作を行ったプレイヤーは\(\dot{S}'\)が線形独立になるような部分集合\(S'\subset S\)を選ぶ必要があります. 選んだ\(S'\)を新たに場とします. このとき,\(S'\)はそのような部分集合で極大なものを取る必要があります.必要以上に削って空集合にするようなことはできません.

\(\dot{S}\)によって生成される\(\mathbb{R}^\mathbb{R}\)の部分空間の次元\(|S|=|\dot{S}|\)が,そのプレイヤーの"次元"です.次元は勝敗を決定する要素になります. また,場\(S\)の元は"基底"と呼ばれます.

ゲームの流れ

はじめに,カードすべてをよく混ぜて裏にして重ね,山札とします.各プレイヤーは山札から7枚ずつカードを引いて手札とします.自分の手札は見ても良いです.

先手と後手を決定し,先手から交互にターンが回ります.ターン終了後,プレイヤーは使用したカードを手札から捨て札として表にして重ね,同じ数だけ山札から手札に加えます. つまり手札は常に7枚です.

一方のプレイヤーの次元が0になった,または山札がなくなったときゲームが終了します.このとき,次元が大きいプレイヤーの勝利です.どちらのプレイヤーも同じ次元の場合は引き分けです.

操作

プレイヤーは,自分のターン毎に以下の操作のうち一つを一回のみ行うことができる.何も操作を行わずにターンを終了することはできない. 操作に使用するカードは,自分の手札に使用する枚数だけ存在する必要がある.どの操作も,自分の場と相手の場のどちらか一方を対象とすることができる.

基底の追加

関数カード(\(0\), \(1\), \(x\), \(x^2\), \(e^x\), \(\sin x\), \(\cos x\))を1枚使用する.そのカードの関数を場に追加する.定義域は,どの関数カードも\(\mathbb{R}\)である.

\(\nabla\), \(\Delta\)

\(\nabla\)と\(\Delta\)のうち一方を1枚使用する.場の関数すべてを,\(\nabla\)なら一回,\(\Delta\)なら二回\(x\)で微分する. このとき,場にある関数の定義域は微分するごとに微分可能な点のみになる.

微積分

\(\displaystyle \frac{d}{dx}\)と\(\displaystyle\int\)のうち一方を1枚以上使用する.場にある関数のうち一つを選んで対象とする. \(\displaystyle\frac{d}{dx}\)を使用すると,対象の関数を使用した枚数だけ\(x\)で微分する. このとき,関数の定義域は微分するごとに微分可能な点のみになる. \(\displaystyle\int\)を使用すると,対象の関数を使用した枚数だけ\(x\)で積分する.このとき,関数の定義域は積分するごとに,内部が空でない可積分区間の和集合になる.

乗除法

場にある関数のうち一つを選んで対象とし,以下の操作を1回以上行う.

二項演算子カード\(\times\), \(\div\)のうち一方を1枚と関数カード1枚を使用する.\(\times\)と関数カード\(f(x)\)を使用する場合,基底\(f(x)\)を\(f(x)g(x)\)(定義域は変化しない)にする. \(\div\)と関数カード\(f(x)\)を使用する場合,基底\(g(x)\)を\(\displaystyle\frac{f(x)}{g(x)}\)(定義域は\(dom(g)-g^{-1}{''}(\{0\})\)) または\(\displaystyle\frac{g(x)}{f(x)}\)(定義域は\(dom(g)-f^{-1}{''}(\{0\})\))にする.

極限

極限カード(\(\displaystyle\lim_{x\to 0}\), \(\displaystyle\lim_{x\to +\infty}\), \(\displaystyle\lim_{x\to -\infty}\), \(\displaystyle\limsup_{x\to +\infty}\), \(\displaystyle\liminf_{x\to +\infty}\))のうち一つを1枚使用する.場の関数のうち1つを選んで,カードの表示の通りの極限を取る. 実数\(r\)に収束する場合,その関数は定数関数\(r\)(定義域は\(\mathbb{R}\))になる.正の無限大に発散または負の無限大に発散する場合,その関数は場から消滅する.

その他

\(\displaystyle\sqrt{\ }\), \(\log\), \(f^{-1}\)のうち一つを1枚使用する.場にある関数のうち一つを選んで対象とする. \(\displaystyle\sqrt{\ }\)を使用する場合,基底\(f(x)\)を\(\displaystyle\sqrt{f(x)}\)(定義域は\(f^{-1}(\mathbb{R}_{\ge 0})\))にする. \(\log\)を使用する場合,基底\(f(x)\)を\(\log(f(x))\)(定義域は\(f^{-1}(\mathbb{R}_{>0})\))にする. \(f^{-1}\)を使用する場合,対象の基底\(f(x)\)の単射な部分関数のうち極大なもの\(g(x)\)を一つ選び,対象をその逆関数\(g^{-1}(x)\)(定義域は\(f{''}(dom(f))\))にする.

反則行為

以下の操作は行うことができない.


極限の対策

\(f(x)\times 0\), \(0\div f(x)\)の2つは必ず\(0\)になるので仕方ないとして, 極限は発散で消えるか収束して定数関数になるかなのでほとんどの関数にとって弱点です. 特に\(\displaystyle\limsup_{x\to +\infty}\), \(\displaystyle\liminf_{x\to +\infty}\)は振動しないので対策は難しいです.これらに対抗するには定義域が上に有界である必要があります. そのような関数を作る方法は大きく分けて2つあります.一つが十分大きい\(x\)に対して\(f(x)\)が\(0\)未満[以下]になる関数に\(\displaystyle\sqrt{\ }\)[\(\log\)]を使う方法, もう一つが上界を持つ関数に\(f^{-1}\)を使う方法です.前者の例として以下のようなものがあります. \[x^2 (x\in\mathbb{R}) \overset{1,\div}{\longrightarrow} \frac{1}{x^2} (x\in\mathbb{R}-\{0\}) \overset{\int}{\longrightarrow} -\frac{1}{x}-1 (x\in\mathbb{R}-\{0\}) \overset{\log}{\longrightarrow} \log\left(-\frac{1}{x}-1\right) (x\in(-1,0))\] この方法は強化にかかる手数が多く,他の極限に対応するとなるともっと複雑です.後者の方法だと以下のようにできます. \[\sin x (x\in\mathbb{R}) \overset{f^{-1}}{\longrightarrow} \arcsin x (x\in [-1,1])\] この方法は単純で,\(\displaystyle\lim_{x\to -\infty}\)にも対策できています.\(\displaystyle\lim_{x\to 0}\)にも対策するには,以下のようにすればよいです. \[\sin x (x\in\mathbb{R}) \overset{\int}{\longrightarrow} \cos x+2 (x\in\mathbb{R}) \overset{f^{-1}}{\longrightarrow} \arccos (x-2) (x\in [1,3])\]

\(f^{-1}\)が強い

\(\sin x\)や\(\cos x\)に\(f^{-1}\)を使うとかんたんに極限に対策することができます.しかし,\(f^{-1}\)の強さはそれだけではありません. そもそも関数に逆関数が存在するには単射である必要があります. \(\sin x\)は単射ではないので,代わりに部分関数\(\displaystyle\sin x \left(x\in\left[-\frac{\pi}{2},\frac{\pi}{2}\right]\right)\)の逆関数を取ることで\(\arcsin x\)を得ています. 定義域を\(\mathbb{R}\)から\(\displaystyle\left[-\frac{\pi}{2},\frac{\pi}{2}\right]\)に変えたわけですが,逆関数が存在するような定義域の制限は他にもあります. \(\displaystyle\left[\frac{1}{2}\pi,\frac{3}{2}\pi\right]\)や\(\displaystyle\left[-\frac{1}{2}\pi,0\right)\cup\left[\frac{1}{2}\pi,\pi\right]\), \([0,1]\), \(\emptyset\)もそうです.ただ,後半2つのように定義域をいくらでも小さくできるとずるいので,定義域の制限は単射になるようなもののうち極大にするというルールにしています. それでも三角関数の場合は定義域の選び方が\(\beth_2\)通りあり,選び方次第で不連続関数にも微分不可能にもできます. それによって得られる関数は\(\arcsin x + 2\pi f(x)\)(\(f(x)\)は整数値のみを取る関数)のようなかたちになります.

最強の関数

以上を踏まえた最強の関数を紹介します. \[\arcsin (x-2) - 2\pi\cdot(\chi_{\{min_\triangleleft(A)\mid A\in[1,3]/\mathbb{Q}\}}(x) + \chi_{\mathbb{Q}}(x) +1) \quad(x\in[1,3])\] \(\chi\)というのは集合の定義関数\(\displaystyle\chi_A(x)=\begin{cases}1&(x\in A)\\ 0&(x\notin A)\end{cases}\)です. \(\chi_{\mathbb{Q}}(x)\)というのは至るところ不連続であると知られているディリクレ関数です. これにより,すべての点で微分を使えなくしています.これがあると\(\nabla\)や\(\Delta\)による全体攻撃も不可能にします. \(\{min_\triangleleft(A)\mid A\in[-1,1]/\mathbb{Q}\}\)はヴィタリ集合と呼ばれるもので,これはルベーグ非可測です.つまり,この関数はルベーグ積分もできません. また,至るところで負の値を取るので,\(\displaystyle\sqrt{\ }\)や\(\log\)も使えません. \(\times\)と\(\div\)は使えますが,基本的に使っても余計複雑になるだけです. \(f^{-1}\)を使うと,\(\displaystyle\left[ -\frac{7}{2}\pi , -\frac{1}{2}\pi \right]\)のよくわからない部分集合が定義域となった\(\sin x +2\)になり, 極限はどれもできず,微分積分もできるか怪しい関数になります.

この関数は\(\sin x +2\)に\(f^{-1}\)を使うことで得られます.つまり最短3ターンで作れます.


余談

反則行為に"関数のルベーグ測度を\(0\)にする操作"を入れていますが,これは公式のルールの"実数の範囲で定義できない演算"に対応するものです. これを"関数の定義域を空にする操作"に緩めると1ターンで最強の関数が作れるようになります. \[1(x\in\mathbb{R}) \overset{f^{-1}}{\longrightarrow} -1(x\in\{1\})\] 一見ただの定数関数ですが,定義域が一点のみなので極限,微分,積分はどれも不可能です.