Выражение «Каждый учащийся сдал хотя бы один урок» на FOL.
Мой вопрос:
Выразите эту фразу на языке первого порядка: «Каждый ученик сдал хотя бы один урок».
Это ответ моего учителя:
Мы определяем $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))$". Почему второе неверно?
Ответы
Возможно, вы где-то читали что-то вроде
$\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)$.