First-order Modal Logic, Section 2. The basic logics

"Handbook of Modal Logic" の Chapter 9, First-order Modal Logic 読んでみようかなと思いました。

Section 2 からが技術的な話。

意味論の定義

この節では、簡単な axiomatization をもつ三種類の意味論を与えています。

  • constant domain semantics: individuals の domain が可能世界に依存しないもの
  • increasing domain semantics: domain が accessibility に関して単調なもの
  • varying domain semantics: domain が世界ごとに違っていて、一般には何の関係もないもの

ここで domain と言っているのは、正確には quantifier で束縛されている変数の解釈に使う集合のことで、自由変数の解釈には fix されたもっと大きい集合を使うようです。きちんとした定義は、まず (W, R は Kripke frame, D は個体の解釈先) を考え、各 w ∈ W について δ(w) ⊂ D を割り当てます。この δ(w) が上で constant とか increasing とか言っいる domain です (ただし constant domain のときは δ(w) = D に固定)。それで、個体変数の解釈はトップレベルでは D のどこでもよいことになっていて、quantifier が現れたときだけ束縛変数の解釈先として δ(w) 上を走らせます。

この意味論って、変数の解釈は世界によらず一様なんですよね。それは自然なのかどうなのかと疑問に思ったりしないでもない。たぶんそういうケースは Section 3 で取り扱うのだと思いますが。

Barcan formula

どうやら重要らしいのが Barcon formula (∀x.□A)→□∀x.A (とその逆 converse Barcan formula) で、constant domain だと両方成立、increasing domain だと converse Barcan formula だけ成立、varying だとどちらも不成立。一般には Barcan formula が成立するのは decreasing domain であることと、converse Barcan formula が成立するのは increasing domain であることとそれぞれ同値。これは意味論の定義を見ればまあそうだろうなという感じです。

existence predicate

面白いことに、実は varying domain は constant domain で表現できるという話。

varying domain なモデルが与えられたとき、言語に unary predicate E を追加して、その解釈が各 w において E(x) iff x ∈δ(w) となる constant domain なモデルを定義すると、二つのモデルで論理式の真偽は同じになる。この E を existence predicate という。existence predicate は  E(x) = \exists y.(x = y) として定義可能。

まあ言われてみれば当たり前ですが。

ただ、ここでいう existence の意味があまりよくわからないような気もします。あるいは問題は意味論の定義まで遡るのかもしれません。δ(w) に入っているということをもって「存在する」と言っているようですが、そもそも現在考えている世界に「存在しない」ものを変数の意味として解釈することが許される作りはどのように justify されるのだろう、などと思ったりします。とはいっても、この点についてあまり本気で考えたわけではないのでただの勘違いとかいう可能性もあります。

もしかすると、超越的な視点を仮定すればそれできちんと説明がつくのかもしれません。だとすると、そういう視点は普通の Kripke semantics でもある程度前提になっているところのような気はしていますから、従来の意味論の拡張という点では問題ないのかもしれません。

standard translation

propositional modal logic のときと同じように first-order logic への変換があります。ただし可能世界を表す変数とは別に個体変数が入るので two-sorted になります。定義自体は、constant domain のときは素直に論理式の解釈を first-order logic で書き下すだけ。そうでないときは先の方法で constant domain へ翻訳してから同じ方法を適用する。

まあ、技術的にはそんなに難しくはありません。ところでこの章、著者の性格なのか、随分細かいところまで丁寧に説明してあるような気がしました。