paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A Brookes-Style Denotational Semantics for Release/Acquire Concurrency

面向 Release/Acquire 并发的 Brookes 风格指称语义
TOPLAS 47(2)2025匹配度 2/10 · 论文属于并发弱内存模型的形式指称语义,与用户关注的三条主线(PL→AI/静态分析+LLM Agent、AI→PL/LLM 改进静态分析与形式化验证、浮点/贝叶斯程序分析与 LLM 交叉)没有直接交集;虽然同属程序语言与形式语义领域,但不涉及静态分析、LLM 或相关交叉应用。引用 1 inbox
Yotam Dvir, Ohad Kammar, Ori Lahav
crossref: 2026-09-10

AI 速览

一句话:首次在 Moggi 单子框架下为 RA 弱内存模型的函数式并发语言给出组合式指称语义,并验证程序变换。

本文为一种具备一等并行组合与共享内存操作的函数式语言提出组合式指称语义,其操作语义遵循 Release/Acquire(RA)弱内存模型。语义采用 Moggi 的单子方法,并以 Brookes 风格轨迹为基础:作者将 Brookes 的轨迹适配到 Kang 等人提出的 RA 基于视图的机器,并在 Brookes 的 mumble 与 stutter 闭包之外补充了 RA 特有的操作。这些补充操作提供了对轨迹更细致的理解,使轨迹与操作语义中的“中断执行”解耦。作者证明该指称语义是 adequate 的,并用其验证了若干有意义的程序变换。这是首个将弱内存模型置于 Moggi 标准单子方法之中、与其他编程效应同等对待的工作。

问题
如何为遵循 RA 弱内存模型、具有一等并行组合与共享内存操作的函数式语言给出组合式指称语义。
方法
基于 Moggi 的单子方法,采用 Brookes 风格轨迹并将其适配到 RA 的基于视图机器,同时引入 RA 特有的 mumble/stutter 之外的闭包操作。
评估
证明指称语义相对于操作语义的 adequacy,并利用该语义验证若干程序变换。
原文摘要(Abstract)

We present a compositional denotational semantics for a functional language with first-class parallel composition and shared-memory operations whose operational semantics follows the Release/Acquire weak memory model (RA). The semantics is formulated in Moggi’s monadic approach and is based on Brookes-style traces. To do so we adapt Brookes’s traces to view-based machine for RA by Kang et al., and supplement Brookes’s mumble and stutter closure operations with additional operations, specific to RA. The latter provides a more nuanced understanding of traces that uncouples them from operational interrupted executions. We show that our denotational semantics is adequate and use it to validate various program transformations of interest. This is the first work to put weak memory models on the same footing as many other programming effects in Moggi’s standard monadic approach.

链接与引用

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

BibTeX
@article{DvirKL25,
  title = {A Brookes-Style Denotational Semantics for Release/Acquire Concurrency},
  author = {Yotam Dvir and Ohad Kammar and Ori Lahav},
  journal = {ACM Transactions on Programming Languages and Systems},
  volume = {47},
  number = {2},
  year = {2025},
  doi = {10.1145/3715096}
}