Типи власності та роздільна логіка


10

Типи власності та роздільна логіка, схоже, мають подібні цілі, контроль над власністю та згладжування. Можливо, я також повинен додати: можливість писати модульні специфікації.

Що відомо про взаємозв'язок між типами власності та логікою поділу?


Звучить неясно знайомо.
Дейв Кларк

@DaveClarke: Ваша відповідь має для вас сенс? Ви зробили багато роботи над власністю, і я лише трохи зробив, перш ніж перейти до роботи над логікою розділення.
Ніл Крішнасвамі

@NeelKrishnaswami: Ваша відповідь має багато сенсу. Планую заповнити деякі прогалини, коли знайду час. У будь-якому випадку, я не знаю жодної статті, яка може зробити суттєве порівняння.
Дейв Кларк

Відповіді:


7

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

  • Ян Чжао та Джон Бойленд. Основне тлумачення дозволів для типів власності. У ІІ Міжнародному симпозіумі IEEE / IFIP з теоретичних аспектів інженерії програмного забезпечення, TASE 2008, 17-19 червня 2008 р., Нанкін, Китай. IEEE Computer Society, 2008., стор. 65–72.

  • Валінг Шулінг, Луїс Соарес Барбоса та Хосе Нуно Олівейра. Реляційна модель обмеженої логіки розділення. У Другому міжнародному симпозіумі IEEE / IFIP з теоретичних аспектів інженерії програмного забезпечення, TASE 2008, 17-19 червня 2008 р., Нанкін, Китай. IEEE Computer Society, 2008., стор. 263–270.

  • Шулінг Ван і Цонг Цоню. Загальна модель ув'язнення та його застосування. У Другому міжнародному симпозіумі IEEE / IFIP з теоретичних аспектів інженерії програмного забезпечення, TASE 2008, 17-19 червня 2008 р., Нанкін, Китай. IEEE Computer Society, 2008., стор. 57–64.

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

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

Третя робота розробила семантичний підхід, який використовується для кодування різних дисциплін ув'язнення, таких як типи власності. Я не впевнений, чи охоплює їх система і логіку розділення, і я не можу отримати доступ до неї на даний момент. Їх підхід скоріше ad hoc; це можна розглядати як більш формальний і систематичний документ, який я писав деякий час тому разом з Джеймсом Ноублом та іншими:

  • До моделі інкапсуляції Джеймс Ноубл, Роберт Біддл, Еван Темперо, Алекс Потанін, Дейв Кларк Перший міжнародний семінар з питань збитку, конфірмації та власності в об'єктно-орієнтованому програмуванні (IWACO), 2003 рік.

9

Я розумію різницю в тому, що типи власності обмежують форму об’єктного графіка , а субструктурні системи (подібно логіці поділу) керують дозволами на доступ до купи .

огогогог

Навпаки, підструктурні системи, такі як лінійні типи та логіка розділення, покладаються на ідею ресурсів . Кожна область купи - це ресурс, і якщо ви не володієте ресурсом, ви не можете доторкнутися до нього. Це робить умови кадру дуже легкими: вони завжди втримуються.

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

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

Як я розумію, їх основним підходом є використання логіки Хоара, а потім:

  1. Додайте новий тип змінних регіонів, який ви використовуєте для асоціації об'єктів та регіонів.
  2. Додайте систему ефектів до логіки Хоара для відстеження регіонів, що читають і записують дотик.
  3. Використовуйте ефекти, щоб визначити, чи твердження співпадає з рамками чи ні. Якщо це так, ви можете його створити, а якщо це не так, ви не можете.

Кожен підхід має переваги та недоліки.

  • Власність робить властивості кадру значно менш зручними у використанні, ніж у підструктурних підходах, оскільки доводиться обчислювати умови кадру.

  • З іншого боку, алгоритми на DAG підтримують кращі індуктивні докази в стилі власності, оскільки ви можете від'єднати слід від структури вказівника. У специфікації в стилі розділення природним є створення індуктивного інваріанта на дереві, що перекидається. Але якщо обчислювальне дерево, яке алгоритм розраховує, коли-небудь відрізняється від того, яке має ваш інваріант, вас чекає світ боляче.

Моє загальне розуміння полягає в тому, що розділення простіше використовувати, ніж володіння, оскільки нам потрібні властивості кадру майже для кожної команди в імперативній програмі. (Дейв Науманн стверджує, що логіка регіону більше піддається автоматизації, оскільки логіка твердження залишається звичайною старою FOL, і тому ви можете використовувати нестандартні докази теореми та розв'язки SMT.)

EDIT: Я щойно знайшов наступний документ Метта Паркінсона та Алекса Саммерса, «Зв'язок між логікою розділення та неявними динамічними кадрами» , де вони стверджують, що вони мають логіку, що об’єднує два методи.


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