Me encontré con una expresión en lógica de predicados que me hizo preguntarme si era realmente válida desde el punto de vista sintáctico y, en ese caso, semánticamente correcta.
Para una frase como "Todo perro persigue a un gato", hay dos lecturas. (a) Una en la que todos los perros persiguen al menos a un gato y (b) otra en la que al menos un gato es perseguido por todos los perros.
(a) $\forall x\in \{x : dog(x)\}:\ \exists y\in \{x : cat(x)\}:\ chase(x, y)$
(b) $\exists y\ \in\ \{x : cat(x)\}:\ \forall x\ \in\ \{x : dog(x)\} :\ chase(x,y)$
Estas dos representaciones significan lo mismo:
(a) $\forall x.[ dog(x) \rightarrow \exists y.[ cat(y) \land chases(x, y) ] ]$
(b) $\exists y.[ cat(y) \rightarrow \forall x.[ dog(x) \land chases(x, y) ] ]$
La expresión con la que me encontré es la siguiente:
$$\forall x.(dog(x) \rightarrow \exists y.(cat(y) \land chase(x))(y))$$
Esto me parece raro. Para hacerlo más aparente dejemos que se transforme más:
Es lo mismo que:
$$\forall x.[ dog(x) \rightarrow \exists y.[ cat(y) \land chase(x) ] (y) ]$$
que es lo mismo que:
$$\forall x.[ dog(x) \rightarrow \exists y.[ cat(y) \land chase(x, ] y) ]$$
En primer lugar, ¿es sintácticamente válido tener "cuantificador[ functor( ] )"? Entonces, ¿tener proyecciones superpuestas de nodos sintácticos en el árbol sintáctico de la expresión?
Y si la expresión es sintácticamente válida... ¿qué significa? No tiene ningún sentido para mí.