Preparando-me para o início do meu mestrado, me vi com uma vontade forte de rever meus materiais da faculdade. Logo veio a lembrança de como eu me divertia nas cadeiras de lógica. Pouca coisa eu ainda lembro de cabeça, e dessas, resolvi reproduzí-las à maneira Ruby:
Silogismo Aristotélico
O silogismo consiste no fato de duas premissas inferirem, através de um termo em comum, na conclusão de uma terceira premissa também verdadeira.
“Todos os humanos são mortais”
“Aristóteles é humano”
-
“Logo, Aristóteles é mortal”
#Todos os humanos são mortais
class Human
self.module_eval do
define_method :mortal? do
true
end
end
end
#Aristóteles é humano
class Aristotle < Human
end
#logo...
a = Aristotle.new
a.mortal? #=> true
Lógica Proposicional
Segundo o wikipedia:
Em lógica e matemática, uma lógica proposicional (ou cálculo sentencial) é um sistema formal no qual as fórmulas representam proposições que podem ser formadas pela combinação de proposições atômicas usando conectivos lógicos, e um sistema de regras de derivação que permite que certas fórmulas sejam estabelecidas como “teoremas” do sistema formal.
Dessa, os teoremas clássicos que me veem à cabeça são os seguintes:
Dupla eliminação da negação
#De ¬¬p, infere-se p p = true (not (not p)) #=> true
Modus ponens (eliminação do condicional)
#De p, (p → q), infere-se q. p = true if (p) and ( q = p);end q #=> true
Exercícios de lógica
Uma das coisas que me divertia antes da faculdade eram as tabelas-verdades, aonde era possível analisarmos uma fórmula para descobrir se ela era válida ou não. Um bom exercício para o cérebro é tentar descobrir se o resultado de uma fórmula é verdadeiro ou falso. Qual o resultado da expressão abaixo?
p = false q = true r = false (!(q & p) &(r | q) | !((p & r) |(r & q)))
Bem Legal, a um bom tempo nem havia mais parado pra pensar em lógica dessa forma(principalmente em Ruby)…
Grande Post…