本文主要是介绍离散数学第1章命题逻辑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
“要指定一个语言,首先需要确定所使用的符号。汉语使用的符号是汉字和标点符号。命题逻辑使用的符号是命题变元和联结词。谓词逻辑使用的符号是常元、函数符号、谓词符号、量词、联结词等。在汉语中,能够表达完整意义的符号串是句子。在数理逻辑中,能够表达一定意义的符号串是公式。”
“在汉语中,可以从两方面看待句子:一方面可将它看作一个符号串,另一方面也可将它看作该句子的涵义。前者是语法观点,后者是语义观点。从语法上看,“贾政是贾宝玉的父亲。”与“贾政是贾宝玉的爸爸。”是不同的句子,因为它们是不同的符号串。从语义上看,这两个句子没有区别,因为它们的涵义完全相同。对于数理逻辑中的公式,也同样如此。学懂数理逻辑的关键在于:分清语法概念和语义概念,切不可混淆。”
命题
命题是推理的基本要素。自然语言将命题表达为具有确定真假意义的陈述句。若该语句意义为真,就称其为真命题。否则就称其为假命题。
简单命题
由简单陈述句表述的命题称为简单命题。命题逻辑不再进一步分析简单命题的内部结构。
- 雪是白的。
- 2是奇数。
- x+y>5
- 你是谁?
- 我正在说谎。
- 北京是中国的首都。
- 21世纪时有人住在月球上。
①和⑥是真命题。②是假命题。⑦是命题,但是现在还不知道它的真值。④不是命题,因为不是陈述句。③不是命题,因为真假值不确定。⑤是说谎者悖论,不是命题,没有确定的真值。
为什么7是命题呢?命题不是有确定真假意义的陈述句吗?
我想的是,还不如定义命题就是一个bool变量,因为以后还要进行假设一个命题为真之类的。
联结词/真值表
优先级是按照!, &&, ||, !=, =>, ==
排列的,如你所见,只有=>
比较特殊而已,其他的都在C语言里面有。
^
其实就是!=
,<=>
其实就是==
。
在→的真值表中规定,只要p为假,不管q的真假如何,p→q总为真.这也与日常语言中“如果…,则……”的含义不同。若用p表示“我今天死。”,用q表示“我长生不老。”,则p->q表示一个真命题,因为事实上我今天没有死。在日常语言中,“如果我今天死,则我长生不老。”显然是一个假命题。事实上旦常语言中的“如果……,.则……不是一个真值函数。
完全联结词集
任何联结词都可以表示为仅有
!,&&
或者!,||
的组合形式。
命题符号化
将一段是复杂命题翻译成联结词+简单命题的形式
公式
其实就是输入和输出都是bool的函数。
就我个人理解,如果一个复杂命题中某个简单命题的值未知,这个复杂命题就是一个函数,只要澄清了输入,就可以得出输出。
永真式
函数总是返回true。
命题的运算
书上称为等值演算。
&&,||
相同满足结合律,不同满足分配率。
^
相同满足结合律,与&&
满足分配率。
!(A=>B) == A && !B
利用这些性质,可以证明比如p->(q->r) <=> p&&q -> r
之类的恒等式。
对偶定理
徳摩根律其实是广义的。
把&&
和||
互换,然后对所有简单命题取!
,得到的结果总是不变。
这篇关于离散数学第1章命题逻辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!