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

Programmation Logique CoLF comme Exploration de Preuves Infinitaires

Informations Fondamentales

  • ID de l'article: 2510.12302
  • Titre: CoLF Logic Programming as Infinitary Proof Exploration
  • Auteurs: Zhibo Chen (Carnegie Mellon University), Frank Pfenning (Carnegie Mellon University)
  • Classification: cs.LO (Logique en Informatique)
  • Conférence de publication: LFMTP 2025 (International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice)
  • Lien de l'article: https://arxiv.org/abs/2510.12302

Résumé

Cet article explore la mise en œuvre du paradigme « calcul comme construction de preuve » sur le fragment du premier ordre de CoLF^ω (CoLF^ω_1), un fragment qui contient déjà des objets et des preuves infinitaires. L'idée centrale consiste à interpréter les variables logiques comme des canaux de communication et le calcul comme un passage de messages concurrents. Cette idée est concrétisée par une implémentation de compilateur qui traduit CoLF^ω_1 en Sax — un langage de programmation parallèle inspiré de la théorie des preuves, basé sur la réduction de preuves dans le calcul des séquents semi-axiomatisé.

Contexte et Motivation de la Recherche

Contexte du Problème

  1. Limitations des cadres logiques traditionnels: Les cadres logiques antérieurs tels qu'Automath et LF, bien qu'ils aient réussi à implémenter le paradigme « calcul comme construction de preuve », ne supportent pas l'expression directe d'objets ou de preuves infinitaires.
  2. Problèmes des implémentations existantes: La recherche de preuves basée sur le retour arrière fait face à de multiples difficultés dans un contexte infinitaire:
    • Problèmes de terminaison lorsque les entrées sont infinies
    • Interactions problématiques entre objets infinitaires et retour arrière (qui peuvent ne jamais échouer explicitement)
    • Les algorithmes d'unification ne garantissent la terminaison que sur les termes rationnels (cycliques), alors que de nombreux objets ou preuves dans les applications ne sont pas rationnels

Motivation de la Recherche

  1. Support du calcul infinitaire: Nécessité d'une sémantique dynamique capable de calculer les sorties de manière incrémentale à partir des entrées, similaire aux transducteurs entre flux
  2. Éviter le retour arrière: Assurer statiquement par des vérifications de motifs et d'unicité qu'il existe au maximum une preuve pour chaque entrée unique
  3. Parallélisation: Exploiter la communication entre variables partagées pour réaliser le parallélisme ET entre plusieurs prémisses

Contributions Principales

  1. Proposition du langage de programmation logique CoLF^ω_1: Support des preuves avec représentation de termes infinitaires, construction de preuves sans retour arrière, évaluation parallèle des prémisses utilisant des variables logiques partagées pour la communication
  2. Modèle de calcul innovant: Interprétation des variables logiques comme des canaux de communication et du calcul comme un passage de messages concurrents
  3. Implémentation d'un compilateur: Implémentation concrète d'un compilateur de CoLF^ω_1 vers Sax
  4. Système d'exemples riche: Incluant l'implémentation de traitement de flux, de suites de Fibonacci, d'opérations d'intégration et d'autres relations complexes

Détails de la Méthode

Définition de la Tâche

Cet article étudie comment implémenter la programmation logique dans un cadre logique supportant les objets infinitaires, avec la tâche spécifique suivante:

  • Entrée: Spécification de programme CoLF^ω_1
  • Sortie: Structures infinitaires (telles que des flux) calculées via passage de messages concurrents
  • Contraintes: Pas de retour arrière, support du calcul parallèle, garantie d'unicité

Architecture Technique Centrale

1. Système de Types de Données

conat: cotype.          % type de conat (nombre naturel coinductif)
z: conat.               % constructeur zéro
s: conat -> conat.      % constructeur successeur

stream: cotype.         % type de flux
cons: conat -> stream -> stream.  % constructeur de flux

2. Définition de Relations et Déclarations de Motifs

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. Sémantique de Calcul

Le comportement du programme est défini par les opérations suivantes:

  • Opérations sur canaux: Chaque paramètre est traité comme un canal de communication, les déclarations de motifs spécifiant les canaux d'entrée (+) ou de sortie (-)
  • Opérations de lecture/écriture: Le programme peut lire des valeurs à partir de canaux d'entrée et écrire des valeurs vers des canaux de sortie
  • Transfert de canaux: Transfert direct d'un canal d'entrée vers un canal de sortie
  • Génération parallèle: Allocation de nouveaux canaux et génération de nouveaux processus

Points d'Innovation Technique

1. Garantie Sans Retour Arrière

La vérification statique d'unicité garantit qu'il existe au maximum une action possible à chaque point du programme, éliminant le besoin de retour arrière présent dans la programmation logique traditionnelle.

2. Modèle d'Exécution Concurrente

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

Dans la définition de multiplication ci-dessus, les deux prémisses mult A B C et add B C D peuvent être évaluées en parallèle, communiquant via la variable partagée C.

3. Calcul Incrémental

Support de l'évaluation paresseuse, où lorsque la sortie D est progressivement révélée, les B premières étapes ne nécessitent pas d'évaluer mult A B C, car C reste inchangé.

Configuration Expérimentale

Cas de Test

L'article valide l'efficacité de la méthode par plusieurs exemples concrets:

  1. Opérations de flux basiques:
    • repeat n: Flux répétant infiniment le chiffre n
    • up n: Flux croissant à partir de n
  2. Relations complexes:
    • Addition de conats
    • Addition ponctuelle de flux
    • Génération de suite de Fibonacci
  3. Opérations avancées:
    • Opérations d'intégration (sommes cumulées)
    • Génération de flux de nombres pairs

Détails d'Implémentation

  • Le compilateur génère du code Sax à partir du code source CoLF^ω_1
  • L'évaluation s'arrête après une profondeur prédéfinie
  • Support du passage de messages entre processus concurrents

Résultats Expérimentaux

Résultats Principaux

1. Génération de Flux Basique

up z résultat d'exécution:
(cons z
(cons (s z)
(cons (s (s z))
(cons (s (s (s z)))
(cons (s (s (s (s z)))) ...)))))

2. Traitement d'Objets Infinitaires

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

Résultat:
(cons (s (s (s (s ...))))
(cons (s (s (s ...)))
(cons (s (s ...))
(cons (s ...)
(cons ...)))))

3. Vérification de Calculs Complexes

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

Résultat d'intégration:

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

Découvertes Expérimentales

  1. Vérification du parallélisme: Plusieurs prémisses peuvent effectivement être exécutées en parallèle, communiquant efficacement via des variables partagées
  2. Traitement de structures infinitaires: Gestion réussie de définitions récursives infinitaires, telles que ω = s ω
  3. Calcul incrémental: Validation de l'efficacité de l'évaluation paresseuse et de la sortie incrémentale

Travaux Connexes

Cadres Logiques Traditionnels

  • Série LF: Cadre LF de Harper et al., supportant la vérification de preuves basique
  • λ-Prolog/Elf: Calcul basé sur le chaînage arrière comme construction de preuve
  • LolliMon/Celf: Cadres intégrant le chaînage avant

Avantages de cet Article par Rapport aux Travaux Connexes

  1. Support infinitaire: Premier support direct d'objets et de preuves infinitaires dans un cadre logique
  2. Modèle concurrent: Modèle de calcul innovant par passage de messages concurrents
  3. Sans retour arrière: Élimination du retour arrière par analyse statique

Conclusion et Discussion

Conclusions Principales

  1. Implémentation réussie du langage de programmation logique CoLF^ω_1 supportant les objets infinitaires
  2. Validation de la faisabilité d'interpréter les variables logiques comme des canaux de communication
  3. Démonstration de l'efficacité du modèle de passage de messages concurrents en programmation logique

Limitations

  1. Support actuel limité au fragment coinductif: Pas de support pour les cas mixtes inductif-coinductif
  2. Restriction au premier ordre: Implémentation actuelle limitée au fragment du premier ordre, manque de support pour les termes d'ordre supérieur
  3. Limitations du système de types: Pas de support pour les termes de types dépendants (support uniquement au niveau des objets de preuve)

Directions Futures

  1. Extension vers CoLF^ω complet: Support des termes d'ordre supérieur et des termes de types dépendants
  2. Induction-Coinduction mixte: Support des types inductifs et coinductifs mixtes
  3. Sémantique formelle: Fourniture d'une description formalisée complète du processus de compilation

Évaluation Approfondie

Points Forts

  1. Innovation théorique forte: Premier introduction d'objets infinitaires dans un cadre de programmation logique, avec une valeur théorique importante
  2. Complétude d'implémentation: Fourniture d'un chemin complet de la théorie à l'implémentation, incluant l'implémentation du compilateur
  3. Exemples riches: Démonstration claire de la praticité de la méthode par plusieurs exemples concrets
  4. Modèle concurrent novateur: Combinaison organique de la programmation logique et du calcul concurrent

Insuffisances

  1. Analyse théorique insuffisante: En tant que rapport de progrès, manque de définition sémantique formalisée et de preuves de correction
  2. Absence d'analyse de performance: Pas de tests de performance et d'analyse de complexité fournis
  3. Limitations de portée d'application: Version actuelle avec fonctionnalités limitées, encore loin de la mise en pratique

Impact

  1. Contribution académique: Introduction d'une nouvelle direction de recherche pour le domaine de la programmation logique
  2. Valeur pratique: Fourniture d'un nouveau paradigme de programmation pour le traitement de structures de données infinitaires
  3. Reproductibilité: Fourniture d'une implémentation concrète facilitant la vérification et l'extension

Scénarios d'Application

  1. Systèmes de traitement de flux: Approprié pour les applications traitant des flux de données infinitaires
  2. Calcul symbolique: Calculs nécessitant le traitement d'objets mathématiques infinitaires
  3. Modélisation de systèmes concurrents: Peut être utilisé pour modéliser et vérifier le comportement de systèmes concurrents

Références

L'article cite des références importantes dans les domaines des cadres logiques, de la théorie des preuves et du calcul parallèle, incluant:

  • Le système Automath de de Bruijn
  • Le cadre LF de Harper et al.
  • λ-Prolog de Miller et al.
  • Le calcul des séquents semi-axiomatisé de DeYoung et al.

Évaluation Globale: Cet article est une contribution théorique innovante en informatique, introduisant pour la première fois le support d'objets infinitaires dans un cadre logique et proposant un modèle de calcul concurrent novateur. Bien qu'en tant que rapport de progrès il y ait place pour une plus grande profondeur théorique, ses idées centrales et son implémentation préliminaire ouvrent une nouvelle direction de recherche pour ce domaine.