Uważam, że byłoby dobrze, gdybyś zapoznał się z teorią abstrakcyjnej interpretacji, która zapewnia bardzo dokładne odpowiedzi na podobne pytania w nieco innym obszarze analizy programu opartej na sieci.
Wydaje mi się, że używasz frameworka opartego na algebrach. Używam tutaj słowa algebra w znaczeniu algebry uniwersalnej, w której zakładam, że ograniczenia w strukturze algebry wynikają z równości między terminami. Istnieją dwa różne zmysły, w których abstrakcje (lub hierarchie) wchodzą w obraz.
- Abstrakcja jako relacja między dwoma konkretnymi algebrami. Możesz powiedzieć, że jedna algebra ma bogatszą strukturę niż inna algebra lub że każdy problem, który możesz rozwiązać za pomocą jednej algebry, możesz rozwiązać za pomocą drugiego. Ten rodzaj relacji sformalizowałby homomorfizmy kupna lub inne mapowanie między algebrami.
- Hierarchie abstrakcji jako rodziny algebry. W twoim przypadku byłyby to rodziny deltoidów o określonych właściwościach. Jako bardziej ogólny przykład rozważ wszystkie częściowo uporządkowane zestawy. Możemy myśleć o sieciach kratowych, sieciach dystrybucyjnych i sieciach boolowskich jako o sekwencji podrodzin o bogatszych właściwościach.
Te dwa pojęcia są ze sobą ściśle powiązane, ale różne.
Abstrakcja między dwiema strukturami
Wgląd w abstrakcyjną interpretację jest taki, że przydatne jest nadanie badanym strukturom pojęcia porządku. Rozważ dwie struktury
( M,faM.) i ( N,faN.), z faM.: M→ M i faN.: N→ N. jako operacje będące przedmiotem zainteresowania.
Homomorfizm w sensie algebry uniwersalnej wyglądałby mniej więcej tak:
h : M→ N. jest funkcją spełniającą równość h (faM.( a ) ) =faN.( h ( a ) ).
Dwie powyższe struktury możemy zobaczyć jako struktury zamówione w przedsprzedaży
( M, = ,faM.) i ( N, = ,faN.)
i homomorfizm, który możemy przepisać, aby był funkcją spełniającą
- że jeśli a = b następnie h ( a ) = h ( b ), i
- dla wszystkich za w M., h (faM.( a ) ) =faN.( h ( a ) ).
Załóżmy teraz, że masz inne pojęcie przybliżenia, które ma sens. Na przykład, gdy mamy do czynienia z zestawami stanów podczas weryfikacji programu, włączenie podzbioru ma sens w przypadku niektórych aplikacji lub gdy mamy do czynienia z formułami zautomatyzowanej dedukcji, implikacja ma sens. Ogólniej możemy rozważyć
( M, ⪯ ,faM.) i ( N, ⊑ ,faN.), gdzie ⪯ i ⊑ są zamówieniami wstępnymi.
Teraz zamiast homomorfizmu możemy mieć funkcję abstrakcji
α : M→ N. który jest
- monotonowy, co oznacza, że kiedykolwiek a ⪯ b mamy α ( a ) ⊑ α ( b ), i
- częściowo dojeżdża do pracy z operacjami: α (faM.( a ) ) ⊑faN.( α ( a ) ) dla wszystkich za w M..
Funkcja abstrakcji wyraża ideę, że jeśli struktura się skończy N. jest abstrakcją struktury M., a następnie oceniając termin w N. nie może dać dokładniejszych wyników (w odniesieniu do pojęcia przybliżenia w N.) niż ocena tego samego terminu w M. a następnie mapowanie na N..
Teraz możemy zapytać, czy konieczne jest podejście do problemu w kategoriach abstrakcji, a nie wyrafinowania. Czyli nie możemy tego powiedziećM. jest udoskonaleniem N.i formułować warunki w kategoriach. To właśnie robi funkcja konkretyzacji .
Funkcja konkretyzacji γ: N→ Mjest monotonny i spełnia nierównośćfaM.( γ( b ) ) ⪯ γ(faN.( b ) ).
Warunki abstrakcji i konkretyzacji nazywane są warunkami solidności w interpretacji abstrakcyjnej. W specjalnym przypadku toα i γtworzą połączenie Galois, warunki abstrakcji i konkretyzacji są równoważne. Zasadniczo nie są one równoważne.
Wszystko, co do tej pory zrobiliśmy, jedynie formalizuje pojęcie abstrakcji między parą struktur. To, co powiedziałem, można streścić znacznie bardziej zwięźle w języku teorii kategorii. Unikałem kategorii z powodu twojego komentarza powyżej.
Hierarchie abstrakcji
Załóżmy, że mamy strukturę M.obdarzony przedsprzedażą i niektórymi operacjami. Możemy rozważyć wszystkie strukturyN. takie, że N. jest abstrakcją M.w sensie powyżej. Jeśli mamy toN.1 jest abstrakcją N.2) i oba są abstrakcjami M., mamy trzy elementy hierarchii. Relacja „jest abstrakcją” pozwala nam zdefiniować zamówienie wstępne między strukturami. Nazwijmy rodzinę struktur uporządkowanych według abstrakcji hierarchią .
Jeśli wezmę twój przykład, wydaje się, że twoja abstrakcyjna deltoid może być kandydatem na maksymalny element w jakiejś hierarchii. Nie jestem do końca pewien, ponieważ abstrakcyjny deltoid wydaje się być rodziną deltoidów, a nie konkretnym deltoidem.
Teraz możesz rozważyć różne hierarchie. Hierarchia wszystkich deltoidów. Podhierarchia oparta na różnych powyższych rozważaniach. Konkretnym przykładem w kontekście abstrakcyjnej interpretacji jest hierarchia kompletnych sieci, które są w połączeniu Galois z daną siecią zestawów mocy, oraz podhierarchie składające się wyłącznie z sieci dystrybucyjnych lub tylko boolowskich.
Jak zauważa Martin Berger w komentarzach, pojęcie abstrakcji między hierarchiami jest uchwycone przez powiązanie między kategoriami.
Kategoryczna perspektywa
Pojawił się komentarz z prośbą o więcej komentarzy na temat kategorii. Tego komentarza już nie ma, ale i tak odpowiem.
Cofnijmy się i spójrzmy na to, co robisz przy projektowaniu deltoidów, i co opisałem powyżej z bardziej ogólnej perspektywy. Interesuje nas zrozumienie podstawowej struktury podmiotów, którymi manipulujemy w kontekście oprogramowania oraz relacji między tymi podmiotami.
Pierwszą ważną realizacją jest to, że interesuje nas nie tylko zestaw elementów, ale także operacje, które możemy wykonać na tych elementach i właściwości tych operacji. Ta intuicja napędza projektowanie klas w programowaniu obiektowym i definiowanie struktur algebraicznych. Wyraziłeś już tę intuicję w definicji deltoida, która zidentyfikowała kilka interesujących operacji. Mówiąc bardziej ogólnie, jest to proces myślowy leżący u podstaw opisów algebraicznych. Musimy określić, jakie są nasze operacje i jakie mają one właściwości. Ten krok pokazuje nam strukturę typów, z którą pracujemy.
Drugą realizacją jest to, że interesuje nas nie tylko zestaw elementów, ale relacje abstrakcyjne. Najprostszą formalizacją, jaką mogę sobie wyobrazić z abstrakcji, jest rozważenie wcześniej ustalonego zestawu. Możemy pomyśleć o zamówionym zestawie jako ścisłym uogólnieniu zestawu na coś, co przychodzi wraz z koncepcją przybliżenia.
Idealnie chcemy pracować w środowisku, w którym oba powyższe spostrzeżenia są pierwszorzędnymi obywatelami. Oznacza to, że chcemy ustawienia typu takiego jak algebra, ale także ustawienia presetu uwzględniającego przybliżenie. Pierwszym krokiem w tym kierunku jest rozważenie sieci. Krata jest interesującą koncepcyjnie strukturą, ponieważ możemy ją zdefiniować na dwa równoważne sposoby.
- Możemy zdefiniować sieć równorzędnie jako zbiór ( L , ⊓ , ⊔ )wyposażony w operację Meet i Join. Możemy czerpać częściowy porządek poprzez zdefiniowaniea ⊑ b trzymać za każdym razem a ⊓ b = a.
- Alternatywą jest zdefiniowanie sieci jako zestawu częściowo uporządkowanego ( L , ⊑ ) spełnianie, że każda para elementów w L.ma unikalną największą dolną granicę i najmniejszą górną granicę. Następnie możemy wyliczyć spotkanie i połączyć operacje z częściowego zamówienia.
Krata jest zatem strukturą matematyczną, do której można podejść z perspektywy algebraicznej lub aproksymacyjnej. Wadą tego jest to, że same elementy sieci nie mają struktury typu, która jest uwzględniona w relacji aproksymacji. Oznacza to, że nie możemy porównywać elementów w oparciu o pojęcie większej lub mniejszej struktury.
W kontekście twojego problemu możesz myśleć o kategoriach jako o naturalnym uogólnieniu zamówień przedpremierowych, które wychwytują zarówno pojęcie aproksymacji (w morfizmach), jak i strukturę typów w układzie algebraicznym. Ustawienie teorii kategorii pozwala nam zrezygnować z różnych niepotrzebnych rozróżnień i skupić się na strukturze istot, na których ci zależy, i przybliżeniu tej struktury. Uniwersalne właściwości i powiązania dają bardzo potężne słownictwo i narzędzia do zrozumienia krajobrazu interesujących cię struktur i umożliwiają rygorystyczne matematyczne traktowanie nawet intuicyjnych pojęć, takich jak różne poziomy abstrakcji.
Jeśli chodzi o mój komentarz na temat abstrakcyjnych deltoidów, wydaje się, że to, czego chcesz, to kategoria. Abstrakcyjna deltoid jest specyficzną kategorią analogiczną do kategorii zbiorów. Istnieją inne kategorie, które rozważasz. Początkowo myślałem, że definiujesz deltoidę, która w sensie teorii kategorii będzie obiektem końcowym (lub końcowym).
Studiujesz pytania, na które teoria kategorii daje bardzo satysfakcjonujące odpowiedzi. Mam nadzieję, że sam dojdziesz do tego wniosku.
Bibliografia
- Abstrakcyjna interpretacja i zastosowanie do programów logicznych , Patrick Cousot i Radhia Cousot. Pierwsza połowa tego artykułu to ogólne wprowadzenie do samouczka na temat interpretacji abstrakcyjnej.
- Abstrakcyjne ramy interpretacyjne , Patrick Cousot i Radhia Cousot. W tym artykule szczegółowo omówiono wszystkie zarysowane powyżej możliwości dotyczące funkcji abstrakcji i konkretyzacji.
- Systematyczne projektowanie ram analizy programów , Patrick Cousot i Radhia Cousot. Był to artykuł, który wprowadził pojęcie hierarchii abstrakcji w kontekście analizy programu.
- Uogólnione silne zachowanie według abstrakcyjnej interpretacji , Francesco Ranzato i Francesco Tapparo. W tym artykule zastosowano te idee w innym kontekście abstrakcji, który zachowuje formuły logiki czasowej. Znajdziesz tutaj działające przykłady abstrakcji logicznych i dystrybucyjnych.
- Abstrakcyjna interpretacja, relacje logiczne i rozszerzenia Kan , Samson Abramsky. Przedstawia perspektywę teorii kategorii na powyższym materiale teoretycznym rzędu.