Tipi di proprietà e logica di separazione


10

I tipi di proprietà e la logica di separazione sembrano avere obiettivi simili, controllo sulla proprietà e aliasing. Forse dovrei anche aggiungere: la capacità di scrivere specifiche modulari.

Cosa si sa della relazione tra i tipi di proprietà e la logica di separazione?


Sembra vagamente familiare.
Dave Clarke,

@DaveClarke: la mia risposta ha senso per te? Hai lavorato molto sulla proprietà e l'ho fatto solo un po 'prima di passare alla logica della separazione.
Neel Krishnaswami il

@NeelKrishnaswami: la tua risposta ha molto senso. Ho intenzione di colmare alcune lacune quando riesco a trovare il tempo. In ogni caso, non sono a conoscenza di alcun documento che faccia un confronto significativo.
Dave Clarke,

Risposte:


7

Di recente ho finito di scrivere un sondaggio sui tipi di proprietà e ho trovato ben poco che discute la relazione tra i due argomenti. I tre articoli più vicini che ho incontrato sono i seguenti, che curiosamente provengono dalla stessa conferenza:

  • Yang Zhao e John Boyland. Un'interpretazione di autorizzazione fondamentale per i tipi di proprietà. Nel secondo simposio internazionale IEEE / IFIP sugli aspetti teorici dell'ingegneria del software, TASE 2008, 17-19 giugno 2008, Nanchino, Cina. IEEE Computer Society, 2008., pagine 65–72.

  • Shuling Wang, Luís Soares Barbosa e José Nuno Oliveira. Un modello relazionale per la logica di separazione limitata. In In Secondo simposio internazionale IEEE / IFIP sugli aspetti teorici dell'ingegneria del software, TASE 2008, 17-19 giugno 2008, Nanchino, Cina. IEEE Computer Society, 2008., pagine 263–270.

  • Shuling Wang e Zongyan Qiu. Un modello generico per il confinamento e la sua applicazione. In In Secondo simposio internazionale IEEE / IFIP sugli aspetti teorici dell'ingegneria del software, TASE 2008, 17-19 giugno 2008, Nanchino, Cina. IEEE Computer Society, 2008., pagine 57–64.

Il primo documento codifica due stili di tipi di proprietà, vale a dire i proprietari come dominatori e i proprietari come blocchi, in termini di autorizzazioni frazionarie di Boyland, che sono un sistema di capacità sviluppato per ragionare sui programmi.

Il secondo documento prende idee di confinamento simili a quelle utilizzate nei tipi di proprietà e le aggiunge alla logica di separazione.

Il terzo documento ha sviluppato un approccio semantico che viene utilizzato per codificare varie discipline di confinamento come i tipi di proprietà. Non sono sicuro che il loro sistema copra anche la logica di separazione e al momento non posso accedervi. Il loro approccio è piuttosto ad hoc; può essere visto come più formale e sistematico di un articolo che ho scritto qualche tempo fa con James Noble e altri:

  • Verso un modello di incapsulamento James Noble, Robert Biddle, Ewan Tempero, Alex Potanin, Dave Clarke Il primo seminario internazionale su aliasing, confinamento e proprietà nella programmazione orientata agli oggetti (IWACO), 2003.

9

Il modo in cui capisco la differenza è che i tipi di proprietà vincolano la forma del grafico a oggetti e che i sistemi sottostrutturali (come la logica di separazione) gestiscono le autorizzazioni per accedere all'heap .

odododod

Al contrario, i sistemi sottostrutturali come i tipi lineari e la logica di separazione si basano sull'idea delle risorse . Ogni regione dell'heap è una risorsa e se non si possiede la risorsa non è possibile toccarla. Questo rende le condizioni del telaio molto facili: tengono sempre.

Una differenza superficiale (che tuttavia mi ha confuso a lungo) era che i tipi di proprietà erano tipi e la logica di separazione era una logica di programma. Fortunatamente, mentre i tipi di proprietà sono nati in un'impostazione teorica dei tipi, le persone hanno applicato queste idee anche per programmare le logiche.

I due principali lavori teorici che conosco sono il lavoro di Kassios su frame dinamici , che Bannerjee e Naumann (e i loro studenti) hanno sistematicamente sfruttato nel loro lavoro sulla logica regionale .

A quanto ho capito, il loro approccio di base è prendere la logica Hoare e quindi:

  1. Aggiungi un nuovo tipo di variabili di regione, che puoi utilizzare per associare oggetti e regioni.
  2. Aggiungi un sistema di effetti alla logica Hoare per tracciare le regioni che legge e scrive il tocco.
  3. Usa gli effetti per determinare se un'asserzione rispetta o meno il frame. Se lo è, puoi inquadrarlo e, in caso contrario, non puoi.

Ogni approccio ha vantaggi e punti deboli.

  • La proprietà rende le proprietà della trama significativamente meno convenienti da usare rispetto agli approcci strutturali, poiché è necessario calcolare le condizioni della trama.

  • D'altro canto, gli algoritmi sui DAG supportano prove induttive più belle in uno stile proprietario, poiché è possibile separare l'impronta dalla struttura del puntatore. In una specifica in stile separazione, la cosa naturale è dare un invariante induttivo su un albero che si estende. Ma se l'albero di spanning che l'algoritmo calcola è sempre diverso da quello che ha il tuo invariante, ti trovi in ​​un mondo di dolore.

Il mio senso generale è che la separazione è più facile da usare della proprietà, poiché abbiamo bisogno di proprietà frame per quasi tutti i comandi di un programma imperativo. (Dave Naumann sostiene che la logica di regione è più suscettibile all'automazione, poiché la logica di asserzione rimane semplicemente vecchia FOL, e quindi è possibile utilizzare dimostratori di teoremi standardizzati e risolutori di SMT.)

EDIT: ho appena trovato il seguente articolo di Matt Parkinson e Alex Summers, The Relationship Between Separation Logic e Implicit Dynamic Frames , in cui affermano di fornire una logica che unifica i due metodi.


Grazie mille per le tue intuizioni, Neel. Tuttavia, mi sono chiesto il rapporto tra i due paradigmi, piuttosto che le differenze . Quindi terrò la domanda aperta per ora.
Uday Reddy,
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.