パラドックスの意味論

論理学の勉強をしていると、パラドックスがどうしても気になって仕方がない。「この文は偽りである」という文が真とも偽とも言えないのが納得がいかないのである。うそつき文が長いのでこれを U で略記する。すると、U が真であるなら U の記号内容に従って U は偽でないといけない。また、U が偽であるとすると U は真でなければならなくなる。不思議な話である。

しかし、上の議論を記号論的に考えてみると別の見方ができるのである。記号論的には上の議論は U という記号表現に対して U の真偽という記号内容を対応させるための意味論的な議論である。しかし、上の議論を良く見ると記号表現 U の記号内容は U の真理値だけではないのである。上の議論では、記号表現 U の意味が解釈される度に記号表現 U の真理値が変化するのである。記号表現 U の記号内容を真理値だけと考えるとパラドックスになってしまう。しかし、記号表現 U の記号内容を U の真理値と U を解釈したときの U の真理値に影響を与える機能との二つからなっていると考えることで、U を一種のフリップ・フロップとしてとらえることができるのである。

つまり記号表現 U の記号内容は、U の真理値と、記号表現 U が解釈されたとき U 自身の真理値を変更する機能という二つの要素からなっているのである。この観点からみると、U の真理値の初期値が真の場合は、U が一回解釈されると真理値は偽に反転する。また、U の真理値が偽のとき U が一回解釈されると真理値は真になる。したがって、U の真理値は U が解釈される度に真偽真偽と変化するのである。この動作は論理素子のフリップ・フロップの動作に他ならない。U が真か偽の価を常に保持すべきであると考えるとパラドックスになるが、Uの真理値は解釈の度毎に反転するのだと考えると、U を異常なものとして排除しないですむのではないだろうか。

この解釈でいくと、変な話だが、真理値が変化しない一般の命題は、命題文を何回解釈しても真理値が安定している特殊な命題なのである。

パラドックス文という記号表現の記号内容を真理値のみと考えるとパラドックスが生じるが、パラドックス文の記号表現の記号内容が、真理値と、解釈に伴う真理値の反転機能という2つの要素の組であると考えると、パラドックス文を普通に受け入れて利用することが可能になるのではないだろうか。実際、現実の論理回路にはフリップ・フロップは普通に使われているのである。

普通に考えると記号表現と記号内容は不可分な関係があるように思われるが、記号表現だけでは意味は発生しないのである。ヒエログリフが分からないものにとっては、それは単なる図案でしかない。記号表現は解釈されてはじめて、記号内容と関連づけられるのである。解釈される度に記号内容の異なる記号表現は変な感じがするかも知れないが、「現在の首相」という記号表現は解釈される時期によってその記号内容が変るのである。同じように文の真偽も解釈によって変化することもある。「現在の大統領はブッシュである。」という文も4年後には偽になるのである。

そうは言っても、解釈の度に真偽が入れ換わる嘘つき文は普通の文ではない。しかし、文と真偽の関係が不変のものではないと考えると、嘘つき文も特殊ではあるが文の仲間として考えることができるのではないだろうか。

(2004.11.05)

嘘つき文プログラム liar.rb

嘘つき文の動作を Ruby プログラムにしたのが、下のリストである。下のリストを liar.rb という名前のファイルに作成して、ruby liar.rb とすると実行することができる。i_am_a_liar という文を評価する度に i_am_a_liar の真偽が反転するのが分かる。

class Liar
  def initialize
    @truth = "true"
  end

  attr_reader :truth

  def interprete
    if @truth == "true"
      @truth = "false"
    elsif @truth == "false"
      @truth = "true"
    end
  end
end

i_am_a_liar = Liar.new

puts "I am a liar. --- #{i_am_a_liar.truth}"
i_am_a_liar.interprete
puts "I am a liar. --- #{i_am_a_liar.truth}"
i_am_a_liar.interprete
puts "I am a liar. --- #{i_am_a_liar.truth}"