Introdução
Estou escrevendo minha tese de doutorado em Abstract Delta Modeling (ADM), uma descrição algébrica abstrata de modificações (conhecidas como deltas ) capazes de atuar em produtos (como em 'produtos de software'). Isso pode ser usado para organizar um conjunto de produtos relacionados (uma 'linha de produtos') como um produto básico simples e um conjunto de deltas aplicados condicionalmente e, assim, permitir maior reutilização dos artefatos subjacentes.
Os detalhes da modelagem delta não são realmente importantes para minha pergunta, mas o ADM serve como um bom exemplo para explicar o problema; portanto, apresentarei os conceitos mais importantes.
fundo
A principal estrutura de interesse é o deltóide . Os produtos vêm de um conjunto universal . Deltas vêm de um monóide com operador composição e elemento neutro . O operador de avaliação semântica transforma um delta 'sintático' em uma relaçãoP ( D , ⋅ , ε ) ⋅ : D × D → D ε ∈ D [ d ∈ D [ dque decide como pode modificar um produto.
Questão
Como o ADM é uma álgebra abstrata, a maioria do meu trabalho abstrai da natureza concreta de produtos e deltas, e vários resultados são comprovados sem descer a um nível mais concreto. Espera-se que esses resultados sejam transferidos para um domínio mais concreto, mas ainda não o formalizei.
Existem exemplos e estudos de caso que funcionam em um domínio concreto: código-fonte orientado a objetos, código , números naturais, perfis de telefones celulares, etc. Há também alguns estágios intermediários de abstração, como aninhados pares chave-valor. Para cada redefinir (ou 'refinar') . ( P , D ,⋅,ϵ, [
Eu gostaria de deixar essa hierarquia explícita: (1) para fornecer maior clareza ao leitor e (2) para justificar formalmente o uso de resultados de níveis mais abstratos.
Minha pergunta: como devo organizar formalmente esses níveis de abstração?
Espero poder argumentar com uma simples relação de refinamento em deltoids. E eu sinto que poderia ser definido simplesmente apelando para a relação subconjunto de e . Mas ainda não tenho certeza. Existem abordagens existentes para o tipo de problema que estou descrevendo? Publicações que devo ler?P D
A hierarquia deltóide
Para ter uma idéia melhor do que quero dizer, aqui está a hierarquia de abstração deltóide que tenho em mente:
- Resumo Deltóide : Este é o deltóide básico no qual produtos e deltas ainda podem ser qualquer coisa. A maior parte da teoria é baseada nessa e a maioria dos resultados é comprovada nesse nível.
- Deltóide relacional : Aqui, deltas são relações em e é a função de identidade.
- Deltóide Funcional : Aqui, os deltas são funcionais (ou 'determinísticos').
- Número natural deltóide : este é o deltóide concreto mais simples, criado apenas para ilustrar o refinamento deltóide. Aqui, produtos são números naturais e deltas são sequências numéricas simples que representam operações polinomiais.
- Deltoide de par de valor-chave aninhado : um nível intermediário de abstração para qualquer hierarquia na qual as chaves são mapeadas para valores ou sub-hierarquias. O Deltas pode realizar modificações nesta 'árvore' a qualquer profundidade.
- OOP Deltoid : Para representações abstratas de programas orientados a objetos. Eles são basicamente pares de valores-chave aninhados, porque os programas mapeiam nomes de módulos para conjuntos de classes, que mapeiam nomes de classes para conjuntos de métodos, que mapeiam nomes de métodos para implementações de métodos.
- ABS Deltoid : O ABS é uma linguagem de programação real orientada a objetos.
- Deltoid de perfil de telefone : aqui, um produto é um mapeamento simples de configurações (como volume, brilho da tela etc.) para valores de um domínio correspondente.
- OOP Deltoid : Para representações abstratas de programas orientados a objetos. Eles são basicamente pares de valores-chave aninhados, porque os programas mapeiam nomes de módulos para conjuntos de classes, que mapeiam nomes de classes para conjuntos de métodos, que mapeiam nomes de métodos para implementações de métodos.
- Deltoid : os produtos são documentos e os deltas os modificam redefinindo as macros.
- Deltóide relacional : Aqui, deltas são relações em e é a função de identidade.
Bem, isso deve lhe dar uma boa idéia do que tenho em mente. Note, a propósito, que para qualquer deltóide, é um homomorfismo monóide de ao pertencente ao deltóide relacional correspondente.
A hierarquia real pode ser maior. Também pode ser organizado de maneira diferente, com base em que tipo de teoria de refinamento vou usar. Por exemplo, se eu optar por uma relação de subconjunto simples em e o ABS Deltoid não se encaixaria no Deltoid Nested Key-Value Pair, pois seus produtos e deltas são na verdade texto simples (código-fonte). Mas a hierarquia dada ainda pode funcionar se eu usar homomorfismos.D
fonte
Respostas:
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.
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
Um homomorfismo no sentido universal de álgebra seria algo assim:
Podemos ver as duas estruturas que aparecem acima como estruturas pré-ordenadas
e o homomorfismo que podemos reescrever para ser uma função que satisfaç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
Agora, em vez de homomorfismo, podemos ter uma função de abstração
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 .N M N N M N
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.M N
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 MM N N M N1 N2 M
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.
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
fonte
Você está trabalhando no seu doutorado. Dizer "eu não sou bem versado em " não é uma desculpa. E se você é bom, dizer "meu orientador não conhece " também não é desculpa.XX X
Você está usando monoides onde deveria estar usando categorias. Suas operações monóides pressupõem que você possa combinar qualquer . Mas isso realmente faz sentido, por exemplo, como você comporia "adicionar revestimento de plástico" e "adicionar revestimento de metal"? Suponho que parte do seu resulta em relações vazias porque elas não fazem sentido. Você deve suspeitar desse tipo de coisa.δδ δ
Como observador interessado, parece que o monóide deve ser uma categoria, para que possamos compor dois apenas se fizer sentido que sejam compostos. Então sua avaliação semântica é apenas um functor na categoria de conjuntos e relações. E então você vê que existem muitas outras categorias que você poderia usar. Os deltas funcionais corresponderão a um functor que mapeia para a categoria de conjuntos e funções, os números naturais deltoid são um functor para o monóide de polinômios em números naturais (vistos como uma categoria), etc.δ
Não sei se você deseja formalizar os telefones celulares LaTeX e Nokia com muita seriedade na teoria geral. Mas é claro que sua teoria deve ser aplicável a esses exemplos (simplesmente não se desligue quando descobrir que os telefones celulares não têm uma semântica bem definida).
Você está realmente se enganando ao insistir em uma tecnologia predeterminada (pelo seu orientador?), Pela aparência.
fonte