scala - predicados - Cuantificadores universales y existenciales de la lógica de primer orden
logica de primer orden prolog (3)
El libro de texto Language Proof and Logic proporciona estas expresiones en inglés para los cuantificadores universales y existenciales a los que se refirió el profesor Odersky.
El cuantificador universal ∀
se usa para expresar afirmaciones universales, las que expresamos en inglés usando frases cuantificadas como todo , cada cosa , todas las cosas y cualquier cosa .
El cuantificador existencial ∃
se usa para expresar afirmaciones existenciales, aquellas que expresamos en inglés usando frases como algo , al menos una cosa , a y a.
La mención de estos términos probablemente se relacionó o condujo a operaciones en colecciones que utilizan funciones de orden superior. En Scala, la transición de la lógica al código es bastante natural con las operaciones forall
y exists
en una colección. Estos son análogos a las definiciones universales y existenciales dadas anteriormente. Algunos ejemplos simples son útiles para mostrar esto:
scala> val l = 1 to 10
l: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> l.forall(x => x > 0)
res0: Boolean = true
scala> l.forall(x => x > 1)
res1: Boolean = false
Estas dos declaraciones principales simplemente piden que todos los elementos de esta colección cumplan con los criterios.
scala> l.exists(x => x < 1)
res2: Boolean = false
scala> l.exists(x => x < 2)
res3: Boolean = true
Estas dos declaraciones existen simplemente pidiendo que los elementos de esta colección cumplan con los criterios.
Estoy tomando un curso de programación Scala. En un momento el instructor dijo:
Las funciones blah y bladdy son los cuantificadores universales y existenciales de la lógica de primer orden.
¿Alguien podría traducir " cuantificadores universales y existenciales de la lógica de primer orden " al inglés, por favor?
Para apreciar completamente esa afirmación, probablemente tendrías que estudiar algo de lógica. Pero aquí está la esencia básica:
Los "cuantificadores" son la forma en que le das significado a las variables en declaraciones de lógica. Si digo "{algo sobre x
}", eso realmente no tiene mucho significado por sí mismo. Tendría que saber qué es x
para decir si es una afirmación verdadera o falsa. Pero si cuantifico la variable x
diciendo "para todas las x
{algo sobre x
}" o "existe una x
tal que {algo sobre x
}", entonces estoy haciendo una sola declaración que es verdadera o falsa.
En el caso "para todas las x
", estoy diciendo que "{algo sobre x
}" es cierto para cualquier x
puedas elegir; Esa es la cuantificación universal. Por ejemplo, "para todo x
, x
es un número par" es una declaración falsa.
En el caso de "existe una x
tal que", estoy diciendo que hay una opción posible para x
modo que "{algo sobre x
} es cierto" (no estoy diciendo qué es esa elección, solo que hay una ). Esta es la cuantificación existencial. Como ejemplo, "existe una x
tal que x
es un número par" es una declaración verdadera.
Son duales en que "para todo x
{algo sobre x
}" significa lo mismo que "NO es cierto que exista una x
tal que NO sea cierto que {algo sobre x
}", y también "existe una x
tal que {algo sobre x
} "significa lo mismo que" NO es cierto que para todos x
no es cierto que {algo sobre x
} ". Esperemos que eso parezca intuitivamente justificado si lo piensas.
Si nos dijera cuáles son las funciones blah
y bladdy
, podríamos explicar la forma en que corresponden a los cuantificadores universales y existenciales, lo que podría ser más útil para ayudarlo a comprender el punto del instructor.
Esa frase está llena de jerga. Puede encontrar una descripción de los cuantificadores lógicos universal
y existential
here .
- Un
Universal Quantifier
es una declaración lógica que se aplica a todos los elementos de un conjunto. - Un
Existential Quantifier
es una declaración lógica que se aplica a al menos un elemento de un conjunto.
También puede buscar here una descripción rápida de la lógica de first-order
. El término pretende separar la lógica de first-order
de higher-order
lógica de higher-order
:
-
First-order
declaraciones lógicas deFirst-order
son las habituales; actúan sobre los miembros de un conjunto. -
Higher-order
declaraciones lógicas deHigher-order
actúan sobre otras declaraciones lógicas; Piensa en ellos como meta-lógica.