paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Domain-Theoretic Semantics for Functional Logic Programming

函数逻辑编程的域论语义
POPL 10(POPL)2026匹配度 2/10 · 论文研究函数逻辑编程的域论语义与抽象机,属于纯 PL 理论,未涉及 LLM/Agent、静态分析在 AI 系统中的应用,也未涉及浮点或贝叶斯程序分析,与用户核心的 PL 与 AI 交叉方向匹配度很低。引用 0 inbox
Eddie Jones, Samson Main, Celia Mengyue Li, Jonathan Marriott, G. A. Kavvos
crossref: 2026-09-10

AI 速览

一句话:基于 call-by-push-value 重构函数逻辑编程核心演算,并以 lower powerdomain 给出与抽象机完全抽象的域论语义。

函数逻辑编程(FLP)在高阶函数式编程之上引入非确定性选择、逻辑变量与等式约束。本文观察到这些构造可呈现为代数效应,据此理性重构了一个基于 call-by-push-value 的 FLP 核心演算,支持高阶函数与递归。作者给出一个实现 narrowing 的抽象机来执行该演算的程序,并基于 lower powerdomain 建立域论语义,证明该语义相对于抽象机是可靠的(sound)、充分的(adequate)且完全抽象的(fully abstract)。这一结果同时引发对域论在刻画 FLP 时局限性的探讨,为理解非确定性与约束求解的语义基础提供了新的视角。

问题
如何为含非确定性选择、逻辑变量与等式约束的高阶函数逻辑编程语言建立能精确刻画其计算行为的语义基础。
方法
把 FLP 构造视为代数效应,基于 call-by-push-value 重构支持高阶函数与递归的核心演算,设计实现 narrowing 的抽象机,并给出基于 lower powerdomain 的域论语义。
评估
以抽象机为参照,证明所提域论语义的可靠性、充分性与完全抽象性,并据此讨论域论方法在 FLP 建模上的局限。
原文摘要(Abstract)

Functional Logic Programming (FLP) is a paradigm that extends higher-order functional programming with nondeterministic choice, logical variables, and equational constraints. Starting from the observation that these constructs can be presented as algebraic effects, we rationally reconstruct a core calculus for FLP that is based on call-by-push-value, and supports higher-order functions and recursion. We show how to execute its programs through an abstract machine that implements narrowing. Finally, we present a domain-theoretic semantics based on the lower powerdomain, which we prove to be sound, adequate, and fully abstract with respect to the machine. This leads to an exploration of the limitations of domain theory in modelling FLP.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@article{JonesMLMK26,
  title = {Domain-Theoretic Semantics for Functional Logic Programming},
  author = {Eddie Jones and Samson Main and Celia Mengyue Li and Jonathan Marriott and G. A. Kavvos},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {POPL},
  year = {2026},
  doi = {10.1145/3776699}
}