境界のない砂の上を歩く

Share

砂山から砂を一粒取り除く。まだ砂山だ。もう一粒。まだ砂山だ。これを一万回繰り返す。手元には数粒の砂が残っている。それはもう砂山ではない。

では、いつ砂山でなくなったのだろう。

一粒の論証

紀元前4世紀、メガラ学派のエウブリデスはこの問いを最初に定式化した。ギリシャ語で「砂山(σωρός, soros)」に由来するこのパラドックスは、単純な二つの前提から出発する。

前提1. 一粒の砂は砂山ではない。

前提2. 砂山から一粒を取り除いても、それは依然として砂山である。

前提2は「寛容原則(tolerance principle)」と呼ばれる。一粒ごとの差は無視できるほど小さい。だから隣り合う二つのケースに質的な違いはない。これは直感的にまったく正しく聞こえる。そしてこの直感的に正しい前提を数千回適用すると、百万粒の砂も砂山ではないという結論に辿り着く。

論理的には完全に有効な推論だ。前提も妥当に見える。しかし結論は明らかに偽だ。これがパラドックスと呼ばれる所以であり、二千年以上にわたって哲学者たちを苛立たせ続けている理由でもある。

言葉が世界を裏切るとき

ソリテスのパラドックスが突きつけているのは、砂山の問題ではない。言語そのものの問題だ。

世界は連続的にできている。光のスペクトラムに「赤」と「橙」の境界はない。波長は滑らかに変化し、どこにも段差はない。しかし私たちの言語は離散的な分類を要求する。「赤」か「赤でないか」。「生きている」か「死んでいる」か。「大人」か「子供」か。あなたには何も見えていないとしても、あなたの言語は常に世界を二つに切り分けようとする。

世界はそこで終わっているとウィトゲンシュタインは書いた。言語の限界が世界の限界だと。しかしソリテスが示唆するのは、もう少し残酷な事実かもしれない。言語の限界は世界を歪めている。私たちは連続的な現実を、離散的な檻に押し込めて暮らしている。その檻の境界を問うたとたん、檻は砂のように崩れる。

三つの逃げ道

二千年の間に、哲学者たちはこのパラドックスからの脱出路をいくつか提案してきた。どれも、それぞれのやり方で失敗している。

認識主義(Epistemicism)

ティモシー・ウィリアムソンは1994年の著作 Vagueness で、過激とも言える立場を打ち出した。境界は存在する。砂山が砂山でなくなる正確な一粒がある。私たちにはそれがどの一粒かを知ることができないだけだ。

寛容原則は偽だ、とウィリアムソンは言う。どこかに、一粒の差が砂山と非砂山を分ける閾値がある。しかし言語の使用パターン、文脈、話者の心理状態といった無数の要因がその閾値を決定しており、それを特定することは原理的に不可能だ。

直感はこれに激しく抵抗する。999粒と1000粒の間に質的な断絶があるなどと、誰が信じられるだろうか。しかしウィリアムソンの論点は、信じられるかどうかではない。古典論理と二値原理を守りたいなら、これを受け入れるしかないということだ。

スーパーヴァリュエーショニズム(Supervaluationism)

キット・ファインが1975年に提示したこのアプローチは、別の方向から問題に切り込む。「砂山」のような曖昧な述語には、複数の「精密化(precisification)」がありうる。ある精密化では500粒以上が砂山、別の精密化では501粒以上が砂山。ある文がすべての許容可能な精密化のもとで真であるとき、それは「超真(supertrue)」であり、すべてのもとで偽であるとき「超偽(superfalse)」であり、精密化によって真偽が分かれるとき、真でも偽でもない。

この立場では「砂山が砂山でなくなる境界がある」はすべての精密化のもとで真だから超真だ。しかし「その境界はn粒目にある」は精密化ごとに異なるため超真ではない。境界は「ある」が「どこにあるかは言えない」。認識主義と結論だけ見れば似ているが、根本的に異なる。ウィリアムソンの境界は実在するが見えない。ファインの境界は、そもそも一つに定まらない。

しかしこの立場にも代償がある。二値原理を捨てなければならない。ある文は真でも偽でもない。そしてそのこと自体が、日常的な推論の基盤を静かに掘り崩す。

ファジー論理(Fuzzy Logic)

三つ目の道は、真偽を0と1の二値ではなく、0から1の連続的な度合いとして扱う。999粒は砂山である度合い0.8、500粒は0.5、3粒は0.01。境界はない。あるのはグラデーションだけだ。

しかしこの道を選んだ瞬間、別の問題が顔を出す。真理値0.5と0.500001の間に有意な差はあるのか。ファジー論理は曖昧さを解消するのではなく、曖昧さをメタレベルに押し上げているだけではないのか。砂山のパラドックスから逃れたつもりが、真理値のソリテスに囚われている。いわば「高階の曖昧さ(higher-order vagueness)」と呼ばれる問題だ。逃げ道の先に、同じ迷路が広がっている。

砂山の外の砂山

ソリテスが厄介なのは、砂山の話にとどまらないからだ。

髪の毛を一本ずつ抜いていくと、いつ「禿げ」になるのか。これはエウブリデス自身が用いた古典的な定式化のひとつだ。しかしもっと身近で、もっと切実なソリテスが、あらゆるところに転がっている。

日本では20歳を迎えた瞬間に飲酒が許される。19歳364日23時59分59秒の人間と、20歳0日0時0分0秒の人間の間に、何が変わったのか。一秒だ。一秒で「未成年」が「成人」になる。制度はこの恣意的な一秒を必要とする。なぜなら制度は連続体の上では動作しないからだ。偏差値50で合格、49.9で不合格。BMI 25以上で肥満。すべて線はどこにもなかったはずの場所に、誰かが線を引いている。そしてその線の上で、人の人生が左右されている。

そしてソリテスは時間の中にも潜んでいる。あなたの細胞は少しずつ入れ替わり、記憶は少しずつ書き換わっている。昨日のあなたと今日のあなたの間に質的な違いはない。しかし十年前のあなたと今日のあなたの間には、何かが確かに変わっている。いつ変わったのか。どこが私なのかを問うテセウスの船が「部品の入れ替え」の問題だとすれば、ソリテスは「漸進的な消去」の問題だ。方向は逆だが、辿り着く場所は同じ。自己同一性の根拠は、砂山と同じくらい脆い。

ピーター・アンガーはこの論法をさらに推し進めた。ソリテス的推論を適用すれば、雲は存在しない。山も存在しない。机も、椅子も、あなたも。なぜなら、どの原子が「雲」の一部でどの原子がそうでないかを確定する方法がないからだ。存在者の輪郭は、砂山の輪郭と同じくらい曖昧だ。これはメレオロジカル・ニヒリズムと呼ばれる立場に通じる。砂山が存在しないなら、パラドックスもまた消える。ただし、世界のほぼすべてが道連れになる。

数え終わることのない砂

ソリテスのパラドックスに「解決」はない。

認識主義は古典論理を救う代わりに、一粒の砂に神秘的な重みを押しつける。スーパーヴァリュエーショニズムは直感を救う代わりに、真偽の二値性を犠牲にする。ファジー論理は連続性を救う代わりに、曖昧さを別のレベルに移し替えるだけだ。そしてアンガーのニヒリズムは論理的に完璧だが、世界を丸ごと道連れにする。どの逃げ道を選んでも、失うものがある。何も失わずにパラドックスから抜け出す方法を、二千年かけても誰も見つけられていない。

そしてたぶん、見つけられないだろう。このパラドックスが消えないのは、解法が足りないからではなく、世界のほうが壊れているからかもしれない。連続的な現実に対して、離散的な言語で立ち向かうこと自体が、最初から破綻した試みだったのかもしれない。

あなたは今日も何かを数えている。年齢を。給料を。体重を。友人の数を。「十分」と「不十分」の境界を探しながら、その境界が砂のように手からこぼれ落ちていくのを感じている。

届かない一言のように、砂山が砂山でなくなった瞬間は、あなたの手の届かない場所にある。

あるいは、最初からどこにもなかった。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu