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

Programación Lógica CoLF como Exploración de Pruebas Infinitarias

Información Básica

  • ID del Artículo: 2510.12302
  • Título: CoLF Logic Programming as Infinitary Proof Exploration
  • Autores: Zhibo Chen (Carnegie Mellon University), Frank Pfenning (Carnegie Mellon University)
  • Clasificación: cs.LO (Lógica en Ciencia de la Computación)
  • Conferencia de Publicación: LFMTP 2025 (International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice)
  • Enlace del Artículo: https://arxiv.org/abs/2510.12302

Resumen

Este artículo explora métodos para implementar el paradigma "computación como construcción de pruebas" en el fragmento de primer orden de CoLF^ω (CoLF^ω_1), que ya contiene objetos infinitos y pruebas. La idea central es interpretar variables lógicas como canales de comunicación e interpretar la computación como paso de mensajes concurrente. Esta idea se materializa mediante una implementación concreta de compilador que traduce CoLF^ω_1 a Sax, un lenguaje de programación paralelo inspirado en la teoría de pruebas basado en reducción de pruebas en cálculo de secuentes semi-axiomatizado.

Contexto de Investigación y Motivación

Antecedentes del Problema

  1. Limitaciones de marcos lógicos tradicionales: Marcos lógicos tempranos como Automath y LF, aunque implementaron exitosamente el paradigma "computación como construcción de pruebas", no soportaban la expresión directa de objetos infinitos o pruebas
  2. Problemas de implementaciones existentes: La búsqueda de pruebas basada en retroceso enfrenta múltiples dificultades en configuraciones infinitas:
    • Problemas de terminación cuando la entrada es infinita
    • Problemas de interacción entre objetos infinitos y retroceso (posiblemente nunca falle explícitamente)
    • Los algoritmos de unificación solo garantizan terminación en términos racionales (cíclicos), pero muchos objetos o pruebas en aplicaciones no son racionales

Motivación de la Investigación

  1. Soportar computación infinita: Se necesita una semántica dinámica que pueda computar incrementalmente la salida a partir de la entrada, similar a transformadores entre flujos
  2. Evitar retroceso: Garantizar estáticamente mediante patrones y verificación de unicidad que exista como máximo una prueba para cada entrada única
  3. Paralelización: Explotar paralelismo-y entre múltiples premisas mediante comunicación entre variables compartidas

Contribuciones Principales

  1. Propuesta del lenguaje de programación lógica CoLF^ω_1: Soporta pruebas con representación de términos infinitos, construcción de pruebas sin retroceso, evaluación paralela de premisas mediante variables lógicas compartidas para comunicación
  2. Modelo de computación innovador: Interpreta variables lógicas como canales de comunicación e interpreta la computación como paso de mensajes concurrente
  3. Implementación de compilador: Compilador concreto de CoLF^ω_1 a Sax
  4. Sistema de ejemplos enriquecido: Incluye implementaciones de procesamiento de flujos, secuencia de Fibonacci, operaciones de integración y otras relaciones complejas

Detalles de la Metodología

Definición de Tareas

Este artículo investiga cómo implementar programación lógica en marcos lógicos que soportan objetos infinitos. La tarea específica es:

  • Entrada: Especificación de programa CoLF^ω_1
  • Salida: Estructuras infinitas (como flujos) computadas mediante paso de mensajes concurrente
  • Restricciones: Sin retroceso, soportar computación paralela, garantizar unicidad

Arquitectura Técnica Principal

1. Sistema de Tipos de Datos

conat: cotype.          % tipo de conaturales
z: conat.               % constructor cero
s: conat -> conat.      % constructor sucesor

stream: cotype.         % tipo de flujo
cons: conat -> stream -> stream.  % constructor de flujo

2. Definición de Relaciones y Declaración de Patrones

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. Semántica de Computación

El comportamiento del programa se define mediante las siguientes operaciones:

  • Operaciones de canal: Cada parámetro se considera un canal de comunicación, con declaraciones de modo especificando canales de entrada (+) o salida (-)
  • Operaciones de lectura/escritura: El programa puede leer valores de canales de entrada y escribir valores en canales de salida
  • Reenvío de canal: Reenviar directamente un canal de entrada a un canal de salida
  • Generación paralela: Asignar nuevos canales y generar nuevos procesos

Puntos de Innovación Técnica

1. Garantía de Ausencia de Retroceso

Mediante verificación estática de unicidad se garantiza que en cada punto del programa existe como máximo una acción posible, eliminando la necesidad de retroceso en programación lógica tradicional.

2. Modelo de Ejecución Concurrente

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

En la definición anterior de multiplicación, las dos premisas mult A B C y add B C D pueden evaluarse en paralelo, comunicándose a través de la variable compartida C.

3. Computación Incremental

Soporta evaluación perezosa; cuando la salida D se revela gradualmente, los primeros B pasos no necesitan evaluar mult A B C porque C permanece sin cambios.

Configuración Experimental

Casos de Prueba

El artículo verifica la efectividad del método mediante múltiples ejemplos concretos:

  1. Operaciones básicas de flujo:
    • repeat n: flujo que repite infinitamente el número n
    • up n: flujo que incrementa desde n
  2. Relaciones complejas:
    • Adición de conaturales
    • Adición puntual de flujos
    • Generación de secuencia de Fibonacci
  3. Operaciones avanzadas:
    • Operaciones de integración (suma acumulativa)
    • Generación de flujo de números pares

Detalles de Implementación

  • El compilador genera código Sax a partir del código fuente CoLF^ω_1
  • La evaluación se detiene después de alcanzar una profundidad predeterminada
  • Soporta paso de mensajes entre procesos concurrentes

Resultados Experimentales

Resultados Principales

1. Generación Básica de Flujos

Resultado de ejecución up z:
(cons z
(cons (s z)
(cons (s (s z))
(cons (s (s (s z)))
(cons (s (s (s (s z)))) ...)))))

2. Manejo de Objetos Infinitos

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

Resultado:
(cons (s (s (s (s ...))))
(cons (s (s (s ...)))
(cons (s (s ...))
(cons (s ...)
(cons ...)))))

3. Verificación de Computación Compleja

Secuencia de Fibonacci:

(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)))))))) ...)))))))

Resultado de operación de integración:

(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)))))))))) ...)))))

Hallazgos Experimentales

  1. Verificación de paralelismo: Múltiples premisas pueden ejecutarse efectivamente en paralelo, comunicándose a través de variables compartidas
  2. Manejo de estructuras infinitas: Manejo exitoso de definiciones recursivas infinitas, como ω = s ω
  3. Computación incremental: Verificación de la efectividad de evaluación perezosa y salida incremental

Trabajo Relacionado

Marcos Lógicos Tradicionales

  • Serie LF: Marco LF de Harper et al., soporta verificación de pruebas básica
  • λ-Prolog/Elf: Computación basada en encadenamiento hacia atrás como construcción de pruebas
  • LolliMon/Celf: Marcos que integran encadenamiento hacia adelante

Ventajas de Este Artículo Respecto al Trabajo Relacionado

  1. Soporte infinito: Primera vez que se soporta directamente objetos infinitos y pruebas en un marco lógico
  2. Modelo concurrente: Modelo innovador de paso de mensajes concurrente
  3. Sin retroceso: Eliminación de retroceso mediante análisis estático

Conclusiones y Discusión

Conclusiones Principales

  1. Implementación exitosa del lenguaje de programación lógica CoLF^ω_1 que soporta objetos infinitos
  2. Verificación de la viabilidad de interpretar variables lógicas como canales de comunicación
  3. Demostración de la efectividad del modelo de paso de mensajes concurrente en programación lógica

Limitaciones

  1. Actualmente solo soporta fragmento correcursivo: No soporta casos mixtos de recursión y correcursión
  2. Restricción de primer orden: Actualmente solo implementa fragmento de primer orden, carece de soporte para términos de orden superior
  3. Limitaciones del sistema de tipos: No soporta términos con tipos dependientes (solo soportados en nivel de objetos de prueba)

Direcciones Futuras

  1. Extensión a CoLF^ω completo: Soporte para términos de orden superior y términos con tipos dependientes
  2. Recursión y correcursión mixtas: Soporte para mezcla de tipos inductivos y coinductivos
  3. Semántica formalizada: Descripción formalizada completa del proceso de compilación

Evaluación Profunda

Fortalezas

  1. Innovación teórica fuerte: Primera introducción de objetos infinitos en marco de programación lógica, con valor teórico importante
  2. Completitud de implementación: Proporciona ruta completa desde teoría hasta implementación, incluyendo implementación de compilador
  3. Ejemplos enriquecidos: Demuestra claramente la practicidad del método mediante múltiples ejemplos concretos
  4. Modelo concurrente novedoso: Combinación orgánica de programación lógica con computación concurrente

Insuficiencias

  1. Análisis teórico no suficientemente profundo: Como informe de progreso, carece de definición semántica formalizada y pruebas de corrección
  2. Análisis de rendimiento ausente: No proporciona pruebas de rendimiento ni análisis de complejidad
  3. Restricciones de aplicabilidad: La versión actual tiene funcionalidad limitada, aún distante de aplicación práctica

Impacto

  1. Contribución académica: Introduce nueva dirección de investigación en el campo de programación lógica
  2. Valor práctico: Proporciona nuevo paradigma de programación para procesamiento de estructuras de datos infinitas
  3. Reproducibilidad: Proporciona implementación concreta para facilitar verificación y extensión

Escenarios de Aplicación

  1. Sistemas de procesamiento de flujos: Apropiado para aplicaciones que procesan flujos de datos infinitos
  2. Computación simbólica: Cálculos que necesitan manejar objetos matemáticos infinitos
  3. Modelado de sistemas concurrentes: Puede usarse para modelar y verificar comportamiento de sistemas concurrentes

Referencias

El artículo cita literatura importante en campos de marcos lógicos, teoría de pruebas y computación paralela, incluyendo:

  • Sistema Automath de de Bruijn
  • Marco LF de Harper et al.
  • λ-Prolog de Miller et al.
  • Cálculo de secuentes semi-axiomatizado de DeYoung et al.

Evaluación General: Este es un artículo innovador de ciencia de la computación teórica que introduce por primera vez soporte de objetos infinitos en marcos lógicos, proponiendo un modelo de computación concurrente novedoso. Aunque como informe de progreso aún hay espacio para mejorar la profundidad teórica, sus ideas centrales e implementación preliminar abren nuevas direcciones de investigación en este campo.