У мене є відповідь на це питання, яке, можливо, є новим. Насправді я все ще замислююся над цим протягом останніх 6 місяців або близько того, про це ще не було написано в документах.
Загальна теза полягає в тому, що принципи реляційних міркувань, такі як "логічні відносини", "симуляції" і навіть "інваріанти", - це прояви абстрагування даних або приховування інформації. Де б не ховалася інформація, ці принципи з'являються.
Першими, хто це відкрив, були теоретики автоматів. Автомати мають прихований стан. Тож вам потрібні реляційні міркування, щоб говорити про їх еквівалентність. Теоретики автоматів деякий час боролися з гомоморфізмами, здавались і придумали поняття під назвою "реляційне покриття", яке є формою моделювання відносин.
Мілнер підхопив цю ідею в маловідомому, але дуже фундаментальному документі під назвою " Алгебраїчне поняття імітації між програмами " в 1971 році. Хоар знав це і використовував його, коли створив " Доказ правильності подання даних " в 1972 році (але використовував абстракція функціонує замість відносин, оскільки він вважав, що вони "простіші"). Пізніше він відкликав заяву про простоту і повернувся до використання відносин у " Уточненні даних ". Рейнольдс використовував реляційне міркування у « Майстерності програмування", Глава 5 (1981). Він вважав, що відносини є більш природними та загальними, ніж функції абстракції. Якщо ви повернетесь і прочитаєте цю главу, ви знайдете ідеї відносної параметричності, що ховаються навколо, чекаючи, коли їх відкриють. Звичайно, достатньо, через два роки, Рейнольдс опублікував «Типи, абстракція та параметричний поліморфізм» (1983).
Схоже, всі ці ідеї не мають нічого спільного з типами, але вони насправді є. Мови держав і моделі мають вбудовану абстракцію даних. Для приховування інформації вам не потрібно визначати "абстрактний тип даних". Ви просто оголосите локальну змінну і приховуєте її. Ми можемо навчити її першокурсникам на уроках Java протягом перших кількох тижнів. Немає поту.
З іншого боку, функціональні мови та моделі повинні заховати свою інформацію через типи . Функціональні моделі не мають вбудованої абстракції даних. Ми повинні додати його прямо, використовуючи або ∃ . Отже, якщо ви перекладете стаціонарну мову у функціональну мову, ви помітите, що вся локальна держава переходить у тип змінних. Детальний опис того, як це працює, дивіться у моїй роботі " Об'єкти та класи на мовах, схожих на алголь ", але ідеї дійсно походять від Рейнольдса 1981 ("Суть Алгола"). Ми просто краще розуміємо ці класичні ідеї.∀∃
Візьміть дві машини і M ', які ви хочете довести, що вони рівнозначні. Мілнер 1971 говорить, визначте відношення між станами M і M ' і покажіть, що ці дві машини зберігають відношення. Параметричність Рейнольдса говорить, подумайте про стани машин як про належність до типів X і X ' . Визначте відношення R між ними. Якщо машини типу F ( X ) і F ( X ' ) , параметризовані за типами їх стану, то перевірте, чи обидві машини пов'язані відношенням FMM′MM′XX′RF(X)F(X′) . F(R)
Отже, моделювання та реляційна параметричність - це, по суті, одна і та ж ідея . Це не просто поверхнева схожість. Перший створений для мов, що володіють державою, де є вбудована абстракція даних. Останнє зроблено для мов без громадянства, де абстрагування даних отримується за допомогою змінних типів.
А як щодо логічних відносин тоді? З іншого боку, логічні стосунки представляються більш загальною ідеєю. У той час як параметричність говорить про те, як співвідносити змінні типу в межах однієї моделі, логічні зв'язки, як видається, стосуються типів у різних моделях. (Дейв Кларк написав блискучу експозицію цього раніше.) Але я відчуваю (і це ще потрібно продемонструвати), що це примірник певної форми параметричності вищого типу, який ще не сформульований. Слідкуйте за досягненням прогресу на цьому фронті.
[Примітка додано] Зв'язок між логічними відношеннями та моделюванням обговорюється в нашій останній статті Логічні відносини та параметричність: програма Рейнольдса для теорії категорій та мов програмування .