第3話

『ブッフベルガーの判定法』


「はぁっ……はぁっ……」


大雨の中、1人の少女が、息を荒くしながら走っている。

人気のない路地裏には、外灯がポツリポツリと立ち並ぶだけである。

少女は何かに怯えており、しきりに周囲を気にしている。

そして、走り疲れたのか、ゴミ箱の側に体を縮めるように座った。


「逃げても無駄だ。ビッグ・ブラザーの監視からは誰も逃れられない。」


少女の背後から大柄の男が現れる。

驚き再び走り出す。

男は黒いスーツに白い覆面をしていて、覆面には大きな目が1つ描かれていた。目からは2つの足のような線が生えており、「兄」という漢字のようにも見える。


少女は進入禁止の看板を破壊し、誰もいない工事現場へと踏み入れた。


「今度はかくれんぼか?いいだろう、付き合ってやる。」


男は彼女の後を追う。中に入ると、ピンポン球ほどの裸電球だけが、男の周囲を照らしていた。

カチャカチャカチャ、という金属音の後、工事現場の奥で何かが光った。


完全交叉環コンプリート・インターセクション


少女は10本ほどの金属のリングを両手で擦り、互いに反発させる。

そして小さく、しかし、力強く言った。


爆発ブロー・アップ


その瞬間、リングは少女の手を離れ、男に向かって飛んでいく。

その衝撃で、付近の工事器具はバランスを失い、男に覆いかぶさるように崩れ落ちた。


しばらくして、ザーという雨の音だけが工事現場に響き渡る。


少女は胸を撫で下ろし、その場から去ろうとするも、崩れた工事器具の下から何かが出てくることに気がついた。

そして、それは轟音を鳴らし、こちらに近づいてくる。


「貴様の程度の数力では、私に傷つけることは不可能だ。それに、お前に代数幾何を教えたのは誰だと思っている。」


もはや少女に為すすべはなかった。

男は彼女の首を掴み、そのまま持ち上げる。

両手で必死に抵抗するも、やがて気を失った。


「北条りん。裏切り者には制裁を。」


***


「ぶっふべるがー?あれ?どこかで聞いたことがあるような…」


妹は、頭にはてなマークを置いて、そう呟く。

俺は踊る気持ちを抑えながら、ゆっくりと説明した。


「ブッフベルガー先生は、グレブナー基底を発見した数学者だ。ほら、初めてグレブナー基底を教えた時に説明しただろ?」

「あ!スティーブ・ジョブズみたいな先生だよね!?」

「まあ、そうだな。計算機代数という新しい分野を作り、革新を起こしたという意味で、俺は”スティーム・ジョブズ”って表現をした。」

「ああーあの人だね。」

「ちなみに、ブッフベルガー先生はオーストリアのリンツという都市に、 RISC Linz という大学兼研究所も作っていて、現在でもそこで研究に尽力している。」

「えー!まだ生きてるんだね!もっと昔の人だと思ってた!」

「生きてるんだね、は流石にちょっと失礼かな……(汗)。お兄ちゃんもいつかお会いしたいものだ。」


話が少し逸れたので元に戻す。


「それで、ブッフベルガー先生が見つけたすごい定理が『ブッフベルガーの判定法』なんだ。」

「はんていほう、って、なんだか難しいね。」

「その主張を今から書こう。」


定理(ブッフベルガーの判定法)

単項式順序 > を1つ固定する。

G={f_1,...,f_k} を有限個の多項式の集合とする。

I=<G> を G から生成されるイデアルとする。

この時、(1),(2)は同値である。


(1) G が > に関して I のグレブナー基底

(2) G の各ペア f_i, f_j に対し、S(f_i,f_j) は G 以外の新しい先頭項を作らない。すなわち、S(f_i,f_j)を f_1,...,f_k で割った時の余りは 0


「ほへー。なんだか難しいね。」

「今から一文ずつ読んでいこう。そうすれば難しくないさ。」

「うん!」


俺はまず一行目に下線を引いた。


「『単項式順序 > を1つ固定する。』とは、単項式順序を何でもいいから1つ決めておくということだ。例えば、辞書式順序でもいい。」

「『固定する』って、なんだか不思議な表現だね。」

「数学ではよく使われる言い回しだな。英語だと、『fix』って言うね。『選ぶ』って言ってもいいかな。」

「数学って、わざわざ難しい言い回し使うから意地悪だよねー」


妹はむーと、しかめっ面でノートを見つめる。

俺は優しく妹をたしなめた。


「まあ、そう言うな。数学にだって色々慣習があるんだ。」

「なるほど?」

「二行目を読もう。『G={f_1,...,f_k} を有限個の多項式の集合とする。』これは文字通り、G には k 個の多項式 f_1,...,f_k が入ってるってことだね。例えば、G={x+y, x-y} だったり、G={x, y^2, x^2+y} だったりするわけだ。」

「この k ってなに?」

「ああ、これは適当な自然数だ。G には有限個なら何個入っててもいいので、k っていう文字で置いてるんだ。G={x+y, x-y} だったら k=2 だし、G={x, y^2, x^2+y} だったら k=3 だね。」

「うーんと、何個入ってるか分からないから、k って文字で置いたってこと?」

「まあ、そう解釈してもいいかな。」

「よく分からなくなってきた。」

「難しく考えすぎかな。簡単に言うと、『Gには有限個の多項式が入っている。それを f_1,...,f_k と表すことにしよう。』というのを難しく書いてるだけだ。」

「あー、それなら何となく分かるかも。」

「これから具体例を見ていけば分かると思うよ。」

「わかった。」


環奈は素直に返事をする。

俺は定理の三行目を指でなぞった。


「『I=<G> を G から生成されるイデアルとする。』つまり、」


I=<G>=<f_1,...,f_k>


「ということだ。もっと言うと、<>の定義から」


I=<f_1,...,f_k>={h_1*f_1+...+h_k*f_k | h_1,...,h_k は多項式}


「が成り立つ。」

「むー……また複雑なのが出たね……」

「最初に出てきた <x,y> や <x+y,x-y> と同じだよ。」

「あーと、基底ってやつ?」

「少し用語の混乱をしているようだね。ここで整理をしておこう。<f_1,..,f_k> はイデアルで、{f_1,...,f_k} はその基底だ。この違いが分かるかな?」


<f_1,..,f_k>: f_1.,,,f_k から生成されるイデアル

{f_1.,,,f_k}: <f_1,..,f_k> の基底


「なんか同じに見える……」

「具体的な例で、違いを見よう。例えば、I=<x,y> とすると、I は何かな?」

「えーと、イデアル?」

「そうだね。I=<x,y> は {x,y} から生成されるイデアルだ。じゃあ、{x,y} は?」

「I の基底?」

「そうだね。{x,y} はイデアル I の基底だ。」

「なんとなく、分かってきたかも。イデアルを作るのが、基底ってことだね。」

「それじゃあ、定理のメインの主張へと移ろう。」

「おお、いよいよメインディッシュってことだね。」


妹は料理を楽しみにしているような顔で、次の言葉を待っている。

俺は少し咳払いをして、ゆっくりと説明を始めた。


「次の(1)と(2)が同値であるというのが、定理の主張だ。」


(1) G が > に関して I のグレブナー基底

(2) G の各ペア f_i, f_j に対し、S(f_i,f_j) は G 以外の新しい先頭項を作らない。すなわち、S(i,j)を f_1,...,f_k で割った時の余りは 0


「同値……ってなんだっけ?」

「同値とは、(1)が成り立つならば(2)が成り立ち、逆に(2)が成り立つならば(1)が成り立つということだ。」

「つまり、同じってこと?」

「まあ、平たくいえばそうだけど……じゃあ、簡単な例で復習してみよう。」

「うん!」


俺はノートに1つの命題を書いた。


命題1

整数 m について、次の2つは同値である。

(a) mは偶数

(b) mの一の位は偶数(ただし、10進法で考える)


「この2つ (a), (b) は同値なんだけど、分かるかな?」

「えーと、(a) は偶数ってことは、2とか4ってことだよね。」

「そうだね。」

「(b) は一の位が偶数って言っているから、14とか100とかってことだよね。」

「うんうん。」

「つまり、(a)も(b)もどっちも2で割れるってこと?」

「もう少し正確に述べてみよう。(a)と(b)が同値というのは、」


(a)ならば(b)

(b)ならば(a)


「の両方が成立するということだ。今回の場合だと、(a) mは偶数であるとき、10進法表記では、一の位も偶数になる。よって、(a)ならば(b)が成り立つ。」

「うんそうだね。」

「逆に、mの一の位が偶数とすると、mは2で割り切れるから、偶数になる。」

「ふむ。」

「つまり、(b)ならば(a)が成り立つ。」

「えーと、どっちからでも、もう片方が出せるってこと?」

「そうだな。言い換えると、(a)と(b)は常に真偽が一緒ってことだ。すなわち、(a)が成り立つか確認したい時は、代わりに(b)を確認してもいいということ。」

「ほほう?」

「つまり、(b) はmが偶数であることの『判定法』になっているんだ。」

「はんてーほー。」

「それじゃあ、具体的にこの判定法を使ってみよう。次の数は偶数かな?奇数かな?」


432833421111843432398


「えーと……偶数?」

「どうして?」

「だって、一の位が8だから?…………あ!」

「そうだね。今、環奈は無意識に判定法を使ったんだ。偶数であることを定義に基づいて示すには、2で割らなければいけない。しかし、その計算をしなくても一の位を見ればすぐ分かる。」

「そうか、それが(b)なんだね。」

「そうそう。判定法 (b) を使えば、効率よく整数が偶数であることを判定できる。」

「今まで無意識に使っていたけど、すごいことだったんだね。」

「計算機代数においては、判定法というのがよく出てくる。数学的な定義に基づいて判定すると大変なものを、別の同値な条件に置き換えて効率よく計算するんだ。」

「へー。なんか数学でエコって感じだね。」

「ちなみに、偶数の判定は、コンピュータで使われる2進法表記だと、110 (10進法の6)のように末尾が 0 かどうかで判定できるね。」

「ほへー。」


たまきさんがお茶とお茶菓子を出してくれて、俺たちはそれを頂いた。

妹はクッキーを美味しそうに食べている。

俺は新幹線で群城たちに弁当を奪われお腹が空いていたので、ぶぶ漬けというお茶漬けみたいなものを頂いた。


「さて、グレブナー基底の話に戻ろう。次の2つ、」


(1) G が > に関して I のグレブナー基底

(2) G の各ペア f_i, f_j に対し、S(f_i,f_j) は G 以外の新しい先頭項を作らない。すなわち、S(f_i,f_j)を f_1,...,f_k で割った時の余りは 0


「が同値というのが定理の主張だった。」

「えーと、つまり、同値ってことは、(1)ならば(2)と、(2)ならば(1)のどっちも成り立つってことだね。」

「そう。(1) は、G がグレブナー基底であることを言っている。一方、(2) は f_i, f_j のS多項式から新しい先頭項は作れないことを言っている。ここで、(2) が G がグレブナー基底かどうかの判定法になっているんだ。」

「うーん……難しいね。」

「じゃあ、G を具体的に設定してみよう。例えば、」


>:辞書式順序

G={x,y}


「とする。このとき、(2) はどうなるかな?」

「むーんと、定理だと、『G={f_1,...,f_k} を有限個の多項式の集合とする』ってあって、今 G={x,y} だから f_1=x、f_2=y ってこと?」

「そうだな。」

「えーと、(2) の最初の文を見ると、」


(2) G の各ペア f_i, f_j に対し、S(f_i,f_j) は G 以外の新しい先頭項を作らない。


「だけど、ん?ペアってどういうこと?」

「G から2つ多項式を取ってくるってことだね。例えば、G={f_1,f_2} だとペアは f_1,f_2 だけだ。」

「そうか、今は G={x,y} だから、ペアは x,y しかないってことだね。」

「そうだな。ちなみに、G={f_1,f_2,f_3} だと、f_1,f_2、f_2,f_3、f_1,f_3 の3つのペアがある。」

「なるほど。」

「そして、『各ペアに対して』ってのは、『それぞれのペアに対して』ってことだ。」

「つまり、今は、x,y しかペアはないから、x,y の S多項式 S(x,y) を計算すればいいってことだね!」

「その通り!」


妹はポッキーを口に咥えながら、ノートの新しいページをめくる。

窓から入る夏の風が、妹の長い髪を揺らしている。


「えーと、x,y の辞書式順序による先頭項はそれぞれ、LT(x)=x、LT(y)=y だから、それぞれ足りないものを比べると、」


x← yが足りない

y← xが足りない


「だから、」


S(x,y)

=y*x-x*y

=0


「になって、あ、0 になっちゃったね。」

「そうだな。つまり、x,y からは新しい先頭項は生まれなかった。」

「おおー。」

「すなわち、f_1=x、f_2=y の時、」


(2) G の各ペア f_i, f_j に対し、S(f_i,f_j) は G 以外の新しい先頭項を作らない。すなわち、S(i,j)を f_1,...,f_k で割った時の余りは 0


「が成り立つということだ。ここで、定理より (1) と (2) は同値だから、」


(1) G が > に関して I のグレブナー基底


「ということがいえる。つまり、G={x,y} は辞書式順序に関して I=<x,y> のグレブナー基底が示せた。」

「おおー。」

「この (2) はとても便利なんだ。(1) のグレブナー基底であることを定義から示そうとすると、」


<LT(I)>=<LT(G)>


「という等式を示さなきゃいけないけど、これは大変だ。」

「どうして?」

「そもそも <LT(I)> の中には無限個の多項式があるから、すべてをチェックするのは有限の時間では不可能だ。」

「無限は、現実では無理だもんね。」

「一方、(2) の方では、有限個のペア f_i,f_j のS多項式 S(f_i,f_j) の計算でいいから、有限時間で絶対に終わる。」

「へー。」

「じゃあ、次に、グレブナー基底じゃない例も考えてみよう。」

「うん!」


妹からペンを拝借する。

俺はノートに G={x+y,x-y} と書いた。


「今度は、f_1=x+y、f_2=x-y としよう。単項式順序は辞書式順序のままで。」

「わかった。えーと、S多項式を計算するんだよね?」

「そうだな。」

「うーんと、x+y も x-y も先頭項が x だから、」


x← x に比べて足りないものはない

x← x に比べて足りないものはない


「だから、何も掛けなくて大丈夫だね。ってことは、」


S(x+y,x-y)

=(x+y)-(x-y)

=2y


「となって、2y が出てきたね。」

「この 2y は新しい先頭項かな?」

「そうなんじゃない?」

「理由は?」

「えーと、G={x+y,x-y}には、x しか先頭項がなかったから?」

「そうだね。ちなみに補足すると、2y は x+y と x-y で割っても余りは 2y で、 0 じゃないね。」

「そだね。」

「すなわち、(2) は成り立つかな?」

「成り立たない!」

「そう。定理おいては、(1)と(2) は同値だったから、これは、(1)も成り立たないことを意味している。」

「そっか。ということは、G={x+y,x-y} は I=<x+y,x-y> のグレブナー基底じゃないってことだね。」

「その通り。G={x,y}の時は、グレブナー基底であることを示すのに(2)を使った。G={x+y,x-y}の時は、グレブナー基底《《でない》》ことを示すのに、(2) を使った。すなわち、(2) が成り立つかどうか調べることで、G がグレブナー基底かどうか判定した、ってことなんだ。」

「おおー!!なんかすごいね!!」


妹はパチパチと拍手をする。

ブッフベルガーの判定法の凄さを少し分かってもらえたようだ。

俺はまるで自分が褒められたように、少し照れくさくなって、指で鼻の下をこすった。


「もう一度、定理を見直してみよう。」


定理(ブッフベルガーの判定法)

単項式順序 > を1つ固定する。

G={f_1,...,f_k} を有限個の多項式の集合とする。

I=<G> を G から生成されるイデアルとする。

この時、(1),(2)は同値である。


(1) G が > に関して I のグレブナー基底

(2) G の各ペア f_i, f_j に対し、S(f_i,f_j) は G 以外の新しい先頭項を作らない。すなわち、S(f_i,f_j)を f_1,...,f_k で割った時の余りは 0


「環奈、どうかな。最初見たときは、よく分からなかったと思うけど、今は理解できたんじゃないかな。」

「うん。なんとなく分かったかも。S多項式を使うと、グレブナー基底かどうかを判定できるってことだよね。」

「そうだな。それがブッフベルガーの判定法だ。」

「判定法に自分の名前が付くなんて、ブッフベルガー先生すごいね。」

「グレブナー基底を見つけたのも、もちろんすごいけど、その判定法を同時に提案したのが、ブッフベルガー先生のすごいところだな。」

「おおー!すごいすごい!」


妹は豆餅を食べながら大げさに感心する。

というか色々食べすぎじゃないか?

誰に似たんだか……

俺はぶぶ漬けをすすって、飲み込んだ。


「さて、話を手紙のイデアルに戻そう。」

「うん。」

「俺たちは、手紙に書かれたイデアル I=<x^3+y^2, x^2y+xy^2> からS多項式を計算して基底 G={f_1,f_2,f_3,f_4}={x^3+y^2, x^2y+xy^2, xy^3+y^3, y^4-y^3} を作った。」

「そうだね。」

「これが Iの(辞書式順序の)グレブナー基底であるか、それを確かめるにはどうすればいいかな?」

「ええと、ブッフベルガーの判定法を使う?」

「その通り。つまり?」

「うーんと、Gの各ペアのS多項式を計算して、新しい先頭項が作れないって言えばいいってこと?」

「ザッツライト。でも、それは既に計算してあったね。」

「あ、そうだっけ。」

「そうだ。まず、G={f_1,f_2,f_3,f_4} のペアの組み合わせを考えると、4つのうち2個とってくるから、4C2=4*3/2*1=6 通りが考えられる。f_1,f_2 、f_1,f_3、f_1,f_4、f_2,f_3、f_2,f_4、f_3,f_4 の6通りだな。」

「うん。」

「それぞれのS多項式はこのようになるけど、これらを G で割ると全部 0 になってしまうことは、G を作った時に確認済みだ。」


S(f_1,f_2)=-x^2y^2 + y^3 → 0

S(f_1,f_3)=-x^2y^3+y^5 → 0

S(f_1,f_4)=x^3y^3+y^6→ 0

S(f_2,f_3)=xy^4 - xy^3 → 0

S(f_2,f_4)=x^2y^3+xy^5 → 0

S(f_3,f_4)=xy^3+y^4 → 0


「おおー。」

「つまり、ブッフベルガーの判定法の (2) が成立するということが言えた。すなわち、G は?」

「グレブナー基底!」

「正解!」


結論:

G={x^3+y^2, x^2y+xy^2, xy^3+y^3, y^4-y^3}

I=<x^3+y^2, x^2y+xy^2> の(辞書式順序の)グレブナー基底


「ほんとにグレブナー基底を手で計算しちゃったんだね…」

「そうだな。今計算したように、ブッフベルガーの判定法は、同時にグレブナー基底の計算アルゴリズムも与えてくれる。」

「計算あるごりずむ?」

「つまり、計算方法ってことだ。」

「もう、数学の人ってすぐ難しくいうよね。」

「すまんすまん。俺たちがした計算の仕方を、まとめてみよう。」


ブッフベルガーのアルゴリズム

入力:F={f_1,..,f_k}、>:単項式順序

出力:<F> の > に関するグレブナー基底 G


手順:

1. G に F を代入する。

2. G の各ペア f_i,f_j のS多項式 S(f_i,f_j) を計算する。

3. 各 S(f_i,f_j) を G で割った余り h_ij を計算する。

4. h_ij が 0 でないなら、h_ij を新しく G に追加する。

(ここで、G={f_1,..,f_k} の時、f_{k+1}=h_ij としてGに追加する)

5. 上の 2-4 を G に新しく追加されなくなるまで繰り返す。

6. G が > に関する I のグレブナー基底である。


「また難しいのがきた……」

「そんなことないさ。書いてあることは、今回俺たちがした計算を抽象的に書いているだけだ。簡単にいうと、すべてのペアから、S多項式で新しい先頭項をどんどん作っていく。そして、新しい先頭項が作れなくなった時、それがグレブナー基底っていうことだ。まあ、これは今度にしようか。」

「うん、そうだね。」

「それで、だ……」


うーんと、俺は頭を抱えるポーズをする。

妹は不信そうな顔でそれを見つめる。


「どうしたの?」

「いや、グレブナー基底は計算できたんだが、結局これが何なのかは分からなかったな…」

「あ、もともと、りんさんの手紙の謎を解くために、計算したんだもんね。」


俺は手紙の内容を振り返った。


***手紙***

先輩へ。

クリスマス、待ち合わせ場所に行けなくてごめんなさい。

私のことは探さないでください。

京都は交差点が多くて迷ってしまいますから。

借りてた辞書も返せなくてすみません。

もしまたいつか会えたら一緒に喫茶店に行きましょう。

私はメイプルシロップのパンケーキです。


北条環


I=<x^3+y^2, x^2y+xy^2>

***


「よし、ここは俺の、無意識を意識するスキル『数楽者イマジン・ラヴァー』で、何かヒントを探してみるかな。」

「え、うん……そうだね」


能力説明に若干引き気味な妹の視線を受けながら、俺は目を瞑った。

全身の力を抜き、白い部屋をイメージする。


凡人たる俺の非凡なるスキル。

発動せよ。


数楽者イマジン・ラヴァー


…………

…………


発動せよ。


数楽者イマジン・ラヴァー


…………

…………


あれ?


「お兄ちゃん、どうしたの?」

「え、あ、なんか、発動しないみたいだな……旅の疲れで疲れてるのかな……」


おかしい。

ピンチの時はいつも発動していたのに。

こんな状況は、導来圏との数戟、漸問答タルタリアの2回戦目以来だ。


「仕方ない……群城たちの方はどうなっているか聞いてみるか。」


少し離れたところで(と言っても同じ部屋なのだが)、手紙を解読している群城に声をかけた。

群城は少し疲れたような顔で返事をした。


「うーん、手紙の謎は少し分かったんだが、決め手がなくてなあ。圭介たちはどうだ?」

「こっちもグレブナー基底は計算できたけど、まだそれが何を表しているか分からないって感じだ。」

「お、ちょっとアタシに見せてくれ。」


そうして俺たちは再び一緒に考えることにした。


「なるほど、グレブナー基底は G={f_1,f_2,f_3,f_4}={x^3+y^2, x^2y+xy^2, xy^3+y^3, y^4-y^3} が出てきたか。確かに、じゃ分からないのも無理ないな。」

って、もしかして群城はここから何か分かるのか?」

「ああ。おそらくこのグレブナー基底は、京都のを意味している。」

「ある場所?」


群城は一枚の紙をテーブルいっぱいに広げた。

どうやら地図のようだ。


「ガイドブックについてた京都市内の地図だ。みんな知っているように、京都の街路は、南北と東西で直交して配置されている。そう、まるで座標平面のように。」

「……直交……そうかっ!手紙の『京都は交差点が多くて迷ってしまいますから。』は、それを意味しているということかっ!」

「圭介にしては察しがいいな。」

「えへへ。」

「まあ、アタシたちもそれにはすぐ気がついた。」

「え。」

「そして問題は、それがグレブナー基底とどう関連するかだ。それを解く鍵となるのが……」

「『先頭項の次数』デスね。」


後ろにいた杉裏解析が、俺たちを見下ろすようにして発言する。

そして、メガネをくいっとあげて言葉を続けた。


「グレブナー基底は、イデアルの先頭項の情報をすべて持ってイルような基底デス。つまり、」


<LT(I)>=<LT(G)>


「が成立してイルわけデス。今回の場合、G={x^3+y^2, x^2y+xy^2, xy^3+y^3, y^4-y^3} デスので、」


<LT(I)>=<LT(G)>

=<LT(x^3+y^2),LT(x^2y+xy^2),LT(xy^3+y^3),LT(y^4-y^3)>

=<x^3,x^2y,xy^3,y^4>


「ということデスねっ!……さて、ここで単項式というのは、座標と関係付けることが可能デス。例えば、x は座標 (1,0)、y は座標 (0,1)、xy は座標 (1,1)というように、x と y の次数をそれぞれ x 座標 y 座標に当てることによってネ。」


x ⇄ (1,0)

y ⇄ (0,1)

xy ⇄ (1,1)


x^a*y^b ⇄ (a,b)


「フフフっ!ズバリ!京都市内を座標平面とみなせば、自ずとある場所が浮かび上がっぶほぉ!!!」


オイシイところで杉裏は群城に殴られた。

いやむしろ殴られることが、彼にとってオイシそうな雰囲気さえある。


「このメガネに言われてしまったが、つまり、圭介たちが計算してくれたグレブナー基底に出てくる多項式の先頭項」


x^3

x^2y

xy^3

y^4


「と座標を対応させると、」


x^3 ⇄ (3,0)

x^2y ⇄ (2,1)

xy^3 ⇄ (1,3)

y^4 ⇄ (0,4)


「という4つの座標が得られる。これを京都市内の座標平面と対応させれば、この A,B,C,D という4つの地点が得られるというわけだ。」


群城は地図の交差点のうち、4つの箇所に赤丸をつけた。

そして、そのままペンを置いた。


「ただ……」

「ただ?」

「アタシたちに、分かったのはここまでということだ。候補の地点は導けたが、ここから1つに絞ることはできなかった。」

「なるほど……」

「いや、もしかしたら、この4つすべてが正解かもしれない。しかし、何か腑に落ちない感じがするんだよな。」


その時、環奈が小さく手をあげた。


「……あの、ちょっといいですか?」

「ん?どうした環奈ちゃん。」

「えーと、手紙の7行目の『私はメイプルシロップのパンケーキです。』って、これについても何か分かりました?」

「ああ、その箇所か。それについてもよく分からなかった。」

「えーと、なんとなくなんですけど、『私はメイプルシロップのパンケーキです』って、自分がパンケーキみたいに聞こえますよね。なんか変じゃないですか?」


環奈の言葉に俺はある光景が浮かんだ。

メイプルシロップのパンケーキ……喫茶店……たくさん食べているりん……

そして、この4つの先頭項。


あ、そうか。


なんで今まで気づかなかったんだ。

俺は地図のある地点を指差す。

そして、自信を持って言った。


「すべてが分かった。りんは、ここにいる。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る