物事を明確にするのにより適した具体的な例に焦点を当てます。簡単に言えば、論理式は 3 つの句の結合で構成されています
C1: phone = '141-3304913'
C2: age < 50
C3: age >= 50
結果が
True, if any clause is true
False, if all clauses are false
Unknown, in all the other cases
したがって、True に関連付けられた値が最大で、False が最小で、Unknown がその中間の値である場合MAX
、論理積をとることは正しいことが証明されます。同様に、選言は関数でMIN
機能します。否定は、0 から 1 (除外) までの値を不明として解釈する限り機能します。明らかに、1/2 を取ると、否定関数は「安定」しますが、数学的にはそれほど重要ではありません。
phone
より操作的には、句は変数P
とage
変数の次の値 (インスタンス) に明確に反応しますA
。
P1 such that P1 = '141-3304913'
P2 such that P2 <> '141-3304913'
P3 such that P3 = NULL
A1 such that A1 < 50
A2 such that A2 >= 50
A3 such that A3 = NULL
条項の満足度に関しては、
P1 -> C1 = 1
P2 -> C1 = 0
P3 -> C1 = 1/2
A1 -> C2 = 1, C3 = 0
A2 -> C2 = 0, C3 = 1
A3 -> C2 = C3 = 1/2
一般に、2 つの変数はそれぞれ 3 つの可能な値を取るため、3*3 の可能な組み合わせが存在します。
P1 A1: C1 = 1, C2 = 1, C3 = 0 -> MAX(1,1,0) = 1 -> true
P1 A2: C1 = 1, C2 = 0, C3 = 1 -> MAX(1,0,1) = 1 -> true
P1 A3: C1 = 1, C2 = 1/2, C3 = 1/2 -> MAX(1,1/2,1/2) = 1 -> true
P2 A1: C1 = 0, C2 = 1, C3 = 0 -> MAX(0,1,0) = 1 -> true
P2 A2: C1 = 0, C2 = 0, C3 = 1 -> MAX(0,0,1) = 1 -> true
P2 A3: C1 = 0, C2 = 1/2, C3 = 1/2 -> MAX(0,1/2,1/2) = 1/2 -> unknown
P3 A1: C1 = 1/2, C2 = 1, C3 = 0 -> MAX(1/2,1,0) = 1 -> true
P3 A2: C1 = 1/2, C2 = 0, C3 = 1 -> MAX(1/2,0,1) = 1 -> true
P3 A3: C1 = 1/2, C2 = 1/2, C3 = 1/2 -> MAX(1/2,1/2,1/2) = 1/2 -> unknown
特に、C2 と C3 は相互に排他的であるため、結合の結果として False になることはありません。
式R.a > R.b OR R.a <= 0 OR R.b >= 0
は、代わりに次のケースを表します。
R.a <= 0, R.a > 0, R.a = unknown
R.b >= 0, R.b < 0, R.b = unknown
R.a - R.b > 0, R.a - R.b <= 0, R.a - R.b = unknown
どうやら 3 つの変数と 27 の可能なケースがあるようですが、関連するいくつかR.a - R.b
は自明に除外できます。