Credo che sarebbe utile per te cercare la teoria dell'interpretazione astratta, che fornisce risposte molto approfondite a domande simili nell'area leggermente diversa dell'analisi del programma basata sul reticolo.
Mi sembra che tu stia usando un framework basato su algebre. Sto usando la parola algebra qui nel senso di algebra universale, dove presumo che i vincoli sulla struttura dell'algebra siano dati dalle uguaglianze tra i termini. Esistono due sensi diversi in cui astrazioni (o gerarchie) entrano nel quadro.
- Astrazione come relazione tra due algebre specifiche. Potresti voler dire che una algebra ha una struttura più ricca di un'altra algebra o che ogni problema che puoi risolvere con una algebra che puoi risolvere con l'altra. Questo tipo di relazione è ciò che sarebbe formalizzato comprare omomorfismi, o qualche altra mappatura tra algebre.
- Gerarchie di astrazione come famiglie di algebre. Nel tuo caso, queste sarebbero famiglie di deltoidi con determinate proprietà. Come esempio più generale, considerare tutti i set parzialmente ordinati. Possiamo pensare a reticoli, reticoli distributivi e reticoli booleani come una sequenza di sottofamiglie che hanno proprietà più ricche.
Le due nozioni sono strettamente correlate ma diverse.
Astrazione tra due strutture
L'intuizione dell'interpretazione astratta è che è utile dotare le strutture che consideri con una nozione di ordine. Considera due strutture
( N , f N ) f M : M → M f N : N → N(M,fM) e , con e come operazioni di interesse.(N,fN)fM:M→MfN:N→N
Un omomorfismo nel senso universale dell'algebra sarebbe simile a questo:
h ( f M ( a ) ) = f N ( h ( a ) )h:M→N è una funzione che soddisfa l'uguaglianza .h(fM(a))=fN(h(a))
Possiamo vedere le due strutture che appaiono sopra come strutture preordinate
( N , = , f N )(M,=,fM) e(N,=,fN)
e l'omomorfismo che possiamo riscrivere per essere una funzione soddisfacente
- che se allora eh ( a ) = h ( b )a=bh(a)=h(b)
- per tutti in , .aMh(fM(a))=fN(h(a))
Supponiamo ora di avere qualche altra nozione di approssimazione disponibile che abbia un senso. Ad esempio, quando abbiamo a che fare con insiemi di stati nella verifica del programma, l'inclusione dei sottoinsiemi ha senso per determinate applicazioni o quando si tratta di formule nella deduzione automatizzata, le implicazioni hanno un senso. Più in generale, possiamo considerare
(M,⪯,fM) e , dove e sono preordini.(N,⊑,fN)⪯⊑
Ora, invece dell'omomorfismo, possiamo avere una funzione di astrazione
α:M→N che è
- monotona, nel senso che ogni volta che abbiamo , ea⪯bα(a)⊑α(b)
- semi-commuta con operazioni: per tutti in .α(fM(a))⊑fN(α(a))aM
La funzione di astrazione rende esplicita l'idea che se la struttura su è un'astrazione della struttura su , la valutazione di un termine in non può produrre risultati più precisi (rispetto alla nozione di approssimazione in ) rispetto alla valutazione dello stesso termine in e quindi la mappatura a .NMNNMN
Ora possiamo chiedere se è necessario affrontare il problema in termini di astrazione piuttosto che di raffinatezza. Significato, non possiamo dire che è un raffinamento di e formula condizioni in termini di termini. Questo è esattamente ciò che fa una funzione di concretizzazione .MN
Una funzione di concretizzazione è monotona e soddisfa la disuguaglianza .γ:N→MfM(γ(b))⪯γ(fN(b))
Le condizioni di astrazione e concretizzazione sono chiamate condizioni di solidità nell'interpretazione astratta. Nel caso speciale che e formino una connessione di Galois, le condizioni di astrazione e concretizzazione sono equivalenti. In generale, non sono equivalenti.αγ
Tutto ciò che abbiamo fatto finora formalizza solo la nozione di astrazione tra una coppia di strutture. Le cose che ho detto possono essere riassunte in modo molto più sintetico nel linguaggio della teoria delle categorie. Ho evitato le categorie a causa del tuo commento sopra.
Gerarchie di astrazione
Supponiamo di avere una struttura dotata di un preordine e di alcune operazioni. Possiamo considerare tutte le strutture tali che è un'astrazione di nel senso sopra. Se abbiamo che è un'astrazione di ed entrambi sono astrazioni di , abbiamo tre elementi della gerarchia. La relazione "è un'astrazione di" ci consente di definire un preordine tra le strutture. Chiamiamo una famiglia di strutture ordinate per astrazione una gerarchia .MNNMN1N2M
Se considero il tuo esempio, sembra che il tuo deltoide astratto possa essere un candidato per l'elemento massimo in qualche gerarchia. Non sono del tutto sicuro perché il deltoide astratto sembra essere una famiglia di deltoidi piuttosto che un deltoide specifico.
Quello che ora puoi fare è considerare diverse gerarchie. La gerarchia di tutti i deltoidi. Una sotto-gerarchia basata su varie considerazioni che hai sopra. Un esempio specifico nel contesto dell'interpretazione astratta è una gerarchia di reticoli completi che si trovano in una connessione di Galois con un determinato reticolo di powerset e sotto-gerarchie costituite solo da reticoli distributivi o solo booleani.
Come sottolinea Martin Berger nei commenti, questa nozione di astrazione tra gerarchie viene catturata da quella delle aggiunte tra le categorie.
Una prospettiva categorica
C'è stato un commento che richiede ulteriori commenti sulle categorie. Quel commento non c'è più, ma risponderò comunque.
Facciamo un passo indietro e guardiamo a ciò che state facendo nella progettazione di deltoidi e ciò che ho descritto sopra da una prospettiva più generale. Siamo interessati a comprendere la struttura essenziale delle entità che manipoliamo in un contesto software e la relazione tra queste entità.
La prima importante realizzazione è che non ci interessa solo un insieme di elementi, ma le operazioni che possiamo eseguire su quegli elementi e le proprietà di tali operazioni. Questa intuizione guida la progettazione di classi nella programmazione orientata agli oggetti e la definizione di strutture algebriche. Hai già reso esplicita questa intuizione nella definizione di un deltoide che ha identificato alcune operazioni di interesse. Più in generale, questo è il processo di pensiero alla base delle descrizioni algebriche. Dobbiamo identificare quali sono le nostre operazioni e quali proprietà hanno. Questo passaggio ci dice la struttura del tipo con cui stiamo lavorando.
La seconda realizzazione è che non ci interessa solo un insieme di elementi, ma relazioni di astrazione. La formalizzazione più semplice che posso immaginare di astrazione è quella di considerare un set preordinato. Possiamo pensare a un set preordinato come una generalizzazione rigorosa di un set a qualcosa che viene fornito con una nozione di approssimazione.
Vogliamo idealmente lavorare in un ambiente in cui entrambe le intuizioni di cui sopra sono cittadini di prima classe. In altre parole, vogliamo un'impostazione tipizzata come quella di un'algebra, ma anche un'impostazione consapevole dell'approssimazione di un preordine. Un primo passo in questa direzione è considerare un reticolo. Una grata è una struttura concettualmente interessante perché possiamo definirla in due modi equivalenti.
- Possiamo definire un reticolo equazionalmente come un insieme dotato di un'operazione di incontro e di unione. Possiamo quindi derivare l'ordine parziale definendo da conservare ogni volta che .a ⊑ b a ⊓ b = a(L,⊓,⊔)a⊑ba⊓b=a
- Un'alternativa è definire un reticolo come un insieme parzialmente ordinato soddisfacendo che ogni coppia di elementi in ha un limite inferiore maggiore e un limite superiore unici. Possiamo quindi derivare le operazioni di incontro e partecipazione dall'ordine parziale.L(L,⊑)L
Un reticolo è quindi una struttura matematica che può essere affrontata dalla prospettiva algebrica o di approssimazione. Il difetto qui è che gli stessi elementi di un reticolo non possiedono una struttura di tipo che viene presa in considerazione nella relazione di approssimazione. Significato, non possiamo confrontare elementi basati sulla nozione di avere più o meno struttura.
Nel contesto del tuo problema, puoi pensare alle categorie come a una generalizzazione naturale dei preordini che catturano sia la nozione di approssimazione (nei morfismi) sia la struttura dei tipi in un contesto algebrico. L'impostazione della teoria delle categorie ci consente di rinunciare a varie distinzioni inutili e di concentrarci sulla struttura delle entità a cui tieni e sull'approssimazione di quella struttura. Le proprietà e le aggiunte universali ti offrono un vocabolario e strumenti molto potenti per comprendere il panorama delle strutture che ti interessano e consentono un rigoroso trattamento matematico di nozioni anche intuitive come i diversi livelli di astrazione.
Per quanto riguarda il mio commento sui deltoidi astratti, sembra che ciò che desideri sia una categoria. Il deltoide astratto è una categoria specifica analoga alla categoria di insiemi. Ci sono altre categorie che stai prendendo in considerazione. Inizialmente pensavo che stessi definendo un deltoide che, nel senso della teoria delle categorie, sarebbe stato un oggetto terminale (o finale).
Stai studiando il tipo di domande a cui la teoria delle categorie fornisce risposte molto soddisfacenti. Spero che tu possa arrivare a questa conclusione da solo.
Riferimenti
- Interpretazione astratta e applicazione a programmi logici , Patrick Cousot e Radhia Cousot. La prima metà di questo articolo è un'introduzione generale in stile tutorial al tema dell'interpretazione astratta.
- Quadri interpretativi astratti , Patrick Cousot e Radhia Cousot. Questo articolo discute dettagliatamente tutte le possibilità che ho citato sopra riguardo alle funzioni di astrazione e concretizzazione.
- Progettazione sistematica di quadri di analisi del programma , Patrick Cousot e Radhia Cousot. Questo è stato il documento che ha introdotto la nozione di gerarchie di astrazioni nel contesto dell'analisi del programma.
- Forte conservazione generalizzata di interpretazione astratta , Francesco Ranzato e Francesco Tapparo. Questo documento applica queste idee in un diverso contesto di astrazioni che preservano le formule della logica temporale. Qui troverai esempi funzionanti di astrazioni booleane e distributive.
- Interpretazione astratta, relazioni logiche ed estensioni Kan , Samson Abramsky. Presenta una prospettiva teorica di categoria sul materiale teorico dell'ordine sopra.