はじめに
Varhilとは
日本語や英語など、我々が使っている自然言語は、しばしば不便を生じます。自然言語で会話するときや、自然言語で書かれた文章を読むとき、言語の曖昧さによって人によって異なる意味を取ってしまうことがあります。また、自然言語でスピーチをするときや、自然言語で文章を書くとき、言語の制約によって意図した意味を表現できないことがあるかもしれません。
そこで、こういったことが無いように、どのような意味であっても正確に表現できる言語を目指して作られた人工言語がVarhilです。
意味とは何か
どのような意味でも表せる言語を作るには、まず、「意味」とは何であるかという問いに答えを出す必要があります。しかし、この問いはいろいろな言語学者が議論しているさなかであり、一貫した結論は未だに得られていないはずです。
意味を形式化するうえで、最も議論の余地が少ないのは、数学で使われるような述語論理でしょう。述語論理が数学以外の分野で使われることはあまりありませんが、述語論理は使用する述語によって様々に応用することができるので、自然言語的な述語を選べば、述語論理でも自然言語で表現される意味を(やや無理やりにでも)表現できるのではないでしょうか。
構文厳密であり、述語論理に基づいているとされる人工言語ロジバンは、認知や心態詞など述語論理にない区別を機能語が担っており、純粋な述語論理の表現にはなっていません。一方で、生の述語論理は変数や論理記号が多く、また文法が自然言語のそれと大きく異なるため、音声言語として人間が運用するのには意味とは別に表層的な難しさが伴います。そこで、(ある程度)自然言語に似た音声や文法を持ちながら、厳密かつ純粋に述語論理に対応付けられる言語を作ることにしました。
存在グラフの影響
ところで、一般の述語論理では¬、∧、∨、∀、∃、⇒、⇔などの論理記号を使いますが、これらを全て使うのは冗長であることが知られています。この体系には、有名なドモルガンの定理のような、(古典論理的に)同値な言い換えが多くあるため、表現力を減らさずに論理記号の使い方を制限できるのです。
どのように制限するかには色々なやり方がある(参考:選言標準形、Functional_completeness)のですが、Varhilではチャールズ・サンダース・パースが提案した存在グラフを参考に、∧、¬、∃のみを使い、さらに¬が括弧の役割を兼ねることで∧と∃を無標で表現するという体系を採用しています。これによって論理演算子を表現する機能語が最小限になり、基礎文法をより簡潔にすることができました。
ポーランド記法
意味を厳密に表現するには、まず構文を厳密にする必要があります。例えば「大きなシマウマの群れ」という日本語のフレーズは、群れを構成するシマウマが大きいようにも、シマウマの群れが大きいようにも取ることができてしまい、曖昧です。「(大きなシマウマ)の群れ」「大きな(シマウマの群れ)」のように括弧を使えば厳密にできますが、文が複雑になると括弧が連続してしまい、煩雑です。ロジバンでは「閉じ括弧が不要な時は省略して良い」というルールで対応していますが、会話中に閉じ括弧が必要かどうか咄嗟に見極めるのは難しいでしょう。Varhilではほとんどの場面において、ポーランド記法を使うことで、語順によって構文を一意に示しています(閉じ括弧を使う場合もあります)。
文法範疇について
Varhilでは純粋な述語論理との対応を目指すため、性、数、時制、相(アスペクト)、法、態、証拠性などの文法範疇を持ちません(明示する必要がある場合は語彙によって表現します)。但し、文法範疇の極性は述語論理の否定に、文法範疇の格は述語論理の引数の順序に、それぞれ対応するため、これらは表現します。特に格は特徴的で、ロジバンでは語順(PS)によって表現しているのに対して、Varhilでは前置詞などによって表現します。
構文解析器
Varhilはその性質により、コンピューターによる手続きによって述語論理に翻訳することができます。TypeScriptで実装された構文解析器は、ブラウザ上でVarhil作文のチェックができるほか、そのソースコードを読むことでより理解を深めることができるでしょう。