簡體   English   中英

一階邏輯和推測范式

[英]First order logic and conjective normal form

考慮以下段落,請回答下面的這些問題

“任何吃垃圾食品或喝碳酸飲料的人都會成為癌症受害者。 有些人吃垃圾食品並非如此,但他們是健康的。 每個癌症受害者都不是健康的。 Bimal 是一個健康的人”

以一階邏輯寫出上面的段落,並將它們轉換為合取范式。 通過考慮 Part(d) 中的段落,檢查 Bimal 是否喝碳酸飲料。

對於第一句話:

\\forall x,y,z Person(x) \\land JunkFood(y) \\land CarbonatedBeverage(z) \\land (eat(x,y) \\lor Drink(x,z)) \\implies CancerVictim(x)

對於第二句話:

\\lnot [\\forall y \\exists x JunkFood(y) \\land Person(x) \\land eat(x,y) \\land Healthy(x)]

對於第三句話:

\\forall x Person(x) \\land CancerVictim(x) \\暗示 \\neg Healthy(x)

對於第四句:

健康(雙馬爾)


要首先轉換為 CNF,您應該刪除全稱量詞並用 skolem 變量替換存在量詞:

  • Person(x) \\land JunkFood(y) \\land CarbonatedBeverage(z) \\land (eat(x,y) \\lor Drink(x,z)) \\implies CancerVictim(x)
  • \\lnot [\\exists x JunkFood(y) \\land Person(x) \\land Eat(x,y) \\land Healthy(x)]

\\equiv \\forall x \\neg JunkFood(y) \\lor \\neg Person(x) \\lor \\neg eat(x,y) \\lor \\neg Healthy(x)

\\equiv \\neg JunkFood(y) \\lor \\neg Person(x) \\lor \\neg eat(x,y) \\lor \\neg Healthy(x)

  • Person(x) \\land CancerVictim(x) \\暗示\\neg Healthy(x)
  • 健康(雙馬爾)

現在您可以使用邏輯規則將其轉換為 CNF。

第一句話:

\\lnot [Person(x) \\land JunkFood(y) \\land CarbonatedBeverage(z) \\land (eat(x,y) \\lor Drink(x,z))] \\lor CancerVictim(x)

\\equiv \\neg Person(x) \\lor \\neg JunkFood(y) \\lor \\neg CarbonatedBeverage(z) \\lor (\\neg eat(x,y) \\land \\neg Drink(x,z)) \\lor CancerVictim( X)

\\equiv [\\neg Person(x) \\lor \\neg JunkFood(y) \\lor \\neg CarbonatedBeverage(z) \\lor \\neg eat(x,y) \\lor CancerVictim(x)] \\land [\\neg Person(x) ) \\lor \\neg JunkFood(y) \\lor \\neg CarbonatedBeverage(z) \\lor \\neg Drink(x,z) \\lor CancerVictim(x)]

\\equiv [\\neg Person(x) \\lor \\neg JunkFood(y) \\lor \\negeat(x,y) \\lor CancerVictim(x)] \\land [\\neg Person(x) \\lor \\neg CarbonatedBeverage(z) ) \\lor \\neg Drink(x,z) \\lor CancerVictim(x)]

我從不相關的變量范圍(junkFood 和 CarbonatedBeverage)中刪除了謂詞。 您也可以在開始時使用兩個全稱量詞,一個用於食物,一個用於飲料。

第二句話:

\\neg 垃圾食品(y) \\lor \\neg 人(x) \\lor \\neg 吃(x,y) \\lor \\neg 健康(x)

第三句:

Person(x) \\land CancerVictim(x) \\暗示\\neg Healthy(x)

\\equiv \\neg[Person(x) \\land CancerVictim(x)] \\lor \\neg Healthy(x)

\\equiv \\neg Person(x) \\lor \\neg CancerVictim(x) \\lor \\neg Healthy(x)

第四句:

健康(雙馬爾)


現在嘗試刪除相應的句子。 我們假設 Bimal 喝碳酸飲料:

\\exists x CarbonatedBeverage(x) \\land Drink(Bimal,x)

\\equiv CarbonatedBeverage(f(x)) \\land Drink(Bimal,f(x))

我們知道:人(雙人)

所以現在我們將這些句子作為 CNF 子句:

  1. \\neg Person(x) \\lor \\neg JunkFood(y) \\lor \\neg eat(x,y) \\lor CancerVictim(x)
  2. \\neg Person(x) \\lor \\neg CarbonatedBeverage(z) \\lor \\neg Drink(x,z) \\lor CancerVictim(x)
  3. \\neg 垃圾食品(y) \\lor \\neg 人(x) \\lor \\neg 吃(x,y) \\lor \\neg 健康(x)
  4. \\neg Person(x) \\lor \\neg CancerVictim(x) \\lor \\neg Healthy(x)
  5. 健康(雙馬爾)
  6. 人(雙人)
  7. 碳酸飲料(f(x))
  8. 喝(Bimal,f(x))

我們試圖找到一個矛盾:

  • 從 4,5,6: 癌症受害者(Bimal)
  • 從 2,6,7,8 開始: \\neg 癌症受害者(Bimal)

由於這兩個矛盾,我們得到一個空條款,根據減少到荒謬,我們可以說我們最初的假設(Bimal 喝碳酸飲料)是錯誤的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM