tft每日頭條

 > 生活

 > 一階程序入門

一階程序入門

生活 更新时间:2024-08-23 08:19:02

話題:#科學# #數學# #邏輯學#

小石頭/編


(由于,在科普數學過程中,會經常用到 一階謂詞邏輯語言,所以 寫一篇文章,對其進行簡單的介紹。這裡的目标是,數學中夠用,所有并不會涉及《模型論》和《證明論》部分。)

我們在日常生活中經常需要做判斷,例如:

  • 老張是狐狸公司的CEO。⑴

稱這些判斷句為命題

命題常常會被驗證,邏輯學要求,驗證有明确的結果,即:

  • 要麼命題是真實的,要麼命題是虛假的;☆

命題的驗證結果 被稱為 命題的 邏輯值,顯然,(記為 T) 和 (記為 F)是唯二的邏輯值。值為真的命題 稱為 真命題,值為假的命題 稱為 假命題

注:☆ 含有兩層意思,

排中律:命題值 隻能 是 T 或 F;

矛盾律:命題值 不能 同時是 T 或 F;

有一些命題會包含其它命題,例如:

命題,

  • 老張有錢并且會物理。⑵

就包括兩個命題,

  • 老張有錢;⑶
  • 老張會物理。⑷

我們稱這類命題為 複合命題,而不是複合命題的命題則被稱為 原子命題,如前面上面的 ⑴,⑶ 和 ⑷ 都是原子命題。

複合命題都是通過 聯詞 将其所包含的命題關聯起來而構成的,例如,⑵ 是通過 “...并且...” 連接⑶和⑷而而成。自然語言中,有多個聯詞表示同一個關聯關系,例如,⑵ 還可以寫成:

  • 老張既有錢又會物理。⑵‘

聯詞 ”既 ...又...“ 和 “...并且...” 都是并列關系,功能相同。為了表述的一緻,我們用 邏輯符号 ∧ (稱為和取) 來表示 “...與...”、 ”既 ...又...“ 、“...并且...” 等。若再令 ,

A = ⑶ , B = ⑷

則 複合命題 ⑵ 和 ⑵‘ 可統一寫成:

A ∧ B

這樣我們就得到了邏輯語言的一個公式。除了析取外,日常交流中常用的聯詞還有很多,我們也對它們接引入邏輯符号來表示:

  • 析取 ∨,表示 “或”、”或者“、”要麼...,要麼..“ 等;
  • 否定 ¬,表示 “非” 、"不是”、“并非” 等;
  • 蘊含 →,表示 “如果 ...,那麼 ...”,”若..., 則 ...“ 等;
  • 等價 ↔, 表示 ”當且僅當“ 等;

比較原子命題:

  • 老馬有錢;⑶’

和 ⑶ 我們發現 它們的謂語部分是相同的,隻有 主語 不同,于是我們可以 将 主語替換參數 x ,得到:

  • x 有錢

若令,

P(x) = x 有錢,A = (3),B = (3)'

則顯然有,

P(老張) = A,P(老馬) = B

稱 這樣的 P(x) 為謂詞。謂詞 也可以是多元的,例如,對 ⑴ 引入參數,得到謂詞:

Q(x, y) = x是y的CEO

就是一個二元 謂詞。從元數來看,位引入參數化的原子命題,例如上面的 A、B,可以認為是 零元謂詞。

注:一元謂詞P(x) 參數兩邊的 括号 可以省略不寫,記為 Px。

量詞也在日常交流中常常被用到,例如:

  • 所有人都會回死;⑸
  • 總有人是天才; ⑹

我們 用 ∀(稱為 全稱量詞) 表示 ”所有...“、”任何...“、”任意...“ 等, 用 ∃(稱為 存在量詞) 表示 ”有...“、”總有...“、”存在...“ 等。

注:∀ 為 Any 的首字母 A 上下颠倒得到,∃ 為 Exist 的首字母 E 左右翻轉得到。

于是令,

P(x) = x 是人,A(x) = x 會死,B(x)=x是天才

則 ⑸ 和 ⑹ 分别表示為:

∀x(P(x)∧A(x)) ⑸'

∃x(P(x)∧B(x)) ⑹'

注:在數學中,∀x(P(x)∧A(x)) 也被寫成 ∀x, P(x)∧A(x) ,這樣可以省一層 括号,看着清爽。

最後,複合命題可能有多層嵌套,例如:

  • 并非所有人都是天才

這時改寫成 邏輯語言 時,需要使用 括号 進行分層,例如:

¬(∀x(P(x)∧B(x)))

至此,我們就得到了全部的 謂詞邏輯 語言。

回頭,再比較 ⑶ 和 ⑷,我們發現 它們的 主語 都是 老張,于是課将謂語參數化,得打:

  • 老張 P

這樣 謂詞 P 就成了 變元。 這種情況,日常交流也經常遇到,例如:

  • 老張有的,老馬也有。

寫成 邏輯公式就是:

∀P(P(老張) → P(老馬))

這種将 謂詞作為 變元的,稱為 高階邏輯,而 不将 謂詞作為 變元的,就是本篇介紹的 一階邏輯,也是被數學所使用的邏輯。


站在 數學的角度,聯詞 就是 集合 {T, F} 上的 邏輯運算,由于邏輯運算的操作數隻有 T 和 F 兩個,于是我們可以将 全運算 情況 羅列出來,得到如下的 真值表

一階程序入門(一階邏輯簡介)1

從真值表中可以看出,¬ 是一元運算,其它的都是 二元運算。邏輯運算可以是任意有限元的,特别是 零元運算,定義為:

  • 恒真 ⊤ = T;
  • 恒假⊥= F;

注:有些書 會用 ⊤ 和 ⊥ 分别去記 真 和 假。

雖然,邏輯運算多種多樣,但是它們可以 通過 有限 個 聯詞 的 組合來實現,能夠實現所有邏輯運算 的 聯詞集,被稱為 功能完全集。可以證明:

  • 聯詞集 {¬, ∨, ∧, →, ↔} 是 功能完全的

這也是,為什麼自然語言 僅憑借 它們,就可以表達所有 邏輯,的 原因。

觀察,上面真值表 中 的 p, q 與 p → q 之間的邏輯關系,我們發現:

  • 當 p=T 并且 q=F 時 p → q 為 F;
  • 其它情況p → q都是 T;

于是有:

¬(p → q) = p∧¬q ①

進而得到:

p → q = ¬(¬(p → q)) = ¬(p∧¬q)

這種方法 稱為 寫假法。再觀察,還發現:

  • 當 p=T 并且 q=T 時 p → q 為 T;
  • 當 p=F 時 p → q 為 T;
  • 其它情況 p → q 都是 F;

于是可得到:

p → q = (p∧q)∨¬p

這種方法 稱為 寫真法

對于任意邏輯運算,我都可以通過,寫假法 或 寫真法,用{¬, ∨, ∧}去實現它,例如:

p↔q = ¬((¬p∧q)∨(p∧¬q)) 或 (¬p∧¬q)∨(p∧q)

故, {¬, ∨, ∧} 是功能完全集。

對于 p∨q 和 p∧q 使用寫假法,可分别得到:

¬(p∨q) = ¬p∧¬q

¬(p∧q) = ¬p∨¬q

這就是 德摩根定律,進而分别有,

p∨q=¬ (¬p∧¬q)

p∧q = ¬(¬p∨¬q)

這說明,{¬, ∨} 和 {¬, ∧} 也都是功能完全集。另外,由 ① 式,有,

¬(p → ¬q) = p∧¬(¬q) = p∧q

所以,{¬, →} 也是功能完全集。

那麼,有沒有一個聯詞的功能完全集呢?有!我們定義:

  • 皮爾士箭頭: p↓q = ¬(p∨q)
  • 謝弗豎: p|q = ¬(p∧q)

則分别有,

p∨q = ¬¬(p∨q) = ¬( p↓q) , ¬p = ¬(p∨p) = p↓p;

p∧q = ¬¬(p∧q) = ¬(p|q), ¬p = ¬(p∧p) = p|p;

所以,{↓} 和 {|} 都是功能完全集,也是最小的功能完全集。

在數學上,将 F 和 T 分别看做 0 和 1,這樣以來算術運算也就成了邏輯運算,例如:

p⋅q = p∧q

最後,結合數學運算,将 一元 和 二元 的所有邏輯運算彙總如下:

  • 一元邏輯運算:

一階程序入門(一階邏輯簡介)2

  • 二元邏輯運算:

一階程序入門(一階邏輯簡介)3


(好了,就寫到這裡了,以後想到了再補充!本篇力求簡單,盡量不耗費各位的時間,希望大家有機會看到,希望看到的能喜歡!)

補充1:

大家看到 蘊含 p→q 的真值表:

F → T = T,F → F = T

可能會差異。誠然,這和我們日常言語中的感覺不同,實際上,自然語言中的,“如果 p 那麼 q” 含有 邏輯推理的 意思,其相當于:

{p, p→q} ⇒ q

這與 p→q 的語義 并不相同。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved