常用的等值式
我们将一个命题公式的每一组真值(即真值表中的一行)称为该命题公式的一个解释。设G是一个命题公式,若G在它的所有解释下均为真,则称G为重言式,或称G是永真的。设G是一个命题公式,若G在它的所有解释下均为假,则称G为矛盾式,或称G是永假的。设G是一个命题公式,若至少有一个解释使得G为真,则称G为可满足式,或称G是可满足的。G是永真的,当且仅当非G是永假的,重言式一定是可满足式,反之不然。若两个命题公式P,Q在其任何解释下,相应的真值均相同,则称P与Q等值,记为P≡Q。
常用的等值式如下:
幂等律:
结合律:
交换律:
分配律:
双重否定句:
吸收率:
零率:
同一律:
补余律:
德摩根率:
等值演算
等值关系是一个等价关系,正是由于这种性质,使得我们可以从某个逻辑公式出发,经过有限次使用常用的等值式,推演出另外一些逻辑公式,这一过程称为等值演算。例如,证明如下逻辑公式为重言式:
编程要求
通过编程验证等值演算的结果。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
using namespace std;
int hequ(int a, int b)
{
if (a == 1 && b == 1)
return 1;
else
return 0;
}
int dtj(int a, int b)
{
if (a == 1 && b == 0)
return 0;
else
return 1;
}
int main()
{
int P, Q, R;
int m, n;
printf("P Q R P->Q (P->Q)andR\n");
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
for (int k = 0; k <= 1; k++)
{
n = dtj(i, j);
m = hequ(n, k);
printf("%d %d %d %d %d\n", i, j, k, n, m);
}
}
}
}