Выражение «Каждый учащийся сдал хотя бы один урок» на FOL.

Aug 19 2020

Мой вопрос:

Выразите эту фразу на языке первого порядка: «Каждый ученик сдал хотя бы один урок».

Это ответ моего учителя:

Мы определяем $S(x)$ как "объект $x$ является студентом" , $C(x)$ как "объект $x$ это класс "и $P(x,y)$ как логика предикатов - символ, который переводится как «студент $x$ прошел класс $y$". Итак, мы имеем:

$\forall x (S(x) \rightarrow \exists y [C(y) \land P(x,y)])$.

Мой вопрос: "$\forall x S(x) \exists y ( C(y) \land P(x,y))$". Почему второе неверно?

Ответы

1 lemontree Aug 19 2020 at 17:38

Возможно, вы где-то читали что-то вроде

$\forall x \in \mathbb{N} P(x)$

и попробуйте применить тот же шаблон к рассматриваемому предложению с помощью $x \in \mathbb{N}$ соответствующий $S(x)$ и $P(x)$ к $\exists y ...$.

Но это, строго говоря, не формула первого порядка, а просто сокращение для

$\forall x (x \in \mathbb{N} \to P(x))$

и обычно используется только с установленными операторами членства $x \in Y$, а не предикаты вроде $S(x)$.

Если вы утверждаете две формулы $S(x)$, $\exists y ...$ тогда, согласно синтаксису логики предикатов, вы должны иметь между ними связку, чтобы все это стало еще одной формулой, которой нет в вашем предложении.


Кроме того, как упоминалось в комментариях,

$\forall x S(x) \to \exists y (C(y) \land P(x,y))$

это не правильное решение. Ваш учитель, наверное, написал

$\forall x (S(x) \to \exists y (C(y) \land P(x,y)))$

- в $\forall x$ должен охватывать последствия, а не только $S(x)$.