Типи власності та роздільна логіка, схоже, мають подібні цілі, контроль над власністю та згладжування. Можливо, я також повинен додати: можливість писати модульні специфікації.
Що відомо про взаємозв'язок між типами власності та логікою поділу?
Типи власності та роздільна логіка, схоже, мають подібні цілі, контроль над власністю та згладжування. Можливо, я також повинен додати: можливість писати модульні специфікації.
Що відомо про взаємозв'язок між типами власності та логікою поділу?
Відповіді:
Нещодавно я закінчив писати опитування про типи власності і виявив дуже мало, що обговорює взаємозв'язок між двома темами. Три найближчі доповіді, на які я потрапив, - це такі, які цікаво походять з тієї ж конференції:
Ян Чжао та Джон Бойленд. Основне тлумачення дозволів для типів власності. У ІІ Міжнародному симпозіумі 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; це можна розглядати як більш формальний і систематичний документ, який я писав деякий час тому разом з Джеймсом Ноублом та іншими:
Я розумію різницю в тому, що типи власності обмежують форму об’єктного графіка , а субструктурні системи (подібно логіці поділу) керують дозволами на доступ до купи .
Навпаки, підструктурні системи, такі як лінійні типи та логіка розділення, покладаються на ідею ресурсів . Кожна область купи - це ресурс, і якщо ви не володієте ресурсом, ви не можете доторкнутися до нього. Це робить умови кадру дуже легкими: вони завжди втримуються.
Одне поверхневе відмінність (яке все-таки мене тривалий час бентежило) полягало в тому, що типи власності були типами, а логіка розділення - логікою програми. На щастя, хоча типи власності народилися в теоретико-типових умовах, люди застосували ці ідеї і до програмної логіки.
Дві основні мої теоретичні роботи, які я знаю з цього приводу, - це робота Кассіоса про динамічні рамки , які Баннерджі та Науман (та їхні студенти) систематично використовували у своїй роботі з регіональної логіки .
Як я розумію, їх основним підходом є використання логіки Хоара, а потім:
Кожен підхід має переваги та недоліки.
Власність робить властивості кадру значно менш зручними у використанні, ніж у підструктурних підходах, оскільки доводиться обчислювати умови кадру.
З іншого боку, алгоритми на DAG підтримують кращі індуктивні докази в стилі власності, оскільки ви можете від'єднати слід від структури вказівника. У специфікації в стилі розділення природним є створення індуктивного інваріанта на дереві, що перекидається. Але якщо обчислювальне дерево, яке алгоритм розраховує, коли-небудь відрізняється від того, яке має ваш інваріант, вас чекає світ боляче.
Моє загальне розуміння полягає в тому, що розділення простіше використовувати, ніж володіння, оскільки нам потрібні властивості кадру майже для кожної команди в імперативній програмі. (Дейв Науманн стверджує, що логіка регіону більше піддається автоматизації, оскільки логіка твердження залишається звичайною старою FOL, і тому ви можете використовувати нестандартні докази теореми та розв'язки SMT.)
EDIT: Я щойно знайшов наступний документ Метта Паркінсона та Алекса Саммерса, «Зв'язок між логікою розділення та неявними динамічними кадрами» , де вони стверджують, що вони мають логіку, що об’єднує два методи.