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].
본 논문은 CoLF^ω의 1차 단편(CoLF^ω_1)에서 "계산은 증명 구성이다"라는 패러다임을 구현하는 방법을 탐구합니다. 이 단편은 이미 무한 객체와 증명을 포함하고 있습니다. 핵심 아이디어는 논리 변수를 통신 채널로 해석하고 계산을 동시 메시지 전달로 해석하는 것입니다. 이 아이디어는 구체적인 컴파일러 구현을 통해 실현되며, CoLF^ω_1을 Sax로 컴파일합니다. Sax는 반공리화 수열 계산의 증명 축약에 기반한 증명론에서 영감을 받은 병렬 프로그래밍 언어입니다.
omega : conat = s omega.
main : stream = repeat omega.
결과:
(cons (s (s (s (s ...))))
(cons (s (s (s ...)))
(cons (s (s ...))
(cons (s ...)
(cons ...)))))