Rappresentazione formale di una gerarchia di astrazione


9

introduzione

Sto scrivendo la mia tesi di dottorato su Abstract Delta Modeling (ADM), una descrizione algebrica astratta di modifiche (note come delta ) in grado di agire sui prodotti (come nei "prodotti software"). Questo può essere usato per organizzare una serie di prodotti correlati (una "linea di prodotti") come un semplice prodotto di base e una serie di delta applicati condizionatamente, e quindi consentire un maggiore riutilizzo dei manufatti sottostanti.

I dettagli della modellazione delta non sono molto importanti per la mia domanda, ma ADM è un buon esempio per spiegare il problema, quindi introdurrò i concetti più importanti.

sfondo

La principale struttura di interesse è il deltoide . I prodotti provengono da un insieme universale . Delta provengono da un monoide con operatore composizione ed elemento neutro . L'operatore di valutazione semantica trasforma un delta 'sintattico' in una relazioneP ( D , , ϵ ) : D × DD ϵ D [(P,D,,ϵ,[[]])P(D,,ϵ):D×DDϵD d D [[[]]:D2P×PdD[[d]]P×Pche decide come può modificare un prodotto.d

Domanda

Poiché ADM è un'algebra astratta, la maggior parte del mio lavoro si sottrae alla natura concreta di prodotti e delta e numerosi risultati vengono dimostrati senza scendere a un livello più concreto. Si prevede che questi risultati verranno trasferiti in un dominio più concreto, ma non l'ho ancora formalizzato.

Ci sono esempi e case study che funzionano in un dominio concreto: codice sorgente orientato agli oggetti, codice , numeri naturali, profili di telefoni cellulari, ecc. Ci sono anche alcune fasi intermedie di astrazione come nidificate coppie chiave-valore. Per ogni ridefinisco (o 'raffina') . ( P , D ,,ϵ, [LATEX(P,D,,ϵ,[[]])

Vorrei rendere esplicita questa gerarchia: (1) per fornire maggiore chiarezza al lettore e (2) per giustificare formalmente l'uso di risultati da livelli più astratti.

La mia domanda: come dovrei organizzare formalmente questi livelli di astrazione?

Spero di riuscire a ragionare con una semplice relazione di perfezionamento sui deltoidi. E mi sento come potrebbe essere definito semplicemente facendo appello al rapporto sottoinsieme sul e . Ma non ne sono ancora sicuro. Esistono approcci al tipo di problema che sto descrivendo? Pubblicazioni che dovrei leggere?P DPD

La gerarchia deltoide

Per darti un'idea migliore di cosa intendo, ecco la gerarchia di astrazioni deltoide che ho in mente:

  • Deltoide astratto : questo è il deltoide di base in cui prodotti e delta possono ancora essere qualsiasi cosa. La maggior parte della teoria si basa su questo e la maggior parte dei risultati sono dimostrati a questo livello.
    • Deltoide relazionale : qui, i delta sono relazioni su e è la funzione identità. [P[[]]
      • Deltoide funzionale : qui, i delta sono funzionali (o "deterministici").
    • Deltoide numero naturale : questo è il deltoide concreto più semplice, creato proprio per illustrare la raffinatezza del deltoide. Qui, i prodotti sono numeri naturali e i delta sono semplici sequenze numeriche che rappresentano operazioni polinomiali.D = N +P=ND=N+
    • Deltoide coppia chiave-valore nidificato : un livello intermedio di astrazione per qualsiasi gerarchia in cui le chiavi sono mappate su valori o sotto-gerarchie. Delta può eseguire modifiche in questo 'albero' a qualsiasi profondità.
      • Deltoide OOP : per rappresentazioni astratte di programmi orientati agli oggetti. Sono sostanzialmente coppie nidificate chiave-valore, perché i programmi mappano i nomi dei moduli su insiemi di classi, che mappano i nomi delle classi su insiemi di metodi, che mappano i nomi dei metodi sulle implementazioni dei metodi.
        • ABS Deltoid : ABS è un vero linguaggio di programmazione orientato agli oggetti.
      • Deltoide profilo telefono : qui, un prodotto è una mappatura semplice delle impostazioni (come volume, luminosità dello schermo, ecc.) Ai valori di un dominio corrispondente.
    • LATEX Deltoid : i prodotti sono documenti e i delta li modificano ridefinendo le macro.LATEX

Bene, questo dovrebbe darti una buona idea di ciò che ho in mente. Si noti, a proposito, che per ogni deltoide, è un omomorfismo monoide da al appartenente al corrispondente deltoide relazionale.D D[[]]DD

La gerarchia effettiva potrebbe essere più ampia. Potrebbe anche essere organizzato in modo diverso, in base al tipo di teoria della raffinatezza che userò. Ad esempio, se vado per una semplice relazione di sottoinsieme su e il deltoide ABS non si adatterebbe con il deltoide coppia chiave-valore nidificato, poiché i suoi prodotti e delta sono in realtà un testo semplice (codice sorgente). Ma la gerarchia come data potrebbe funzionare ancora se uso omomorfismi.DPD


3
Puoi renderlo più esplicito quale sia la gerarchia dell'astrazione? Quali cose sono astrazioni di quali altre cose?
Dave Clarke,

Ciao Dave! Ho aggiornato la mia domanda. Spero che questo chiarisca un po 'le cose.
mhelvens,

4
Che ne dici di costruire categorie per ogni tipo di deltoide, e quindi studiare i funzioni ausiliari sinistra e destra (se presenti) tra loro?
Martin Berger,

Temo di non essere esperto nella teoria delle categorie. :-(
mhelvens,

Risposte:


8

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.

  1. 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.
  2. 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:MMfN:NN

Un omomorfismo nel senso universale dell'algebra sarebbe simile a questo:

h ( f M ( a ) ) = f N ( h ( a ) )h:MN è 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

  1. che se allora eh ( a ) = h ( b )a=bh(a)=h(b)
  2. 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

α:MN che è

  1. monotona, nel senso che ogni volta che abbiamo , eabα(a)α(b)
  2. 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 .γ:NMfM(γ(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.

  1. 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,,)abab=a
  2. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Interpretazione astratta, relazioni logiche ed estensioni Kan , Samson Abramsky. Presenta una prospettiva teorica di categoria sul materiale teorico dell'ordine sopra.

Grazie per la tua risposta esauriente! E la mancanza di categorie è molto apprezzata. ;-) (In futuro dovrò studiare qualche teoria delle categorie intermedie.) Daremo un'occhiata ai tuoi riferimenti. - = # = - Nel frattempo, ho una domanda sulla tua affermazione "il deltoide astratto sembra essere una famiglia di deltoidi piuttosto che un deltoide specifico". Potresti spiegare in che modo il deltoide astratto è diverso in questo senso rispetto agli altri? Nessuna struttura algebrica può essere vista come la famiglia di tutti i suoi perfezionamenti?
mhelvens,

@VijayD Grazie per l'aggiornamento su CT. Sono il colpevole di fare il commento e poi cancellarlo. Sono profondamente convinto che CT sia più adatta al problema di OP. Sono ancora più convinto dopo aver visto il tuo aggiornamento. Penso che se l'OP non vuole farlo usando CT, lo farà qualcun altro.
scaaahu,

Sembra molto probabile che la teoria delle categorie fornisca le migliori risposte alle mie domande. E non vedo l'ora di studiarlo e capire meglio quelle risposte. E in effetti, la mia mancanza di tempo per studiare e applicare la teoria delle categorie non dovrebbe essere una scusa per dare una risposta "inferiore" su questo sito web. - = # = - Tuttavia, apprezzo molto la considerazione di Vijay. La sua risposta a livello di monoid era abbastanza utile. - = # = - Quindi non posso usare le categorie in questo momento. Ma esplorerò sicuramente l'opzione nei lavori futuri. Ringrazia tutti!
mhelvens,

Sei in una posizione eccellente per raccogliere l'argomento perché hai davanti a te un problema che capisci bene e puoi analizzare direttamente dal punto di vista categorico. Trovo che questo sia il modo migliore per imparare qualcosa e ti esorto a non ritardare perché i testi sulla teoria delle categorie sembrano intimidatori. Sono sicuro che ci sono porzioni di dimensioni ridotte da studiare. Buona fortuna per la difesa.
Vijay D,

9

Stai lavorando al tuo dottorato di ricerca. Dire "Non sono esperto in " non è una scusa. E se sei bravo, allora dire "il mio consulente non conosce " non è neanche una scusa.XXX

Stai usando i monoidi dove dovresti usare le categorie. Le tue operazioni monoid presuppongono che tu possa combinare qualsiasi insieme. Ma ha davvero senso, ad esempio, come si comporre "aggiungi involucro di plastica" e "aggiungi involucro di metallo"? Suppongo che alcuni dei risultati del tuo in relazioni vuote perché non hanno senso. Dovresti essere sospettoso di questo genere di cose.δδδ

Come osservatore interessato sembra che il monoide dovrebbe essere una categoria, quindi possiamo comporre due solo se ha senso che siano composti. Quindi la tua valutazione semantica è solo una funzione nella categoria di insiemi e relazioni. E poi vedi che ci sono molte altre categorie che potresti usare. I delta funzionali corrisponderanno a un funzione che si associa alla categoria di insiemi e funzioni, i numeri naturali deltoide è una funzione nel monoide dei polinomi sui numeri naturali (visto come una categoria), ecc.δ

Non sono sicuro che tu voglia formalizzare troppo seriamente i telefoni cellulari LaTeX e Nokia nella teoria generale. Ma ovviamente la tua teoria dovrebbe essere applicabile a tali esempi (semplicemente non rimanere bloccati quando scopri che i telefoni cellulari non hanno in realtà una semantica ben definita).

Stai davvero cambiando te stesso insistendo su una tecnologia predeterminata (dal tuo consulente?), Dall'aspetto di essa.


2
In generale sono d'accordo con te. E non ho mai usato né una scusa. :-) Ma in questo caso, la maggior parte della mia tesi è già stata scritta e il monoide è stato usato in tutte le mie pubblicazioni. - = # = - Detto questo, fai un punto eccellente. Nell'esempio dell'involucro di plastica / metallo, ora lo gestisco consentendo la composizione, ma facendo in modo che il delta risultante valuti la relazione vuota (come hai indovinato). È tutto ben definito, quindi per ora è sufficiente. Ma vedo che il tuo suggerimento è più elegante. Mi hai dato un'altra buona ragione per studiare la teoria delle categorie. Grazie!
mhelvens,

@mhelvens Sono un ingegnere informatico in pensione che vive nel settore da molto tempo. È tornato al TCS dopo il pensionamento. Ti farò una domanda di vita reale. Supponiamo che tu abbia formalizzato con successo i prodotti telefonici Nokia utilizzando il monoid nella tua tesi, che cosa hai intenzione di dire nella difesa orale se Apple annuncia che acquisisce Nokia? Quell'annuncio romperà il tuo modello? Mi sembra che più la teoria è generale, il modello migliore sarebbe.
scaaahu,

@scaaahu Domanda interessante. :-) Vorrei iniziare rispondendo: "No, per niente". La teoria è indipendente dal "tipo" di dispositivo. - = # = - Ti assicuro che non è necessario convincermi dei benefici della generalizzazione. (In effetti, penso che a volte esageri.) È proprio così che non mi sono imbattuto in teoria delle categorie in tempo utile per essere utile per il mio lavoro di dottorato. Come ho detto, concordo sul fatto che potrebbe essere un approccio prezioso. Ma a due mesi dalla scadenza della mia tesi non è il momento di cambiare radicalmente il mio approccio.
mhelvens,

Chiaramente, sei pronto per un post-dottorato ;-)
Andrej Bauer,

Domanda di sovvenzione già inviata. :-) Spero di poter continuare in questo campo.
mhelvens,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.