Bueno, creo que ya es hora de que tengamos otra pregunta de prueba de golf .
Esta vez vamos a demostrar la conocida verdad lógica
Para hacer esto, utilizaremos el tercer Esquema de Axioma de Łukasiewicz , un conjunto increíblemente elegante de tres axiomas que se completan sobre la lógica proposicional .
Así es como funciona:
Axiomas
El sistema Łukasiewicz tiene tres axiomas. Son:
Los axiomas son verdades universales independientemente de lo que elijamos para , y . En cualquier punto de la prueba podemos introducir uno de estos axiomas. Cuando presentamos un axioma, reemplaza cada caso de , y , con una "expresión compleja". Una expresión compleja es cualquier expresión hecha de átomos, (representada por las letras - ), y los operadores implican ( ) y no ( ).
Por ejemplo, si quisiera presentar el primer axioma (LS1), podría presentar
o
En el primer caso, era y era , mientras que en el segundo caso, ambas eran expresiones más complicadas. era y era .
Las sustituciones que elija utilizar dependerán de lo que necesite en la prueba en este momento.
Modus ponens
Ahora que podemos introducir declaraciones, necesitamos relacionarlas para hacer nuevas declaraciones. La forma en que esto se hace en el Axiom Schema (LS) de Łukasiewicz es con Modus Ponens. Modus Ponens nos permite tomar dos declaraciones de la forma
e instanciar una nueva declaración
Al igual que con nuestros Axiomas, y pueden reemplazar cualquier declaración arbitraria.
Las dos declaraciones pueden estar en cualquier parte de la prueba, no tienen que estar una al lado de la otra ni en ningún orden especial.
Tarea
Su tarea será probar la ley de los contrapositivos . Esta es la declaración
Ahora puede notar que esto es bastante familiar, es una instanciación del reverso de nuestro tercer axioma
Sin embargo, esto no es una hazaña trivial.
Tanteo
La puntuación para este desafío es bastante simple, cada vez que crea una instancia de un axioma cuenta como un punto y cada uso de modus ponens cuenta como un punto. Este es esencialmente el número de líneas en su prueba. El objetivo debe ser minimizar su puntaje (hacerlo lo más bajo posible).
Prueba de ejemplo
Ok, ahora usemos esto para construir una pequeña prueba. Vamos a probar .
A veces es mejor trabajar hacia atrás, ya que sabemos dónde queremos estar, podemos imaginar cómo podríamos llegar allí. En este caso ya que queremos terminar con y este no es uno de nuestros axiomas, sabemos que el último paso debe ser modus ponens. Por lo tanto, el final de nuestra prueba se verá como
φ
φ → (A → A)
A → A M.P.
Donde es una expresión de la que aún no conocemos el valor. Ahora nos centraremos en . Esto puede ser introducido por modus ponens o LS3. LS3 requiere que demostremos que parece tan difícil como , así que iremos con modus ponens. Así que ahora nuestra prueba se ve así
φ
ψ
ψ → (φ → (A → A))
φ → (A → A) M.P.
A → A M.P.
Ahora parece mucho a nuestro segundo axioma LS2, así que lo completaremos como LS2
A → χ
A → (χ → A)
(A → (χ → A)) → ((A → χ) → (A → A)) L.S.2
(A → χ) → (A → A) M.P.
A → A M.P.
Ahora nuestra segunda declaración se puede construir con bastante claridad a partir de LS1, por lo que lo completaremos como tal
A → χ
A → (χ → A) L.S.1
(A → (χ → A)) → ((A → χ) → (A → A)) L.S.2
(A → χ) → (A → A) M.P.
A → A M.P.
Ahora solo necesitamos encontrar un tal que podamos probar . Esto se puede hacer muy fácilmente con LS1, así que lo intentaremos
A → (ω → A) L.S.1
A → ((ω → A) → A) L.S.1
(A → ((ω → A) → A)) → ((A → (ω → A)) → (A → A)) L.S.2
(A → (ω → A)) → (A → A) M.P.
A → A M.P.
Ahora, dado que todos nuestros pasos están justificados, podemos completar , como cualquier declaración que queramos y la prueba será válida. Podríamos elegir pero elegiremos de manera que es evidente que no tiene por qué ser .
A → (B → A) L.S.1
A → ((B → A) → A) L.S.1
(A → ((B → A) → A)) → ((A → (B → A)) → (A → A)) L.S.2
(A → (B → A)) → (A → A) M.P.
A → A M.P.
Y eso es una prueba.
Recursos
Programa de verificación
Aquí hay un programa Prolog que puede usar para verificar que su prueba sea válida. Cada paso debe colocarse en su propia línea.->
debe usarse para implica y -
debe usarse para no, los átomos pueden ser representados por cualquier cadena de caracteres alfabéticos.
Metamatica
Metamath utiliza el sistema Łukasiewicz para sus pruebas en cálculo proposicional, por lo que es posible que desee hurgar un poco allí. También tienen una prueba del teorema que este desafío pide y que se puede encontrar aquí . Hay una explicación aquí de cómo leer las pruebas.
La increíble máquina de prueba
@ Antony me hizo conocer una herramienta llamada The Incredible Proof machine que le permite construir pruebas en varios sistemas utilizando un buen sistema de pruebas gráficas. Si se desplaza hacia abajo, encontrará que son compatibles con el sistema Łukasiewicz. Entonces, si eres una persona más orientada a lo visual, puedes trabajar en tu prueba allí. Su puntaje será el número de bloques utilizados menos 1.
((P → Q) → R) → ((R → P) → (S → P))