第5話

『先頭項』


「あ!先輩、見てください!雪ですよ!」


りんは喫茶店の外を指差して嬉しそうに言う。

小さな粒の粉雪がふわふわと舞っている。


「寒くなるとは知っていたけど、まさかね。」

「時期も時期ですしね。あ、もうすぐ、クリスマスですけど、どこ行きます?」


りんは黒糖ミルクラテを飲みながら話す。

俺は緩んだ顔を引き締めて言った。


「それについては、グレブナー基底を定義してから決めよう。」


俺はノートに

先頭項(Leading Term)

と文字を書いた。


「せんとうこう…ですか…??」

「そう。授業では、頭項(Head Term)とも呼ばれていたかな。」

「ああ、あれのことですね。」

「グレブナー基底は、この先頭項を用いて定義することができる。今一度、先頭項について説明しよう。」


定義(先頭項)

> を単項式順序とする。f を多項式とし、f=Σc_a x^a とする。ここで、c_a は 0 でない定数で、x^a は相異なる単項式である。このとき、x^a の中で > に関して最大の単項式を x_a とすると、 c_a x_a は f の先頭項と呼ばれ、LT(f) で表される。


「うーん、確かイメージだと『一番大きい項』って感じでしたっけ?」

「そうだね。具体例で確認してみよう。」


俺は、いくつかの多項式をノートに書き並べた。


「今回は簡単のために、2変数多項式において、単項式順序として辞書式順序 x>y を考えよう。このとき、次の多項式の先頭項は何になるかな?」


f = x^2y+2xy+1


「えーと、f に登場する単項式は、xy^2、xy、1ですよね?これを辞書式順序x>y で並べると、」


x^2y>xy>1


「よって、x^2y が f の先頭項、つまり、LT(f)=x^2y ですね!」

「正解!」

「やった!」

「じゃあ、続いて、2問目だ。次の多項式の先頭項を求めよう。」


g = xy^2+3xy+4x^2y


「うーんと、xy^2 ですか?」

「残念!」

「えっ!?」

「単項式の並びに騙されちゃいけないよ。試しに、g に登場する単項式を並べてみて。」

「わかりました……」


俺はりんにペンを渡した。

りんは眉をひそめながらも、素直に筆を走らせる。


xy^2, xy, x^2y


「この3つが g に登場する単項式ですよね?」

「そうだね。それを辞書式順序 x>y で大きい順に並べてみよう。」

「えーと……x の指数が一番大きいのが、x^2y が一番大きいですね。次に大きいのは、xy^2 と xy のどちらかで、この場合は y の指数を比べるから、あ、xy^2 の方が xy より大きいか。だから、」


x^2y > xy^2 > xy


「が成り立つのか。」

「そうそう。つまり、g をその順で書き直してみると、次のようになる。」


g = 4x^2y + xy^2 + 3xy


「そっか!だから、g の先頭項は、xy^2 じゃなくて、4xy^2y なんだ!」


LT(g) = 4x^2y


「大正解!」

「よっしゃ!」

「このように、多項式の項のうち、単項式順序で一番大きい項を、先頭項と呼ぶんだ。」

「はい。なんとなく感覚はつかめた気がします。」


りんは何も付いていないスプーンをぺろっと舐めている。

あれだけ食べたのにまだ口がもの寂しいらしい。


「多項式の先頭項は、多項式についてとても重要な情報を持っている。」

「ふむふむ。」

「例えば、多項式 f が、辞書式順序 x>y に関して、y^5 を先頭項に持つとしよう。すなわち、」


LT(f) = y^5


「が成り立つ。この時、f の他の項について、どんなことが言えるかな?」

「え?どんなことって、先頭項しか分かっていないんですよね?何にも分からなくないですか?」

「本当にそうかな?」

「えー……」

「では、f の他の項の単項式は y^5 より大きいかな?小さいかな?」

「そりゃあ、小さいですよね。そもそも、f の項の中で一番大きいのが、先頭項ですもん。」


りんは分からないのがつまらないのか、少し不服そうに答える。


「それじゃあ、y^5 より小さい単項式には何があるかな?」

「なにって……あ、そっか……」


りんは勢いよくペンを動かし始めた。

サラサラと紙とペンが擦れる音が聞こえる。


「辞書式順序 x>y だと、y^5 より小さい単項式って、y^4、y^3、y^2、y、1 の5つしかないんですね。だって、x を含む単項式って、その時点で x を持っていない y^5 より大きくなっちゃうから。例えば、x>y^5 ですもんね。」


y^5 > y^4 > y^3 > y^2 > y > 1


「その通り。つまり、f は次の形の多項式になっている。」


f = y^5+ay^4+by^3+cy^2+dy+e

ここで、a,b,c,d,e は定数。


「f は y だけの多項式ってことですね。」

「うん。このように、先頭項の情報からある程度、多項式の形を推測することができるんだ。」

「ほへー。すごいですね。」

「次に、2つの多項式から、新しい先頭項を作ってみることにしよう。」

「新しい先頭項?」


俺は2つの多項式を書いた。


f_1 = x^2+1

f_2 = xy^2+y


「そう。今、このような多項式 f_1 と f_2 があるとする。辞書式順序 x>y でのそれぞれの先頭項は何かな?」

「えーと、それぞれ、x^2 と xy^2 ですかね。」


LT(f_1) = x^2

LT(f_2) = xy^2


「その通り。」

「よし。」

「この多項式 f_1 と f_2 から、LT(f_1) や LT(f_2)とは別の先頭項を作ってみよう。f_1 に y^2 を掛けて、y^2 f_1 とする。また、f_2 に x を掛けて x f_2 とする。すると、それぞれ、」


y^2 f_1 = y^2(x^2+1) = x^2y^2+y^2

x f_2 = x(xy^2+y) = x^2y^2+xy


「になる。」

「ですね。」

「この時、それぞれの先頭項は、」


LT(y^2 f_1)=x^2y^2

LT(x f_2)=x^2y^2


「ともに x^2y^2 になっている。」

「確かに。」

「だから、y^2f_1 - xf_2 を計算すると、」


y^2f_1 - xf_2 = (x^2y^2+y^2) - (x^2y^2+xy) = y^2 - xy


「のように、先頭項が打ち消される。y^2 - xy の先頭項は何かな?」

「えーと、y^2 - xy の先頭項は -xy ですか?」


LT(y^2 - xy)= -xy


「その通り。これは、さっきの LT(f_1)=x^2 や LT(f_2)=xy^2 のどちらとも違う単項式だね。」


f_1=x^2+1 → LT(f_1)=x^2

f_2=xy^2+y → LT(f_2)=xy^2

y^2f_1 - xf_2 → LT(y^2f_1 - xf_2)=-xy


「はい。」

「このように、多項式に何かを掛けて足し合わせることで、"新しい先頭項"を持つ多項式を作る場合がある。」

「なるほど。」

「これをもっと一般的に考えてみよう。s 個の多項式 f_1,...,f_s に対して、それらの多項式から(掛けたり足したりして)作り出せる多項式全体を考える。つまり、」


g = h_1f_1 + … + h_sf_s

(h_1,...,h_s は多項式)


「という形の多項式 g 全体の集合を考える。これは、集合で書くと、」


{h_1f_1 + … + h_sf_s | h_1,...,h_s は多項式}


「だね。これは数学だと何と呼ばれるかな?」

「イデアル……ですか……??」

「そう。イデアル(ideal)だ。厳密には、f_1,...,f_s から生成されるイデアルと呼ばれ、」


<f_1,...,f_s> = {h_1f_1 + … + h_sf_s | h_1,...,h_s は多項式}


「で表される。」


定義(生成されるイデアル)

多項式 f_1,...,f_s に対し、

<f_1,...,f_s> = {h_1f_1 + … + h_sf_s | h_1,...,h_s は多項式}

を f_1,...,f_s から生成されるイデアルと呼ぶ。


「うーん、イデアルって何だかイメージが付かなくて取っ付きにくいんですよね。」

「それじゃあ、具体的な例で確認してみよう。」

「お願いします!」

「例えば、f_1=x、f_2=y とすると、x と y から生成されるイデアル <x,y> はつぎのような多項式の集合になる。」


<x,y> = {h_1x + h_2y | h_1,h_2 は多項式}


「そうですね。」

「具体的にはどんな多項式が <x,y> の中にある?」

「えーと、例えば、h_1=x、h_2=1 とすれば、h_1x + h_2y = x^2+y とかですか?」

「そうそう。他には?」

「h_1=-y、h_2=2x^2 とすれば、h_1x + h_2y = -xy+2x^2y=2x^2y-xy とかもですね。」

「うんうん。そうだね。他にも色々あるけど、<x,y> は x に多項式を掛けたり、y に多項式を掛けたり、さらにそれらを足したりして出来るような多項式全体になっている。」

「なるほど。」

「それでは、次の多項式から生成されるイデアルは、どうかな?」


f_1=x+y, f_2=x-y

<x+y,x-y>


「うーんと、今度は、h_1(x+y)+h_2(x-y) という形の多項式全体ということですね。」

「具体的にどんな多項式が、<x+y,x-y> にはあるかな?」

「h_1=x+1、h_2=-3 とおけば、」


h_1(x+y)+h_2(x-y)=(x+1)(x+y)-3(x-y)=x^2+xy+x+y-3x+3y=x^2-2x+xy+4y


「とかが <x+y,x-y> に入る多項式ですね。」

「そうそう。ここで注目すべきは、実は <x,y> と <x+y,x-y> は同じ集合を表しているってことだね。」

「あ!そうなんですか!?」

「うん。例えば、h_1x+h_2y という形の多項式は、」


h_1x+h_2y=((h_1+h_2)/2)(x+y)+((h_1-h_2)/2)(x-y)


「という形に変形できるよね。だから、h_1x+h_2y は <x+y,x-y> に入る多項式になっている。逆に、<x+y,x-y> の多項式は h_1(x+y)+h_2(x-y) という形でかけるけど、」


h_1(x+y)+h_2(x-y) = (h_1+h_2)x+(h_1-h_2)y


「という形に変形できるから、<x,y>に入る多項式でもある。だから、<x,y>にある多項式と<x+y,x-y>に入る多項式は全く同じで、」


<x,y>=<x+y,x-y>


「が成り立つんだ。」

「なるへそ。」

「イデアル I=<f_1,...,f_s> に対し、{f_1,...,f_s} は I のまたはと呼ばれる。ここでは基底と呼ぼう。例えば、 I=<x,y> の基底の1つは {x,y} だ。」

「『1つ』ってことは、他にもあるってことですか?」

「うん。さっき示したように、I=<x,y>=<x+y,x-y> だから、{x+y.x-y}も I の基底の1つだ。」

「あ、なんか思い出して来ました。それでグレブナー基底が出てくるんですね。」

「そう。イデアル I の基底の中で、『特別な性質を持つ基底』のことをグレブナー基底と呼ぶんだ。」


グレブナー基底=特別な性質を持つ基底


「ほほー」

「例えば、I=<x,y> に対して、{x,y} はグレブナー基底だが、{x+y,x-y} はグレブナー基底ではない。その違いは分かるかな?」

「えーと、{x,y} の方が {x+y,x-y} なんかシュッとして短いってとこですか?」

「惜しいな。というか惜しくもないな。そうじゃなくて、先頭項に注目してほしい。」

「あ!思い出しました!{x,y} の辞書式順序の先頭項は」


LT(x)=x, LT(y)=y、


「で x と y が出てきているのに対し、{x+y,x-y} の先頭項は、LT(x+y)=x、LT(x-y)=x で、x しか出てきてないですね。」

「その通り。1つのイデアルに対して、基底は色々あるけど、基底によって先頭項の集合は異なる。」

「ふむふむ。」

「ここで少し話題を変えよう。イデアルに出てくる多項式の先頭項の全ての集合を考える。次の」


LT(I)={LT(g) | g は I の中にある多項式}


「という集合を考えよう。これは、I に出てくる多項式の先頭項をすべて集めたような集合だ。」

「ううむ。なんか難しいですね。」

「I=<x,y>の例だと、x^2+y が I の多項式であることを確認したよね?」

「はい。」

「x^2+y の先頭項は LT(x^2+y)=x^2 で、だから、x^2 は LT(I) に入っている。」

「なるほど。」

「他にも色んな多項式が LT(I) の中にある。どんな例が浮かぶかな?」

「えーと、さっき例で出したように、2x^2y-xy も I の中にあるから、」


LT(2x^2y-xy)=2x^2y


「も LT(I) の中にある多項式ですか?」

「そうそう。」

「やった!」

「次に LT(I) から生成されるイデアルを考える。次の <LT(I)> のことだ。」


<LT(I)>={h_1LT(g_1) + … + h_rLT(g_r) | r は自然数。g_1,..,g_r は I の多項式で、h_1,...,h_r は多項式}


「うへー。また難しいものが…」

「大丈夫。1つずつ見ると、そんなに難しくはない。」

「ほんとですか?」

「さっきの LT(I) だと、I の中の多項式の先頭項 LT(x^2+y)=x^2 や LT(2x^2y-xy)=2x^2y を考えていたけど、今度はそれらに多項式を掛けた和も考えるってことだ。つまり、」


h_1LT(g_1) + … + h_rLT(g_r)


「のことだね。」

「ほほう。」

「例えば、r=2、g_1=x^2+y、g_2=2x^2y-xy、h_1=x+1、h_2=y とすると、どうなるかな?」

「えーと、LT(x^2+y)=x^2、LT(2x^2y-xy)=2x^2y だったから、」


h_1LT(g_1) + h_2LT(g_2) = (x+1)x^2+y(2x^2y) = x^3+2x^2y^2+x^2


「ですか?」

「正解!なんだよく出来てるじゃん。」

「私、具体的な計算は割と得意なんですね。抽象的な定義は苦手なんですけど。」

「数学で大事なのは、具体的な例から抽象的なイメージを掴むことだからね。それはいいところだと思うよ。」

「えへへ。照れますね。」

「このように、<LT(I)> は I に含まれる多項式の先頭項から生成されるイデアルだ。ここで、1つの問題が考えらえる。」


『<LT(I)> の基底を I から具体的に計算することはできるか?』


「えーと、つまり、どういうことですか?」

「基底というのは、I=<f_1,...,f_s> の {f_1,...,f_s} のように、I を生成する集合だったよね。つまり、問題を言い換えると、」


『<LT(I)>=<g_1,...,g_r> となる多項式の集合 {g_1,...,g_r}を

I=<f_1,...,f_s> から計算することはできるか?』


「となる。これは約60年前までは未解決問題だった。」

「え?そんなに難しいんですか?これ?」

「……前に話したように、多項式を掛けたり足したりすると、そこから新しい先頭項が生まれる。I=<f_1,..,f_s> というように I の基底が分かっていても、f_1,...,f_s から新しい先頭項が生まれて、その新しいものからさらに新しい先頭項が生まれて……と考えると、<LT(I)> に含まれる先頭項をすべて見つけることは実はとても難しいんだ。」

「おおん…」

「そして、この問題を解決したのが、お待ちかねグレブナー基底だ。グレブナー基底の定義は次のようになる。」


定義(グレブナー基底)

>を単項式順序、I=<f_1,...,f_s> を f_1,.,,,f_s から生成されるイデアルとする。

I の基底 G={f_1,.,,,f_s} は、


<LT(I)>=<LT(f_1),...,LT(f_s)>


を満たす時、I の(> に関する)と呼ばれる。


「あー、この式 <LT(I)>=<LT(f_1),...,LT(f_s)> は授業で見たことがあります。よく分かりませんでしたけど。」

「じゃあ、具体的にどういうものがグレブナー基底か見ていこう。」

「はい!」

「例えば、 I=<x,y> としよう。また、> を辞書式順序とする。この時、LT(I) はどんな集合だったかな?」

「えーと、LT(I) は I の多項式の先頭項の集合だったので、LT(x^2+y)=x^2、LT(2x^2y-xy)=2x^2y とかありましたよね?」

「一般の I だと、LT(I) を特定するのは難しいけど、I=<x,y> だとそれほど難しくはない。実は、」


LT(I)={c x^a y^b | a,b は0以上の整数、c は定数}


「が言える。」

「あー確かに、LT(x^2+y)=x^2 も LT(2x^2y-xy)=2x^2y も c x^a y^b の形してますもんね。」

「理解が早いね。<LT(I)> は LT(I) から生成されるイデアルだから、」


<LT(I)>=<x,y>


「が成り立つ。ここで、I の基底の1つ G={x,y} を考えよう。f_1=x、f_2=y とすると、LT(f_1)=x、LT(f_2)=y だから、」


<LT(I)>=<LT(f_1),LT(f_2)>


「が成り立つよね。だから、定義により、G={x,y} は I=<x,y>のグレブナー基底だ。」

「なるほど。」

「一方、I=<x,y>=<x+y,x-y> だから、G'={x+y,x-y}も I の基底だったよね。G' は I のグレブナー基底と言えるかな?」

「え、えーと、<LT(I)>=<x,y> だから、それと <LT(x+y),LT(x-y)> を比較すればいいんですよね?」

「その通り。」

「えーと、LT(x+y)=x、LT(x-y)=x だったから、」


<LT(x+y),LT(x-y)>=<x,x>=<x>


「ですよね。」

「うんうん。」

「でも、これは、<LT(I)>=<x,y>と一致しません。なぜなら、<LT(I)> には、y という多項式があるのに、<x> には y が含まれていないからです。よって、」


<LT(I)>≠<LT(x+y),LT(x-y)>


「なので、G'={x+y,x-y} は I=<x,y> のグレブナー基底ではありません。」

「大正解!」

「へへへ、やりました!」


りんは笑顔でガッツポーズを決める。

その勢いに思わず黒糖ミルクラテをこぼしそうになる。


「では、別のイデアルの例を見てみよう。では」


I=<2x+3y+1, 3x+2y-1>


「という 2x+3y+1 と 3x+2y-1 から生成されるイデアルを考える。このグレブナー基底を見つけてみよう。」

「はい!まず基底 G={2x+3y+1, 3x+2y-1} の先頭項はそれぞれ」


LT(2x+3y+1)=2x、LT(3x+2y-1)=3x


「なので、」


<LT(2x+3y+1),LT(3x+2y-1)>=<2x,3x>


「になりますね。」

「惜しいね。」

「あれ?」

「間違ってはいないけど、もう少し整理することはできる。定数 2 や 3 も次数が0の多項式だから、2x、3x にそれぞれ、1/2、1/3 を掛けると、x になる。だから、」


<LT(2x+3y+1),LT(3x+2y-1)>=<2x,3x>=<x>


「が成り立つ。」

「あ、そっか。で、G={2x+3y+1, 3x+2y-1} が I=<2x+3y+1, 3x+2y-1> のグレブナー基底であるには、」


<LT(I)>=<x>


「が成り立てばいいってことですね。」

「そうそう。逆に言えば、2x+3y+1, 3x+2y-1 から(x では作れない)新しい先頭項が生まれてしまったら、G はグレブナー基底じゃないってことだ。」

「なるほど。でもなんか作れそうな感じがしますね。」

「どうして?」

「えーと、2x+3y+1 に 3 を掛けて、3x+2y-1 に 2 を掛けたものを引くと、」


3(2x+3y+1)-2(3x+2y-1)=9y-4y+5=5y+5


「x が消えて、y だけの式が出てきますよね?これって、I=<2x+3y+1, 3x+2y-1> の定義から、5y+5 が I の中にある多項式ってことです。あ、1/5を掛けると、y+1 だから、y+1 もI の中にある多項式ってことか。そして、その先頭項 LT(y+1)=y は LT(I) の中にある。つまり、」


y は <LT(I)> の中にある


「ということですが、y は <x> にはないので、」


<LT(I)>≠<x>


「を意味します。したがって、G={2x+3y+1, 3x+2y-1} は I=<2x+3y+1, 3x+2y-1> のグレブナー基底ではありません!! 」

「大大正解!!」


俺は両ひじを曲げて、勝利のコロンビアのポーズをする。

りんは元ネタを知らなかったらしく首を傾げていたので、俺は恥ずかしくなって止めた。

しかし、意外とりんの理解が早くて助かる。


「じゃあ、この場合、I=<2x+3y+1,3x+2y-1> のグレブナー基底って何なんですか?」

「実は、I=<2x+3y+1,3x+2y-1> のグレブナー基底の1つは {x-1,y+1} なんだ。しかもこれは、


2x+3y+1=0

3x+2y-1=0


「という連立方程式の解 x-1=0、y+1=0 にも対応している。」

「あ、ほんとだ!」

「これは先頭項の集合が、元の多項式たちの重要な情報を持っていることの良い例だね。実は連立一次方程式の場合(線形連立方程式の場合)、LT(I) を求めることと、連立方程式を解くことは同じ意味なんだ。」

「へー。すごいですね。」


俺はホットコーヒーを飲み干した。


「話を戻すと、{x-1,y+1} が I=<2x+3y+1,3x+2y-1> のグレブナー基底であることを示すには、そもそも LT(I) がよく分からないから難しいよね。」

「ですね。」

「しかし、ブッフベルガーの判定法というアルゴリズムを使えば、どんなイデアルに対しても、ある基底がグレブナー基底かどうか確かめることができるんだ。」

「おおー!……はっ!確かに授業でやったかもしれません。」

「さらにその判定法を使えば、I のどんな基底 {f_1,...,f_s} からもグレブナー基底を計算することができて、これは『<LT(I)> の基底を I から具体的に計算することはできるか?』という問題の答えにもなっているんだ。」

「おおー……グレブナー基底すごい……」


俺はノートの最後のページを開いて、話をまとめることにする。


「今日、まず単項式順序というものを定義した。これは割り算を上手く行うための順序だったね。単項式順序の例としては、辞書式順序を挙げた。次に、単項式順序から、多項式の先頭項を定義した。先頭項は多項式の重要な情報を持っているものだ。最後に、イデアル I の先頭項の集合 LT(I) を考えた。そして、LT(I)の情報をすべて持っている基底こそがグレブナー基底だった。」


・単項式順序(>)=割り算をするための順序

・辞書式順序=単項式順序の1つ

・先頭項(LT)=多項式の項のうち、(ある単項式順序で比べて)一番大きい項

・<f_1,..,f_s>=多項式 f_1,..,f_s から生成されるイデアル

・基底=イデアル <f_1,..,f_s> に対する {f_1,..,f_s} のこと。<x,y>=<x+y,x-y>のように1つのイデアルに色々な基底がある

・LT(I)=イデアル I の先頭項の集まり

・グレブナー基底=先頭項の情報を網羅した特別な基底。<LT(I)>=<LT(f_1),...,LT(f_s)> が成り立つと、G=<LT(f_1),...,LT(f_s)> は I のグレブナー基底


「ふう……長かったですね……」


りんはお茶を飲む老婆のようにラテをすする。

腰を叩くマネが可愛らしい。


「これでグレブナー基底を定義できたわけだけど、どうだったかな?」

「なんだか疲れちゃいましたけど、面白かったです。グレブナー基底って、授業でやった時はなんか抽象的な記号ばっかりで、よく分からなかったんですけど、今日はなんかスーとわかった気がします。やっぱり、自分で具体的な例を考えて行くのは大事なんですね。数学ガールでもあった『例示は理解の試金石』ってまさにこのことかも笑。なんかもっともっとグレブナー基底について知りたいって思っちゃいました。」


りんは体全体をストレッチするように、大きく伸びをする。

その満足そうな顔に、俺はとても嬉しくなる。


「あ、そろそろ映画の時間ですね。」


りんは気づいたように腕時計を見てつぶやく。

もうそんな時間だったか。


「グレブナー基底の話の続きは今度にしようか。」

「そうですね。クリスマスにでも。楽しみにしています。」


りんは黒糖ミルクラテの最後の1口を飲む。

外を見ると、雪が雨に変わっていた。


***


……なんかもっともっとグレブナー基底について知りたいって思っちゃいました。」


りんは体全体をストレッチするように、大きく伸びをする。

その満足そうな顔に、俺はとても切なくなる。


「あ、そろそろ映画の時間ですね。」


りんは気づいたように腕時計を見てつぶやく。

もう時間が来てしまったのか。


「グレブナー基底の話の続きは今度にしようか。」

「そうですね。クリスマスにでも。楽しみにしています。」


りんは黒糖ミルクラテの最後の1口を飲む。

外を見ると、もうセミの声は止んでいた。


テーブルには2つのアイスコーヒー。

そこに、りんの姿はなかった。


想像の恋人イマジン・ラヴァー


空想を現実世界に持ってくる俺の症状は、もともとこう呼ばれていた。

人は、強いストレスを受けると、無意識にそれを回避するための「防御機制」というものを開始するらしい。

発症の最初のきっかけとなったのが、彼女、北条環だ。


去年の冬。12月ごろ、俺は彼女と喫茶店でデートをした。

彼女とは、もともと『計算機代数特論2』という授業で偶然知り合い、一応恋人という関係になっていた。


しかし、その年のクリスマス。

俺は光り輝くツリーの下、日付が変わるまで待ったが、約束した場所に彼女は現れなかった。


心配になりラインを送るも既読が付かない。

そのまま1月になり講義にも彼女は現れなかった。

何かあったのかもしれない。そんな不安で一杯だった。


俺は彼女と同じ学年の学生たちに、北条環について尋ねた。

しかし、返って来たのは思いもよらぬ答えだった。


-「ほうじょうりん?誰ですかそれ?」

-「少なくとも同じクラスではないと思いますよ」

-「学年ラインにもいないみたいですね」


北条環のことを知っているものは誰もいなかった。

それは記憶だけではない。


-「北条環という学生は、この講義を履修していないよ?」


一緒に受講していた『計算機代数特論2』の受講生としても、北条環という名は一切の記録に残っていなかったのだ。


「北条環は最初から存在していなかった?」


この時から俺はこう思い始めていた。そう思うと全てが納得できた。

すべては俺の妄想だった。

恋人が欲しいあまり、頭の中で空想上の彼女を作ってしまった。

好きだった彼女、北条環は妄想だった。


俺はその事実に耐えきれず、そのまま出すべき書類を出さず、留年した。

そもそも俺なんかに彼女が出来る時点で、存在を疑うべきだったのだ。


今日、このカフェで、突然りんが現れて俺は驚いた。

だって、去年会った時の姿、そのままだったから。

しかし、それは同時に彼女が空想であることの証明にもなっていた。

この暑い夏にロングのブーツは不自然すぎる。


でも、良かった。

今日、俺はりんと2回目のグレブナー基底の話が出来たから。


「すまんすまん。待たせたな。」


アイスコーヒーの最後の1滴を飲み干すと、俺の前の椅子が引かれた。


そこにあったのは、群城の姿だった。

気持ちを切り替えて、俺は顔を上げる。


「あれ?アタシのアイスコーヒー頼んでくれたのか?」

「え?ああ。」

「ありがとな。」


今日は、群城とここで待ち合わせていた。

カフェに来たのはそのためだった。


「圭介、どうした?具合でも悪いのか?」


群城は心配そうな顔で俺を見つめる。

俺は手でまぶたを擦る。


「いやあ、ちょっと寝不足で眠いだけだよ。」

「そうか?」

「そ、それより、今度、南條とかと一緒にどっか行こうって打ち合わせだろ?」

「ああ。そうそう。ジェットコースターとかある後楽園の東京ドームシティとか考えてるんだが、どうだ?」

「お、いいんじゃないか?近いし。まあ、遠くてもいいんだったら、遊園地系なら、遠くなるけど、富士Qとか、USJ とかもいいかもな。」

「関西方面か。あ、そういえばこの前、C.J.と京都に行って来たんだよね。」

「C.J. って誰だ?」

「ほら、アタシが留学してた時のルームメイトだよ。この前、日本に来てたから一緒に観光しに行ったんだ。C.J.のやつ、舞妓の格好して結構可愛かったんだぜー。あ、アタシもしたけど//」


群城はそう言って、スマホの写真を見せる。

そこには、京都の街を歩く、舞妓姿の群城が写っていた。

俺はその背後の人物に目がいった。


「ちょっと、群城、もっとよく見せてくれ!」

「お、おい!」


俺は群城からスマホを奪い取る。

そして、タップして画像を拡大する。


「ちょ、ちょっと恥ずかしんだから、あまりじっと見るなよ!!!」


……確かにそうだ。

間違いない。


俺は思わず、群城の腕を掴み大きな声で言った。


「群城、京都に行こう!」


写真の奥に写っていたのは、りんの姿だった。

俺の空想なんかじゃない。


北条環は実在する。

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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