Вероятно, наиболее распространенным применением линейных типов в PL является использование их для предоставления языков, которые управляют псевдонимами (т. Е. Линейное значение имеет единственный указатель на него, более или менее).
Но есть небольшое несоответствие между этим использованием и типичными денотационными моделями линейной логики. IIRC, Бентон показал, что если декартова замкнутая категория имеет сильную коммутативную монаду, то ее категория алгебр будет симметричной моноидально замкнутой (т. Е. Модель линейной логики). Но эта теорема неприменима к использованию управления псевдонимами, поскольку монада состояния не является коммутативной. И действительно, в последние несколько лет Симпсон и его коллеги дали исчисления для общих сильных монад, которые не являются исчислениями термина для линейной логики.
Итак, мой вопрос: что такое денотационная семантика линейных языков с состоянием? Существует ли невырожденная (т. Е. Тензор не декартова произведение) симметричная моноидальная замкнутая категория, в которой можно моделировать распределение, чтение и линейное обновление?
Ответы:
Мне кажется, что направление, которое вы должны рассмотреть, вращается вокруг семантики игры для общих ссылок и связанной семантики для линейной логики, такой как основанная на играх Конвея . Алгебраическое изложение ссылок в семантике игры Пола-Андре Мельеса и Николя Табаро, вероятно, является лучшим местом для начала. В этой статье линейная логика смягчается так называемой тензорной логикой, чтобы заставить вещи работать, поэтому это не совсем тот параметр, который вам нужен. Но они полагаются на игры Конвея, поэтому, безусловно, существует связь с моделями линейной логики. Они также на самом деле не используют линейность, как в линейных типах, но, я полагаю, есть механизм для этого, если вы хотите.
Работа Джима Лэйрда (например, «Игровая семантика имен и указателей» ) и Гая МакКускера также может внести свой вклад в ваш квест. Недавний интересный тезис Николаса Вулверсона Николаса Вулверсона « Игровая семантика игры для объектно-ориентированного языка » подталкивает эти идеи в ООП. Он подробно рассматривает линейную многопоточность , только одну активную операцию за раз, и описывает, как добавлять линейные классы . Оба полагаются на линейную типизацию. Опять же, однако, базовая модель не является строго моделью линейной логики, но она близка.
источник
(Гоша, Нил, это был сложный вопрос.)
«Народная модель» линейной логики, безусловно, является моделью связного пространства, обсуждаемой в статье Жирара «Линейная логика» (а также в «Доказательствах и типах»). Это не вырожденный в том смысле, который вы описываете.
Я не уверен, что эта семантика проливает свет на то, как можно реализовать линейный функциональный язык. Когда вы говорите о распределении, чтении и линейном обновлении, вы действительно говорите о реализации. Так что, возможно, ваш вопрос можно сформулировать так: «Как мне доказать правильность реализации линейного функционального языка, использующего обновление состояния?» Я не знаю ответа на этот вопрос, но я думаю, что он должен существовать в статьях, предлагающих реализации линейного обновления.
источник