Які відмінності між логічними відношеннями та моделюванням?


29

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

Я знаю лише, що логічні відносини індуктивно визначаються, тоді як симуляції ґрунтуються на коіндукції. Чому вони визначаються таким чином? Які їх плюси і мінуси відповідно? Яку вибрати в різних ситуаціях?


1
Ви можете надати посилання на ці статті, які ви прочитали. Це дозволить зрозуміти, які конкретні приклади вас бентежать.
Марк Хаман

1
Для логічних відносин я прочитав нещодавню працю Хура та Дрейєра "Логічне відношення Крипке між ML та збіркою" (POPL'11). Також я читав класичні глави у книзі Пірса "Розширені теми у видах та мовах програмування". Я вважаю, що логічні відносини визначаються індуктивно на типовій структурі мови, але що робити, якщо мова не має структури типу (наприклад, C)? (Мабуть, інше питання, я думаю.)
Гонджин Лян

1
Для симуляцій я прочитав оригінальний документ "Алгебраїчні закони недетермінізму та одночасності" Геннесі та Мілнера. Кутавас і Ванд "Невеликі бісимуляції для міркувань про імперативні програми вищого порядку" (POPL'06) для мене незрозумілі, і я не впевнений, чому вони назвали їх метод "бісимуляцією".
Hongjin Liang

3
було б краще, якщо ви включите інформацію, яку ви вказали, у коментарях до публікації. Ви можете відредагувати своє запитання, натиснувши на посилання редагування під цим питанням.
Каве

1
@HongjinLiang: Якщо у вас немає структури типів (або у вас рекурсивні типи), ви можете використовувати пошагові логічні відношення - з логічними відношеннями ви використовуєте індукцію на типи, а з індексуванням кроків ви проводите індукцію на кроках спостереження. Ви знайдете покажчики в дослідницькій заяві Амаль Ахмеда: ccs.neu.edu/home/amal/ahmed-research.pdf . (Ще один огляд досліджень логічних відносин - це бесіда Дерека Дрейєра та його заява про дослідження: mpi-sws.org/~dreyer/research.pdf ).
Blaisorblade

Відповіді:


20

У мене є відповідь на це питання, яке, можливо, є новим. Насправді я все ще замислююся над цим протягом останніх 6 місяців або близько того, про це ще не було написано в документах.

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

Першими, хто це відкрив, були теоретики автоматів. Автомати мають прихований стан. Тож вам потрібні реляційні міркування, щоб говорити про їх еквівалентність. Теоретики автоматів деякий час боролися з гомоморфізмами, здавались і придумали поняття під назвою "реляційне покриття", яке є формою моделювання відносин.

Мілнер підхопив цю ідею в маловідомому, але дуже фундаментальному документі під назвою " Алгебраїчне поняття імітації між програмами " в 1971 році. Хоар знав це і використовував його, коли створив " Доказ правильності подання даних " в 1972 році (але використовував абстракція функціонує замість відносин, оскільки він вважав, що вони "простіші"). Пізніше він відкликав заяву про простоту і повернувся до використання відносин у " Уточненні даних ". Рейнольдс використовував реляційне міркування у « Майстерності програмування", Глава 5 (1981). Він вважав, що відносини є більш природними та загальними, ніж функції абстракції. Якщо ви повернетесь і прочитаєте цю главу, ви знайдете ідеї відносної параметричності, що ховаються навколо, чекаючи, коли їх відкриють. Звичайно, достатньо, через два роки, Рейнольдс опублікував «Типи, абстракція та параметричний поліморфізм» (1983).

Схоже, всі ці ідеї не мають нічого спільного з типами, але вони насправді є. Мови держав і моделі мають вбудовану абстракцію даних. Для приховування інформації вам не потрібно визначати "абстрактний тип даних". Ви просто оголосите локальну змінну і приховуєте її. Ми можемо навчити її першокурсникам на уроках Java протягом перших кількох тижнів. Немає поту.

З іншого боку, функціональні мови та моделі повинні заховати свою інформацію через типи . Функціональні моделі не мають вбудованої абстракції даних. Ми повинні додати його прямо, використовуючи або . Отже, якщо ви перекладете стаціонарну мову у функціональну мову, ви помітите, що вся локальна держава переходить у тип змінних. Детальний опис того, як це працює, дивіться у моїй роботі " Об'єкти та класи на мовах, схожих на алголь ", але ідеї дійсно походять від Рейнольдса 1981 ("Суть Алгола"). Ми просто краще розуміємо ці класичні ідеї.

Візьміть дві машини і M ', які ви хочете довести, що вони рівнозначні. Мілнер 1971 говорить, визначте відношення між станами M і M ' і покажіть, що ці дві машини зберігають відношення. Параметричність Рейнольдса говорить, подумайте про стани машин як про належність до типів X і X ' . Визначте відношення R між ними. Якщо машини типу F ( X ) і F ( X ' ) , параметризовані за типами їх стану, то перевірте, чи обидві машини пов'язані відношенням FMMMMXXRF(X)F(X) . F(R)

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

А як щодо логічних відносин тоді? З іншого боку, логічні стосунки представляються більш загальною ідеєю. У той час як параметричність говорить про те, як співвідносити змінні типу в межах однієї моделі, логічні зв'язки, як видається, стосуються типів у різних моделях. (Дейв Кларк написав блискучу експозицію цього раніше.) Але я відчуваю (і це ще потрібно продемонструвати), що це примірник певної форми параметричності вищого типу, який ще не сформульований. Слідкуйте за досягненням прогресу на цьому фронті.


[Примітка додано] Зв'язок між логічними відношеннями та моделюванням обговорюється в нашій останній статті Логічні відносини та параметричність: програма Рейнольдса для теорії категорій та мов програмування .


Мені було цікаво, чи було б правдою сказати, що згадане вище відношення - це так зване відношення підйому R, задане F, що описує машину. F(R)Rfunctor F
Дейв Кларк

@DaveClarke Так, це та сама ідея. У стилі визначення Рейнольдса кожен конструктор типу оснащений дією відношення, яка пов'язує кожне відношення R : X X , відповідне відношення F ( R ) : F ( X ) F ( X ), що задовольняє деяким аксіоми. У деяких інших спільнотах вони хотіли б вивести F ( R ) з інших принципів, звідси вони називають їх підняттям відносин . F (FR:XXF(R):F(X)F(X)F(R) вони виробляються цим процесом - це відношення дії в сенсі Рейнольдса. F(R)
Удай Редді

14

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

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

Логічні відносини можуть використовуватися для показу відповідності між такою мовою, як ML, та її перекладом на мову складання, як у прочитаному вами документі. Логічне відношення визначається індуктивно на структурі типу. Логічне співвідношення забезпечує композиційний засіб для показу, наприклад, що переклад правильний, показуючи, що переклад є правильним для кожного конструктора типів. У типах функцій умова правильності сказала б щось подібне, переклад цієї функції вимагає добре перекладеного вводу на добре переведений вихід.

Логічні відносини - це універсальна техніка для мов, заснована на лямбдальному обчисленні. До інших застосувань логічних відносин належать ( звідси ): характеристика лямбда-дефінітивності, денотаційні семантичні визначення, характеристика параметричного поліморфізму, моделювання абстрактної інтерпретації, перевірка уявлень даних, визначення повністю абстрактної семантики та моделювання місцевого стану мовами вищого порядку.

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

Бісумуляція, приблизно, є двома імітаційними відносинами, зібраними разом. Ви показуєте, що програма P і імітує програму Q, і що програма Q може імітувати програму P і у вас є бісимуляція, хоча додаткові умови зазвичай є. Запис Вікіпедії про бісимуляцію - це хороший (точніший) вихідний пункт. Існують тисячі варіантів ідеї, але це фундаментальна ідея, яка була заново винайдена у більш-менш однаковій формі інформатики, модальної логіки та теорії моделей. Стаття Сангіоргі дає чудову історію ідеї.

Один документ, що встановлює зв'язок між цими двома поняттями, - це Примітка про логічні відносини між семантикою та синтаксисом Енді Піттса, яка використовує логічні відношення, зрештою, семантичне поняття, визначене синтактально, для доведення певної властивості щодо прикладного бісимуляції , що є суто синтаксичним поняттям.


Дякую велике за ваше детальне пояснення! Я прочитаю ваші посилання та спробую з’ясувати глибокі зв’язки / відмінності між ними.
Hongjin Liang

Ви впевнені у твердженні "Ви показуєте, що програма P і імітує програму Q, і що програма Q може імітувати програму P і у вас є бісимуляція"? Нехай A = (a. (B + c)) + (a.b + ac) і B = a.b + ac, наскільки я можу сказати, A схожий на B, B схожий на A, але A і Б не є подібними.
Андраш Саламон

@ András: Ти маєш рацію. Моє твердження недостатньо точне. Різниця абстрагується фразою "Можуть бути деякі додаткові умови".
Дейв Кларк

Геннессі та Мілнер визначили три види співвідношення еквівалентності у своєму первісному документі для бісимуляції та навели кілька прикладів для ілюстрації їх відмінностей. Ваше оригінальне твердження насправді є носієм у їхньому документі, який слабкіший за бісимуляцію та сильніший за еквівалентність слідів. Я не впевнений, яка еквівалентність краща. Можливо, це залежить від практичного використання.
Hongjin Liang

Моделювання також використовується як метод підтвердження для встановлення уточнення даних між двома типами даних. Кожне з цих симуляторів підтверджує цілі класи програм. Детальніше див., Наприклад, [1]. Це говорить про те, що відмінність між цими двома поняттями навіть розмивається. [1]: CAR Hoare, He J та JW Sanders. Попередня уточнення даних. Листи з обробки інформації , 25: 71-76, 1987.
Кай

8

Два типи відносин, як видається, використовуються в різних контекстах. Логічне моделювання для набраних мов та відносин моделювання при роботі з обчисленнями процесів або модальною логікою, що інтерпретується через перехідні системи. Дейв Кларк дав багато інтуїтивного пояснення, тому я просто додам кілька покажчиків, які можуть допомогти.

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

Самсон Абрамський використовував логічні відносини, щоб довести обґрунтованість та припинення аналізу суворості для ледачого обчислення Ламбда ( абстрактна інтерпретація, логічні стосунки та розширення Кан ). Він також показав, що логічні відношення визначають функції абстракції в сенсі зв'язку Галуа в абстрактній інтерпретації. Зовсім недавно Backhouse та Backhouse показали, як конструювати з'єднання Galois для типів вищого порядку з підключень Galois для базових типів і що ці конструкції можна описати в рівній мірі за допомогою логічних відносин ( Logical Relations and Galois Connections ). Таким чином, у конкретному контексті введених функціональних мов два поняття рівнозначні.

Симуляційні відносини характеризують збереження властивостей між структурами Крипке для різних модальних та часових логік. Замість типів ми маємо модальності в логіці. Симуляційні відносини також визначають зв'язки Галуа і, отже, абстракції. Можна запитати, чи мають ці абстракції особливі властивості. Відповідь полягає в тому, що стандартні абстракції - це звук, а абстракції на основі моделювання є завершеними. Поняття повноти стосується зв'язків Галуа, які можуть не узгоджуватися з інтуїтивно зрозумілим тлумаченням. Цю лінію роботи розробили Девід Шмідт ( Збереження структури для бінарних зв'язків для абстрагування програми ), Франческо Ранзато та Франческо Таппаро ( Узагальнене сильне збереження за абстрактним тлумаченням ).


Ваша відповідь дуже корисна в тому, що з'єднувати поняття з абстрактною інтерпретацією. Дякую!
Hongjin Liang

Щире запитання: я не експерт, але хіба Рейнольдс (1983, "Типи, абстракція та параметричний поліморфізм") вже не визначає логічні відносини, що є зв'язками Галуа (Розділ 6)? Єдині відмінності, які я помічаю: він не говорить термін "з'єднання Галуа", а лише еквівалентний "суміжні функтори між частковими замовленнями, що розглядаються як категорії", і він обмежується доменами. OTOH, Backhouse та Backhouse цитують Рейнольдса, але не обговорюють це твердження так чи інакше.
Blaisorblade

6

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

π


Ваша довідка дійсно приємна! Я раніше не чув логічних стосунків для одночасних програм. Дякую! Я здогадуюсь, складність визначення логічного відношення полягає у пошуку структури типу. З однотипною структурою логічне відношення може бути визначене між різними мовами програмування. З іншого боку, моделювання вимагає моделювання програм системою переходу стану, що може бути непросто, якщо програми написані для різних моделей стану.
Hongjin Liang

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