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 Quantifieres una declaración lógica que se aplica a todos los elementos de un conjunto. - Un
Existential Quantifieres 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-orderdeclaraciones lógicas deFirst-orderson las habituales; actúan sobre los miembros de un conjunto. -
Higher-orderdeclaraciones lógicas deHigher-orderactúan sobre otras declaraciones lógicas; Piensa en ellos como meta-lógica.