次の3つの前提があります。
P or Q
P => R
Q => R
記号=>は、「暗黙の」操作を表します。これらの前提がジレンマを構成していることは理解していますが、どうすればそれらを 1 つの論理的表現に組み合わせることができるでしょうか?
次の3つの前提があります。
P or Q
P => R
Q => R
記号=>は、「暗黙の」操作を表します。これらの前提がジレンマを構成していることは理解していますが、どうすればそれらを 1 つの論理的表現に組み合わせることができるでしょうか?
リスト内の各命題は同時に真であるため、and
それらの間に暗黙の命題があります。
(P v Q) ^ (P => R) ^ (Q => R)
しかし、私たちはそれが次のことを知ってい(P v Q)
ますTrue
:
True ^ (P => R) ^ (Q => R)
残りは次のとおりです。
(P => R) ^ (Q => R)
のような含意は、次のようにP => R
変換されます。
~(P ^ ~R)
これは次のように変換できます。
(~P v R)
それを使用すると、次のようになります。
(~P v R) ^ (~Q v R)
因数分解すると、次のようになります。
(~P ^ ~Q) v R
以来:
(~P ^ ~Q) == ~(P v Q)
我々は持っています:
~(P v Q) v R
しかし、私たちはそれが次のことを知ってい(P v Q)
ますTrue
:
~True v R
また:
False v R
そしてそれが最終的な答えにつながります:
R
最初の問題の提示は、自然演繹における Or-Elimination です。これは直観論的論理の原則であり、ここではブール代数に関する古典的な議論は必要ありません。
直観的に、P v Q は、P または Q の互いに素な和の型のようなものです (一部のプログラミング言語の共用体型のようなものです)。P => R から行く方法と Q => R から行く方法がある場合 --- つまり、それぞれそのタイプの関数 --- それらをまとめて選言をなくし、結果 R を得ることができますどちらの場合も。
これは、次のような高階関数コンビネータとして示されることがあります。
case: P v Q => (P => R) => (Q => R) => R
P v Q は、任意の R に対してこの推論を可能にする論理演算子であると実際に定義できます。
これは、ロジックとプログラミングのカリー・ハワード対応の重要な側面の 1 つです。
含意A=>Bは、ブール代数の場合、「AがTRUEの場合BはFALSEになることはできません」と読む必要があります。これは、同等の式を持ちます。含意A => Bは(!A || B)です。
あなたの場合P=>R〜!P || R、Q => R〜!Q || Rなので、!(P || Q)&& R
更新:複雑な式は通常、単純な式を&-ingすることによって作成されます。おそらく、いくつかの式Xを証明する必要があります(たとえば、P ==「雨が降っています」、Q ==「雪が降っています」、R ==「傘を持っていきます」。そして、X=のようなものを証明する必要があります。 =「雨や雪が降っている場合は傘を持っていきます」)
したがって、((P || Q)&&(P => R)&&(Q => R))=> Xを実行します。単純な式が真である場合は、すべての場合に真であるかどうかを確認する必要があります。これの左側は正確にP||Q&&Rに等しい