GLP: A Grassroots, Multiagent, Concurrent, Logic Programming Language for AI (Full Version)
London School of Economics(伦敦政治经济学院);Weizmann Institute of Science(魏茨曼科学研究所)
提出草根逻辑程序(GLP),一种用于实现草根平台的多智能体并发逻辑编程语言,通过多智能体操作语义证明其草根性,并展示其在社交图等平台的应用。
2026-07-07 cs.CR cs.DC cs.LO
Hoare-style Specifications as Correctness Conditions for Non-linearizable Concurrent Objects
设计可扩展的并发对象,它可以有效地用于多核处理器,往往需要放弃标准的规范技术,如线性化,有利于更宽松的一致性要求。然而,各种各样的替代正确性条件使得在特定情况下难以选择使用哪一个,并且在使用其行为通过不同标准指定的对象时难以组合它们。缺乏句法验证方法的大多数这些标准构成了挑战,在他们的系统采用和应用。在本文中,我们认为使用霍尔风格的程序逻辑作为一种替代和统一的方法规范和组合形式化验证的并发对象及其客户端程序的安全属性。通过一系列的案例研究,我们展示了如何现有的程序逻辑的并发性可以采用现成的捕捉重要的状态和历史不变,允许一个明确量化的环境线程的干扰,并提供直观和富有表现力的霍尔式规范的几个非线性并发对象,以前只指定通过专用的正确性标准。我们通过验证一些并发客户端的情况下,利用以前指定的并发对象,捕捉并发意识的线性化,静态和定量静态一致性等正确性条件的本质,说明我们的规范的充分性。本文中描述的所有示例都在Coq中进行了机械验证。
2016-07-21 cs.LO cs.PL
Operational semantics for signal handling
信号是Unix中进程间通信的一种轻量级形式。当进程接收到信号时,控制流被中断,并运行先前安装的信号处理程序。信号处理让人联想到异常处理和进程的并发交织。在本文中,我们研究了不同的方法来形式化信号处理的操作语义,并比较了一系列的例子。我们发现,大步骤风格的操作语义是非常适合建模信号处理。我们通过采用标准ML定义中定义的异常约定,将异常处理与信号处理的大步语义集成在一起。语义需要捕获信号处理和异常处理之间的复杂交互。
2012-08-14 cs.LO cs.PL
An Asynchronous soundness theorem for concurrent separation logic
并发分离逻辑(CSL)是一种用于具有共享内存和锁的并发命令式程序的规范逻辑。在本文中,我们开发了一个并发和交互式帐户的异步游戏语义的启发逻辑。对于每个程序$C$,我们将一对异步转换系统$[C]_S$和$[C]_L$关联起来,它们描述了代码面对其环境或框架时的操作行为--在机器状态($S$)和机器指令和锁($L$)的级别上。然后,我们建立的每一个衍生树$π$的判断$Γ\vdash\{P\}C\{Q\}$定义了一个胜利和异步策略$[π]_{Sep}$相对于异步语义$[C]_S$和$[C]_L$。从这一点,我们推导出一个异步可靠性定理CSL,它指出,规范映射$\mathcal{L}:[C]_S\to[C]_L$从有状态语义$[C]_S$的无状态语义$[C]_L$满足一个基本的fibrational属性。我们主张,这提供了一个干净的和概念性的解释通常的CSL的可靠性定理,包括没有数据竞争。
2018-07-21 cs.LO cs.PL
Modeling Hybrid Systems in the Concurrent Constraint Paradigm
混合系统结合了离散和连续动态,需要高质量的建模语言来描述或分析。并发约束范例(CCP)是一种表达性声明范例,其特征在于使用公共约束存储来通信和同步并发代理。在这种范式中,信息以约束的形式表示,与命令式语言典型的变量/值风格相反。为了对反应系统进行建模,人们提出了ccp的几种扩展。这些扩展之一是定时并发约束语言(tccp),它为ccp添加了离散时间的概念和新特性,以模拟超时和抢占操作。本文的目的是探索tccp描述混杂系统的表达能力。我们介绍的语言Hy-tccp作为一个保守的扩展tccp,通过添加一个连续时间的概念和新的结构来描述混合动力系统的连续动态。本文介绍了Hy-tccp的语法和操作语义,并举例说明了这种新语言的表达能力。
2015-01-09 cs.LO cs.PL
CRIL: A Concurrent Reversible Intermediate Language
提出CRIL,一种并发可逆中间语言,通过扩展RIL并引入多线程进程调用与P-V同步原语,实现了高级并发程序到低级并发语言的保持可逆性翻译,并证明了其操作语义的因果安全与活性。
2023-09-13 cs.PL cs.SE
Strict Linearizability and Abstract Atomicity
可线性化性是并发对象普遍接受的一致性条件。Filipović等人证明了线性化等价于观测精化。然而,线性化不允许并发对象与它们的客户端程序共享内存空间。我们表明,即使一个对象的客户端程序访问共享内存空间,而不受干扰的对象的方法的线性化(或观测细化)可以被打破。在本文中,我们提出了严格的线性化解除这一限制,可以确保客户端的痕迹和最终状态的等价性,即使在一个宽松的程序模型,允许客户端直接访问并发对象的状态。我们还研究了严格线性化的几个重要性质。在高抽象级别上,并发对象可以被视为抽象数据类型(ADT)的并发实现。我们还提出了一个正确的标准相关的ADT及其并发实现,这是线性化和数据抽象的组合,可以确保观察等价。我们还研究了它与严格线性化的关系。
2018-06-21 cs.PL cs.SE
Compiling a Calculus for Relaxed Memory: Practical constraint-based low-level concurrency
Crary和Sullivan的松弛内存演算(Relaxed Memory Calculus,RMC)提出了一种新的声明式方法,用于在现代松弛内存多处理器体系结构和优化编译器的情况下编写低级共享内存并发程序。在RMC中,程序员显式地指定对操作执行顺序和内存写入可见性的约束。这些约束然后由编译器强制执行,编译器在如何实现其目标方面具有很大的自由度。我们提出了rmc-compiler,一个Clang和LLVM为基础的编译器的RMC扩展的C和C++。除了使用障碍来强制排序之外,rmc编译器还可以利用控制和数据依赖关系,这超出了当前C/C++编译器的能力。在rmc编译器中,RMC编译被建模为一个带有代价项的SMT问题,具有最小代价的解决定编译策略。在ARM和POWER设备上的测试中,RMC表现相当不错,在我们的大多数数据结构基准测试中,相对于C++11,RMC的性能有了适度的改进,并且(在某些架构上)在主要读列表测试中有了显着的改进,这在很大程度上得益于使用数据依赖关系进行排序。
2019-04-10 cs.PL
Verifying C11 Programs Operationally
本文提出了一个操作语义的释放-获取片段的C11内存模型与宽松的访问。我们表明,语义是健全的和完整的公理模型。语义依赖于每个线程的可观察性概念,这使得人们可以按照程序顺序对弱内存C11程序进行推理。在此之上,我们开发了一个证明演算为基础的不变量推理,我们用它来验证释放获取版本的彼得森的互斥算法。
2018-11-22 cs.DC cs.PL
A comprehensive operational semantics of the SCOOP programming model
操作语义作为一种灵活但严格的方法来描述程序设计语言的含义。通常,感觉有必要保持语义小,例如通过避免状态空间爆炸来促进其用于模型检验。然而,在语义中省略许多细节通常会使结果仅对有限的核心语言有效,从而与任何实际实现留下很大的差距。在本文中,我们提出了一个完整的语义并发面向对象的程序设计语言SCOOP(简单并发面向对象编程)。语义已被发现足够详细的SCOOP编译器和运行时系统的实现,并检测和纠正各种错误和歧义,在原来的非正式规范和原型实现。在我们的形式化规范中,我们使用带有前提和公理的抽象数据类型来描述状态,并引入了一些特殊的运行时操作来用我们的推理规则来建模运行时系统。这种方法使我们能够使我们的大型正式规范管理,提供了第一步的参考文件指定面向对象的语言的基础上操作语义。
2012-04-13 cs.DC cs.PL
Correctly Implementing Synchronous Message Passing in the Pi-Calculus By Concurrent Haskell's MVars
并发程序设计语言的比较和并发环境下程序转换的正确性是本文研究的重点。作为标准,我们使用的上下文语义适应并发,在那里可能-以及应该-收敛观察。本文研究了并发Haskell(CH)核心语言与同步π演算的关系。上下文语义一方面对操作语义的细节给予宽容,另一方面对翻译后过程之间的相互作用提出了强烈的要求。我们的结果是,CH包含同步π演算。我们的主要任务是通过CH的并发原语(MVars)来发现和证明π演算通道编码的正确性。它们的行为类似于(阻塞)1位缓冲区,对共享内存进行建模。第一个开发的翻译使用一个额外的私人MVar的每一个通信。我们还自动生成和检查潜在的正确的翻译,重用MVar,其中一个MVar包含的消息和两个额外的MVar同步用于模拟一个通道的同步通信的pi演算。我们的自动实验结果导致推测,一个额外的MVar是不够的。
2020-08-31 cs.LO cs.PL
A Linear Logic Programming Language for Concurrent Programming over Graph Structures
我们已经设计了一种新的逻辑程序设计语言称为LM(线性融合)编程基于图形的算法在声明式的方式。我们的语言是基于线性逻辑,一个表达逻辑系统,逻辑事实可以消费。因为LM集成了经典逻辑和线性逻辑,所以LM比其他逻辑程序设计语言更有表现力。LM程序自然是并发的,因为事实是由图数据结构的节点划分的。计算在节点级别执行,而通信发生在连接的节点之间。在本文中,我们提出了我们的语言的语法和操作语义,并说明其使用通过一些例子。
2014-05-14 cs.PL
Lightweight Time Modeling in Timed Creol
Creol是一种面向对象的建模语言,其中固有的并发对象交换异步方法调用。Creol的操作语义是以基于角色的风格编写的,并在重写逻辑中公式化。操作语义在Maude系统中产生了一个语言解释器,它可以用来分析模型。最近,Creol已被应用到无线电通信系统的建模,如传感器系统。在无线电通信中,信息会过期,如果同时发送,它们可能会在空中相撞。为了捕捉这些和其他属性的分布式系统,我们扩展了克里奥尔的操作语义的时间概念。我们利用框架的语言解释器使用一个轻量级的时间概念,与通用规约语言所需的。本文给出了Creol语言的一个时间扩展,包括语义和实现策略,并通过一个扩展实例讨论了它的性质。该方法可以推广到其他并发对象或演员为基础的系统。
2010-09-22 cs.LO cs.PL cs.SE
Operational Aspects of C/C++ Concurrency
在这项工作中,我们提出了一个家庭的操作语义,逐渐接近现实的程序行为的C/C++11内存模型。我们框架中的每个语义都是通过阐述和组合两个简单的成分构建的:视图和操作缓冲区。视图允许我们表达线程交互的空间方面,即,线程可以读取哪些值,而操作缓冲器使得能够利用时间执行方面进行操纵,即,确定某些操作的结果可以被并发运行的线程观察到的顺序。从一个简单的抽象状态机开始,通过一系列的抽象状态的逐步细化,我们捕获这样的语言方面和同步原语的释放/获取原子,顺序一致和非原子内存访问,还提供了一个语义放松原子,同时避免了稀薄空气的问题。据我们所知,这是C11的第一个正式的和可执行的操作语义,能够表达标准的所有基本并发方面。我们说明了我们的方法,通过一些特征的例子,有关观察到的行为,从文献中的标准石蕊测试程序。我们提供了一个可执行的PLT Redex中的语义实现,以及一些实现的石蕊测试和示例,并展示了我们的原型上的一个大型案例研究:随机测试和调试一个现实的读取-复制-更新数据结构。
2016-07-09 cs.PL
Thread-Modular Static Analysis for Relaxed Memory Models
提出了一种内存模型感知的静态程序分析方法,用于精确分析运行在具有弱一致性模型(如x86-TSO、SPARC-PSO和SPARC-RMO)的处理器上的并发软件的行为。在我们的方法的中心是一个统一的框架,用于决定线程间干扰的可行性,以避免传播虚假的数据流在静态分析,从而提高静态分析器的性能。我们制定的检查干扰的可行性作为一组数据库规则,这是有效的解决和一般足以捕捉一系列的硬件级内存模型。与现有技术相比,我们的方法可以显着减少虚假警报的数量,以及不健全的证据。我们实现了该方法,并评估了一个大的多线程的C程序集。我们的实验表明,该方法显着优于国家的最先进的技术在准确性方面只有适度的运行时开销。
2017-09-28 cs.PL cs.SE
Safe Execution of Concurrent Programs by Enforcement of Scheduling Constraints
并发程序的自动化软件验证是具有挑战性的,因为相对于线程的数量和每个线程的事件的数量呈指数级大的状态空间。诸如模型检验之类的验证技术需要探索在非确定性调度器下可能的大量可能执行。状态空间约简技术,如偏序约简,简化了验证问题,然而,减少的状态空间可能仍然是指数级大和棘手的。本文讨论了\emph{Iteratively Relaxed Scheduling},一个框架,使用调度约束,以简化验证问题,使自动验证程序,不能处理完全不确定性调度。程序执行是安全的,只要在程序已被验证的情况下实施相同的调度约束,例如,通过用附加的同步来检测程序。由于严格执行调度约束可能会导致很高的执行时间开销,我们提出了一个天真的解决方案,减少这种开销的优化。我们的评估的原型实现知名的基准程序显示的效果调度约束的执行时间开销,以及如何通过放松和选择约束,可以减少这种开销。
2020-04-14 cs.PL
The Semantics of Package Management via Event Structures
我们提出了一种方法,包管理的语义,它涉及到一般的事件结构,著名的数学对象中使用的并发,不确定性系统的语义。在这种方法中,包存储库的数据被视为一个不确定的并发程序的声明性规范。我们介绍了一个过程演算对应于此数据,并调查其操作和分类语义。我们希望这为进一步正式研究包管理奠定了基础,在这种研究中,可以利用现有的工具。
2021-07-04 cs.DC cs.LO cs.PL
Relaxed virtual memory in Armv8-A (extended version)
虚拟内存是一种强制执行安全边界的基本机制,但其松弛内存并发语义以前没有被详细研究。管理虚拟内存的并发系统代码完全是非正式的,操作系统和虚拟机管理程序验证必须做出主要的简化假设。我们探索宽松的虚拟内存语义在Armv 8-A架构的设计空间,以支持未来的系统软件验证。在与Arm的讨论中,我们确定了许多设计问题;开发了一个测试套件,包括来自Google正在开发的pKVM生产管理程序的用例;用公理式并发模型划分设计空间;证明在简单的稳定配置下,我们的架构模型可以折叠到以前的“用户”模型;开发工具来计算与完整的Armv 8-A ISA语义集成的模型中允许的行为;开发一个硬件测试设备这列出了一些主要问题,在宽松的虚拟内存把这些安全关键系统的现象到域的编程语言语义和验证与基础架构语义。本文是ESOP 2022中一篇论文的扩展版本,在正文中有额外的解释和示例,附录详细介绍了我们的石蕊测试,模型,证明和测试结果。
2022-03-01 cs.AR cs.OS cs.PL
Proceedings Eight Workshop on Structural Operational Semantics 2011
本卷包含SOS 2011的会议记录,第八届结构操作语义研讨会,于2011年9月5日在德国亚琛举行,作为CONCUR 2011的附属研讨会,第22届国际并发理论会议。结构操作语义(SOS)提供了一个框架,为程序设计和规约语言提供操作语义。越来越多的商业和学术领域的程序设计语言已经通过结构操作语义给出了可用的语义描述。由于其直观的吸引力和灵活性,结构操作语义在并发进程的语义研究中得到了广泛的应用。在程序的静态分析和证明编译器正确性方面,它也是指称语义的一个可行的替代方案。此外,它在新兴的计算领域,如概率系统和系统生物学中也有应用。结构操作语义已成功地应用作为一种形式化的工具,建立的结果,持有类的过程描述语言。这使得众所周知的结果在进程代数领域的推广,并为发展一个元理论的基础上实现的进程演算,许多结果在这一领域只依赖于一般的语义属性的语言结构。该讲习班是对新的发展和未来调查方向感兴趣的研究人员、学生和从业人员的论坛。研讨会的具体目标之一是为并发和程序设计语言社区提供一个聚会点。另一个目标是在全世界的研究生和年轻研究人员中传播SOS的理论和实践。
2011-08-13 cs.LO cs.PL
Proceedings Combined 25th International Workshop on Expressiveness in Concurrency and 15th Workshop on Structural Operational Semantics
本卷包含第25届并发表达性国际研讨会和第15届结构操作语义研讨会(EXPRESS/SOS 2018)的会议记录,该研讨会于2018年9月3日在中国北京举行,作为第29届并发理论国际会议CONCUR 2018的附属研讨会。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是比较编程概念(如并发、函数、命令、逻辑和面向对象编程)和计算的数学模型(如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的相对表达能力。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。自2012年以来,EXPRESS和SOS社区组织了一个年度EXPRESS/SOS联合研讨会,讨论计算数学模型的表达能力以及系统和编程概念的形式语义。
2018-08-24 cs.LO cs.PL
Dynamic Structural Operational Semantics
我们引入动态SOS作为一个框架,用于描述语义的程序设计语言,包括动态软件升级,在运行时升级软件代码。动态SOS(DSOS)是建立在P.Mosses的模块化SOS之上的,具有潜在的范畴理论形式化。动态SOS的思想是指出动态升级结构和程序执行结构之间的本质区别。模块化SOS(MSOS)的重要特征,我们利用DSOS是尖锐的分离的程序执行代码从额外的(数据)结构需要在运行时。在DSOS中,我们的目标是为动态软件升级实现相同的模块化和解耦。这在一定程度上是出于长期目标,即为类型安全等一般结果提供可机器检查的证明。我们在两种支持动态软件升级的语言上支持动态SOS,即C类Proteus,它支持在特定程序点更新变量、函数、记录或类型,以及Creol,它支持在并发对象的设置中进行动态类升级。软件升级的现有类型分析也可以在DSOS之上完成,正如我们对Proteus的说明。作为一个附带的结果,我们定义了一个通用的封装结构模块SOS有用的情况下,需要一种形式的执行封装。我们使用封装在Creol设置的并发面向对象编程与活动对象和异步方法调用。
2018-07-20 cs.PL
Compiler Testing With Relaxed Memory Models
针对现有并发编译器测试技术无法兼顾边界内漏洞覆盖与大规模程序可扩展性的问题,提出工业级测试工具Téléchat,通过对比源与架构内存模型下的程序行为发现漏洞,性能优于现有技术且已部署应用。
2024-01-29 cs.AR cs.PL cs.SE
Proceedings Combined 24th International Workshop on Expressiveness in Concurrency and 14th Workshop on Structural Operational Semantics
本卷包含第24届并发表达性国际研讨会和第14届结构操作语义研讨会(EXPRESS/SOS 2017)的会议记录,该研讨会于2017年9月4日在德国柏林举行,作为第28届并发理论国际会议CONCUR 2017的附属研讨会。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是比较编程概念(如并发、函数、命令、逻辑和面向对象编程)和计算的数学模型(如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。自2012年以来,EXPRESS和SOS社区组织了一个年度EXPRESS/SOS联合研讨会,讨论计算数学模型的表达能力以及系统和编程概念的形式语义。
2017-08-31 cs.LO cs.PL
Proceedings Combined 23rd International Workshop on Expressiveness in Concurrency and 13th Workshop on Structural Operational Semantics
本卷包含第23届并发表达性国际研讨会和第13届结构操作语义研讨会(EXPRESS/SOS 2016)的会议记录,该研讨会于2016年8月22日在加拿大魁北克市举行,作为第27届并发理论国际会议CONCUR 2016的附属研讨会。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是比较编程概念(如并发、函数、命令、逻辑和面向对象编程)和计算的数学模型(如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。自2012年以来,EXPRESS和SOS社区组织了一个年度EXPRESS/SOS联合研讨会,讨论计算数学模型的表达能力以及系统和编程概念的形式语义。
2016-08-09 cs.LO cs.PL
Observational equivalences for linear logic CC languages
线性逻辑并发约束规划(LCC)是并发约束规划(CC)的一种扩展,其中约束系统是基于Girard的线性逻辑而不是经典逻辑。在本文中,我们解决这个编程框架的程序等价性问题。为了这个目的,我们提出了一个结构化的操作语义LCC的标签转换系统的基础上,并调查不同的概念的观察等价的启发,最先进的进程代数。然后,我们证明了异步π演算可以被看作是LCC的简单的语法限制。最后,我们表明LCC观测等价可以直接转置到经典的并发约束语言和约束处理规则,并调查由此产生的等价。
2011-08-01 cs.PL
Precise subtyping for synchronous multiparty sessions
子类型的概念在理论和应用领域都有重要的作用:在lambda和并发演算以及程序设计语言中。健全性和完整性,一起被称为子类型的精确性,可以从两个不同的角度来考虑:操作和指称。前一种精确性最近在类型安全方面得到了发展,即当一个更大类型的项被期望时,一个更小类型的项的安全替换。后者的精确性是基于一个类型的外延,这是一个数学对象,它根据语言中其他表达式的外延来描述该类型的含义。本文的结果是一个同步多方会话演算的子类型的操作和指称的精确性。本文的创新之处在于引入了特征全局类型来证明运算完备性。
2016-02-11 cs.LO cs.PL
Proceedings Combined 21st International Workshop on Expressiveness in Concurrency and 11th Workshop on Structural Operational Semantics
本卷包含2014年9月1日在意大利罗马举行的第21届并发表达性国际研讨会和第11届结构操作语义研讨会(EXPRESS/SOS 2014)的会议记录,作为CONCUR 2014的附属研讨会,第25届并发理论国际会议。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是比较编程概念(如并发、函数、命令、逻辑和面向对象编程)和计算的数学模型(如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。SOS在其他领域的应用报告也非常受欢迎,包括:生物系统的建模和分析,计算机系统编程的安全性,嵌入式系统的建模和分析,中间件和协调语言的规范,程序设计语言语义和实现,静态分析软件和硬件验证,以及特定领域语言和基于模型的工程的语义。
2014-08-06 cs.LO cs.PL
Proceedings Combined 20th International Workshop on Expressiveness in Concurrency and 10th Workshop on Structural Operational Semantics
本卷包含2013年8月26日在阿根廷布宜诺斯艾利斯举行的第20届并发表达性国际研讨会和第10届结构操作语义研讨会(EXPRESS/SOS 2013)的会议记录,作为CONCUR 2013的附属研讨会,第24届并发理论国际会议。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是编程概念(例如并发、函数式、命令式、逻辑和面向对象编程)之间的比较以及计算数学模型(例如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的比较。基于它们的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。SOS在其他领域的应用报告也非常受欢迎,包括:生物系统的建模和分析,计算机系统编程的安全性,嵌入式系统的建模和分析,中间件和协调语言的规范,程序设计语言语义和实现,静态分析软件和硬件验证,以及特定领域语言和基于模型的工程的语义。
2013-07-26 cs.LO cs.PL
Verifying C11-Style Weak Memory Libraries
演绎验证的并发程序在弱内存下,到目前为止,仅限于简单的程序在一个单一的状态空间。对于可伸缩性,我们还需要具有可验证库抽象的模块化技术。本文解决了这一挑战的背景下,RC 11 RAR,C11内存模型的一个子集,允许放松和释放获取访问,但不允许,所谓的负载缓冲周期。我们开发了一个简单的框架,用于指定抽象对象,精确地描述了抽象方法调用的可观察性保证。我们展示了如何将这个框架与一个操作语义集成,该操作语义使客户端程序执行它使用的库中的抽象方法调用的验证成为可能。最后,我们将展示如何实现这样的抽象在RC 11 RAR可以验证通过开发一个(上下文)细化框架的抽象对象。我们的框架,包括操作语义,客户端库程序的验证技术,和抽象库和它们的实现之间的模拟,已在伊莎贝尔/HOL机械化。
2020-12-28 cs.LO cs.PL
On the Semantics of Snapshot Isolation
快照隔离(SI)是一种标准的事务性一致性模型,用于数据库、分布式系统和软件事务存储器(STM)。它的语义被正式定义为一个声明性的非循环性公理,并在操作上作为一个并发算法与内存轴承时间戳。我们开发了两个简单的等效操作定义SI作为基于锁的参考实现,不使用时间戳。我们的第一个锁定实现是有先见之明的,因为它需要事务访问的数据的先验知识,并急切地(就地)执行事务写入。我们的第二个实现是非预知的,通过将它们记录在本地日志中并在提交时将它们传播到内存来延迟执行事务性写入。虽然我们的第一个实现更简单,可能更适合于开发一个程序逻辑SI交易,我们的第二个实现是更实际的,由于其非预见性。我们表明,这两种实现是健全的和完整的声明SI规范,从而产生等效的SI操作定义。我们进一步考虑,第一次正式地,使用SI的上下文中与活泼的非事务性访问,可以出现在STM实现SI。我们介绍了强大的快照隔离(RSI),适应SI具有类似的语义和保证在这种混合设置。我们提出了一个声明性规范的RSI作为一个非循环公理和类似的开发两个操作模型作为基于锁的参考实现(一个渴望,一个懒惰)。我们表明,这些操作模型都是健全的和完整的声明性RSI模型。
2018-09-27 cs.LO cs.PL
Defining and Verifying Durable Opacity: Correctness for Persistent Software Transactional Memory
非易失性存储器(NVM),又称持久性存储器,是一种新的存储器范例,即使在断电后也能保存其内容。NVM的预期无处不在,激发了人们对设计新概念的兴趣,以确保并发编程抽象在持久性方面的正确性。到目前为止,这已经导致了许多持久并发数据结构的设计,这些数据结构是为了满足与正确性相关的概念:持久线性化。本文将持久并发正确性的原理转移到软件事务存储器(STM)领域。软件事务存储器算法允许对共享状态的并发访问。像并发数据结构的线性化一样,不透明性是STM正确性的既定概念。首先,我们提供了一个新的定义持久的不透明度扩展不透明度处理崩溃和恢复的NVM的上下文中。其次,我们开发了一个持久的不透明版本的现有STM算法,即transmitted互斥锁(TML)。第三,我们设计了一个持久的不透明性的证明技术的基础上改进TML和持久的不透明性的操作特性,通过适应TMS 2规范。最后,我们应用这种证明技术表明,TML的持久版本确实是持久不透明的。正确性证明在Isabelle中是机械化的。
2020-04-17 cs.DC cs.LO cs.PL
Implementing and Verifying Release-Acquire Transactional Memory (Extended Version)
transmittance memory(TM)是一种深入研究的同步范例,其中提出了许多软件和硬件及其组合的实现方式。然而,放松记忆下的TM,例如,C11(2011 C/C ++标准)仍然知之甚少,缺乏支持可验证实现的严格基础。本文解决了这一差距,通过开发TMS 2-RA,一个宽松的操作TM规范。我们将TMS2-RA与RC11(修复的C11内存模型,不允许负载缓冲)集成,为TM库及其客户端提供正式的语义。我们开发了一个逻辑,TARO,用于验证客户端程序,使用TMS 2-RA同步。我们还展示了如何TMS2-RA可以实现的C11库,TML-RA,使用放松和释放获取原子,但保证所需的TMS2-RA的同步属性。我们基准测试TML-RA,并表明它优于其顺序一致的对应在STAMP基准。最后,我们使用基于仿真的验证技术来证明TML-RA的正确性。我们的整个发展是由伊莎贝尔/霍尔证明助手支持。
2022-07-30 cs.PL
Verifying C11-Style Weak Memory Libraries via Refinement
演绎验证的并发程序在弱内存下,到目前为止,仅限于简单的程序在一个单一的状态空间。对于可伸缩性,我们还需要具有可验证库抽象的模块化技术。本文解决了这一挑战的背景下,RC 11 RAR,C11内存模型的一个子集,允许放松和释放获取访问,但不允许,所谓的,负载缓冲周期。我们开发了一个简单的框架,用于指定抽象对象,精确地描述了抽象方法调用的可观察性保证。我们展示了如何将这个框架与一个操作语义集成在一起,该操作语义可以验证客户端程序从他们使用的库中执行抽象方法调用。最后,我们将展示如何实现这样的抽象在RC 11 RAR可以验证通过开发一个(上下文)细化框架的抽象对象。我们的框架,包括操作语义,客户端库程序的验证技术,和抽象库和它们的实现之间的模拟,已在伊莎贝尔/HOL机械化。
2021-08-16 cs.LO cs.PL
Rely-Guarantee Reasoning for Causally Consistent Shared Memory (Extended Version)
Tel Aviv University(特拉维夫大学);University of Surrey(萨里大学);University of Oldenburg(奥尔登堡大学)
本文提出Piccolo逻辑,用于因果一致内存下并发程序的推理,结合新的断言语言和潜在基于的操作语义,提供首个此类语义的推理技术。
2026-05-07 cs.LO cs.PL
Channels as Objects in Concurrent Object-Oriented Programming
通常每个类都有一种协议,说明何时以及如何调用某些方法。如果这个协议是在类的文档中描述的,当前主流的面向对象语言不能提供对客户端代码遵守所寻求的类行为的验证。我们已经定义了一个基于类的并发面向对象的语言,形式化的使用类型的形式,这样的协议。使用类型被附加到类定义,允许指定(1)可用的方法,(2)客户端必须对方法的结果执行的测试,以及(3)对象状态-线性或共享-所有这些都取决于对象的状态。我们的工作扩展了最近的模块化会话类型的方法,消除通道操作,并定义方法调用作为单一的通信原语在顺序和并发设置。与以前的作品相比,我们定义了一个单一的类别的对象,而不是不同的类别的线性和共享对象,并让线性对象演变成共享的。我们引入了一个标准的同步限定符,以防止在共享对象上的某些操作中出现线程干扰。我们形式化的语言语法,操作语义,和类型系统,强制执行静态类型的方法被称为只有当可用时,并由一个单一的客户端,如果这样指定的使用类型。我们通过一个完整的例子来说明语言。
2011-10-19 cs.PL
Timed Soft Concurrent Constraint Programs: An Interleaved and a Parallel Approach
Università di Perugia(佩鲁贾大学);Università di Bologna(博洛尼亚大学);Centrum Wiskunde & Informatica (CWI)(荷兰数学与计算机科学研究所(CWI))
我们提出了并发约束编程的一个时间和软扩展。时间扩展是基于有界时间的假设:计算需要一个有限的时间段,并通过一个离散的全局时钟来测量。动作前缀被认为是区分一个时间点和下一个时间点的句法标记。在软约束而不是明确约束的支持下,告诉和询问代理现在配备了一个偏好(或一致性)阈值,用于确定它们的成功或暂停。在本文中,我们提供了一种语言来描述代理的行为,连同其操作和指称语义,我们还证明了组合性和正确性。在提出了一个语义使用最大并行的行动,我们还描述了一个版本的交错在一个单一的处理器上(最大并行的时间流逝)。需要对偏好值和时间事件进行决策的协调代理可以从这种语言中受益。逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)
2014-04-22 cs.AI cs.PL
Reducing Opacity to Linearizability: A Sound and Complete Method
事务内存是一种代表程序员管理线程同步的机制,以便代码块以原子性的假象执行。事务内存的主要安全标准是不透明性,它定义了串行化并发事务的条件。证明不透明性是复杂的,因为它允许并发事务观察不同的内存状态,而TM实现通常基于一个共享存储。本文提出了一个健全的和完整的方法,基于粗粒度的抽象,减少证明的不透明性相对简单的正确性条件:线性化。我们使用我们的方法来验证TML和NORec从文献中,并显示我们的技术扩展到宽松的内存模型,表明这两个TSO下是不透明的,而不需要额外的围栏。我们的方法还阐明了TM设计在更高的抽象层次,作为一个应用程序,我们开发了一个变化的NORec与快速路径读取事务。我们所有的证明都是机械化的,无论是在Isabelle定理证明器还是PAT模型检查器中。
2016-10-04 cs.DC cs.DS cs.LO
Caos: A Reusable Scala Web Animator of Operational Semantics (Extended With Hands-On Tutorial)
本研究提出Caos框架,采用理论与工具同步构建的思路,借助Scala库生成交互式动画图以辅助形式化模型操作语义设计,可尽早发现理论缺陷,已在教学研究中成功应用于两种语言分析。
2023-04-28 cs.PL
Weak Memory Models with Matching Axiomatic and Operational Definitions
内存一致性模型因难以精确定义、推理和验证而臭名昭著。十多年的努力已经确定了ARM和IBM Power内存模型的定义,但这些模型的某些方面(也许令人惊讶)至今仍未解决。为了应对这些复杂性,(通用)架构社区最近有一种趋势,将新的内存模型限制为(多副本)原子:其中存储值可以在被通告给其他处理器之前由发布处理器读取。TSO是最著名的例子,过去被IBM 370和SPARC-TSO使用,目前用于x86。最近(2017年3月)ARM也转向了多拷贝原子内存模型,新的RISC-V ISA和最近的学术提案(如WMM)也在推动这样做。在本文中,我们表明,当内存模型是原子的,它变得更容易产生公理化的定义,操作定义,并证明等价性比做同样的非原子模型。这些定义的产生越来越容易,这反过来又使架构师能够更自信地构建处理器,而我们提出的模型的宽松性质仍然允许保留非原子模型的大部分或全部性能。事实上,在本文中,我们表明,原子内存模型可以定义的方式,是参数化的基本指令和围栏排序。我们的操作与公理等价证明,同样是参数化的,表明操作模型相对于公理是合理的,并且操作模型是完整的:它可以显示公理模型允许的任何行为。
2019-04-09 cs.PL
Asynchronous Programming in a Prioritized Form
异步编程已经作为一种编程风格出现,它克服了并发编程的不希望的属性。通常在异步编程模型中,方法被发送到一个发送列表中以供以后执行。方法执行的顺序是串行的,但不确定。本文提出了一个新的和简单的,但功能强大,异步编程模型。该模型由上下文无关文法和操作语义两部分组成。该模型是由表达重要应用的能力支持的。与相关工作相比,我们的模型的一个优点是,该模型简化了为发布的方法分配优先级的方式。另一个优点是,操作语义使用简单的单链表概念来模拟方法发布和执行的优先化过程。简单性和表达性使得分析算法相对容易地揭示异步程序中未捕获的编程错误。
2015-01-04 cs.PL
SecRSL: Security Separation Logic for C11 Release-Acquire Concurrency (Extended version with technical appendices)
我们提出了安全松弛分离逻辑(SecRSL),一个用于证明具有松弛访问的释放-获取片段中的C11程序的信息流安全性的分离逻辑。SecRSL是第一个安全逻辑,它(1)支持对高级语言程序的弱内存推理;(2)继承了分离逻辑的组合,局部推理的优点;(3)表达安全策略,如值依赖分类。据我们所知,SecRSL也是第一个在公理内存模型上开发的安全逻辑。因此,我们也提出了第一个定义的信息流安全的公理弱记忆模型,对我们证明SecRSL声音。SecRSL确保程序满足恒定时间的安全保证,同时没有未定义的行为。我们应用SecRSL来实现和验证一系列并发原语的功能正确性和恒定时间安全性,包括自旋锁模块,混合灵敏度互斥体和多个同步通道实现。后者的经验性能评估表明SecRSL的权力,以支持安全和高性能的并发C程序的开发。
2021-09-09 cs.CR cs.PL
Weak Memory Demands Model-based Compiler Testing
本文指出处理器对宽松内存模型的利用使编译后并发程序暴露新缺陷,提出需发展基于模型的编译器测试,并通过LLVM工具链缺陷案例探讨其对编译器、测试工具和并发测试生成器的广泛影响。
2024-01-12 cs.AR cs.PL cs.SE
Tracking Causal Dependencies in Web Services Orchestrations Defined in ORC
本文展示了如何对像ORC这样的语言的操作语义进行检测,以便程序的执行产生关于事件之间因果依赖关系的信息。我们得到的并发语义是基于不对称的标记事件结构。该方法说明使用Web服务编排实例和竞争条件的检测。
2015-05-23 cs.DC cs.PL
A denotational account of C11-style memory
我们介绍了一个指称语义框架共享内存并发程序在C11风格的内存模型。这种指称方法是基于“执行图”和公理化的技术的替代方案,并且它允许组合推理。我们的语义从跟踪(动作序列)推广到pomsets(动作的偏序):我们拥抱“真正的”并发,而不是跟踪和交织。我们建立在我们以前的工作,提供了一个指称语义,以TSO的技术。我们增加了对C11更广泛的内存排序的支持,例如,获取-释放和放松,并支持本地变量和各种同步原语,同时消除了大量的技术簿记。我们的方法有两个主要组成部分。首先,我们给程序的语法指导的指称方面的集pomsets的内存行动。然后,我们给出了一个种族检测执行解释的pomsets使用的足迹和当地的国家。
2018-04-11 cs.PL
Making Weak Memory Models Fair
即使是最简单的共享内存并发程序在顺序一致性下的活动属性(如终止)通常也需要对调度程序进行一些公平性假设。在弱内存模型下,我们观察到线程公平的标准概念是不够的,需要一个额外的公平属性,我们称之为内存公平。在本文中,我们提出了一个统一的定义,内存公平性,可以集成到任何声明性的内存模型,强制执行非循环的联合程序的顺序和读取关系。对于著名的模型,SC,x86-TSO,RA和StrongCOH,具有等效的操作和声明的演示文稿,我们表明,我们的声明内存公平性条件相当于一个直观的模型特定的操作概念的内存公平性,这需要内存系统公平地执行其内部传播步骤。我们的公平性条件保持了从RC 11到x86-TSO的本地转换和编译方案的正确性,并且还实现了声明式弱内存模型下互斥锁实现终止的第一个正式证明。
2021-09-09 cs.PL
Episodic Loops: Finitary Event Structures and Operational Semantics for C11 Programs with Retries
School of Computing, University of Kent(肯特大学计算学院)
针对无锁算法重试循环验证难题,提出循环片段与同步点概念,实现有限操作语义,高效验证安全属性并修复释放后使用错误。
2026-09-29 cs.PL
Variant-Frequency Semantics for Green Futures
本文描述了一个操作语义的期货,与能源效率的主要目标。正在进行的工作是围绕这样一种认识而构建的:不同的线程可以通过以不同的“速度”运行来协调,从而可以减少同步时间和由此产生的浪费的能量消耗。我们利用期货的几个固有特性来确定如何协调涉及线程的速度。语义的灵感来自于计算机体系结构的最新进展,其中CPU核心的频率可以动态调整。这项工作是朝着一个方向的第一步,变异频率直接建模为并发程序设计语言的基本语义特征。
2013-02-26 cs.PL
Memory Consistency and Program Transformations
本文通过将程序优化分解为执行轨迹上的基本效应,提出一种形式化框架来刻画内存一致性与优化安全性的组合关系,并证明顺序一致性与允许读-读重排序的模型之间满足完备性,为以优化为导向的内存模型设计奠定基础。
2025-02-01 cs.PL
Program Execution on Reconfigurable Multicore Architectures
基于两个观察,即不同的应用程序在不同的多核架构上执行得更好,以及应用程序的不同阶段可能具有非常不同的资源需求,Jesus等人提出了一种用于执行多线程程序的新的可重构硬件方法。该体系结构不是将并发程序映射到固定的体系结构,而是自适应地重新配置自身以满足应用程序的并发性和通信要求,从而显著提高了性能。基于我们早期的抽象操作框架,多核执行与层次存储器结构,我们描述了多线程程序的可重构架构,支持各种集群配置的执行。由于可能引入由在不同核上运行的线程对共享存储器的并发访问引起的竞争条件,这种重新配置可能不保留程序的语义。我们提出了一个直观的偏序概念的集群配置,并表明,多线程程序的语义总是保留重新配置“向上”的顺序,而语义保存任意重新配置可以保证良好的同步程序。我们进一步表明,一个简单的近似概念的执行效率上的不同配置可以得到使用摊销互模拟的概念,并将其扩展到动态重新配置。
2016-06-20 cs.DC cs.PF cs.PL