Einführung
Ich schreibe meine Doktorarbeit über Abstract Delta Modeling (ADM), eine abstrakte algebraische Beschreibung von Modifikationen (bekannt als Deltas ), die auf Produkte (wie in "Softwareprodukten") einwirken können . Dies kann verwendet werden, um eine Reihe verwandter Produkte (eine „Produktlinie“) als einfaches Kernprodukt und eine Reihe von bedingt angewendeten Deltas zu organisieren und so eine stärkere Wiederverwendung der zugrunde liegenden Artefakte zu ermöglichen.
Die Details der Delta-Modellierung sind für meine Frage nicht wirklich wichtig, aber ADM dient als gutes Beispiel, um das Problem zu erklären, und ich werde die wichtigsten Konzepte vorstellen.
Hintergrund
Die Hauptstruktur von Interesse ist der Deltamuskel . Produkte kommen aus einem universellen Satz . Deltas kommen aus einer monoid mit der Zusammensetzung Operator und neutrales Element . Der semantische Auswertungsoperator transformiert ein 'syntaktisches' Delta in eine BeziehungP ( D , ⋅ , ϵ ) ⋅ : D × D → D ϵ ∈ D [ d ∈ D [welches entscheidet, wie ein Produkt modifizieren kann.
Frage
Da ADM eine abstrakte Algebra ist, abstrahieren die meisten meiner Arbeiten von der konkreten Natur von Produkten und Deltas, und eine Reihe von Ergebnissen werden bewiesen, ohne auf eine konkretere Ebene abzusteigen. Es wird erwartet, dass diese Ergebnisse auf einen konkreteren Bereich übertragen werden, aber ich habe dies noch nicht formalisiert.
Es gibt Beispiele und Fallstudien, die in einer konkreten Domäne funktionieren: objektorientierter Quellcode, -Code, natürliche Zahlen, Mobiltelefonprofile usw. Es gibt auch einige Zwischenstufen der Abstraktion, z. B. verschachtelt Schlüssel-Wert-Paare. Für jedes definiere ich neu (oder 'verfeinere') . ( P , D ,⋅,ϵ, [
Ich möchte diese Hierarchie explizit machen: (1) um dem Leser mehr Klarheit zu bieten und (2) um die Verwendung von Ergebnissen aus abstrakteren Ebenen formal zu rechtfertigen.
Meine Frage: Wie soll ich diese Abstraktionsebenen formal organisieren?
Ich hoffe, mit einer einfachen Verfeinerungsrelation auf zu können. Und ich denke, es könnte einfach definiert werden, indem man die Teilmengenbeziehung auf und anspricht . Aber ich bin mir noch nicht sicher. Gibt es Ansätze für die Art von Problem, die ich beschreibe? Veröffentlichungen, die ich lesen sollte?P D.
Die Deltamuskelhierarchie
Um Ihnen eine bessere Vorstellung davon zu geben, was ich meine, hier ist die Deltoid-Abstraktionshierarchie, an die ich denke:
- Abstract Deltamuskel : Dies ist der grundlegende Deltamuskel, in dem Produkte und Deltas immer noch alles sein können. Der größte Teil der Theorie basiert auf dieser und die meisten Ergebnisse werden auf dieser Ebene bewiesen.
- Relationaler Deltamuskel : Hier sind Deltas Relationen zu und ist die Identitätsfunktion.
[
- Funktioneller Deltamuskel : Hier sind Deltas funktional (oder "deterministisch").
- Deltamuskel mit natürlicher Zahl : Dies ist der einfachste Deltamuskel aus Beton, der nur zur Veranschaulichung der Verfeinerung des Deltamuskels erstellt wurde. Hier sind Produkte natürliche Zahlen und Deltas sind einfache Zahlenfolgen, die Polynomoperationen darstellen.D = N +
- Verschachtelter Schlüssel-Wert-Paar-Deltamuskel : Eine mittlere Abstraktionsebene für jede Hierarchie, in der Schlüssel Werten oder Unterhierarchien zugeordnet sind. Deltas können Änderungen an diesem 'Baum' in jeder Tiefe vornehmen.
- OOP Deltoid : Für abstrakte Darstellungen objektorientierter Programme. Sie sind im Grunde verschachtelte Schlüssel-Wert-Paare, da Programme Modulnamen Klassen von Klassen zuordnen, die Klassennamen Methodengruppen zuordnen, Methodennamen Methodenimplementierungen zuordnen.
- ABS Deltoid : ABS ist eine echte objektorientierte Programmiersprache.
- Telefonprofil-Deltamuskel : Hier ist ein Produkt eine flache Zuordnung von Einstellungen (wie Lautstärke, Bildschirmhelligkeit usw.) zu Werten aus einer entsprechenden Domäne.
- OOP Deltoid : Für abstrakte Darstellungen objektorientierter Programme. Sie sind im Grunde verschachtelte Schlüssel-Wert-Paare, da Programme Modulnamen Klassen von Klassen zuordnen, die Klassennamen Methodengruppen zuordnen, Methodennamen Methodenimplementierungen zuordnen.
- Deltamuskel : Produkte sind -Dokumente, und Deltas ändern sie, indem sie Makros neu definieren.
- Relationaler Deltamuskel : Hier sind Deltas Relationen zu und ist die Identitätsfunktion.
[
Nun, das sollte Ihnen eine gute Vorstellung davon geben, was ich vorhabe. Beachten Sie übrigens, dass für jeden Deltamuskel ein Homomorphismus von zu , der zum entsprechenden relationalen Deltamuskel gehört.D D '
Die tatsächliche Hierarchie kann größer sein. Es kann auch anders organisiert sein, je nachdem, welche Art von Verfeinerungstheorie ich verwenden werde. Wenn ich zum Beispiel eine einfache Teilmengenbeziehung für und anstrebe, würde der ABS-Deltamuskel nicht unter den verschachtelten Schlüsselwertpaar-Deltamuskel passen, da seine Produkte und Deltas tatsächlich einfacher Text (Quellcode) sind. Aber die angegebene Hierarchie kann immer noch funktionieren, wenn ich Homomorphismen verwende.D.
quelle
Antworten:
Ich glaube, es wäre für Sie von Vorteil, die Theorie der abstrakten Interpretation nachzuschlagen, die sehr gründliche Antworten auf ähnliche Fragen im etwas anderen Bereich der gitterbasierten Programmanalyse liefert.
Mir scheint, Sie verwenden ein Framework, das auf Algebren basiert. Ich verwende hier das Wort Algebra im Sinne der universellen Algebra, wobei ich davon ausgehe, dass Einschränkungen für die Struktur der Algebra durch Gleichheiten zwischen Begriffen gegeben sind. Es gibt zwei verschiedene Sinne, in denen Abstraktionen (oder Hierarchien) ins Bild kommen.
Die beiden Begriffe sind eng miteinander verbunden, aber unterschiedlich.
Abstraktion zwischen zwei Strukturen
Die Erkenntnis der abstrakten Interpretation besteht darin, dass es nützlich ist, die von Ihnen betrachteten Strukturen mit einem Ordnungsbegriff auszustatten. Betrachten Sie zwei Strukturen
Ein Homomorphismus im Sinne der universellen Algebra würde ungefähr so aussehen:
Wir können die beiden oben erscheinenden Strukturen als vorbestellte Strukturen betrachten
und der Homomorphismus, den wir umschreiben können, um eine befriedigende Funktion zu sein
Angenommen, Sie haben einen anderen Begriff der Annäherung, der sinnvoll ist. Wenn wir uns beispielsweise bei der Programmüberprüfung mit Zustandsmengen befassen, ist die Einbeziehung von Teilmengen für bestimmte Anwendungen sinnvoll, oder wenn es sich um Formeln mit automatisierter Ableitung handelt, ist die Implikation sinnvoll. Allgemeiner können wir betrachten
Anstelle von Homomorphismus können wir jetzt eine Abstraktionsfunktion haben
Die Abstraktionsfunktion macht deutlich, dass, wenn die Struktur über eine Abstraktion der Struktur über , die Bewertung eines Terms in keine genaueren Ergebnisse liefern kann (in Bezug auf den Begriff der Approximation in ) als die Bewertung desselben Terms in und ordne es dann .N. M. N. N. M. N.
Jetzt können wir fragen, ob es notwendig ist, das Problem in Bezug auf Abstraktion und nicht in Bezug auf Verfeinerung anzugehen. Das heißt, können wir nicht sagen, dass eine Verfeinerung von und Bedingungen in Begriffen formulieren. Genau das macht eine Konkretisierungsfunktion .M. N.
Die Abstraktions- und Konkretisierungsbedingungen werden in der abstrakten Interpretation als Soliditätsbedingungen bezeichnet. In dem speziellen Fall, dass und eine Galois-Verbindung bilden, sind die Abstraktions- und Konkretisierungsbedingungen äquivalent. Im Allgemeinen sind sie nicht gleichwertig.α γ
Alles, was wir bisher getan haben, formalisiert nur den Begriff der Abstraktion zwischen zwei Strukturen. Die Dinge, die ich gesagt habe, lassen sich in der Sprache der Kategorietheorie viel prägnanter zusammenfassen. Ich habe Kategorien wegen Ihres obigen Kommentars vermieden.
Abstraktionshierarchien
Angenommen, wir haben eine Struktur die mit einer Vorbestellung und einigen Operationen ausgestattet ist. Wir können alle Strukturen so betrachten, dass eine Abstraktion von im obigen Sinne ist. Wenn wir haben, dass eine Abstraktion von und beide Abstraktionen von , haben wir drei Elemente der Hierarchie. Die Beziehung "ist eine Abstraktion von" ermöglicht es uns, eine Vorordnung zwischen Strukturen zu definieren. Nennen wir eine Familie von Strukturen, die nach Abstraktion geordnet sind, eine Hierarchie .N N M N 1 N 2 M.M N N M N1 N2 M
Wenn ich Ihr Beispiel betrachte, scheint Ihr abstrakter Deltamuskel ein Kandidat für das maximale Element in einer bestimmten Hierarchie zu sein. Ich bin mir nicht ganz sicher, da der abstrakte Deltamuskel eher eine Familie von Deltamuskeln als ein spezifischer Deltamuskel zu sein scheint.
Sie können jetzt verschiedene Hierarchien berücksichtigen. Die Hierarchie aller Deltamuskeln. Eine Unterhierarchie, die auf verschiedenen Überlegungen basiert, die Sie oben haben. Ein spezifisches Beispiel im abstrakten Interpretationskontext ist eine Hierarchie vollständiger Gitter, die in einer Galois-Verbindung mit einem gegebenen Powerset-Gitter stehen, und Unterhierarchien, die nur aus verteilenden oder nur booleschen Gittern bestehen.
Wie Martin Berger in den Kommentaren ausführt, wird dieser Begriff der Abstraktion zwischen Hierarchien durch den Begriff der Adjunktionen zwischen Kategorien erfasst.
Eine kategoriale Perspektive
In einem Kommentar wurden weitere Kommentare zu Kategorien angefordert. Dieser Kommentar ist nicht mehr da, aber ich werde trotzdem antworten.
Lassen Sie uns einen Schritt zurücktreten und uns ansehen, was Sie beim Entwerfen von Deltamuskeln tun und was ich oben aus einer allgemeineren Perspektive beschrieben habe. Wir sind daran interessiert, die wesentliche Struktur der Entitäten, die wir in einem Softwarekontext manipulieren, und die Beziehung zwischen diesen Entitäten zu verstehen.
Die erste wichtige Erkenntnis ist, dass wir nicht nur an einer Reihe von Elementen interessiert sind, sondern auch an den Operationen, die wir an diesen Elementen ausführen können, und an den Eigenschaften dieser Operationen. Diese Intuition treibt den Entwurf von Klassen in der objektorientierten Programmierung und die Definition algebraischer Strukturen voran. Sie haben diese Intuition bereits in der Definition eines Deltamuskels explizit gemacht, der einige interessante Operationen identifiziert hat. Im Allgemeinen ist dies der Denkprozess, der algebraischen Beschreibungen zugrunde liegt. Wir müssen herausfinden, was unsere Operationen sind und welche Eigenschaften sie haben. Dieser Schritt teilt uns die Typstruktur mit, mit der wir arbeiten.
Die zweite Erkenntnis ist, dass wir nicht nur an einer Reihe von Elementen interessiert sind, sondern auch an Abstraktionsbeziehungen. Die einfachste Formalisierung, die ich mir von Abstraktion vorstellen kann, besteht darin, eine vorbestellte Menge zu betrachten. Wir können uns eine vorbestellte Menge als eine strikte Verallgemeinerung einer Menge auf etwas vorstellen, das mit einem eingebrannten Begriff der Annäherung einhergeht.
Wir möchten idealerweise in einem Umfeld arbeiten, in dem beide oben genannten Erkenntnisse erstklassige Bürger sind. Das heißt, wir wollen eine typisierte Einstellung wie die einer Algebra, aber auch die approximationsbewusste Einstellung einer Vorbestellung. Ein erster Schritt in diese Richtung ist die Betrachtung eines Gitters. Ein Gitter ist eine konzeptionell interessante Struktur, da wir es auf zwei äquivalente Arten definieren können.
Ein Gitter ist somit eine mathematische Struktur, die aus der algebraischen oder der Approximationsperspektive angegangen werden kann. Das Manko dabei ist, dass die Elemente eines Gitters selbst keine Typstruktur besitzen, die in die Approximationsbeziehung einbezogen wird. Das heißt, wir können keine Elemente vergleichen, die auf dem Gedanken beruhen, mehr oder weniger strukturiert zu sein.
Im Kontext Ihres Problems können Sie sich Kategorien als eine natürliche Verallgemeinerung von Vorbestellungen vorstellen, die sowohl den Begriff der Approximation (in den Morphismen) als auch die Typstruktur in einer algebraischen Umgebung erfassen. Die Einstellung der Kategorietheorie ermöglicht es uns, auf verschiedene unnötige Unterscheidungen zu verzichten und uns auf die Struktur der Entitäten zu konzentrieren, die Ihnen wichtig sind, und auf die Annäherung an diese Struktur. Universelle Eigenschaften und Zusätze bieten Ihnen ein sehr leistungsfähiges Vokabular und Werkzeuge, um die Landschaft der Strukturen zu verstehen, an denen Sie interessiert sind, und ermöglichen eine rigorose mathematische Behandlung selbst intuitiver Begriffe wie verschiedener Abstraktionsebenen.
In Bezug auf meinen Kommentar zu abstrakten Deltamuskeln scheint es, dass Sie eine Kategorie wollen. Der abstrakte Deltamuskel ist eine spezifische Kategorie analog zur Kategorie der Mengen. Es gibt andere Kategorien, die Sie in Betracht ziehen. Ich dachte anfangs, Sie definieren einen Deltamuskel, der im Sinne der Kategorietheorie ein terminales (oder endgültiges) Objekt wäre.
Sie untersuchen die Art von Fragen, auf die die Kategorietheorie eine sehr zufriedenstellende Antwort liefert. Ich hoffe, dass Sie selbst zu diesem Schluss kommen können.
Verweise
quelle
Ich bin mir nicht sicher, ob Sie LaTeX- und Nokia-Mobiltelefone in der allgemeinen Theorie zu ernst nehmen wollen. Aber natürlich sollte Ihre Theorie auf solche Beispiele anwendbar sein (lassen Sie sich einfach nicht aufhängen, wenn Sie feststellen, dass Mobiltelefone keine genau definierte Semantik haben).
Sie ändern sich wirklich, indem Sie auf einer vorgegebenen Technologie bestehen (von Ihrem Berater?), Wie es aussieht.
quelle