Espansione Eta nel calcolo del modello lambda


12

Klop, van Oostrom e de Vrijer hanno una carta sul calcolo lambda con motivi.

http://www.sciencedirect.com/science/article/pii/S0304397508000571

In un certo senso, uno schema è un albero di variabili, anche se lo sto solo pensando a una tupla di variabili nidificata, ad esempio ((x, y), z), (t, s)).

Nel documento hanno mostrato che se i motivi sono lineari, nel senso che nessuna variabile in un motivo si ripete, allora la regola

(\p . m) n = m [n/p]

dove p è un modello variabile e n è una tupla di termini con la stessa identica forma di p, è confluente.

Sono curioso di sapere se ci sono sviluppi simili in letteratura per il calcolo lambda con schemi e la regola eta aggiuntiva (espansione, riduzione o solo uguaglianza).

In particolare, per eta, intendo

m = \lambda p . m p

Più direttamente, sono curioso di sapere quali proprietà avrebbe un tale calcolo lambda. Ad esempio, è confluente?

Forza la chiusura della categoria di classificazione perché forza la proprietà

m p = n p implies m = n 

Usando la regola \ xi in mezzo. Ma forse qualcosa potrebbe andare storto?


Puoi scrivere cosa vuoi dire regola eta? A meno che non sia molto strano, dovresti essere in grado di codificarlo usando le somme e creare un argomento di simulazione.
Max Nuovo

2
@ MaxNew: sembra che stia chiedendo del calcolo non tipizzato. Tutto sui pattern funziona perfettamente con i tipi (suggerisco in modo modesto il mio Focusing on Pattern Matching ), ma il calcolo lambda non tipizzato è abbastanza diverso dal LC tipizzato (specialmente wrt eta) a cui non oso rispondere senza fare le prove .
Neel Krishnaswami,

@MaxNew: Cosa comporterebbe la codifica per somme?
Jonathan Gallagher,

@NeelKrishnaswami: in realtà sono interessato a entrambi. Penso di essere nervoso per avere variabili di un tipo di prodotto insieme alla regola eta. Penso che questo sia fatto, ad esempio dicosmo.org/Articles/JFP96.pdf . Ma se sbaglio, per favore correggimi. Quindi hai uguaglianze come \ lambda x .mx = m = \ lambda (p, q). m (p, q), ad esempio. Grazie per il link al tuo documento!
Jonathan Gallagher,

Risposte:


7

Questa non è una risposta completa; è un commento troppo grande.

Se estendi il calcolo lambda tipizzato con prodotti con eliminatori proiettivi (ovvero eliminatori di prodotti fst(e)e snd(e)), non ci sono praticamente problemi di sorta. La ragione per cui ci è voluto così tanto tempo è perché è più naturale fare espansioni di eta piuttosto che riduzioni di eta . Vedi Le virtù di Eta Expansion di Barry Jay .

Se si desidera che i prodotti abbiano un eliminatore di modelli

let (a,b) = e in t 

Quindi le cose sono più complesse. La principale difficoltà con la corrispondenza dei modelli sono le conversioni pendolari . Cioè, questi calcoli hanno l'equazione

C[let (a,b) = e in t] === let (a,b) = e in C[t]

e capire (a) quale contesto C[-]usare e (b) diventa difficile orientare questa equazione. IMO, lo stato dell'arte per gli approcci in stile riscrittura sono la Riscrittura Estensiva di Sam Lindley con Sums e l' equivalenza decisiva di Gabriel Scherer con Sums e il Tipo vuoto , entrambi i quali considerano il calcolo lambda tipizzato con prodotti e somme.

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.