преобразование логики первого одера (FOL) в CNFFormula

#logic #cnf

#Логические #cnf

Вопрос:

введите описание изображения здесь

Это моя проблема: я не знаю, как преобразовать ∃m : m ∈ N в формулу CNF. Я просто понимаю формулу ∃x(A(x)vB(X)) .

Комментарии:

1. Тогда это не проблема программирования. Но что-то, что принадлежит mathoverflow.net

2. В нем говорится, что для всех n, где n — натуральное число, такое, что существует m, которое является натуральным числом, и m также больше n. Так что, возможно, напишите программу prolog, которая это докажет. проверка (N,M)

3. Так это проблема в арифметике Пеано?

4. спасибо, Рима, я думаю, что вы правы, и, возможно, мне следует преобразовать последовательность в формулу соединения

Ответ №1:

Я думаю, вы могли бы сделать что-то вроде этого:

 N(x): x is a natural number
S(x): is a specific object that depends on the object x (Skolem function)
 
 ∀n[N(n) → ⴺm[N(m) ∧ (m>n)]]                # Skolemize existential quantifiers
≡ ∀n[N(n) → (N(S(n)) ∧ (S(n)>n))]          # Drop universal quantifiers
≡ (N(n) → (N(S(n)) ∧ (S(n)>n)))            # Eliminate implication: (α→β) ≡ (¬α∨β)
≡ (¬N(n) ∨ (N(S(n)) ∧ (S(n)>n)))           # Distribute disjunction: α∨(β∧γ)≡(α∨β)∧(α∨γ)
≡ (¬N(n) ∨ N(S(n))) ∧ (¬N(n) ∨ (S(n)>n))   # Conjunctive Normal Form!
 

Вы можете попробовать написать грамматику Prolog DGC для автоматизации этого процесса.