Bem, acho que já é hora de termos outra questão de prova de golfe .
Desta vez, vamos provar a conhecida verdade lógica
Para fazer isso, usaremos o terceiro Axiom Schema de Łukasiewicz , um conjunto incrivelmente elegante de três axiomas que são completos sobre a lógica proposicional .
Aqui está como funciona:
Axiomas
O sistema Łukasiewicz possui três axiomas. Eles são:
Os axiomas são verdades universais, independentemente do que escolhemos para , e . Em qualquer ponto da prova, podemos introduzir um desses axiomas. Quando introduzimos um axioma, você substitui cada caso de , e por uma "expressão complexa". Uma expressão complexa é qualquer expressão feita de Átomos (representada pelas letras - ), e os operadores implicam ( ) e não ( ).
Por exemplo, se eu quisesse introduzir o primeiro axioma (LS1), poderia introduzir
ou
No primeiro caso, era e era , enquanto no segundo caso, ambos eram expressões mais envolvidas. era e foi .
Quais substituições você escolhe usar dependerão do que você precisa na prova no momento.
Modus ponens
Agora que podemos introduzir declarações, precisamos relacioná-las para fazer novas declarações. A maneira como isso é feito no esquema Axiom (LS) de Łukasiewicz é com o Modus Ponens. O Modus Ponens nos permite tomar duas declarações do formulário
e instanciar uma nova declaração
Assim como nossos axiomas e pode substituir qualquer declaração arbitrária.
As duas declarações podem estar em qualquer lugar da prova, elas não precisam estar próximas uma da outra ou de qualquer ordem especial.
Tarefa
Sua tarefa será provar a lei dos contrapositivos . Esta é a afirmação
Agora você pode notar que isso é bastante familiar, é uma instanciação do reverso do nosso terceiro axioma
No entanto, este não é um feito trivial.
Pontuação
A pontuação para esse desafio é bem simples, cada vez que você instancia um axioma conta como um ponto e cada uso do modus ponens conta como um ponto. Este é essencialmente o número de linhas em sua prova. O objetivo deve ser minimizar sua pontuação (diminua o máximo possível).
Prova de exemplo
Ok, agora vamos usar isso para construir uma pequena prova. Vamos provar .
Às vezes, é melhor trabalhar para trás, já que sabemos onde queremos estar e podemos descobrir como podemos chegar lá. Nesse caso, como queremos terminar com e esse não é um dos nossos axiomas, sabemos que o último passo deve ser o modus ponens. Assim, o final de nossa prova parecerá
φ
φ → (A → A)
A → A M.P.
Onde é uma expressão da qual ainda não sabemos o valor. Agora vamos nos concentrar em . Isso pode ser introduzido pelo modus ponens ou pelo LS3. O LS3 exige que provemos que parece tão difícil quanto ; portanto, vamos usar o modus ponens. Então agora nossa prova parece
φ
ψ
ψ → (φ → (A → A))
φ → (A → A) M.P.
A → A M.P.
Agora parece muito com o nosso segundo axioma LS2, então vamos preenchê-lo como LS2
A → χ
A → (χ → A)
(A → (χ → A)) → ((A → χ) → (A → A)) L.S.2
(A → χ) → (A → A) M.P.
A → A M.P.
Agora, a nossa segunda declaração pode ser claramente construída a partir do LS1, então vamos preenchê-lo dessa maneira
A → χ
A → (χ → A) L.S.1
(A → (χ → A)) → ((A → χ) → (A → A)) L.S.2
(A → χ) → (A → A) M.P.
A → A M.P.
Agora só precisamos encontrar um que possamos provar . Isso pode ser feito muito facilmente com o LS1, então tentaremos isso
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.
Agora, já que todos os nossos passos são justificados, podemos preencher , como qualquer afirmação que desejamos e a prova será válida. Poderíamos escolher , mas vou escolher de modo que é claro que ele não precisa 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.
E isso é uma prova.
Recursos
Programa de verificação
Aqui está um programa Prolog que você pode usar para verificar se sua prova é de fato válida. Cada etapa deve ser colocada em sua própria linha. ->
deve ser usado para implica e -
deve ser usado para não, os átomos podem ser representados por qualquer sequência de caracteres alfabéticos.
Metamath
Metamath usa o sistema Łukasiewicz para suas provas no cálculo proposicional, então você pode querer dar uma espiada por lá um pouco. Eles também têm uma prova do teorema que esse desafio pede e que pode ser encontrado aqui . Há uma explicação aqui de como ler as provas.
A máquina de prova incrível
@ Antony me informou de uma ferramenta chamada The Incredible Proof machine, que permite construir provas em vários sistemas usando um bom sistema gráfico de provas. Se você rolar para baixo, verá que eles suportam o sistema Łukasiewicz. Portanto, se você é uma pessoa mais orientada visualmente, pode trabalhar sua prova lá. Sua pontuação será o número de blocos usados menos 1.
((P → Q) → R) → ((R → P) → (S → P))