Introduction
I'm writing my PhD thesis on Abstract Delta Modeling (ADM), an abstract algebraic description of modifications (known as deltas) able to act on products (as in 'software products'). This can be used to organize a set of related products (a 'product line') as a simple core product and a set of conditionally applied deltas, and thus enable greater re-use of the underlying artefacts.
The details of delta modeling are not really important to my question, but ADM serves as a good example to explain the issue, so I will introduce the most important concepts.
Background
The main structure of interest is the deltoid $(\mathcal P, \mathcal D, \cdot, \epsilon, \mathbf{[\kern-1pt[-]\kern-1pt]})$. Products come from a universal set $\mathcal P$. Deltas come from a monoid $(\mathcal D, \cdot, \epsilon)$ with composition operator $\cdot : \mathcal D \times \mathcal D \to \mathcal D$ and neutral element $\epsilon \in \mathcal D$. The semantic evaluation operator $\mathbf{[\kern-1pt[-]\kern-1pt]} : \mathcal D \to 2^{\mathcal P \times \mathcal P}$ transforms a 'syntactic' delta $d \in \mathcal D$ into a relation $\mathbf{[\kern-1pt[}\,d\,\mathbf{]\kern-1.5pt]} \subseteq \mathcal P \times \mathcal P$ which decides how $d$ can modify a product.
Question
As ADM is an abstract algebra, most of my work abstracts from the concrete nature of products and deltas, and a number of results are proved without descending to a more concrete level. Those results are expected to carry over to a more concrete domain, but I haven't formalized this yet.
There are examples and case studies that do work in a concrete domain: object oriented source-code, $\small\mathrm{\LaTeX}$ code, natural numbers, mobile phone profiles, etc. There are also some intermediate stages of abstraction such as nested key-value pairs. For each I redefine (or 'refine') $(\mathcal P, \mathcal D, \cdot, \epsilon, \mathbf{[\kern-1pt[-]\kern-1pt]})$.
I'd like to make this hierarchy explicit: (1) to provide greater clarity for the reader and (2) to formally justify using results from more abstract levels.
My question: How should I formally organize these levels of abstraction?
I'm hoping to be able to reason with a simple refinement relation $\sqsubseteq$ on deltoids. And I feel like it could be defined simply by appealing to the subset relation on $\mathcal P$ and $\mathcal D$. But I'm not sure yet. Are there existing approaches to the kind of problem I'm describing? Publications I should read?
The Deltoid Hierarchy
To give you a better idea of what I mean, here's the deltoid abstraction hierarchy I have in mind:
- Abstract Deltoid: This is the basic deltoid in which products and deltas can still be anything. Most of the theory is based on this one and most results are proved on this level.
- Relational Deltoid: Here, deltas are relations on $\mathcal P$ and $\mathbf{[\kern-1pt[-]\kern-1pt]}$ is the identity function.
- Functional Deltoid: Here, deltas are functional (or 'deterministic').
- Natural Number Deltoid: This is the simplest concrete deltoid, created just to illustrate deltoid refinement. Here, products $\mathcal P = \mathbb N$ are natural numbers and deltas $\mathcal D = \mathbb N^+$ are simple number sequences representing polynomial operations.
- Nested Key-Value Pair Deltoid: An intermediate level of abstraction for any hierarchy in which keys are mapped to values or to sub-hierarchies. Deltas can perform modifications in this 'tree' at any depth.
- OOP Deltoid: For abstract representations of object-oriented programs. They are basically nested key-value pairs, because programs map module-names to sets of classes, which map class-names to sets of methods, which map method-names to method-implementations.
- ABS Deltoid: ABS is a real object oriented programming language.
- Phone Profile Deltoid: Here, a product is a flat mapping of settings (such as volume, screen brightness, etc.) to values from a corresponding domain.
- OOP Deltoid: For abstract representations of object-oriented programs. They are basically nested key-value pairs, because programs map module-names to sets of classes, which map class-names to sets of methods, which map method-names to method-implementations.
- $\small\mathrm{\LaTeX}$ Deltoid: Products are $\small\mathrm{\LaTeX}$ documents and deltas modify them by redefining macros.
- Relational Deltoid: Here, deltas are relations on $\mathcal P$ and $\mathbf{[\kern-1pt[-]\kern-1pt]}$ is the identity function.
Well, that should give you a fair idea of what I have in mind. Note, by the way, that for any deltoid, $\mathbf{[\kern-1pt[-]\kern-1pt]}$ is a monoid homomorphism from $\mathcal D$ to the $\mathcal D'$ belonging to the corresponding relational deltoid.
The actual hierarchy may be larger. It may also be differently organized, based on what kind of refinement theory I'll use. For example, if I go for a simple subset-relation on $\mathcal P$ and $\mathcal D$ the ABS Deltoid would not fit under the Nested Key-Value Pair Deltoid, for its products and deltas are actually plain text (source-code). But the hierarchy as given may still work if I use homomorphisms.