"Відомі логіки тут допустили незручні помилки", - йдеться у рядку SICP. Що це стосується?


14

Ось контекст ( Структура та інтерпретація комп'ютерних програм , розділ 1.1.8, під заголовком "Місцеві назви"):

Офіційний параметр процедури відіграє дуже особливу роль у визначенні процедури, оскільки не має значення, яку назву має формальний параметр. Таке ім'я називається зв'язаною змінною , і ми говоримо, що визначення процедури пов'язує його формальні параметри. Значення визначення процедури не змінюється, якщо зв'язана змінна послідовно перейменовується протягом усього визначення.

В кінці цього останнього рядка є виноска (26), яка говорить:

Поняття послідовного перейменування насправді тонке і важко визначити формально. Відомі логіки тут допустили бентежні помилки.

На що або на кого йдеться у тексті? Чому визначення "послідовного перейменування" буде важким, які логіки допустили помилки, намагаючись визначити це, і які були ці помилки?


3
Я кажу своїм студентам, що єдиний спосіб зрозуміти "послідовно перейменовувати зв'язані змінні" - це правильно реалізувати прокляту річ. Багато логічних книг уникають проблеми, надають неповні процедури перейменування або, принаймні, опускають докази того, що дані процедури перейменування є правильними. Але я не знаю, про які конкретні плітки йдеться у книзі.
Андрій Бауер

5
Саме розробка змінних перейменувань, свіжих імен, заміщення та уникнення заміни тощо - одна з найбільш тривіальних речей, яка швидко стає справді громіздкою у визначеннях та доказах. У такій тривіальній проблемі не хочеться витратити більше, ніж тривіальна кількість ментальних циклів, але набагато більше, ніж це було б потрібно, щоб уникнути безлічі складних захоплень / зіткнень тощо. Визначення, але потім посилайтесь на "конвенцію Барендрегта" і ігноруйте питання, дещо зловживаючи "свіжим" тут і там, коли потрібно.
чі

1
Я буду вдячний за конкретніші відповіді, що знаходяться нижче у полі відповідей, якщо це взагалі можливо. Ці коментарі все ще роблять проблему загадковою, оскільки ви їх написали, щоб її прочитав хтось, хто вже знайомий з проблемою, тоді як я не
ubadub

@chi, зокрема, я буду вдячний читати рекомендації, що стосуються цієї теми, якщо у вас є такі. Дякую заздалегідь
ubadub

Відповіді:


11

Це часткова відповідь: я не маю уявлення про те, про які помилки чи людей йдеться в SICP. Я можу надати лише деякі підказки щодо перейменування змінної "чому", болісно точно впоратися.

Перш за все, це здається банальним для визначення. Наприклад, ми можемо перейменовувати зв'язані змінні в індексовані суми

xe=y(e{y/x})

ee{y/x}xy

Що ж, якщо ми сліпо застосуємо правило вище, ми отримаємо

x(x+y)=y(y+y)

ye

Тепер розглянемо це правильне перейменування

xy(x+y)=xz(x+z)

xy

e{y/x}yeye

Потім визначаємо вільні випадки:

free(x)={x}free(e+t)=free(e)free(t)free(xe)=free(e){x}

Нарешті, захопіть, уникаючи заміни:

  • x{t/y}tx=yx
  • (e+e){t/y}=e{t/y}+e{t/y}
  • (xe){t/y}=??

x=yxxe

yx(xe){t/y}=x(e{t/y})xt

zytxe(xe){t/y}=z(e{z/x}{t/y})

Я сподіваюся, що я правильно зрозумів. (До речі, моя перша спроба була помилковою)

zz

αλx

Тепер уявіть, що ми маємо мати справу з цим хитромудрим визначенням кожного разу, коли ми хочемо щось довести в теорії ПЛ. Ми могли, але цього не хочемо. Це нудно, нудно, схильне до помилок, захаращує доказ і не дає зрозуміти читачеві. З цієї причини багато авторів ПЛ просто пропускають деталі, кажучи (або навіть приймаючи як належне!), Що терміни слід сприймати "до перейменування змінних", що всі пов'язані змінні вважаються відмінними від того, що їм потрібно відрізняти, що ми припускаємо "конвенцію Барендрегта", або щось з тим же ефектом.

Якщо бути жорстоко чесним, це обман у доказах. Ми також могли б додати "підморгнути, підсунути, сказати більше!" в тому ж дусі. Ми, по суті, просимо милосердя і кажемо читачеві: "дивись, це нудно, я не хочу цього робити, ти не хочеш його читати - ми обидва знаємо, що з величезними зусиллями ми могли б переписати цей доказ на включити всі деталі ".

Технічно це можна використовувати цей ярлик , щоб довести помилкове твердження. Однак досвідчений рецензент доказів знає, що таке "морально добре" і міг би бути досконалим (з великими зусиллями), а що підозрілим. Останнє може включати щось, що залежить від реального вибору зв'язаних імен (тому ми насправді не працюємо "до", як обіцяли!). У цих випадках в огляді буде запропоновано більше деталей, щоб він міг переконатися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.