Arnaud Spiwack queria representar feixes em Haskell, mas a definição dos livros-texto trazia um problema prático: as peneiras contêm muitas representações redundantes da mesma informação de correspondência, e sua construção dependente de pullback exigia tipagem dependente demais para Haskell. A abordagem óbvia — traduzir a definição literalmente — tornaria estados ilegais representáveis e enterraria o programa em dados irrelevantes.
Ele primeiro construiu um exemplo concreto em torno de expressões aritméticas. Um pré-feixe podia puxar valores de volta ao longo de expressões, mas a operação condicional desejada exigia um feixe para colar dois ramos sobre uma cobertura booleana. A implementação, portanto, tornou a colagem uma operação explícita de classe de tipos, e depois a generalizou em um Site cujas famílias tipadas Cover e Gen descrevem quais peças podem ser montadas.
O site tipado remove o fardo da peneira de pullback: a colagem pode operar em qualquer flecha, e os geradores não precisam ser representados como flechas reais. Produtos, exponenciais, imersões de Yoneda, coprodutos e listas recursivas podem então ser definidos no mesmo estilo. Sheafify atua como uma construção de feixe livre ao armazenar operações de colagem em vez de avaliá-las prematuramente, enquanto PFun carrega a variância necessária para exponenciais.
O resultado é um repositório de demonstração e uma implementação em estilo Haskell da ideia abstrata, não uma alegação de que todo detalhe matemático desaparece. Spiwack deixa explicitamente os pontos fixos sem resolução, mas o projeto converte uma definição que era frouxa demais para a linguagem em blocos de construção tipados e operacionais, e torna preciso o desconhecido restante.
Representar coberturas como tipos e então colar explicitamente
Peneiras literais codificam valores redundantes de famílias de correspondência e permitem estados que deveriam ser impossíveis.
A peneira de pullback necessária para exponenciais exige tipagem dependente além do que a implementação em Haskell conseguia expressar confortavelmente.
Coberturas e geradores tipados mantêm pequena a interface válida de colagem, removendo representações irrelevantes.
Sheafify armazena a sintaxe de colagem, permitindo construções livres como coprodutos e listas recursivas sem executar as operações antecipadamente.
Tornar os pontos fixos uma fronteira explícita não resolvida impede que a implementação finja resolver o que ainda não sabe.
Quando uma definição formal cria estados ilegais e tipagem dependente impossível, codifique coberturas válidas em tipos e exponha apenas operações de colagem executáveis. Mantenha construções livres para composição.
O projeto produziu um repositório de demonstração com instâncias concretas e abstratas de Site/Sheaf, além de uma fronteira mais clara em torno do que a codificação pode e não pode expressar. Os pontos fixos permanecem sem resolução, mas a abordagem de coberturas tipadas torna as operações de feixe utilizáveis em Haskell sem importar todo o peso da maquinaria dependente de peneiras.
CONFIRA AS EVIDÊNCIAS
As fontes
- Subcanonical coverage nLab · ncatlab.org
- Pursuing Shtuck HAL / Pierre-Marie Pédrot · inria.hal.science