数学ビジュアライズ

AI数学単発記事

OpenAIのAIが証明した「先手は自分の21手でSnakyを作れる」:方眼の形作りゲーム、最後の未解決の形

方眼に交互に1マスずつ取り、先手が決めた形を作れるかを競うハラリーのゲーム。6マスの形 Snaky だけが、先手が必ず作れるかどうか分かっていませんでした。OpenAIのモデルが「先手は自分の21手以内(後手の手と合わせて41手目まで)に必ず作れる」ことを証明しました。勝ちの形・負けの形の考え方、ペアリング戦略、728枚のカードを組み合わせる証明を、実際に対戦できる図で解説します。

目次
  1. 6マスの形「Snaky」の勝ち負けが決まった
  2. ハラリーの「動物」のゲーム
  3. 形の包含と、勝ちの形の一覧
  4. 負けの形とペアリング戦略
  5. Snaky についてのこれまでの結果
  6. 今回の定理
  7. 条件つきの勝ちを組み合わせる
  8. 728枚のカードと最後のカード
  9. Breaker になって対戦する
  10. どこまで確かなのか
  11. 残された問題
  12. 参考文献
この記事の要点
ゲーム
方眼の上で2人が交互に1マスずつ取ります。先手の Maker は決めた形を作れば勝ち、後手の Breaker はそれを邪魔するだけです。
Snaky
6マスの形 Snaky は、Maker が必ず作れるかどうか分かっていなかった形です。2007〜2008年の論文では、平面で勝ち負けが決まっていない唯一のポリオミノとされていました。
今回の結果
OpenAIのモデルが書いた論文が、Maker は自分の21手以内に必ず Snaky を作れることを示しました。戦略は728枚の「カード」の表で書かれ、記事の中の図で実際に対戦できます。
確かさ
証明の要は、手で証明された短い補題1つです。表の計算は付属のプログラムで確かめられます。論文は査読前のプレプリントです。Lean の形式化については、リポジトリの説明と論文の記述が食い違っています(「どこまで確かなのか」の節)。

この記事で読む論文

Snaky in 21 Maker moves

OpenAI 2026年9月25日付 プレプリント(査読前) PDF 669KB・84ページ

PDFは2026年10月9日にGitHubから取得した版のコピーで、Apache License 2.0(全文)に従って掲載しています。修正版が出た場合は、GitHubのほうが新しくなります。

定義・命題の下の「証明」は、開くとステップが並びます。もう少し詳しくは補足、専門的な話は論文の中身に踏み込む補足です。どちらも開かずに読み進められます。図3と図6は、マスを押して遊べます。

6マスの形「Snaky」の勝ち負けが決まった

2026年10月6日、OpenAIは未公開の社内モデルが書いた数学の論文をGitHubのリポジトリ openai/math で公開しました[1]。その187番が、この記事で読む「Snaky in 21 Maker moves」です[2]。

題材は、方眼の上で形を作り合う単純なゲームです。三目並べを広げたもので、数学者ハラリーが考えました[3, §1]。どの形なら先手が必ず作れるかが調べられ、勝ち負けが最後まで分からなかったのが Snaky(スネーキー、「へびのような」)という形です。

論文は、先手が自分の21手以内に必ず Snaky を作れることを証明しました。この記事では、ゲームの決まりと「勝ちの形・負けの形」の考え方を定義から説明します。そのあとで、論文の戦略を証明つきで紹介し、実際に Breaker として対戦できる図を置きます。

この論文は、10月7日付の修正・取り下げの記録には含まれていません[4]。リポジトリの更新は修正と取り下げの記録にまとめています。

ハラリーの「動物」のゲーム

まず、作る対象の「形」を定義します。

定義1 ポリオミノ [5, §1]

方眼のマスを有限個集めた図形で、辺を共有するマスをたどって全体がつながっているものをポリオミノという。平行移動・回転・裏返しで重なるポリオミノは同じ形とみなす。nn 個のマスからなるものを nn マスのポリオミノと呼ぶ(6マスならヘキソミノ)。

ポリオミノは「動物」(animal)とも呼ばれます[3, §2]。マスの数ごとに数えると、形の数は次のとおりです(この記事の図のプログラムで数え直しています)。

マスの数123456
形の数11251235

マスに座標をつけます。左下の角が (x,y)(x,y) にあるマスを、整数の組 (x,y)∈Z2(x,y)\in\mathbb{Z}^2 で表します。Snaky は次の6マスです[2, §1, p.1]。

S={(0,0),(1,0),(2,0)(3,0),(3,1),(4,1)}\begin{aligned} S=\{&(0,0),(1,0),(2,0)\\ &(3,0),(3,1),(4,1)\}\end{aligned}

4マスの横棒の右端のマスの上に1マス、さらにその右に1マスを付けた形です。回転と裏返しを合わせた8通りの写し方は、行列で書くと各行・各列に ±1\pm1 がちょうど1つある 2×22\times2 行列 RR です。Snaky の置き方は t+R(S)t+R(S)(t∈Z2t\in\mathbb{Z}^2)の形のものすべてです。

(0,0)(0,0)
(3,0)(3,0)
(4,1)(4,1)
回転・裏返しで8通り(どれを作っても勝ち)
図1具体例Snaky の6マスと座標です。下の列は、回転と裏返しで得られる8通りの向きです。Snaky には左右や上下の対称性がないので、8通りはすべて違う形に見えます。Maker はこのどれを作っても勝ちです。

次に、ゲームの決まりを定義します。論文が扱うのは、片方だけが形を作ろうとする「弱い」版です。

定義2 Snaky の達成ゲーム [2, §1, p.1]

盤は無限に広い方眼 Z2\mathbb{Z}^2 で、最初はどのマスも空いている。Maker が先手で、Maker と Breaker が交互に、まだ誰も取っていないマスを1つずつ取る。取ったマスはずっとその人のものである。

Maker が、ある置き方 t+R(S)t+R(S) の6マスをすべて持った時点で Maker の勝ちとする。Maker はほかのマスを余分に持っていてもよい。Breaker は自分で形を作る必要はなく、Maker の完成を邪魔するだけである。

Breaker も形を作れば勝ちになる「強い」版(三目並べと同じ型)もあります。論文は強い版については何も主張していません[2, §1, p.1]。

一般のポリオミノでも同じゲームが考えられ、次のように呼び分けます。

定義3 勝ちの形・負けの形 [3, §2]

ポリオミノ PP の達成ゲーム(定義2の SS を PP に替えたもの)で、Breaker がどう打っても有限の手数で PP を完成させる Maker の戦略があるとき、PP を勝ちの形(winner)という。そうでないとき負けの形(loser)という。

例4 2マスの形は勝ち

Maker が1手目に (0,0)(0,0) を取る。その隣の4マス (±1,0),(0,±1)(\pm1,0),(0,\pm1) のうち、Breaker が1手で取れるのは1つだけである。Maker は残りの隣のマスを取れば、2手目で2マスの形が完成する。

この例のように、完成できる場所を同時に2か所以上作れば、Breaker は1手で全部を消せません。この「二重の脅し」は、あとで見る論文の戦略でもくり返し使われます。

このゲームは、1979年4月の Scientific American 誌のガードナーのコラム「Mathematical Games」で紹介されました[6,3]。

形の包含と、勝ちの形の一覧

勝ち負けを調べるときに最初に使うのは、次の単純な事実です。

命題5 含む形と含まれる形 [3, §3]

ポリオミノ QQ が PP と合同な部分を含むとする。

(1) QQ が勝ちの形なら、PP も勝ちの形である。
(2) PP が負けの形なら、QQ も負けの形である。

証明
  1. (1) を示す。Maker は QQ を作る戦略をそのまま使う。Breaker がどう打っても、有限の手数で QQ の置き方の1つを持つことになる。
  2. その置き方は PP の置き方を含むので、その時点(またはそれより前)に PP も完成している。よって PP は勝ちの形である。
  3. (2) は (1) の対偶である。

たとえば Snaky は、4マスの横棒(直線のテトロミノ)や、その端に1マス付いた L 字の5マスの形を含みます。もしこれらが負けの形なら、Snaky も負けの形だと分かります。実際にはこれらは勝ちの形なので、命題5からは Snaky について何も分かりません。

2007年の論文の時点で、2次元の方眼で勝ちと分かっていた形は11個です[7, §1, p.2]。それらはすべて、図2の右端にある3つの5マスの形のどれかに含まれます[5, §1, Figure 1.1]。この記事の図のプログラムで、1〜5マスの形のうちこの3つに含まれるものを数え直すと、ちょうど11個になります。

勝ちの形(11個):右の3つの5マスの形と、その一部になっている形
正方形:負け
Snaky:未解決 → 今回、勝ち
図2具体例上の段の緑は、勝ちと分かっている11個の形です。1マス、2マス、3マス2個、4マス4個、5マス3個で、どれも右端の3つの5マスの形のどれかに含まれます(Sieben の図では左から順に L、Y、Z と呼ばれています)。4マスの形で入らないのは 2×22\times2 の正方形だけで、これは負けの形です(次の節)。下の段の橙が Snaky です。

負けの形とペアリング戦略

形が負けだと示すには、Breaker の邪魔の仕方を1つ見せれば足ります。いちばんよく使われるのが、マスを2つずつ組にしておく方法です。

定義6 ペアリング戦略

盤のマスの一部を、互いに重ならない2マスの組(ペア)に分けておく。ペアリング戦略とは、Maker がペアの片方を取ったら Breaker がもう片方を取り、それ以外のときは Breaker が空いているマスを好きに取る、という Breaker の戦略である。

命題7 ペアリング戦略で負けを示す

ポリオミノ PP のどの置き方も、あるペアの2マスを両方含むとする。このとき PP は負けの形である。

証明
  1. Breaker がペアリング戦略で打つと、Maker がペアの2マスを両方持つことはない、と示す。

    Maker があるペア {a,b}\{a,b\} の aa を取ったとする。bb が空いていれば Breaker がすぐ bb を取る。bb が空いていなければ、bb は Breaker のものである。

    bb が Maker のものになることはない。もしそうなら、Maker が bb を取った直後に Breaker が aa を取っている(または aa はすでに Breaker のものだった)はずで、Maker は aa を取れないからである。

  2. 仮定から、PP のどの置き方もあるペアを丸ごと含むので、Maker はどの置き方も完成できない。
  3. どんな Maker の戦略もこの Breaker に対して勝てないので、PP は負けの形である。

例8 2×22\times2 の正方形は負け

yy が偶数の行では {(2i,y),(2i+1,y)}\{(2i,y),(2i+1,y)\}、奇数の行では {(2i+1,y),(2i+2,y)}\{(2i+1,y),(2i+2,y)\} をペアにする(i∈Zi\in\mathbb{Z})。れんがを積んだような並びである。

左下が (x,y)(x,y) の正方形は行 yy と行 y+1y+1 にまたがる。2つの行でペアの始まる列の偶奇は逆なので、どちらかの行には xx 列目から始まるペアがある。そのペアは正方形に丸ごと入るので、命題7から正方形は負けの形である。

あなたが Maker です。マスを押すと、Breaker が点線のペアの相手を取ります。いま Maker のマスは 0 個です。

図3具体例例8のペアを横10マス・縦6マスの盤に描いた図です。橙が Maker、濃い灰色が Breaker です。行の端のペアにならないマスを取ると、Breaker はほかの空いたマスを取ります。この盤の上のどの 2×22\times2 の正方形もペアを丸ごと含むことは、図のプログラムで確かめています。何手打っても、Maker は正方形を作れません。

6マスの形で見ると、35個のうち8個が 2×22\times2 の正方形を含み、命題5と例8からすぐに負けの形だと分かります。それ以外の形にも、それぞれ専用のペアの組み方があります。2007年の論文の序論では、勝ちと分かっている11個と Snaky を除くすべてのポリオミノに、Breaker のペアリング戦略があります[7, §1, p.2]。7マス以上の形もすべてこちらに入ります。

図4具体例6マスのポリオミノ35個です。左上の橙が Snaky、濃い灰色の8個は 2×22\times2 の正方形を含む形、薄い灰色はそれ以外です。Snaky 以外の34個はすべて負けの形と分かっていました[7, §1, p.2]。

Snaky には、このペアリング戦略が存在しません。ハーボルトとゼーマンが1997年に計算機の探索で示し[8, §3.2]、のちに計算機を使わない証明も与えられました[8, Theorem 10]。負けを示すいちばんの道具が使えないわけです。Snaky は勝ちの形だろうと考えられていましたが、勝ちを示す Maker の戦略も見つかっていませんでした[5, §1]。

Snaky についてのこれまでの結果

Snaky には、勝ち負けを確かめようとした長い歴史があります[5, §1]。主な結果を、論文の序論と、それが引く文献で確かめた範囲でまとめます。

年示した人内容
1993ハラリー「Is Snaky a winner?」という題の論文[3,5]
1996ハーボルト、ゼーマンMaker が自分のマスの隣にしか打たないと勝てない[5, §1]
1997ハーボルト、ゼーマンBreaker のペアリング戦略は存在しない(計算機の探索)[7, §1, p.2; 8, §3.2]
2000ハラリー、ハーボルト、ゼーマンハンディキャップ2(Maker が最初に3マス置ける)なら勝ち[5, §1]
2004Sieben41次元の盤なら勝ち[3, Proposition 4.1]
2007Halupczok、Schlage-Puchta3次元の盤なら勝ち、8×88\times8 の盤では負け、ハンディキャップ1なら勝ち[7, Theorem 1]
2007Ito、Miyagawaハンディキャップ1なら勝ち[9]
2008Siebenハンディキャップ1の勝ち方を、計算機で見つけた手順で記述。平面では未解決のまま[5, §1, Appendix B]
2011Csernenszky、Martin、Pluhárペアリング戦略がないことの、計算機を使わない証明[8, Theorem 10]
2026年9月OpenAI(今回)ハンディキャップなしの平面で、21手以内に勝ち[2, Theorem 1]

ハンディキャップ kk とは、Maker が1手目に kk マス余分に置けることです[5, §1]。ハンディキャップ1なら、Maker は1手目に2マス置いてから Breaker の番になります。ハーボルトとゼーマンは、6×66\times6 の盤では負けになることも示しています[7, §1, p.2]。

勝ちと示せた盤の次元は41次元から3次元まで下がりましたが、2次元の平面は残っていました。2008年の論文は、平面での問題を未解決としています[5, §1]。OpenAIのリポジトリの一覧は、今回の論文を「Snaky の達成問題に決着をつけた」と紹介しています[10]。

今回の定理

定理9 OpenAI, 2026 [2, Theorem 1, p.1]

定義2のゲームで、Maker の戦略が1つあって、Breaker がどう打っても、Maker は自分の21手以内に Snaky のある置き方を完成させる。

定理を読むときに気をつけたい点をまとめます。どれも論文に書かれています[2, §1, p.1]。

  • 数えるのは Maker が実際に打つ手。あとで出てくる「入れ替えの手」も1手に数えます。Breaker の手と合わせると、全体の41手目までに勝つことになります。
  • 21手が最小とは言っていない。もっと少ない手数で勝てるかどうかは、この論文は主張していません。
  • 弱い版のゲームについての結果。Breaker も Snaky を作れば勝ちになる強い版については何も言っていません。

論文は、同じ戦略が有限の盤でも使えることも示しています[2, Corollary 6, p.8]。17×1717\times17 の盤 {0,…,16}2\{0,\dots,16\}^2 でも、Maker は21手以内に勝てます。8×88\times8 の盤では負けと分かっています。そのあいだの大きさの盤でどうなるかは、この論文では扱っていません。

論文には、21手のほかに25手と35手の戦略も載っています[2, §1, p.2]。この記事では21手の戦略だけを読みます。

条件つきの勝ちを組み合わせる

証明の要は、「この条件がそろえば、あと何手で勝てる」という主張を、小さいものから順に組み合わせていく規則です。まず、その主張を定義します。以下、ある時点で Maker が持つマスの集合を MM、Breaker が持つマスの集合を BB と書きます。

定義10 有効な条件 [2, Definition 2, p.3]

A⊆T⊂Z2A\subseteq T\subset\mathbb{Z}^2 を有限集合、h≥1h\ge1 を整数とする。三つ組 (A,T,h)(A,T,h) が有効な条件であるとは、次が成り立つことをいう。

Maker の手番で A⊆MA\subseteq M かつ B∩T=∅B\cap T=\varnothing なら、Maker はすでに Snaky を完成させているか、あと hh 手以内に完成させる戦略をもつ。

AA を必要な集合、TT を範囲、hh を高さと呼ぶ。

言葉で言うと、「AA のマスを Maker が持っていて、範囲 TT に Breaker のマスが1つもなければ、あと hh 手で勝てる」ということです。範囲の外のマスは、誰が持っていてもかまいません。Maker が余分なマスを持っていてもかまいません。

有効な条件は、回転・裏返し・平行移動しても有効です。F(x)=Rx+tF(x)=Rx+t で A,TA,T を F(A),F(T)F(A),F(T) に替えても、高さは同じです[2, §2, p.3]。

補題11 6枚の基本のカード [2, Lemma 4, p.4]

Snaky のマスを s0=(0,0),…,s5=(4,1)s_0=(0,0),\dots,s_5=(4,1) と並べる。各 jj について (S∖{sj}, S, 1)(S\setminus\{s_j\},\ S,\ 1) は有効な条件である。

証明
  1. Maker が sjs_j を持っていれば、SS 全体を持っていて、すでに完成している。
  2. そうでなければ、SS に Breaker のマスはないので sjs_j は空いている。Maker がそれを取れば1手で完成する。

次が証明の中心の規則です。いくつかの有効な条件を「子」として、マスを1つ取る手でまとめます。

補題12 組み合わせの規則 [2, Lemma 3, p.3]

(Ai,Ti,hi)(A_i,T_i,h_i)(1≤i≤r1\le i\le r)を有効な条件、p∈Z2p\in\mathbb{Z}^2 をマスとする。

T={p}∪⋃i=1rTiA=(⋃i=1rAi ∪ ⋂i=1rTi)∖{p}h=1+max⁡ihiT=\{p\}\cup\bigcup_{i=1}^{r}T_i\qquad A=\Bigl(\bigcup_{i=1}^{r}A_i\ \cup\ \bigcap_{i=1}^{r}T_i\Bigr)\setminus\{p\}\qquad h=1+\max_i h_iT={p}∪⋃i=1rTiA=(⋃i=1rAi ∪ ⋂i=1rTi)∖{p}h=1+max⁡ihi\begin{gathered}T=\{p\}\cup\bigcup_{i=1}^{r}T_i\\A=\Bigl(\bigcup_{i=1}^{r}A_i\ \cup\ \bigcap_{i=1}^{r}T_i\Bigr)\setminus\{p\}\\h=1+\max_i h_i\end{gathered}T={p}∪⋃i=1rTiA=(⋃i=1rAi ∪ ⋂i=1rTi)∖{p}h=1+max⁡ihi\begin{aligned}T &= \{p\}\cup\bigcup_{i=1}^{r}T_i\\[4pt]A &= \Bigl(\bigcup_{i=1}^{r}A_i\ \cup\ \bigcap_{i=1}^{r}T_i\Bigr)\setminus\{p\}\\[4pt]h &= 1+\max_i h_i\end{aligned}

とおくと、(A,T,h)(A,T,h) は有効な条件である。pp をこの条件のピボットと呼ぶ。

証明
  1. Ai⊆TiA_i\subseteq T_i なので A⊆TA\subseteq T である。Maker の手番で A⊆MA\subseteq M、B∩T=∅B\cap T=\varnothing で、まだ完成していないとする。
  2. Maker はピボット pp を取る。pp がすでに Maker のものなら、代わりに空いている好きなマスを取る(入れ替えの手)。

    p∈Tp\in T なので、pp は Breaker のものではない。盤は無限で M∪BM\cup B は有限なので、空いたマスは必ずある。入れ替えの手も1手に数える。

  3. この手のあと、Maker のマスの集合 M′M' は ⋃iAi\bigcup_iA_i と ⋂iTi\bigcap_iT_i を含む。

    A∪{p}⊆M′A\cup\{p\}\subseteq M' で、A∪{p}A\cup\{p\} は ⋃iAi∪⋂iTi\bigcup_iA_i\cup\bigcap_iT_i を含むからである。

  4. ここで完成していれば終わる。そうでなければ Breaker がマス bb を取る。bb は M′M' に入らないので ⋂iTi\bigcap_iT_i にも入らず、b∉Tib\notin T_i となる ii がある。
  5. その ii で子の条件が成り立つ。Ai⊆M′A_i\subseteq M' であり、それまでの Breaker のマスは T⊇TiT\supseteq T_i の外にあり、新しい bb も TiT_i の外にある。
  6. 子の条件から、あと hih_i 手以内に勝てる。すでに使った1手と合わせて 1+hi≤h1+h_i\le h 手以内である。

ポイントは、範囲の共通部分 ⋂iTi\bigcap_iT_i を Maker が持っていることです。Breaker の1手は共通部分に入れないので、どこに打っても、少なくとも1つの子の範囲を外れます。Breaker がずっと遠くに打った場合も、すべての子が生き残るので、場合分けは要りません。

論文の最初の2枚の「カード」で、この規則を確かめます[2, §3.2, p.5]。

例13 カード6:縦5マスからの二重の脅し

基本のカード j=4j=4 と j=5j=5 を、それぞれ xx と yy を入れ替えて置く。2つ目はさらに (0,1)(0,1) だけずらす。ピボットを p=(1,4)p=(1,4) として組み合わせると、次の条件になる。

A6={(0,y):0≤y≤4}T6=A6∪{(1,3),(1,4),(1,5)}h6=2A_6=\{(0,y):0\le y\le4\}\qquad T_6=A_6\cup\{(1,3),(1,4),(1,5)\}\qquad h_6=2A6={(0,y):0≤y≤4}T6=A6∪{(1,3),(1,4),(1,5)}h6=2\begin{gathered}A_6=\{(0,y):0\le y\le4\}\\T_6=A_6\cup\{(1,3),(1,4),(1,5)\}\\h_6=2\end{gathered}A6={(0,y):0≤y≤4}T6=A6∪{(1,3),(1,4),(1,5)}h6=2\begin{aligned}A_6 &= \{(0,y):0\le y\le4\}\\[4pt]T_6 &= A_6\cup\{(1,3),(1,4),(1,5)\}\\[4pt]h_6 &= 2\end{aligned}

縦に5マス持っていれば、(1,4)(1,4) を取ると、(1,3)(1,3) と (1,5)(1,5) のどちらを取っても Snaky が完成する。Breaker は片方しか消せない。

1つ目の子は {(0,0),…,(0,3),(1,3),(1,4)}\{(0,0),\dots,(0,3),(1,3),(1,4)\} という Snaky の置き方で、欠けているのが (1,3)(1,3) です。2つ目の子は {(0,1),…,(0,4),(1,4),(1,5)}\{(0,1),\dots,(0,4),(1,4),(1,5)\} で、欠けているのが (1,5)(1,5) です。範囲の共通部分は {(0,1),(0,2),(0,3),(1,4)}\{(0,1),(0,2),(0,3),(1,4)\} で、ピボット (1,4)(1,4) を除くと A6A_6 に含まれます。

例14 カード7:カード6を上下から使う

カード6を (0,1)(0,1) だけ上にずらしたものと、上下を裏返して (0,5)(0,5) だけずらしたものを、ピボット p=(0,5)p=(0,5) で組み合わせる。

A7={(0,y):1≤y≤4}T7={(0,y):1≤y≤5}∪{(1,y):y∈{0,1,2,4,5,6}}h7=3\begin{aligned} &A_7=\{(0,y):1\le y\le4\}\\[4pt] &T_7=\{(0,y):1\le y\le5\}\cup{}\\ &\quad\{(1,y):y\in\{0,1,2,4,5,6\}\}\\[4pt] &h_7=3\end{aligned}

2つの子の範囲は、どちらも縦の列 {(0,1),…,(0,5)}\{(0,1),\dots,(0,5)\} を含みます。列の右側の3マスは、1つ目の子では y=4,5,6y=4,5,6、2つ目の子では y=0,1,2y=0,1,2 にあり、重なりません。よって範囲の共通部分はちょうどこの列で、ピボット (0,5)(0,5) を除くと A7A_7 になります。

言い換えると、縦に4マス (0,1),…,(0,4)(0,1),\dots,(0,4) を持っていれば、あと3手で勝てます。Maker は (0,5)(0,5) を取って縦5マスにし、Breaker が右側のどこに打っても、上か下のどちらかのカード6が使えます。

カード6
h=2h=2
∣A∣=5|A|=5
∣T∣=8|T|=8
x=0x=0
カード7
h=3h=3
∣A∣=4|A|=4
∣T∣=11|T|=11
x=0x=0
図5具体例カード6(左)とカード7(右)です。橙のマスが必要な集合 AA、薄い青が範囲 TT、黒い枠がピボット pp、緑の丸はカード6で Snaky を完成させる2マスです。どちらも、範囲に Breaker のマスがない限り、高さ hh の手数以内で勝てます。座標の向きは論文と同じで、yy は上向きです。
もう少し詳しく横5マスと4つの3マスの組

カード6の二重の脅しは、横向きにしても同じです。Maker が横5マス {(r,0),…,(r+4,0)}\{(r,0),\dots,(r+4,0)\} を持っているとします。端 e∈{r,r+4}e\in\{r,r+4\} と上下 ε∈{−1,1}\varepsilon\in\{-1,1\} について、次の3マスの組を考えます[2, §5.1, p.9]。

H(e,ε)={(e−1,ε),(e,ε)(e+1,ε)}\begin{aligned} H(e,\varepsilon)=\{&(e-1,\varepsilon),(e,\varepsilon)\\ &(e+1,\varepsilon)\}\end{aligned}

この3マスに Breaker のマスがなければ、真ん中の (e,ε)(e,\varepsilon) を取ると両隣の2マスがどちらも完成のマスになります。2つの Snaky は、5マスのうち左の4マスと右の4マスを使うものです。

4つの組 H(r,±1),H(r+4,±1)H(r,\pm1),H(r+4,\pm1) は互いに重なりません。横5マスができた時点で2つ以上の組が空いていれば、Breaker の次の1手のあとも1つは空いていて、Maker が勝ちます。論文の第5節は、これを使って「横4マスを持ち、周りの 10×910\times9 のマスに Breaker のマスが3つ以下なら Maker が勝つ」という命題を証明しています[2, Proposition 7, p.8]。この命題は21手の定理の証明には使われていません。

728枚のカードと最後のカード

論文は、6枚の基本のカードに722行の表で722枚のカードを足し、全部で728枚のカードを作ります[2, §3, p.4]。各行には、カード番号、ピボットの座標、子のリストが書かれています。子は前のカードの番号と置き方の記号です。最初の2行は次のとおりです。

6 14 4:100 5:101
7 05 6:001 6:405

座標は1文字ずつ 0123456789ABCDEFG\texttt{0123456789ABCDEFG} の位置で読み、14\texttt{14} は (1,4)(1,4) を表します。4:100\texttt{4:100} は「カード4に置き方1(xx と yy の入れ替え)を施し、(0,0)(0,0) だけずらす」という意味です。行の途中には括弧でくくった組み合わせも書けて、そこでも同じ規則を使います。子の参照は全部で4,089個、組み合わせは括弧の中のものを含めて1,620回あります[2, §6.1, p.12]。

命題15 最後のカード [2, Proposition 5, p.5]

論文の表から作った728個の三つ組はすべて有効な条件で、高さは21以下である。最後のカード727は次をみたす。

p727=(8,8)A727=∅∣T727∣=251h727=21T727⊆{0,…,16}2p_{727}=(8,8)\qquad A_{727}=\varnothing\qquad |T_{727}|=251\qquad h_{727}=21\qquad T_{727}\subseteq\{0,\dots,16\}^2p727=(8,8)A727=∅∣T727∣=251h727=21T727⊆{0,…,16}2\begin{gathered}p_{727}=(8,8)\\A_{727}=\varnothing\\|T_{727}|=251\\h_{727}=21\\T_{727}\subseteq\{0,\dots,16\}^2\end{gathered}p727=(8,8)A727=∅∣T727∣=251h727=21T727⊆{0,…,16}2\begin{aligned}p_{727} &= (8,8)\\[4pt]A_{727} &= \varnothing\\[4pt]|T_{727}| &= 251\\[4pt]h_{727} &= 21\\[4pt]T_{727} &\subseteq \{0,\dots,16\}^2\end{aligned}
証明
  1. 有効であることは、補題11と補題12を、表の行の順に当てはめる帰納法から従う。
  2. 集合と高さの値は、表から有限回の和集合・共通部分・回転と平行移動で計算できる。論文の付属プログラムがこの計算をし、別の実装でも同じ結果を確かめている。

    この記事の図のプログラムも、表を一から計算し直した。728枚、組み合わせ1,620回、参照4,089個、最後のカードの値、カード6と7の値、下の表(論文の表1)の数は、すべて論文と一致した。

最後のカードのピボットは (8,8)(8,8) で、子は32個あります。子は6種類のカードを回転・裏返し・平行移動したもので、どれも必要な集合が {(8,8)}\{(8,8)\} になるように置かれています。範囲の共通部分は、子を足すごとに次のように減っていき、最後は (8,8)(8,8) だけになります[2, Table 1, p.7]。

カードAjA_j∣Tj∣|T_j|hjh_j置き方の数共通部分に残る (8,8)(8,8) 以外のマス
648{(4,5)}\{(4,5)\}8715435
708{(8,8)}\{(8,8)\}22520431
712{(5,5)}\{(5,5)\}9615821
713{(5,5)}\{(5,5)\}9815412
725{(7,7)}\{(7,7)\}1672084
726{(7,7)}\{(7,7)\}1692040

共通部分が {(8,8)}\{(8,8)\} で、子の必要な集合の和も {(8,8)}\{(8,8)\} なので、規則の式から A727={(8,8)}∖{(8,8)}=∅A_{727}=\{(8,8)\}\setminus\{(8,8)\}=\varnothing です。子の高さの最大は20なので、h727=21h_{727}=21 になります。

A727=∅A_{727}=\varnothing は「何も持っていなくてよい」、T727T_{727} に Breaker のマスがないことは空の盤なら当然成り立ちます。こうして、空の盤から21手で勝てることが出てきます。

命題16 戦略の作り方 [2, §4, p.7]

空の盤から次の手順で打つ Maker は、Breaker がどう打っても21手以内に Snaky を完成させる。とくに定理9が成り立つ。

証明
  1. 最初の「いまのカード」をカード727(そのままの置き方)とする。空の盤では、その条件 A=∅A=\varnothing、B∩T=∅B\cap T=\varnothing が成り立つ。
  2. Maker の手番では、いまのカードのピボット(置き方を施したもの)を取る。ピボットがすでに Maker のものなら、決めておいた順番で最初の空きマスを取る。

    順番は、max⁡(∣x∣,∣y∣)\max(|x|,|y|) の小さい順、同じなら辞書式の順とする。

  3. Breaker の手 bb のあと、子のリストを前から見て、範囲が bb を含まない最初の子を新しい「いまのカード」にする。補題12の証明から、そのような子はあり、その条件が成り立っている。
  4. いまのカードが基本のカードなら、欠けている1マスを取って完成させる。
  5. 1手ごとに高さは1以上下がり、基本のカードの高さは1である。高さ21から始めたので、21手以内に完成する。

Breaker になって対戦する

下の図では、この戦略をそのまま動かしています。あなたが Breaker で、マスを押すとそこに Breaker の手を打ちます。Maker は論文の表に従って応じます。1手目の Maker の手は (8,8)(8,8) です。

Maker 1 手、Breaker 0 手。Maker の最後の手は (8, 8) です。いまのカードは 727 で、高さは 21、範囲は 251 マス、必要な集合は 0 マスです。Maker は高さと同じ手数以内に勝ちます。 盤の外の手:0

Maker(必要な集合)Maker(そのほか)Breakerいまのカードの範囲完成した Snaky

図6具体例命題16の戦略を、論文の表から計算して動かしている図です。数字はそれぞれの何手目かを表します。括弧の中の組み合わせに進んだときは、それを含むカードの番号を表示します。点線の枠は 17×1717\times17 の盤 {0,…,16}2\{0,\dots,16\}^2 です。「遠くに打つ」は盤の外の遠いマスに打ちます。「コンピューター」は、Maker に残る高さがいちばん大きくなる手を選ぶ Breaker で、この Breaker が相手だと Maker はちょうど21手目に勝ちます。この動きはブラウザの計算と同じものを記事の生成時に Python でも計算し、一致を確かめています。

範囲の中のマスをでたらめに選ぶ Breaker と図のプログラムで60回対戦させると、Maker は毎回6〜8手で勝ちました。Breaker が Maker のすぐ隣に打ち続けても、範囲(薄い青)の中で Maker は別の作戦に移ります。範囲は Maker の作戦が使う領域で、Breaker の手が入ると、その手を含まない子の範囲に切り替わります。

論文にも例が載っています[2, §3.3, p.6]。Maker の (8,8)(8,8) に Breaker が (7,8)(7,8) と応じると、ピボットを (8,7)(8,7) とする子が使えます。続けて Breaker が (8,6)(8,6) を取ると、ピボットを (11,8)(11,8) とする子が使えます。このピボットは、それまでの Maker の手の隣ではありません。論文の例はこれらの子が使えると述べているだけですが、命題16の戦略は実際にこの順で (8,7)(8,7)、(11,8)(11,8) と打ちます。図6で同じように打つと、この順に進むことを確かめられます。

「コンピューター」の Breaker は、Maker が21手かかるようにできます。ただしこれは、この戦略の手数が21より縮まらない、という意味です。Maker がほかの戦略でもっと早く勝てるかどうかは分かりません。

どこまで確かなのか

  • 論文は2026年9月25日付のプレプリントで、査読はまだです[2]。
  • 手で証明されているのは、有効な条件が回転・裏返し・平行移動で保たれること、補題11、補題12、表から戦略を作る議論、有限の盤の系、第5節の命題です[2, §2, §4, §5]。
  • 計算機で確かめるのは、表から728枚のカードを作る有限の計算です。付属の短いプログラムと、別に書かれたプログラムが同じ結果を出し、Breaker の手の場合分けを合計37,042通り確かめると説明されています[2, §6.1, p.12; 11]。論文は、これらは有限の計算の確認で、無限の盤のすべての Breaker の手を扱えるのは補題12の証明による、と区別しています。
  • この記事の図のプログラムは、論文のプログラムを使わず、表を一から計算し直しました。数は論文と一致し、ランダムな Breaker と「コンピューター」の Breaker との対戦でも、Maker は毎回21手以内に勝ちました。これは計算による確認で、証明の代わりにはなりません。

Lean の形式化については、資料のあいだで食い違いがあります。

  • 論文の §6.2 と付録Cは、Lean の補助資料は35手の表の再構成(7項目の有限の主張)だけで、勝ち方の定理や21手・25手の構成は含まない、と書いています[2, §6.2, p.13; 2, Appendix C, p.28]。
  • 一方、リポジトリの形式化の範囲の説明(lean/docs/187.md)は、空の盤から21手以内に勝つ合法な戦略を与える定理を照合(Comparator)の対象に挙げています[12]。ほかに35手の表の再構成と、4つの条件つきの勝ち方の定理も挙げています。
  • 形式化済みの論文の一覧(lean/formalization.yaml)には、この論文は載っていません[13]。
  • 論文の日付は9月25日で、21手の Lean の証明と lean/docs/187.md はリポジトリの最初のコミット(2026年10月6日)に含まれています。論文の記述は、21手の Lean の資料が加わる前のものと読めます。

照合の対象の定理は snaky_winning_strategy_21_with_legal_states で、「どの合法な Breaker の手に対しても、Maker の21手目のあとに Maker のマスが Snaky を含む」という形の主張です[14]。筆者が証明のファイル(lean/OAI/GameTheory/SnakyTwentyOne/ の下)を検索した範囲では、sorry は見当たりませんでした。照合用の課題のファイル(ComparatorChallenges/SnakyTwentyOne.lean)は主張だけを書いた雛形なので、sorry で終わっています。ただし、筆者は Lean の検査を手元で実行していません。

残された問題

  • 最少の手数:Maker が必ず勝てる最少の手数は分かっていません。論文は21を上限として示しただけです。
  • 盤の大きさ:8×88\times8 では負け、17×1717\times17 では勝ちです。そのあいだの大きさの盤でどうなるかは、この論文では扱っていません。
  • 強い版:Breaker も Snaky を作れば勝ちになる版で、先手が勝てるかどうかは、この論文の範囲の外です。

OpenAIの数学論文には、ほかにπ\pi の無理数度は2や平面は5色では塗れないもあります。

参考文献

  1. OpenAI, openai/math: mathematical manuscripts and supporting proof artifacts, GitHub, 2026.
  2. OpenAI, Snaky in 21 Maker moves, OpenAI Math Release preprint, September 25, 2026.
  3. N. Sieben, Snaky is a 41-dimensional winner, Integers 4 (2004), #G05.
  4. OpenAI, openai/math: History, GitHub, 2026.
  5. N. Sieben, Proof trees for weak achievement games, Integers 8 (2008), #G07.
  6. M. Gardner, Mathematical Games: In which players of ticktacktoe are taught to hunt bigger game, Scientific American 240(4), April 1979, p.18.
  7. I. Halupczok, J.-C. Schlage-Puchta, Achieving Snaky, Integers 7 (2007), #G02.
  8. A. Csernenszky, R. R. Martin, A. Pluhár, On the complexity of Chooser-Picker positional games, Integers 11 (2011), #G02.
  9. H. Ito, H. Miyagawa, Snaky is a winner with one handicap, 8th Hellenic European Conference on Computer Mathematics and its Applications (HERCMA 2007), pp.25–26.
  10. OpenAI, openai/math: CONTENTS.md(187. Snaky in 21 Maker moves), GitHub, 2026.
  11. OpenAI, Snaky in 21 Maker moves: verification programs and certificates, openai/math, 2026.
  12. OpenAI, Lean formalization scope: Snaky in 21 Maker moves, openai/math, lean/docs/187.md, 2026.
  13. OpenAI, lean/formalization.yaml, openai/math, 2026.
  14. OpenAI, Lean formalization: OAI/GameTheory/SnakyTwentyOne/Main.lean and ComparatorChallenges/SnakyTwentyOne.json, openai/math, 2026.