Questa è una risposta parziale: non ho idea di quali errori o persone faccia riferimento a SICP. Posso solo fornire alcuni suggerimenti sul "perché" la ridenominazione variabile può essere dolorosa da gestire con precisione.
Prima di tutto, sembra banale da definire. Ad esempio, possiamo rinominare le variabili associate in somme indicizzate
∑xe=∑y(e{y/x})
dove e è una qualsiasi espressione, e e{y/x} indica la sostituzione sintattica di ogni x con y . Trivial, vero?
Bene, se applichiamo ciecamente la regola sopra, otteniamo
∑x(x+y)=∑y(y+y)
Questo non è buono. Dobbiamo aggiungere il requisito " y non si verifica in e ", oppure otteniamo uno scontro di nomi.
Ora, considera questa ridenominazione corretta
∑x∑y(x+y)=∑x∑z(x+z)
xy
e{y/x}yeye
Definiamo quindi occorrenze gratuite:
free(x)={x}free(e+t)=free(e)∪free(t)free(∑xe)=free(e)∖{x}
Infine, cattura evitando la sostituzione:
- x{t/y}tx=yx
- (e+e′){t/y}=e{t/y}+e′{t/y}
- (∑xe){t/y}=??
x=yXΣXe
y≠ x( ∑Xe ) { t / y} = ∑X( e { t / y} )Xt
zyt∑xe(∑xe){t/y}=∑z(e{z/x}{t/y})
Spero di aver capito bene. (A proposito, il mio primo tentativo è stato sbagliato)
zz
αλx
Ora, immagina di dover affrontare questa complessa definizione ogni volta che vogliamo dimostrare qualcosa nella teoria PL. Potremmo, ma non vogliamo. È noioso, noioso, soggetto a errori, ingombra la prova e non fornisce informazioni al lettore. Per questo motivo, molti autori di PL semplicemente saltano i dettagli dicendo (o addirittura dando come scontato!) Che i termini debbano essere presi "fino alla ridenominazione delle variabili", che tutte le variabili associate siano assunte distinte da qualunque cosa debbano essere distinte, che assumiamo la "convenzione di Barendregt", o qualcosa dello stesso effetto.
Ad essere brutalmente onesto, questo è tradire le prove. Potremmo anche aggiungere "strizzatina d'occhio, sfioramento, non dire altro!" nello stesso spirito. Sostanzialmente chiediamo pietà e diciamo al lettore: "guarda, questo è noioso, non voglio farlo, non vuoi leggerlo - entrambi sappiamo che, con un grande sforzo, potremmo riscrivere questa prova a includi tutti i dettagli ".
Tecnicamente, è possibile sfruttare questa scorciatoia per dimostrare una dichiarazione falsa. L'esperto revisore delle prove, tuttavia, sa cosa è "moralmente buono" e potrebbe renderlo perfetto (con grande sforzo) e cosa è sospetto. Questi ultimi potrebbero includere qualcosa che dipende dalla scelta effettiva di Bound nomi (quindi stiamo non lavorando davvero "fino a" come promesso!). In questi casi, la recensione richiederà ulteriori dettagli, in modo che possa essere convinto.