Логика первого порядка и конъюнктивная нормальная форма - PullRequest
0 голосов
/ 24 июня 2019

Рассмотрите следующий абзац и, пожалуйста, ответьте на следующие вопросы

«Любой, кто ест нездоровую пищу или пьет газированные напитки, станет жертвой рака.Это не тот случай, когда некоторые люди едят нездоровую пищу, но они здоровы.Каждый пострадавший от рака не здоров.Бимал - здоровый человек »

Напишите приведенный выше абзац в логике первого порядка и преобразуйте их в конъюнктивную нормальную форму.Рассматривая пункт в части (d), проверьте, пьет ли Бимал газированные напитки.

1 Ответ

0 голосов
/ 24 июня 2019

Для первого предложения:

\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) \implies \neg Healthy(x)

Для четвертого предложения:

Healthy(Bimal)


Для того, чтобы сначала перейти в CNF, вы должны удалить универсальные квантификаторы и заменитьэкзистенциальные квантификаторы с переменными сколем:

  • 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) \implies \neg Healthy(x)
  • Healthy(Bimal)

Теперь вы можете использовать логические правила, чтобы превратить его в 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 \neg eat(x,y) \lor CancerVictim(x)] \land [\neg Person(x) \lor \neg CarbonatedBeverage(z) \lor \neg drink(x,z) \lor CancerVictim(x)]

Я удалил предикаты из несущественныхпеременные области (junkFood и CarbonatedBeverage).Вы также можете сделать это в начале, имея два универсальных квантификатора, один для еды и один для питья.

второе предложение:

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

третье предложение:

Person(x) \land CancerVictim(x) \implies \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)

четвертое предложение:

Healthy(Bimal)


Теперь попробуйте удалить соответствующие предложения.Мы предполагаем, что Бимал пьет газированные напитки:

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

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

и мы знаем: Person(Bimal)

Так что теперь у нас есть эти предложениякак пункты 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 JunkFood(y) \lor \neg Person(x) \lor \neg eat(x,y) \lor \neg Healthy(x)
  4. \neg Person(x) \lor \neg CancerVictim(x) \lor \neg Healthy(x)
  5. Healthy(Bimal)
  6. Person(Bimal)
  7. CarbonatedBeverage(f(x))
  8. drink(Bimal,f(x))

и мы пытаемся найти противоречие:

  • из 4,5,6: CancerVictim(Bimal)
  • из 2,6,7,8: \neg CancerVictim(Bimal)

Поскольку эти два противоречат, мы получаемк пустому предложению и, согласно сокращению до абсурда, мы можем сказать, что наше первоначальное предположение (Бимал пьет газированные напитки) неверно.

...