Esta é uma resposta parcial: não tenho idéia sobre a quais erros ou pessoas o SICP está se referindo. Só posso fornecer algumas dicas sobre "por que" renomear variáveis pode ser doloroso de lidar com precisão.
Antes de tudo, parece trivial definir. Por exemplo, podemos renomear variáveis vinculadas em somas indexadas
∑xe=∑y(e{y/x})
onde e é qualquer expressão e e{y/x} denota a substituição sintática de cada x por y . Trivial, certo?
Bem, se aplicarmos cegamente a regra acima, obtemos
∑x(x+y)=∑y(y+y)
Isso não é bom. Precisamos adicionar o requisito " y não ocorre em e " ou temos um conflito de nome.
Agora, considere esta renomeação correta
∑x∑y(x+y)=∑x∑z(x+z)
se queremos renomear x emy
Uma abordagem típica aqui é recorrer à redefinição de e { y/ x} como "substituição que evita a captura" e relaxar o requisito " y não ocorre em e " e, em vez disso, usar " y não ocorre livre eme
Em seguida, definimos ocorrências livres:
fr e e ( x ) = { x }free(e+t)=free(e)∪free(t)free(∑xe)=free(e)∖{x}
Por fim, capture evitando a substituição:
- x{t/y}tx=yx de outra forma.
- (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})
Espero ter acertado. (Minha primeira tentativa estava errada, a propósito)
zz funcionaria bem e levaria ao mesmo resultado (novamente, até renomear).
αλx no cálculo lambda, definições de funções em muitos PLs, etc.).
Agora, imagine ter que lidar com essa definição complexa toda vez que quisermos provar algo na teoria da PL. Poderíamos, mas não queremos. É chato, tedioso, propenso a erros, atravessa a prova e não fornece informações ao leitor. Por esse motivo, muitos autores de PL simplesmente ignoram os detalhes dizendo (ou mesmo aceitando!) Que os termos devem ser considerados "até a renomeação de variáveis", que todas as variáveis vinculadas são assumidas distintas daquilo que precisam ser distintas, que assumimos a "convenção Barendregt", ou algo do mesmo efeito.
Para ser brutalmente honesto, isso é trapaça nas provas. Também poderíamos adicionar "piscadela piscadela, nudge nudge, não diga mais nada!" no mesmo espírito. Essencialmente, pedimos misericórdia e dizemos ao leitor: "olha, isso é chato, eu não quero fazer isso, você não quer ler - nós dois sabemos que, com um grande esforço, poderíamos reescrever essa prova para inclua todos os detalhes ".
Tecnicamente, é possível explorar esse atalho para provar uma declaração falsa. O revisor experiente, no entanto, sabe o que é "moralmente bom" e pode ser aperfeiçoado (com grande esforço) e o que é suspeito. O último pode incluir algo que depende da escolha real dos nomes de limite (portanto, não estamos realmente trabalhando "de acordo com o prometido!). Nesses casos, a revisão solicitará mais detalhes, para que ele possa ser convencido.