Categoria ilustrada: lógica (2021)
(abuseofnotation.github.io)- A lógica parte de proposições atômicas aceitas como verdadeiras e constrói proposições maiores com operadores como
and,oreimplies, e assim como na teoria das categorias, a composição é central - A lógica clássica interpreta proposições como valores Booleanos verdadeiro/falso, e os operadores lógicos como funções booleanas, tratando negação, conjunção, disjunção, implicação e equivalência por meio de tabelas-verdade
- A interpretação BHK da lógica intuicionista vê proposições como objetos que possuem provas, interpretando
A ∧ Bcomo um par de provas eA → Bcomo uma função que transforma uma prova deAem uma prova deB - Em algumas categorias, objetos correspondem a proposições e morfismos a provas; em ordens,
A ≤ BrepresentaA → Bcomo uma preorder ou partial order - A lógica intuicionista corresponde, em termos de teoria da ordem, a uma álgebra de Heyting e, em termos gerais de teoria das categorias, a uma categoria bicartesiana fechada; conjunção, disjunção, verdadeiro, falso e implicação correspondem respectivamente a meet/join, terminal/inicial e objeto exponencial
Lógica começando por proposições
- A lógica trata de regras formais consistentes consigo mesmas, independentemente da observação, e é um sistema para concluir ou provar que algo é verdadeiro quando se sabe outra coisa
- Uma teoria matemática pode ser vista como lógica com definições adicionais
- A teoria dos conjuntos pode ser definida adicionando à lógica padrão o conceito primitivo de relação de pertinência a conjunto
- Para começar a lógica, é necessário um conjunto inicial de proposições aceitas como verdadeiras ou falsas
- Isso é chamado de premissas, proposições atômicas ou primary proposition
- Duas ou mais proposições tornam-se uma única proposição composta por meio de operadores lógicos como
and,oreimplies/entails∧éand∨éor→significafollowsou implicação
- Uma proposição composta também pode, como uma proposição atômica, ser composta novamente com outras proposições
Modus ponens e tautologias
- Modus ponens é um padrão lógico antigo segundo o qual, se
Aé verdadeiro eA → Bé verdadeiro, entãoBtambém é verdadeiro- A forma é
(A ∧ (A ⇒ B)) → B - Pode ser expresso com exemplos como “Sócrates é humano, e se humano então mortal, logo Sócrates é mortal”
- A forma é
- A lógica não trata apenas de operações isoladas, mas também de combinações e relações entre vários operadores lógicos
- A relação entre
andeimpliesaparece no modus ponens - A lei distributiva entre
andeortambém é um tema importante
- A relação entre
- Uma tautologia é uma proposição sempre verdadeira, independentemente dos valores de verdade das proposições que a compõem
- No modus ponens, quer
AeBsejam verdadeiros ou falsos, a fórmula inteira é sempre verdadeira - Uma proposição sempre falsa é chamada de contradição
- Colocar
notem uma tautologia a transforma em contradição, e colocarnotem uma contradição a transforma em tautologia
- No modus ponens, quer
- Proposições cujo valor varia entre verdadeiro e falso conforme o caso são chamadas de contingent statement e ficam fora do interesse principal da lógica
- A tautologia mais simples é a lei da identidade, segundo a qual toda proposição implica a si mesma
Esquemas de axiomas e sistemas lógicos
- Tautologias formam a base de esquemas de axiomas e regras de inferência
- Um esquema de axioma é uma fórmula com marcadores de posição, que podem ser substituídos por proposições para gerar proposições concretas
- Se removermos as cores ou proposições concretas do modus ponens, resta a estrutura geral
- Inserindo proposições atômicas ou compostas nessa estrutura, é possível construir enunciados específicos de modus ponens
- Regras de inferência podem ser escritas quase da mesma forma que esquemas de axiomas, e esquemas de axiomas também podem ser aplicados como regras de inferência
- Toda tautologia pode ser usada como esquema de axioma
- Um sistema lógico ou sistema formal é uma coleção de esquemas de axiomas e regras de inferência, usada para gerar todas as proposições possíveis
- Como exemplo, é apresentado um sistema composto por cinco esquemas de axiomas e a regra de inferência do modus ponens
- O fato de esse sistema lógico ser completo se conecta ao teorema da completude de Gödel
Interpretação por funções de verdade da lógica clássica
- A lógica clássica baseia-se na dicotomia de que toda proposição é verdadeira ou falsa
- Na interpretação clássica, proposições e operadores são definidos assim
- Proposições são coisas que, como valores Booleanos, são verdadeiras ou falsas
- Operadores lógicos são funções que recebem um ou mais valores Booleanos e retornam um valor Booleano
- A negação
¬pé uma operação unária que transforma verdadeiro em falso e falso em verdadeiro- O mesmo conteúdo pode ser expresso por uma tabela-verdade
- A eliminação da dupla negação é provada mostrando que aplicar a negação duas vezes retorna ao valor inicial
andrecebe dois valores Booleanos e retorna verdadeiro apenas quando ambos são verdadeirosp ∧ q → pp ∧ q → q
orretorna verdadeiro se pelo menos um dos dois valores Booleanos for verdadeirop → p ∨ qq → p ∨ q
implies, ou condição material, é escrito comop → qe só é falso quandopé verdadeiro eqé falso- Na lógica clássica,
p → qequivale ao caso em que¬p ∨ qé verdadeiro
- Na lógica clássica,
if and only if, ouiff, é verdadeiro quando duas proposições têm o mesmo valorP ↔ Qé equivalente aP → Q ∧ Q → P
- Além de tabelas-verdade, também é possível provar a equivalência entre
p → qe¬p ∨ qcom axiomas e regras de inferência- Uma prova completa de equivalência requer demonstrações nos dois sentidos
Lógica intuicionista e interpretação BHK
- A lógica intuicionista vê a prova não como descoberta de uma verdade universal, mas como construção
- Nessa perspectiva, não se pode usar a dicotomia de que toda proposição é necessariamente verdadeira ou falsa
- Uma proposição pode não ser demonstrável não por ser falsa, mas por estar fora do escopo do sistema lógico dado
- A conjectura dos primos gêmeos é frequentemente apresentada como exemplo
- Na interpretação Brouwer–Heyting–Kolmogorov (BHK), o foco está nas provas, não nas proposições
- Uma proposição é algo que possui uma prova
- Operadores lógicos são construções que produzem provas a partir de outras provas
- Uma prova de
A ∧ Bé um par composto por uma prova deAe uma prova deB, ou seja, um product A → Bsignifica que existe uma função que transforma uma prova deAem uma prova deB- O conjunto de provas de
A → Bpode ser representado como o conjunto de funções deAparaB, isto é, um hom-set - Se esse conjunto estiver vazio, não há como transformar uma prova de
Aem uma prova deB
- O conjunto de provas de
- A interpretação BHK não tem um operador iff separado, mas tem setas
- Quando há funções de
AparaBe deBparaA, as duas proposições são tratadas como equivalentes - Do ponto de vista de conjuntos, isso é uma situação em que os conjuntos de provas das duas proposições são isomorfos
- Quando há funções de
- Negação não significa apenas ausência de prova; é preciso mostrar que, assumindo
Acomo verdadeiro, chega-se a uma contradição⊥desempenha o papel de False ou bottom value, isto é, a prova de uma fórmula sem prova- Em BHK,
¬Aé lido comoA → ⊥ - Na teoria dos conjuntos,
⊥é representado pelo conjunto vazio
Ver a lógica como categoria
- A interpretação BHK oferece uma perspectiva de alto nível para interpretar a lógica por teoria das categorias
- Algumas categorias podem ser vistas como sistemas lógicos
- Objetos são proposições
- Morfismos são provas
- Nem toda categoria se torna um sistema lógico; são necessárias condições para que existam objetos correspondentes a proposições lógicas válidas e não existam objetos correspondentes a proposições inválidas
- Categorias que satisfazem essas condições são chamadas de categorias bicartesianas fechadas
- Como caso simples, podemos olhar primeiro para uma ordem; um sistema lógico e um conjunto de proposições atômicas formam uma categoria
- Se há apenas uma forma de ir de
AparaB, ou se a diferença é ignorada, isso se torna uma preorder - Se proposições que se implicam mutuamente forem tratadas como equivalentes, obtém-se uma partial order
A ≤ BsignificaA → B
- Se há apenas uma forma de ir de
- Em um diagrama de Hasse, quando
Aestá abaixo deB, valeA → B
Correspondência ordenada das operações lógicas
andeorda lógica aparecem como product e sum na interpretação BHK e correspondem a meet e join na teoria da ordem- Para que seja um sistema lógico, uma ordem deve permitir combinar quaisquer duas proposições com
andouor, então precisa ter meet e join para todos os elementos- Uma ordem assim é chamada de lattice
- Uma lei importante entre
andeoré a distributividade- Se para todos
A,B,CvaleA ∧ (B ∨ C) ≅ (A ∧ B) ∨ (A ∧ C), então temos um distributive lattice
- Se para todos
- Para expressar lógica intuicionista, o lattice também precisa ter elementos correspondentes a
TrueeFalseFalseé escrito como⊥e se conecta ao princípio da explosão, segundo o qual, se há uma prova de False, qualquer proposição pode ser provadaTrueé escrito como⊤e decorre de toda proposição, mas não produz conteúdo significativo por si só
- Em ordens,
TrueeFalsesão respectivamente o greatest object e o least object- Em termos da teoria das categorias, correspondem a objeto terminal e objeto inicial
- Um lattice com least e greatest é um bounded lattice
Objeto de implicação e objeto exponencial
- Um lattice que representa um sistema lógico precisa, para cada par
A,B, de um objeto de implicação que represente a proposição de queAimplicaB - Esse objeto é definido pela estrutura do modus ponens
- Deve valer
A ∧ (A ⇒ B) → B
- Deve valer
- Só essa condição não basta
- Outros objetos como
A ⇒ B ∧ CouA ⇒ B ∧ C ∧ Dtambém poderiam ocupar o mesmo lugar - O verdadeiro
A ⇒ Bé o maior objeto entre osXque satisfazemA ∧ X → B
- Outros objetos como
- Na teoria da ordem,
A ⇒ Bé chamado de elemento exponencial ou pseudo-complemento relativo- É o maior
Xque satisfazA ∧ X ≤ B
- É o maior
- Em termos lógicos, a proposição mais trivial
Xque satisfazA ∧ X → Bé a proposição de implicaçãoA ⇒ B - Em teoria das categorias, isso é definido como objeto exponencial ou objeto de homomorfismo interno
- Deve existir um morfismo
A × X → B - E, para qualquer outro objeto candidato com a mesma propriedade, deve existir um único morfismo dele para o verdadeiro objeto exponencial
- Deve existir um morfismo
- Essa definição de objeto de implicação corresponde à lógica intuicionista
- Na lógica clássica, devido ao terceiro excluído,
A ⇒ Bse simplifica para¬A ∨ B
- Na lógica clássica, devido ao terceiro excluído,
- Assim como meet, join e o objeto de implicação,
A ⇒ Btambém é definido de maneira única a menos de isomorfismo
Álgebra de Heyting e categoria bicartesiana fechada
- A lógica intuicionista é composta por
True,False,and,oreimplies - Quando isso é expresso como uma ordem, obtém-se uma álgebra de Heyting
- Possui join e meet
- Possui greatest e least object
- Possui objeto de implicação
- Um sistema de lógica intuicionista pode ser visto como uma álgebra de Heyting
andeorsão meet e joinTrueeFalsesão greatest e least objectimpliesé o objeto exponencial
- Adaptando a mesma definição para categorias gerais, obtém-se uma categoria bicartesiana fechada
- Possui product e coproduct
- Possui objeto inicial e objeto terminal
- Possui objeto exponencial
- Um sistema de lógica intuicionista também pode ser visto como uma categoria bicartesiana fechada
andeorsão product e coproductTrueeFalsesão objeto terminal e objeto inicialimpliesé o objeto exponencial
- Um lattice que segue a lógica clássica deve, além de bounded e distributive, ser complemented
- Para cada proposição
A, existe uma¬Aúnica tal queA ∨ ¬A = 1eA ∧ ¬A = 0 - Um lattice assim é chamado de álgebra Booleana
- Para cada proposição
Uma prova simples vista pela lógica categórica
A ∨ ⊤ ≅ ⊤segue diretamente da definição de join- Join é o menor majorante que é maior ou igual aos dois objetos
- Como não existe objeto maior ou igual a
⊤além do próprio⊤, o join de qualquerAcom⊤é⊤ - Em termos lógicos, isso é a tautologia “qualquer
Aou True é True”
- Se existe
A → B, entãoA ∨ B = B- Quando um dos dois objetos está acima do outro, o join é o objeto mais alto
- Isso pode ser visto como uma generalização de
A ∨ ⊤ = ⊤ - Porque para todo objeto
A, sempre valeA → ⊤
- A lei da identidade também é provada com o objeto de implicação
A ⇒ Aé o maiorXque satisfazA ∧ X → A- Como essa condição vale para todo
X, ele se torna o maior objeto⊤ - Portanto,
A → Aé sempre verdadeiro
- Se
Aé consequência semântica deBem todos os modelos,A ⊨ B, entãoA ⇒ Btambém corresponde a⊤- Como o próprio
Ajá implicaB,A ∧ X → Bvale para todoX - Isso também é chamado de teorema da dedução
- Como o próprio
Construindo lógica com a free Heyting algebra
- Para fazer lógica, primeiro escolhe-se quais proposições atômicas serão usadas de acordo com o domínio do problema
- Se o tipo de lógica escolhido for a lógica intuicionista, é preciso desenhar no grafo proposições compostas como
A ∧ BeA ∨ Bpara todosA,B - Como as composições de proposições compostas também precisam ser incluídas novamente, a lista inteira torna-se infinita
- Se uma proposição implica outra pode ser verificado seguindo os caminhos das setas que saem da proposição de partida
- Fazer lógica é o processo de encontrar um caminho do que já se sabe até o que se quer provar, ou de manipular provas já existentes para construir uma nova prova
- Na lógica intuicionista, em geral é difícil provar que um fato é inalcançável a partir dos axiomas, isto é, que não pode ser demonstrado
1 comentários
Comentários no Hacker News
Esta página é realmente excelente, e já esbarrei nela várias vezes ao estudar assuntos relacionados.
Ainda assim, eu votaria por aprender com Milewski. Aprender isso é uma jornada, e o autor de ct-illustrated parece ainda estar no meio dela.
Milewski já percorreu esse caminho várias vezes, então o livro e o blog são bons pontos de partida.
https://github.com/hmemcpy/milewski-ctfp-pdf Livro
https://bartoszmilewski.com/2014/10/28/category-theory-for-p... Blog
Ele parece achar que tudo fica mais fácil de entender quando escrito em prosa leve e imprecisa, mas isso torna o material quase inútil como referência.
Não é nada disso¹
¹) https://news.ycombinator.com/item?id=41756286
Mas no trabalho usamos teoria das categorias em todo o meu modelo de domínio.
Isso já foi discutido antes em outra URL.
https://news.ycombinator.com/item?id=28660131 (2 comentários)
https://news.ycombinator.com/item?id=28660157 (112 comentários)
No começo do livro encontrei esta ótima frase, comparando matemática com ciência ou engenharia:
“Por causa disso, os matemáticos se veem numa posição estranha, talvez até única, de ter que defender constantemente o que fazem em termos de seu valor para outras áreas do conhecimento. Reforçando: em qualquer outra área do conhecimento, isso seria considerado absurdo.”
É uma ideia com que qualquer pessoa que tenha estudado uma área que não leve diretamente a resultados monetizáveis pode se identificar, e é bom ouvir que até pessoas com talento para números precisam lutar contra a navalha de Milton Friedman.
Hoje, todo o campo de estudos de “pós-colonialismo” não passa do backend do soft power americano e, se houver guerra, provavelmente também será o backend do hard power.
Se os círculos internos estiverem sempre centralizados verticalmente, o diagrama de círculos dentro de círculos não escala muito bem.
Há alguma história de sucesso em que se tenha usado teoria das categorias para resolver de forma útil um problema de CS/SWE que não poderia ter sido resolvido sem teoria das categorias? Mônadas não contam, porque são algo que você acaba inventando naturalmente se a situação exigir.
Estudei isso por um ano na pós-graduação, mas acabei desistindo.
Um dos teoremas mais básicos da teoria das categorias, o lema de Yoneda, diz diretamente que qualquer problema expresso na linguagem das categorias pode ser traduzido para a linguagem de conjuntos e funções. O mesmo vale para qualquer objeto matemático definido em termos de conjuntos, de modo que sempre se pode substituir o nome pela definição.
A contribuição da linguagem categórica para o arcabouço implícito de uma teoria não pode ser maior que a definição de “categoria”, e essa definição é muito pequena. É parecido com perguntar por que usar grupos quando “uma operação sobre um conjunto com associatividade, fechamento, identidade e inversos” parece mais acessível.
A álgebra abstrata se baseia em uma biblioteca de definições que apontam para tipos de operações sobre conjuntos simples o bastante para serem comuns. Ferramentas ou técnicas não são o tipo de coisa que se encontra dentro de uma definição.
Anéis, espaços vetoriais e módulos costumam ser aceitos de imediato por si só, mas categorias dividem crentes e descrentes. Fico curioso por que isso acontece.
Quando entrevistei Leland McInnes, ele explicou em detalhes que, mesmo que a teoria das categorias não fosse estritamente necessária no código real do resultado final, ela teve um papel importante em conectar vários pontos.
Considerando a melhoria relativa em relação ao t-SNE, que era o estado da arte anterior, esse é o único exemplo que me fez repensar minhas críticas à forma como se fala de teoria das categorias em software.
https://arxiv.org/abs/1802.03426
Teoria das categorias é uma linguagem e uma ferramenta, então o que pode ser dito na linguagem da teoria das categorias também pode ser dito em outras linguagens.
Como com um carro, quando você aprende a dirigir — e aqui a curva de aprendizado é bem íngreme —, consegue chegar mais rápido. Em princípio, não há nada a que você não possa chegar a pé sem mencionar explicitamente conceitos de teoria das categorias.
Pelo meu entendimento bastante limitado, caracterizar objetos por propriedades universais é uma parte importante da teoria das categorias.
Outra utilidade prática da teoria das categorias é fornecer uma linguagem comum para cientistas da computação, matemáticos e físicos conversarem. Quando todos chamam o mesmo padrão por nomes diferentes e usam definições ligeiramente incompatíveis, a colaboração não fica fácil.
A pré-alfa atual é voltada principalmente para modelagem de dinâmica de sistemas, mas acho que uma base categórica é essencial para o escopo de trabalho que temos como objetivo. Ficaria feliz em ouvir a opinião de qualquer pessoa.
https://topos.site/blog/2024-10-02-introducing-catcolab/
Acho que teoria das categorias é útil, mas ainda não em computação.
Se você não tiver uma necessidade real dela, é inevitável que pareça difícil. Será que você realmente precisa entender propriedades universais, funtores adjuntos e o lema de Yoneda? Se não precisa, vai sofrer para aprender o que eles são.
Curiosamente, experiência com programação funcional ajuda a entender teoria das categorias, mas o contrário não ajuda tanto. Por exemplo, polimorfismo paramétrico dá uma intuição para transformações naturais, e transformações naturais são centrais em todas as aplicações da teoria das categorias.
As aplicações convincentes da teoria das categorias são muito matemáticas. Dá para encontrá-las em topologia algébrica, teoria de representações, geometria algébrica e lógicas não clássicas.
https://en.m.wikipedia.org/wiki/ZX-calculus
https://zxcalculus.com/
https://www.reddit.com/r/quantum/s/2NzsJaDYwm
Há um erro.
“O modus ponens é uma proposição composta por duas outras proposições, aqui indicadas por A e B, e diz que, se a proposição A é verdadeira e A --> B também é verdadeira, isto é, se A implica B, então B também é verdadeira. Por exemplo, se sabemos que ‘Sócrates é humano’ e que ‘humanos morrem’, então também sabemos que ‘Sócrates morre’.”
Esse exemplo não é um caso de modus ponens, que é uma regra da lógica proposicional, mas sim um silogismo categórico, que exige lógica de predicados.
Aqui se diz que “a lógica é a ciência do possível”, mas a lógica não deveria ser a ciência do determinado?
Acho que o ponto central é permitir dizer de forma definitiva o que é válido ou não.
A notação diagramática é interessante.
O autor também apresenta regras de inferência para transformações preservadoras de verdade dos diagramas?