Per quali lingue esiste già una teoria dell'equivalenza osservativa?


11

Per una prova di correttezza, sto cercando una nozione utilizzabile di equivalenza di programma per i sistemi di tipo puro (PTS) di Barendregt; manca quello, per sistemi di tipo abbastanza specifici. Il mio obiettivo è semplicemente usare la nozione, non investigarla per se stessa.

Questa nozione dovrebbe essere " estesa " - in particolare, per dimostrare che , dovrebbe essere sufficiente provare che per tutti i valori del tipo appropriato.t 1t1t2vt1vt2vv

Equivalenza denotazionale

L'equivalenza denotazionale soddisfa facilmente tutti i lemmi giusti, ma una semantica denotazionale per PTS arbitrari sembra piuttosto impegnativa - sembrerebbe difficile già per System F.

Equivalenza contestuale / osservativa

Le ovvie alternative sono quindi varie forme di equivalenza contestuale (due termini sono equivalenti se nessun contesto fondamentale li può distinguere), ma la sua definizione non è immediatamente utilizzabile; i vari lemmi non sono banali da dimostrare. Sono stati dimostrati per PTS? In alternativa, la teoria sarebbe una "ovvia estensione", o c'è motivo di credere che la teoria sarebbe significativamente diversa?

EDIT: non ho detto cosa è difficile sopra.

Parte facile: la definizione

Definire l'equivalenza non è troppo difficile, e la definizione appare in molti articoli (a partire almeno dallo studio Plotkin del 1975 sulla PCF, se non prima - la fonte potrebbe essere la tesi di dottorato di Morris del 1968). Abbiamo se per tutti i terrestri contesti , - che è, e danno lo stesso risultato . Hai alcune scelte qui con molte alternative: Ad esempio, in un linguaggio fortemente normalizzante, se hai un tipo di terreno di naturali, puoi dire che i contesti di terreno sono quelli che restituiscono i naturali, quindi significa che e C C [ t 1 ] C [ t 2 ] C [ t 1 ] C [ t 2 ] a b a bt1t2CC[t1]C[t2]C[t1]C[t2]ababvalutare con lo stesso numero. Con il non termine, per linguaggi ragionevoli è sufficiente usare "X terminate" come osservazione, perché se due programmi sono equivalenti quando si osserva la terminazione, sono anche equivalenti quando si osserva il risultato.

Parte difficile: le prove

Tuttavia, questi articoli spesso non spiegano quanto sia difficile usare effettivamente questa definizione. Tutti i riferimenti sotto mostrano come affrontare questo problema, ma la teoria necessaria è più difficile di quanto si pensi. Come dimostriamo che ? Facciamo effettivamente analisi di casi e induzione su contesti? Non vuoi farlo.t1t2

Come sottolinea Martin Berger, si desidera invece utilizzare la bisimulazione (come quella di Pitts) o una relazione di equivalenza logica (che Harper chiama semplicemente "equivalenza logica").

Infine, come si dimostra l'estensione come definito sopra?

Harper risolve queste domande in 10 pagine per System T, attraverso una notevole intelligenza e relazioni logiche. Pitts prende di più. Alcune lingue sono ancora più complesse.

Come gestirlo

In realtà sono tentato di rendere le mie prove condizionatamente a una teoria congetturata dell'equivalenza per PTS, ma le teorie attuali richiedono argomenti non banali, quindi non sono sicuro di quanto probabilmente una simile congettura sarebbe valida.

Sono a conoscenza (anche se non in dettaglio) dei seguenti lavori:

  • Andrew Pitts (ad esempio in ATTAPL per un sistema F esteso, e in alcuni articoli, come "Teorie operative sull'equivalenza del programma" di 58 pagine).
  • Fondamenti pratici dei linguaggi di programmazione (capitoli 47-48), che si ispira a Pitts (ma afferma di avere prove più semplici).
  • Uno studio logico dell'equivalenza del programma . Non riesco a trovare un abstract in inglese, ma sembra che stia spendendo molto sforzo per gli effetti collaterali (riferimenti), che sembra una complicazione ortogonale.

1
Per le teorie del tipo, definire una congruenza operativa contestuale dovrebbe essere facile, poiché tutti i programmi terminano. Definire una nozione di osservazione in un tipo di base (es. Terminazione, scritta , nel tipo Unit), quindi dire per tutti i contesti ben tipizzati e di chiusura di tipo base, abbiamo iff . Con i PTS è un po 'più complicato, poiché potrebbe non essere risolto. P Q C [ ] C [ P ] C [ Q ] PQC[]C[P]C[Q]
Martin Berger,

@MartinBerger: questa è l'idea a cui sto accennando, ma dimostrarlo direttamente è sorprendentemente difficile, perché è necessario fare prove per tutti i C (lo spiegherò meglio nella domanda). Inoltre, se tutti i programmi terminano, la definizione utilizzata, come indicato, identifica tutti i programmi.
Blaisorblade,

Il tuo PTS ha solo funzioni come tipi di calcolo? Se poi, allora questa eccellente domanda (e risposte) sembra indicare che l' equivalenza è sufficiente per terminare i sistemi di tipo puro - e spiega bene come definire l'equivalenza contestuale per terminare i calcoli. Penso che usare i valori di base sia il modo giusto per definire l'equivalenza contestuale e la terminazione è solo una comoda scorciatoia di merito discutibile. βη
Gasche

1
@Blaisorblade Siamo spiacenti, se usi la terminazione come osservabile, allora hai ragione. Mi dispiace, stavo tagliando e incollando la definizione per turing linguaggi deterministici completi. Se si dispone di funzioni di terminazione, è possibile utilizzare un osservabile di base diverso. Ad esempio ai booleani: ... iff C [ Q ] t r u e . La quantificazione in tutti i contesti è sempre un problema. Il modo standard di gestirlo è di definire una seconda relazione che (1) è correttaC[P]trueC[Q]truee (2) facile da gestire, ad esempio qualche nozione di bisimilarità o relazione logica. Dipende dall'applicazione.
Martin Berger,

1
@Blaisorblade Probabilmente. I teorici della concorrenza lo fanno intensamente da molto tempo, perché con i processi concorrenti è molto meno chiaro quale nozione di equivalenza usare. Ciò ha portato a una divisione del lavoro: utilizzare una semantica basata sulla riduzione con quantificazione su contesti per definire la nozione di equivalenza e quindi utilizzare bisimulazioni o tracce su transizioni etichettate per dimostrare l'equivalenza (o la sua assenza). Una grande domanda di ricerca aperta nella teoria della concorrenza è come passare dal primo al secondo algoritmicamente.
Martin Berger,

Risposte:


4

Una semantica denotazionale compositiva di un linguaggio di programmazione (teorico di dominio o teorico di gioco, ad esempio) èadeguatose termini semanticamente uguali implicano che sono equivalentemente osservazionali: [[[]] Accade spesso che sia molto più semplice calcolare denotazioni che provare l'equivalenza osservativa. Questa è una tecnica comune con molte varianti conosciute. L'adeguatezza è già definita nel documento PCF di Plotkin.

[[t1]]=[[t2]]t1t2.


Grazie per la risposta, ma -1: Mentre sono d'accordo, la domanda menziona i sistemi di tipo puro - AFAICS, una semantica denotazionale per sistemi di tipo puro è un problema aperto, quindi penso che una risposta dovrebbe puntare ad una semantica denotazionale. (In effetti, se avessi una semantica denotazionale, eliminerei del tutto quella operativa, come menzionato nella domanda). (Ma scusate per la domanda troppo lunga.)
Blaisorblade

@MartinBerger, non capisco le tue critiche. L'OP chiede metodi per mostrare l'equivalenza osservativa, ne cito uno comune, e poi obiettate che esistono altri modi che evitano il metodo?
Andrej Bauer l'

2
@ Blaisorblade, allora dovrai inventare una semantica denotazionale per sistemi di tipo puro, vero? :-) Ma più seriamente, chiederò ad Alex Simpson, che conoscerebbe meglio la semantica denotazionale per queste cose.
Andrej Bauer l'

@AndrejBauer Non voleva essere una critica, più un addendum.
Martin Berger,

2

η


1
Non credo che il dottorato di ricerca di Streicher riguardi PTS. Si tratta della semantica del calcolo delle costruzioni e dei risultati di indipendenza attraverso la semantica dell'affidabilità. Vedi qui .
Martin Berger,

Grazie per il chiarimento! Temo che il collegamento sia interrotto (e difficile da risolvere con il collegamento minimizzato).
cody

Il link era al sommario del libro qui . Spero che questo funzioni meglio.
Martin Berger,

λ

@MartinBerger: intendi semantica di realizzabilità?
Dominique Devriese,

0

Questa risposta suggerisce un approccio al problema. (Il feedback è il benvenuto).

Il capitolo 49 di PFPL discute, contemporaneamente, le nozioni equivalenti di equivalenza osservativa ed equivalenza logica. L'equivalenza logica è la stessa relazione utilizzata per dichiarare la parametricità, quindi il nucleo del capitolo è una prova della parametricità per il Sistema F.

Il lavoro sulla parametricità per PTS, AFAICT, non discute la relazione con l'equivalenza osservativa. In effetti, per definire anche l'equivalenza osservativa, a meno che tu non abbia un termine, devi usare un tipo di terreno positivo (naturale, booleano) da usare per le osservazioni.

Tuttavia, il teorema chiave (PFPL 47.6, 48.3, 49.2) per mettere in relazione le due relazioni è dimostrato indipendentemente dalla lingua specifica:

L'equivalenza osservativa è la congruenza coerente più grossolana sulle espressioni.

Quindi, per dimostrare che l'equivalenza logica implica l'equivalenza osservativa, è sufficiente dimostrare che l'equivalenza logica è una congruenza coerente. Tuttavia, l'altra direzione richiede un po 'più di lavoro: in particolare, per dimostrare che l'equivalenza logica è una congruenza, si procede per induzione su contesti.

n + 1 = 1 + nVecN nnVecNVecNn+1=1+nVec (n + 1)Vec (1 + n)n + 11 + n

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.