2025-11-10T02:31:47.007663

CoLF Logic Programming as Infinitary Proof Exploration

Chen, Pfenning
Logical Frameworks such as Automath [de Bruijn, 1968] or LF [Harper et al., 1993] were originally conceived as metalanguages for the specification of foundationally uncommitted deductive systems, yielding generic proof checkers. Their high level of abstraction was soon exploited to also express algorithms over deductive systems such as theorem provers, type-checkers, evaluators, compilers, proof transformers, etc. in the paradigm of computation-as-proof-construction. This has been realized in languages such as $λ$-Prolog [Miller et al., 1991] or Elf [Pfenning, 1991] based on backward chaining, and LolliMon [Lopez et al., 2005] or Celf [Schack-Nielsen and Schuermann, 2008], which integrated forward chaining. None of these early frameworks supported the direct expression of infinitary objects or proofs, which are available in the recently developed CoLF$^ω$ [Chen, 2023]. In this work-in-progress report, we sketch an approach to computation-as-proof-construction over the first-order fragment of CoLF$^ω$ (called CoLF$^ω_1$ ) that already includes infinitary objects and proofs. A key idea is the interpretation of logic variables as communication channels and computation as concurrent message-passing. This is realized in a concrete compiler from CoLF$^ω_1$ to Sax, a proof-theoretically inspired parallel programming language based on the proof-reduction in the semi-axiomatic sequent calculus [DeYoung et al., 2020].
academic

Логическое программирование CoLF как исследование бесконечных доказательств

Основная информация

  • ID статьи: 2510.12302
  • Название: CoLF Logic Programming as Infinitary Proof Exploration
  • Авторы: Чжибо Чэнь (Университет Карнеги-Меллон), Фрэнк Пфеннинг (Университет Карнеги-Меллон)
  • Классификация: cs.LO (Логика в информатике)
  • Конференция: LFMTP 2025 (Международный семинар по логическим фреймворкам и метаязыкам: теория и практика)
  • Ссылка на статью: https://arxiv.org/abs/2510.12302

Аннотация

В данной статье рассматривается реализация парадигмы "вычисления как построение доказательств" на фрагменте первого порядка CoLF^ω (CoLF^ω_1), который уже содержит бесконечные объекты и доказательства. Основная идея заключается в интерпретации логических переменных как каналов связи и интерпретации вычислений как параллельной передачи сообщений. Эта идея реализована через конкретный компилятор, который транслирует CoLF^ω_1 в Sax — язык параллельного программирования, вдохновленный теорией доказательств и основанный на редукции доказательств в полуаксиоматическом секвенциальном исчислении.

Исследовательский контекст и мотивация

Проблемный контекст

  1. Ограничения традиционных логических фреймворков: Ранние логические фреймворки, такие как Automath и LF, хотя и успешно реализовали парадигму "вычисления как построение доказательств", не поддерживали прямое выражение бесконечных объектов или доказательств
  2. Проблемы существующих реализаций: Поиск доказательств на основе возврата сталкивается с множественными трудностями в бесконечных условиях:
    • Проблемы завершаемости при бесконечных входных данных
    • Взаимодействие бесконечных объектов с возвратом (может никогда не завершиться явной ошибкой)
    • Алгоритмы унификации гарантируют завершаемость только на рациональных (циклических) термах, но многие объекты и доказательства в приложениях не являются рациональными

Исследовательская мотивация

  1. Поддержка бесконечных вычислений: Требуется динамическая семантика, которая может инкрементально вычислять выходные данные из входных данных, подобно преобразователям между потоками
  2. Избежание возврата: Статическое обеспечение через проверку паттернов и уникальности того, что для каждого уникального входа существует максимум одно доказательство
  3. Параллелизм: Использование коммуникации между общими переменными для реализации И-параллелизма между несколькими предпосылками

Основные вклады

  1. Предложен язык логического программирования CoLF^ω_1: Поддерживает доказательства с представлением бесконечных термов, построение доказательств без возврата, параллельное вычисление предпосылок с использованием общих логических переменных для коммуникации
  2. Инновационная вычислительная модель: Интерпретация логических переменных как каналов связи и интерпретация вычислений как параллельной передачи сообщений
  3. Реализованный компилятор: Конкретная реализация компилятора из CoLF^ω_1 в Sax
  4. Богатый набор примеров систем: Включает реализацию обработки потоков, последовательности Фибоначчи, интегральных операций и других сложных отношений

Подробное описание методов

Определение задачи

В статье исследуется, как реализовать логическое программирование в логическом фреймворке, поддерживающем бесконечные объекты. Конкретная задача состоит в:

  • Входные данные: Спецификация программы CoLF^ω_1
  • Выходные данные: Бесконечные структуры (такие как потоки), вычисленные посредством параллельной передачи сообщений
  • Ограничения: Без возврата, поддержка параллельных вычислений, гарантия уникальности

Архитектура основной техники

1. Система типов данных

conat: cotype.          % тип конатуральных чисел
z: conat.               % конструктор нуля
s: conat -> conat.      % конструктор следующего

stream: cotype.         % тип потока
cons: conat -> stream -> stream.  % конструктор потока

2. Определение отношений и объявление паттернов

add: conat -> conat -> conat -> cotype. %mode add + + -.
add_z : add z A A.
add_s : add A B C -> add (s A) B (s C).

3. Вычислительная семантика

Поведение программы определяется следующими операциями:

  • Операции с каналами: Каждый параметр рассматривается как канал связи, объявление паттерна указывает входные (+) или выходные (-) каналы
  • Операции чтения/записи: Программа может читать значения из входных каналов и писать значения в выходные каналы
  • Перенаправление каналов: Прямое перенаправление входного канала на выходной канал
  • Параллельное создание: Выделение новых каналов и создание новых процессов

Технические инновации

1. Гарантия отсутствия возврата

Статическая проверка уникальности обеспечивает, что в каждой точке программы существует максимум одно возможное действие, устраняя необходимость в возврате, присущем традиционному логическому программированию.

2. Модель параллельного выполнения

mult_s : mult A B C -> add B C D -> mult (s A) B D.

В приведенном выше определении умножения две предпосылки mult A B C и add B C D могут вычисляться параллельно, взаимодействуя через общую переменную C.

3. Инкрементальные вычисления

Поддерживает ленивое вычисление, когда выходные данные D раскрываются пошагово, первые B шагов не требуют вычисления mult A B C, поскольку C остается неизменным.

Экспериментальная установка

Тестовые случаи

Статья проверяет эффективность метода на нескольких конкретных примерах:

  1. Базовые операции с потоками:
    • repeat n: поток, бесконечно повторяющий число n
    • up n: поток, возрастающий от n
  2. Сложные отношения:
    • Сложение конатуральных чисел
    • Поточечное сложение потоков
    • Генерация последовательности Фибоначчи
  3. Продвинутые операции:
    • Интегральные операции (накопленная сумма)
    • Генерация потока четных чисел

Детали реализации

  • Компилятор генерирует код Sax из исходного кода CoLF^ω_1
  • Вычисление останавливается после достижения предопределенной глубины
  • Поддерживает передачу сообщений между параллельными процессами

Результаты экспериментов

Основные результаты

1. Базовая генерация потоков

Результат выполнения up z:
(cons z
(cons (s z)
(cons (s (s z))
(cons (s (s (s z)))
(cons (s (s (s (s z)))) ...)))))

2. Обработка бесконечных объектов

omega : conat = s omega.
main : stream = repeat omega.

Результат:
(cons (s (s (s (s ...))))
(cons (s (s (s ...)))
(cons (s (s ...))
(cons (s ...)
(cons ...)))))

3. Проверка сложных вычислений

Последовательность Фибоначчи:

(cons z
(cons (s z)
(cons (s z)
(cons (s (s z))
(cons (s (s (s z)))
(cons (s (s (s (s (s z)))))
(cons (s (s (s (s (s (s (s (s z)))))))) ...)))))))

Результат интегральной операции:

(cons z
(cons (s z)
(cons (s (s (s z)))
(cons (s (s (s (s (s (s z))))))
(cons (s (s (s (s (s (s (s (s (s (s z)))))))))) ...)))))

Экспериментальные выводы

  1. Проверка параллелизма: Несколько предпосылок действительно могут выполняться параллельно с эффективной коммуникацией через общие переменные
  2. Обработка бесконечных структур: Успешно обработаны бесконечные рекурсивные определения, такие как ω = s ω
  3. Инкрементальные вычисления: Подтверждена эффективность ленивого вычисления и инкрементального вывода

Связанные работы

Традиционные логические фреймворки

  • Семейство LF: Фреймворк LF Харпера и др., поддерживающий базовую проверку доказательств
  • λ-Prolog/Elf: Вычисления как построение доказательств на основе обратной цепочки
  • LolliMon/Celf: Фреймворки, интегрирующие прямую цепочку

Преимущества данной работы по сравнению с связанными работами

  1. Поддержка бесконечности: Первая прямая поддержка бесконечных объектов и доказательств в логическом фреймворке
  2. Модель параллелизма: Инновационная модель параллельной передачи сообщений
  3. Отсутствие возврата: Статическое исключение необходимости возврата

Заключение и обсуждение

Основные выводы

  1. Успешно реализован язык логического программирования CoLF^ω_1, поддерживающий бесконечные объекты
  2. Подтверждена осуществимость интерпретации логических переменных как каналов связи
  3. Доказана эффективность модели параллельной передачи сообщений в логическом программировании

Ограничения

  1. Текущая поддержка только корекурсивного фрагмента: Отсутствует поддержка смешанных случаев индукции и корекурсии
  2. Ограничение первого порядка: В настоящее время реализован только фрагмент первого порядка, отсутствует поддержка высокопорядковых термов
  3. Ограничения системы типов: Отсутствует поддержка зависимых типов термов (поддерживается только на уровне объектов доказательства)

Направления будущих исследований

  1. Расширение до полного CoLF^ω: Поддержка высокопорядковых термов и зависимых типов
  2. Смешанная индукция и корекурсия: Поддержка смешивания индуктивных и корекурсивных типов
  3. Формализованная семантика: Предоставление полного формального описания процесса компиляции

Глубокая оценка

Преимущества

  1. Сильная теоретическая новизна: Первое введение бесконечных объектов в фреймворк логического программирования с важной теоретической ценностью
  2. Полнота реализации: Предоставлен полный путь от теории к реализации, включая реализацию компилятора
  3. Богатые примеры: Множество конкретных примеров четко демонстрируют практическую применимость метода
  4. Новая модель параллелизма: Органичное сочетание логического программирования с параллельными вычислениями

Недостатки

  1. Недостаточная глубина теоретического анализа: Как отчет о прогрессе, в нем отсутствуют формализованные определения семантики и доказательства корректности
  2. Отсутствие анализа производительности: Не предоставлены тесты производительности и анализ сложности
  3. Ограниченная область применения: Текущая версия имеет ограниченный функционал, еще далеко до практического применения

Влияние

  1. Академический вклад: Введение нового направления исследований в области логического программирования
  2. Практическая ценность: Предоставление новой парадигмы программирования для обработки бесконечных структур данных
  3. Воспроизводимость: Предоставление конкретной реализации, облегчающей проверку и расширение

Применимые сценарии

  1. Системы обработки потоков: Подходит для приложений, обрабатывающих бесконечные потоки данных
  2. Символьные вычисления: Вычисления, требующие работы с бесконечными математическими объектами
  3. Моделирование параллельных систем: Может использоваться для моделирования и верификации поведения параллельных систем

Библиография

Статья цитирует важные работы в области логических фреймворков, теории доказательств и параллельных вычислений, включая:

  • Систему Automath де Брейна
  • Фреймворк LF Харпера и др.
  • λ-Prolog Миллера и др.
  • Полуаксиоматическое секвенциальное исчисление ДеЙанга и др.

Общая оценка: Это инновационная статья в области теоретической информатики, которая впервые вводит поддержку бесконечных объектов в логический фреймворк и предлагает новую модель параллельных вычислений. Хотя как отчет о прогрессе она имеет место для улучшения в теоретической глубине, ее основные идеи и предварительная реализация открывают новое направление исследований в этой области.