Acredito que seria benéfico para você procurar a teoria da interpretação abstrata, que fornece respostas muito completas para perguntas semelhantes na área ligeiramente diferente da análise de programas baseados em treliça.
Parece-me que você está usando uma estrutura baseada em álgebras. Estou usando a palavra álgebra aqui no sentido de álgebra universal, onde suponho que as restrições na estrutura da álgebra sejam dadas por igualdades entre os termos. Existem dois sentidos diferentes nos quais abstrações (ou hierarquias) entram na imagem.
- Abstração como uma relação entre duas álgebras específicas. Você pode dizer que uma álgebra tem uma estrutura mais rica que outra álgebra ou que todo problema que você pode resolver com uma álgebra pode ser resolvido com a outra. Esse tipo de relacionamento é o que seria formalizado em homomorfismos de compra ou algum outro mapeamento entre álgebras.
- Hierarquias de abstração como famílias de álgebras. No seu caso, seriam famílias de deltóides com certas propriedades. Como um exemplo mais geral, considere todos os conjuntos parcialmente pedidos. Podemos pensar em redes, redes distributivas e redes booleanas como uma sequência de subfamílias que possuem propriedades mais ricas.
As duas noções estão intimamente relacionadas, mas diferentes.
Abstração entre duas estruturas
O insight da interpretação abstrata é que é útil dotar as estruturas que você considera com uma noção de ordem. Considere duas estruturas
(M,fM) e , com e como operações de interesse.(N,fN)fM:M→MfN:N→N
Um homomorfismo no sentido universal de álgebra seria algo assim:
h:M→N é uma função que satisfaz a igualdade .h(fM(a))=fN(h(a))
Podemos ver as duas estruturas que aparecem acima como estruturas pré-ordenadas
(M,=,fM) e(N,=,fN)
e o homomorfismo que podemos reescrever para ser uma função que satisfaça
- que se então , ea=bh(a)=h(b)
- para todos em , .aMh(fM(a))=fN(h(a))
Agora, suponha que você tenha alguma outra noção de aproximação disponível que faça sentido. Por exemplo, quando lidamos com conjuntos de estados na verificação de programas, a inclusão de subconjuntos faz sentido para certos aplicativos ou quando lidamos com fórmulas na dedução automática, a implicação faz sentido. De maneira mais geral, podemos considerar
(M,⪯,fM) e , em que e são pré-encomendas.(N,⊑,fN)⪯⊑
Agora, em vez de homomorfismo, podemos ter uma função de abstração
α:M→N que é
- monótono, o que significa que sempre que temos ea⪯bα(a)⊑α(b)
- semi-comuta com as operações de: para todos em .α(fM(a))⊑fN(α(a))aM
A função abstração torna explícita a ideia de que se a estrutura sobre é uma abstração da estrutura sobre , a avaliação de um termo em não pode produzir resultados mais precisos (com relação à noção de aproximação em ) do que a avaliação do mesmo termo em e, em seguida, o mapeamento para .NMNNMN
Agora podemos perguntar se é necessário abordar o problema em termos de abstração em oposição ao refinamento. Ou seja, não podemos dizer que é um refinamento de e formular condições em termos de termos. É exatamente isso que uma função de concretização faz.MN
Uma função de concretização é monótona e satisfaz a desigualdade .γ:N→MfM(γ(b))⪯γ(fN(b))
As condições de abstração e concretização são chamadas condições de solidez na interpretação abstrata. No caso especial que e formam uma conexão de Galois, as condições de abstração e concretização são equivalentes. Em geral, eles não são equivalentes.αγ
Tudo o que fizemos até agora apenas formaliza a noção de abstração entre um par de estruturas. As coisas que eu disse podem ser resumidas de maneira muito mais sucinta na linguagem da teoria das categorias. Evitei categorias por causa do seu comentário acima.
Hierarquias de abstração
Suponha que tenhamos uma estrutura dotada de uma pré-encomenda e de algumas operações. Podemos considerar todas as estruturas modo que seja uma abstração de no sentido acima. Se tivermos que é uma abstração de e ambos sejam abstrações de , teremos três elementos da hierarquia. A relação 'é uma abstração de' permite definir uma pré-ordem entre estruturas. Vamos chamar uma família de estruturas ordenadas por abstração como uma hierarquia .N N M N 1 N 2 MMNNMN1N2M
Se eu considerar o seu exemplo, parece que seu deltóide abstrato pode ser um candidato ao elemento máximo em alguma hierarquia. Não tenho muita certeza porque o deltóide abstrato parece ser uma família de deltóides, e não um deltóide específico.
O que você pode fazer agora é considerar diferentes hierarquias. A hierarquia de todos os deltóides. Uma sub-hierarquia baseada em várias considerações acima. Um exemplo específico no contexto de interpretação abstrata é uma hierarquia de redes completas que estão em uma conexão Galois com uma dada rede de conjuntos de potências e sub-hierarquias que consistem apenas em redes distributivas ou apenas booleanas.
Como Martin Berger aponta nos comentários, essa noção de abstração entre hierarquias é capturada pela de adjuntos entre categorias.
Uma perspectiva categórica
Houve um comentário solicitando mais comentários sobre categorias. Esse comentário não está mais lá, mas eu responderei de qualquer maneira.
Vamos voltar e ver o que você está fazendo no design de deltóides e o que descrevi acima de uma perspectiva mais geral. Estamos interessados em entender a estrutura essencial das entidades que manipulamos em um contexto de software e o relacionamento entre essas entidades.
A primeira percepção importante é que não estamos interessados apenas em um conjunto de elementos, mas nas operações que podemos executar nesses elementos e nas propriedades dessas operações. Essa intuição direciona o design de classes na programação orientada a objetos e a definição de estruturas algébricas. Você já fez essa intuição explícita na definição de um deltóide que identificou algumas operações de interesse. De maneira mais geral, esse é o processo de pensamento subjacente às descrições algébricas. Precisamos identificar quais são nossas operações e quais propriedades elas possuem. Esta etapa nos diz a estrutura de tipos com a qual estamos trabalhando.
A segunda percepção é que não estamos interessados apenas em um conjunto de elementos, mas em relacionamentos de abstração. A formalização mais simples que posso imaginar da abstração é considerar um conjunto pré-ordenado. Podemos pensar em um conjunto pré-ordenado como uma generalização estrita de um conjunto para algo que vem com uma noção de aproximação inserida.
Idealmente, queremos trabalhar em um ambiente em que os dois pontos de vista acima sejam cidadãos de primeira classe. Ou seja, queremos uma configuração digitada como a de uma álgebra, mas também a configuração com reconhecimento de aproximação de uma pré-encomenda. Um primeiro passo nessa direção é considerar uma treliça. Uma treliça é uma estrutura conceitualmente interessante porque podemos defini-la de duas maneiras equivalentes.
- Podemos definir uma estrutura como um conjunto equipado com uma operação meet e join. Podemos então derivar a ordem parcial definindo para reter sempre que .um ⊑ b um ⊓ b = um(L,⊓,⊔)a⊑ba⊓b=a
- Uma alternativa é definir uma rede como um conjunto parcialmente ordenado satisfazendo que cada par de elementos em tenha um maior limite inferior e um limite superior únicos. Podemos então derivar as operações meet e join da ordem parcial.L(L,⊑)L
Uma rede é, portanto, uma estrutura matemática que pode ser abordada da perspectiva algébrica ou de aproximação. A desvantagem aqui é que os próprios elementos de uma treliça não possuem uma estrutura de tipos que é fatorada no relacionamento de aproximação. Ou seja, não podemos comparar elementos com base na noção de ter mais ou menos estrutura.
No contexto do seu problema, você pode pensar em categorias como uma generalização natural de pré-ordens que capturam tanto a noção de aproximação (nos morfismos) quanto a estrutura de tipos em um cenário algébrico. A definição da teoria das categorias nos permite dispensar várias distinções desnecessárias e focar na estrutura das entidades de que você gosta e na aproximação dessa estrutura. As propriedades e complementos universais fornecem um vocabulário e ferramentas muito poderosos para entender a paisagem das estruturas nas quais você está interessado e permitem um tratamento matemático rigoroso de até noções intuitivas, como diferentes níveis de abstração.
Com relação ao meu comentário sobre deltóides abstratos, parece que o que você quer é uma categoria. O deltóide abstrato é uma categoria específica análoga à categoria de conjuntos. Existem outras categorias que você está considerando. Inicialmente, pensei que você estivesse definindo um deltóide que, no sentido da teoria das categorias, seria um objeto terminal (ou final).
Você está estudando o tipo de perguntas para as quais a teoria das categorias fornece respostas muito satisfatórias. Espero que você seja capaz de chegar a essa conclusão.
Referências
- Interpretação abstrata e aplicação a programas lógicos , Patrick Cousot e Radhia Cousot. A primeira metade deste artigo é uma introdução geral do estilo tutorial ao tópico de interpretação abstrata.
- Quadros de interpretação abstrata , Patrick Cousot e Radhia Cousot. Este artigo discute todas as possibilidades esboçadas acima com relação às funções de abstração e concretização em grande detalhe.
- Projeto sistemático de estruturas de análise de programas , Patrick Cousot e Radhia Cousot. Este foi o artigo que introduziu a noção de hierarquias de abstrações no contexto da análise do programa.
- Preservação Forte Generalizada por Interpretação Abstrata , Francesco Ranzato e Francesco Tapparo. Este artigo aplica essas idéias em um contexto diferente de abstrações que preservam fórmulas lógicas temporais. Você encontrará exemplos trabalhados de abstrações booleanas e distributivas aqui.
- Resumo Interpretação, Relações Lógicas e Extensões Kan , Samson Abramsky. Apresenta uma perspectiva da teoria da categoria no material teórico da ordem acima.