Я вважаю, вам було б корисно шукати теорію абстрактної інтерпретації, яка дає дуже ґрунтовні відповіді на подібні питання дещо іншої області програмного аналізу на основі ґрат.
Мені здається, ви використовуєте рамку, засновану на алгебрах. Я використовую тут слово алгебра у значенні універсальної алгебри, де я припускаю, що обмеження на структуру алгебри задаються рівностями між термінами. Є два різні органи чуття, в яких абстракції (або ієрархії) входять у картину.
- Абстракція як взаємозв'язок між двома конкретними алгебрами. Ви можете сказати, що одна алгебра має більш багату структуру, ніж інша алгебра, або що кожну проблему, яку ви можете вирішити за допомогою однієї алгебри, ви можете вирішити з іншою. Такий взаємозв'язок - це те, що було б формалізовано при купівлі гомоморфізмів чи іншому відображенні між алгебрами.
- Ієрархії абстракцій як сім'ї алгебр. У вашому випадку це були б сімейства дельтоїдів з певними властивостями. Як більш загальний приклад розглянемо всі частково впорядковані набори. Ми можемо розглядати решітки, розподільні решітки та булеві ґрати як послідовність підсімей, які мають багатші властивості.
Два поняття тісно пов'язані, але різні.
Абстракція між двома структурами
Розуміння абстрактної інтерпретації полягає в тому, що корисно наділити структури, які ви вважаєте, поняттям порядку. Розглянемо дві структури
(M,fM) і (N,fN), с fM:M→M і fN:N→N як операції, що представляють інтерес.
Гомоморфізм у сенсі універсальної алгебри виглядатиме приблизно так:
h:M→N це функція, що задовольняє рівність h(fM(a))=fN(h(a)).
Ми можемо розглядати дві структури, що з’являються вище, як попередньо замовлені структури
(M,=,fM) і (N,=,fN)
і гомоморфізм, який ми можемо переписати, це функція, що задовольняє
- що якщо a=b тоді h(a)=h(b), і
- для усіх a в M, h(fM(a))=fN(h(a)).
Тепер, припустимо, у вас є якесь інше поняття наближення, яке має сенс. Наприклад, коли ми маємо справу з наборами станів під час перевірки програми, включення підмножини має сенс для певного застосування, або коли ми маємо справу з формулами в автоматизованому виведенні, імплікація має сенс. Більш загально, ми можемо розглянути
(M,⪯,fM) і (N,⊑,fN), де ⪯ і ⊑ є передлежаннями.
Тепер замість гомоморфізму ми можемо мати функцію абстракції
α:M→N який
- монотонна, тобто коли завгодно a⪯b ми маємо α(a)⊑α(b), і
- напівзміни з операціями: α(fM(a))⊑fN(α(a)) для усіх a в M.
Функція абстракції дає чітку думку про те, що якщо структура закінчиться N - це абстракція структури над M, потім оцінюючи термін в N не може дати більш точних результатів (стосовно поняття наближення в N), ніж оцінювання того ж терміна в M а потім відобразити його на карту N.
Тепер ми можемо запитати, чи потрібно підходити до проблеми з точки зору абстракції на відміну від уточнення. Значення, чи не можемо ми цього сказати?M є уточненням Nі сформулювати умови в термінах. Саме це робить функція конкретизації .
Функція конкретизації γ:N→Mє монотонним і задовольняє нерівністьfM(γ(b))⪯γ(fN(b)).
Умови абстракції та конкретизації називаються умовами міцності в абстрактній інтерпретації. У окремому випадку, щоα і γутворюють зв'язок Галуа, умови абстракції та конкретизації рівнозначні. Взагалі вони не рівноцінні.
Все, що ми зробили поки що, лише формалізує поняття абстракції між парою структур. Те, що я говорив, може бути сформульовано набагато коротше мовою теорії категорій. Я уникав категорій через ваш коментар вище.
Ієрархії абстракції
Припустимо, у нас є структура Mнаділений попереднім замовленням та деякими операціями. Ми можемо розглянути всі структуриN такий як N є абстракцією Mу сенсі вище. Якщо у нас це єN1 є абстракцією N2 і обидва є абстракціями M, у нас є три елементи ієрархії. Співвідношення "є абстракцією" дозволяє нам визначити попередній порядок між структурами. Назвемо сім'ю структур, упорядкованих абстракцією, ієрархією .
Якщо я розглядаю ваш приклад, виявляється, що ваш абстрактний дельтоїд може бути кандидатом на максимальний елемент у певній ієрархії. Я не зовсім впевнений, оскільки абстрактний дельтоїд виявляється сімейством дельтоїдів, а не специфічним дельтоїдом.
Тепер ви можете розглянути різні ієрархії. Ієрархія всіх дельтоїдів. Підієрархія, що ґрунтується на різних міркуваннях, зазначених вище. Конкретний приклад у контексті абстрактної інтерпретації - це ієрархія повних решіток, що знаходяться у зв’язку Галуа з заданою решіткою енергетичного набору, та підієрархій, що складаються лише з розподільних або лише булевих ґрат.
Як в коментарях зазначає Мартін Бергер, це поняття абстракції між ієрархіями захоплюється поняттям доповнень між категоріями.
Категорична перспектива
Був коментар із проханням отримати більше коментарів щодо категорій. Цього коментаря вже немає, але я все одно відповім.
Давайте відступимо і подивимось, що ви робите при розробці дельтоїдів і що я описав вище з більш загальної точки зору. Ми зацікавлені в розумінні суттєвої структури об'єктів, якими ми маніпулюємо, в програмному контексті та відносин між цими сутностями.
Перша важлива усвідомлення полягає в тому, що нас цікавить не лише набір елементів, а операції, які ми можемо виконувати над цими елементами, та властивості цих операцій. Ця інтуїція визначає дизайн класів об'єктно-орієнтованого програмування та визначення алгебраїчних структур. Ви вже зробили цю інтуїцію явною у визначенні дельтоїда, який визначив кілька цікавих операцій. Більш загально, це процес мислення, що лежить в основі алгебраїчних описів. Нам потрібно визначити, якими є наші операції та якими властивостями вони володіють. Цей крок розповість нам про тип структури, з якою ми працюємо.
Друге усвідомлення полягає в тому, що нас цікавить не просто набір елементів, а абстрактні відносини. Найпростіша формалізація, яку я можу собі уявити за абстракцією, - це розглянути наборовий набір. Ми можемо думати про заздалегідь заданий набір як суворе узагальнення множини до чогось, що випливає з поняттям наближення.
Ми в ідеалі хочемо працювати в умовах, коли обидві думки вище є громадянами першого класу. Це означає, що ми хочемо ввести налаштування, подібне до алгебри, а також налаштування попереднього замовлення. Першим кроком у цьому напрямку є розгляд решітки. Решітка - це концептуально цікава структура, оскільки ми можемо визначити її двома рівнозначними способами.
- Ми можемо визначити решітку рівнянням як множину (L,⊓,⊔)обладнаний операцією зустрічі та приєднання. Тоді ми можемо отримати частковий порядок шляхом визначенняa⊑b проводити коли завгодно a⊓b=a.
- Альтернативою є визначення решітки як частково впорядкованого набору (L,⊑) задовольняючи, що кожна пара елементів в Lмає унікальну найбільшу нижню межу та найменшу верхню межу. Тоді ми можемо отримати операції зустрічі та приєднання з часткового порядку.
Решітка, таким чином, є математичною структурою, до якої можна звернутися з алгебраїки або з точки зору наближення. Недолік тут полягає в тому, що самі елементи решітки не мають типової структури, яка вводиться у відношення наближення. Значить, ми не можемо порівнювати елементи, виходячи з поняття, що мають більшу чи меншу структуру.
У контексті вашої проблеми ви можете розглядати категорії як природне узагальнення передмов, що фіксують як поняття наближення (у морфізмах), так і тип структури в алгебраїчній обстановці. Встановлення теорії категорій дозволяє нам позбутися різних непотрібних розрізнень та зосередитись на структурі сутностей, про які ви дбаєте, та наближенні цієї структури. Універсальні властивості та доповнення дають вам дуже потужний словник та інструменти для розуміння ландшафту структур, які вас цікавлять, і дозволяє сувору математичну обробку навіть інтуїтивних понять, таких як різні рівні абстракції.
Щодо мого коментаря про абстрактні дельтоїди, то здається, що те, що ти хочеш, - це категорія. Абстрактний дельтоїд - це конкретна категорія, аналогічна категорії множин. Є й інші категорії, які ви розглядаєте. Я спочатку думав, що ви визначаєте дельтоїда, що в сенсі теорії категорій буде кінцевим (або кінцевим) об'єктом.
Ви вивчаєте такі питання, на які теорія категорій дає дуже задоволення. Сподіваюся, ви зможете самі прийти до цього висновку.
Список літератури
- Абстрактна інтерпретація та застосування до логічних програм Патріка Кусота та Радхії Кузот. Перша половина цієї статті - загальний вступ до теми абстрактної інтерпретації підручника.
- Абстрактні рамки інтерпретації Патріка Кусота та Радхії Кузо. У цій статті дуже докладно розглядаються всі можливості, які я накреслював щодо функцій абстракції та конкретизації.
- Систематичне проектування систем аналізу програм , Патрік Кузот та Радхіа Кузот. Це був документ, який вніс поняття ієрархії абстракцій у контексті програмного аналізу.
- Узагальнене сильне збереження за абстрактним тлумаченням Франческо Ранзато та Франческо Таппаро. У цій роботі ці ідеї застосовуються в іншому контексті абстракцій, які зберігають часові логічні формули. Тут ви знайдете відпрацьовані приклади булевих та розподільних абстракцій.
- Абстрактне тлумачення, логічні стосунки та розширення Кан , Самсон Абрамський. Представлена перспектива теорії категорій на теоретичний матеріал про порядок вище.