Qual è la differenza tra strategie di riduzione e strategie di valutazione?


10

Dalla strategia di valutazione articolo su Wikipedia:

Il concetto di strategia di riduzione nel calcolo lambda è simile ma distinto.

Dalla strategia di riduzione articolo su Wikipedia:

È simile ma sottilmente diverso dal concetto di strategia di valutazione nell'informatica.

Qual è la sottile distinzione tra strategie di valutazione e strategie di riduzione a cui accennano questi due articoli? Sono solo due concetti simili di domini diversi?


3
La valutazione è definita solo per termini chiusi e non rientra nei raccoglitori. La riduzione è autorizzata ad andare sotto i raccoglitori e quindi è definita per termini aperti.
Neel Krishnaswami,

Risposte:


8

Una strategia di riduzione è una funzione su Lambda che seleziona un redex (espressione riducibile) da tutti i redex possibili - a seconda di ciò che definisci redex.

Informalmente, una strategia di valutazione è l'ordine in cui una lingua valuta i suoi argomenti. Una strategia di passaggio dei parametri è ciò che il linguaggio passa alla funzione.

Per capire la connessione tra questi, studia il documento di Plotkin su Call-by-name, call-by-value e sul calcolo lambda. Spiega chiaramente che si desidera scegliere AXIOM distinti in base all'ordine di valutazione desiderato. Per il nome Cb vuoi il vecchio assioma beta e per il valore cb vuoi un assioma valore beta. Se lo fai, tutti i meta-teoremi funzionano allo stesso modo per entrambi i gusti. Più tardi ho dimostrato (con molti collaboratori) che questa idea si generalizza a tutto ciò che il mondo di PL ha studiato.

È tutto tecnico, non una poesia che può essere interpretata. Basta leggere su di esso.

- Matthias Felleisen

ps Dirò che penso che le persone avranno un tempo più semplice per capire il documento di Plotkin tratto dalla prima parte del nostro libro Redex. Ma sì, è 3 volte più lungo.



Per riformulare, diresti che è corretto affermare che una strategia di riduzione determina completamente il successore per un termine, mentre una strategia di valutazione specifica solo come si riducono le astrazioni applicate (non dire nulla sulle congruenze, diciamo)?
Guido,

6

L'articolo di "Strategia di riduzione" di Wikipedia è interamente estratto da una particolare modifica apportata da un IP anonimo all'articolo "Strategia di valutazione".

L'opinione che rappresenta non è consensuale, nel senso che sospetto che relativamente poche persone del settore daranno spontaneamente questa risposta se chiedessi loro "distingueresti i nomi" strategia di riduzione "e" strategia di valutazione "?". L'ho sentito solo da Matthias Felleisen, che è irremovibile sull'importanza di questa distinzione - e presumo che questo punto di vista sia condiviso da altri che hanno avuto la possibilità di dedicare del tempo a discutere questi punti in dettaglio con lui.

La mia attuale comprensione di questo punto (ma non ho ancora studiato i dettagli tecnici per la loro piena giustizia) riguarda quanto segue: si tratta di utilizzare la semantica "grande passo" contro "piccolo passo" - questa distinzione è standard e compresa da tutti nel settore. La semantica a piccoli passi definisce un passo atomico di riduzione e il risultato è generalmente ancora riducibile. La semantica big-step definisce un "grande" passo di riduzione che va dal programma iniziale al suo valore (o qualche tipo di "risposta" più ricco se la tua lingua ha altri effetti osservabili rispetto alla restituzione di un valore, ad esempio input / output o stato mutabile).

Se si definisce una relazione sia a passo grande che a passo piccolo, è possibile verificare che la semantica a passo grande sia inclusa nella chiusura transitiva della relazione a passo piccolo e che la relazione a passo piccolo non si riduca ad altri termini bloccati rispetto a quelli raggiunti dalla relazione big step o divergono se viene definita la riduzione big step. Questa è la relazione di coerenza attesa tra entrambi.

Penso che la formulazione dell'articolo possa essere più o meno descritta, in termini moderni, come "la strategia di valutazione è la relazione a grandi passi", "la strategia di riduzione è la relazione a piccoli passi". Si noti che la discussione fatta nell'articolo "Strategia di riduzione" riguarda principalmente articoli e ricerche (e, soprattutto, punti di vista eloquenti formati durante la loro lettura e scrittura) tra il 1973 e il 1991, in un momento in cui tali nozioni erano appena nate, e probabilmente non così ben compreso come lo sono oggi. (la semantica del grande passo è stata enfatizzata da Kahn nel 1987 e uno dei lavori più importanti sulla semantica del piccolo passo è Wright e Felleisen, 1992)

Per il lato più supponente del motivo per cui Felleisen insiste sull'importanza di questa differenza (vale a dire, perché potrebbe esserci qualcosa di più di un semplice "piccolo passo contro grande, meh"), la mia attuale comprensione è la seguente: il punto che si sta facendo è che la semantica a piccoli passi dovrebbe essere vista come un dettaglio di implementazione. Illa semantica, secondo questo argomento, è la funzione astratta che mappa ogni programma al suo valore / risposta, e il resto sono dispositivi di implementazione progettati per approssimarlo (o ragionare sull'equivalenza indotta da questa semantica). Quando diciamo un grande passo oggi, pensiamo a un sistema di regole di inferenza di natura sintattica, ma la "strategia di riduzione" che è discussa sopra è in realtà la sua astrazione come una mappatura. (Non penso che questo dia più espressività o forza alla nozione in pratica, ma la rende più astratta.)

Quindi penso che ciò che questa pagina di Wikipedia, e Matthias Felleisen, stiano dicendo sia qualcosa del tipo: "Definisci la tua valutazione nel modo che preferisci, ma alla fine la cosa che conta è come i tuoi programmi sono associati ai loro valori / risposte / comportamenti, e questo è ciò che dovrebbe essere chiamato "semantica operativa" e ragionato ".

Si noti che questa posizione è in qualche modo contraria all'attuale distinzione (che ritengo piuttosto consensuale, ma potrebbe essere un pregiudizio culturale da parte mia) tra "semantica operativa" e "semantica denotazionale", dove la prima è vista come più sintattica in natura (definito come una relazione di riduzione), e quest'ultimo è tipicamente caratterizzato dal fatto che i programmi computazionalmente equivalenti hanno la stessa identica denotazione (quindi la denotazione è ignara del meccanismo di calcolo effettivo). In quest'ultima prospettiva, ciò che viene proposto come una "strategia di valutazione" o "semantica operativa" negli articoli e la mia spiegazione sopra sarebbe piuttosto visto come una semantica denotazionale - ma è certamente di natura più concreta della maggior parte: valori / risposte / i comportamenti sono più vicini agli oggetti sintattici rispetto a molti domini semantici.

Riferimenti: per comprendere questo punto di vista, è probabilmente utile tornare alla sua proclamata fonte, che è l'articolo di Gordon Plotkin nel 1973. Potresti anche avere fortuna a provare uno di questi ultimi articoli citati su Wikipedia; Ho scoperto, ad esempio, che "Parameter-Passing and the Lambda Calculus", di Crank e Felleisen, 1991, ha fornito una panoramica molto chiara della loro posizione sull'argomento nelle prime pagine.

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.