Система типів, заснована на теорії наївних множин


11

Як я розумію, в інформатиці типи даних не базуються на теорії множин через такі речі, як парадокс Рассела, але як і в реальних мовах програмування, ми не можемо виразити такі складні типи даних, як "набір, який не містить себе", чи можемо ми скажімо, що на практиці тип - це нескінченна сукупність його членів, де примірник належності визначається кількістю ознак, які є властивими цьому типу / набору (існування певних властивостей, методів)? Якщо ні, то як би був контрприклад?


1
Парадокс Рассела не має нічого спільного з цим.
Андрій Бауер

Відповіді:


11

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

Якщо точніше, рекурсивно визначене значення типу (де зазвичай - тип функції) визначається рівнянням з фіксованою точкою де може бути будь-якою програмою. Якщо інтерпретується як множина ми очікуємо, що кожен має фіксовану точку. Але єдиним безліччю з цією властивістю є синглтон.τ τ v = Φ ( v ) Φ : τ τ τ T f : T T Tvττv=Φ(v)Φ:τττTf:TTT

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

Алекс Сімпсон, обчислювальна адекватність рекурсивних типів в моделях інтуїціоністської теорії множин , в аналах чистої та прикладної логіки, 130: 207-275, 2004.


7

Семантичне підтипування ґрунтується на базовій теоретичній інтерпретації типів, де підтип підмножиться. Я вважаю, що оригінальний твір зроблений Кастаньєю в контексті CDuce мови обробки XML. Типи відповідають наборам документів XML. Ідеї були з тих пір повторно до -ісчісленія і до обчислення об'єктів і класів .π


1
Існують попередники Кастаньї. Давно люди вже використовували відношення підмножини для моделювання підтипу в моделях PER. Там тип відповідає відношенню часткової еквівалентності (PER), а підтипізація - просто включення таких відносин.
Андрій Бауер

4

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

α.ααU

[[α.αα]]=ΠXU.XX

UUXXXUα

α.αα


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

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

1
@Neel: проблема, яку ви описуєте, існує навіть тоді, коли ми відходимо від безлічі. Рішення полягає не в зміні категорії множин чимось іншим, а в іншому моделюванні параметричності. А саме, треба використовувати реляційну параметричність, як я впевнений, що ви знаєте. Але тоді все складається так само добре, якщо я не помиляюся. "Єдиною" проблемою з множинами є відсутність фіксованих точок (як на рівні рекурсивних значень, так і рекурсивних типів).
Андрій Бауер

1
Ах, я думаю, я розумію, чому я плутаю тебе і Сема! Я, звичайно, не маю на увазі, що використовувати наївну теоретико-множинську модель наївно, просто, що ця модель часто дає непотрібні відповіді - саме тому я сказав "важко використовувати", а не "неправильно". Звичайно, ви можете використовувати набори для побудови корисної моделі (тобто відносно), але тоді ми більше не інтерпретуємо типи наборів у моді, запропонованій у питанні. (Також, як відомо, з непередбачуваним поліморфізмом немає наївної моделі, але параметричність все ще має значення прогностично.)
Ніл Крішнасвамі

1
Я думаю, ваш пункт про відповідність між семантикою - теоретико-множинна семантика не дуже підходить для поліморфізму у стилі F, оскільки вона має невиразне значення. Але це не суперечить сукупності теоретичної семантики, а лише твердження, з яким повинна погодитися наша семантика. Якщо наша мова дозволяє нам виражати функції, про які ви говорите (як, наприклад, типізована ракетка), то нам може знадобитися теоретико-множинна семантика.
Сем Тобін-Хохштадт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.