Automatic Verification of Concurrent Stochastic Systems
随机游戏的自动验证技术允许对系统进行正式推理,这些系统具有不确定或概率设置中理性代理之间的竞争或协作行为。现有的工具和技术集中于回合制游戏,其中游戏的每个状态由单个玩家控制,以及零和属性,其中两个玩家或联盟具有直接相反的目标。在本文中,我们提出了并发随机游戏(CSG)的自动验证技术,它提供了一个更自然的并发决策和交互模型。我们还考虑(社会福利)纳什均衡,正式确定的情况下,两个球员或联盟有不同的目标可以合作,以优化他们的联合表现。我们提出了一个扩展的时间逻辑rPATL在这种情况下指定的定量属性,并提出相应的算法验证和策略合成的变体停止游戏。对于有限时域的性质,计算是精确的,而对于无限时域,它是近似使用值迭代。对于零和性质,它需要通过线性规划来求解矩阵博弈,对于基于均衡的性质,我们通过SMT编码的标记多面体方法来找到双矩阵博弈的社会福利或社会成本纳什均衡。我们在PRISM游戏中实现了这种方法,这需要扩展工具的建模语言用于CSG,并将其应用于包括机器人技术,计算机安全和计算机网络在内的领域的案例研究,明确展示了CSG和基于平衡的属性的好处。
2020-08-29 cs.LO
Verification of Imperative Programs by Constraint Logic Program Transformation
本文提出了一种基于约束逻辑程序变换(CLP)的方法来验证操作整数和数组的命令式程序的部分正确性。我们使用CLP作为一种元语言来表示命令式程序,它们的执行和它们的属性。首先,我们将命令式程序的正确性编码为CLP程序T定义的谓词“不正确”的否定。通过构造,“不正确”在T的最小模型中成立,当且仅当从初始配置执行prog最终在错误配置中停止。然后,我们对程序T应用一系列保持其最小模型语义的变换。这些转换是基于众所周知的转换规则,如展开和折叠,由适当的转换策略,如专业化和泛化。转换的目的是导出一个新的CLP程序TransfT,其中谓词“不正确”由以下定义:(i)事实“不正确”。'(在这种情况下prog是不正确的),或者由(ii)空子句集(在这种情况下prog是正确的)。在我们导出CLP程序使得(i)和(ii)都不成立的情况下,我们对变换进行了简化。由于问题是不可判定的,这个过程可能不会终止。我们通过例子表明,我们的方法可以应用在一个相当系统的方式,是适合自动化的程序验证领域的许多技术开发的程序转换。
2013-09-20 cs.LO cs.PL
Model Checking Data Flows in Concurrent Network Updates (Full Version)
我们提出了一个模型检验的方法来验证数据流的正确性,在网络配置的并发更新。该验证问题对于软件定义网络(SDN)非常重要,其中错误可能导致分组丢失、黑洞和安全违规。我们的方法是基于规范的时间属性的个人数据流,如要求流是免费的周期。我们检查这些属性是否同时满足所有活动的数据流,而网络配置更新。为了表示并发网络控制器的行为和由此产生的配置的演变,我们引入了一个扩展的Petri网的过境关系,其特征在于由Petri网的每个转变所引起的数据流。对于安全的Petri网与过境,我们减少了时间流属性的验证电路模型检验问题,可以解决有效的验证技术,如IC3,插值,有界模型检验。我们报告令人鼓舞的实验与原型实现的基础上的硬件模型检查ABC。
2019-11-14 cs.LO
On the construction of multi-valued concurrent dynamic logic
动态逻辑是对命令式程序进行推理的强大框架。引入了一个带有并发操作符的扩展[18]来形式化并行运行的程序。在另一个方向上,其他作者提出了一个系统的方法来生成多值命题动态逻辑来推理加权程序[14]。本文介绍了这两个框架相结合,在并发计算中引入不确定性的第一步。在开发的框架中,权重被分配给并行执行的每个分支,导致模糊编程范式固有的(可能的)非对称并行性[21,2]。通过采用这样的方法,得到了一族逻辑,称为多值并发命题动态逻辑(CGDL(A)),参数上的动作格A指定的“权重”的概念分配给程序执行。此外,还讨论了CPDL中某些公理在新的生成逻辑族中的有效性。
2019-11-01 cs.LO
Generating Loop Invariants for Program Verification by Transformation
循环不变量在命令式程序的验证中起着核心作用。然而,找到这些不变量对于程序员来说通常是一项困难且耗时的任务。我们以前已经展示了如何程序转换可以用来促进功能程序的验证,但由于需要发现这些循环不变量,命令式程序的验证更具挑战性。在本文中,我们描述了一种自动发现循环不变量的技术。我们的方法类似于归纳迭代法,但避免了使用这种方法和其他方法时可能导致的子句中的潜在指数爆破。我们的方法利用了简化程序转换算法将子句转换为简化形式,便于识别它们之间的相似性和差异性,从而帮助发现不变量。我们证明,我们的技术终止,并证明其成功的应用程序,已被证明是有问题的使用其他方法的例子。我们还讨论了我们的技术未能找到一个不变的情况下,并显示如何可以改善到一定程度。
2017-08-24 cs.LO
Shared Memory Concurrent System Verification using Kronecker Algebra
多线程软件的验证仍然是一个挑战。这主要是因为线程交织的数量在线程数量中呈指数级增长。用矩阵演算研究线交织是这一研究领域的一种新方法。我们的程序的稀疏矩阵表示使用Kronecker代数的惰性实现进行操作。一个目标是生成一个称为并发程序图(CPG)的数据结构,它描述了所有可能的交织,并在保持完整性的同时结合了同步。我们证明了CPG在一般情况下可以表示为稀疏邻接矩阵。因此,矩阵中的条目数与其行数成线性关系。因此,有效的算法可以应用于CPG。此外,由于同步,实际上只需要结果矩阵的很小一部分,而其余部分在自动机方面是不可达到的。由于矩阵运算的延迟实现,无法到达的部分永远不会计算。这大大加快了处理速度,表明这种方法非常有前途。可以在CPG上执行包括数据流分析在内的各种应用。此外,矩阵的结构可以用来证明任意数量的线程的底层程序的属性。例如,死锁自由证明了一大类程序。
2011-09-26 cs.LO
Compositional Reasoning for Shared-variable Concurrent Programs
并发系统的可扩展和自动化形式化验证一直是一个迫切的需求。在本文中,我们提出了一个验证框架,以支持自动组合推理的并发程序共享变量。我们的框架模型并发程序作为简洁的自动机,并支持多个重要属性的验证。简洁自动机的安全性验证和仿真是并行组合的,简洁自动机的安全性在精化过程中保持不变。我们以自动化的方式从无限状态并发程序中生成简洁的自动机。此外,我们提出了第一个自动化的方法来检查可靠保证无限状态并发程序之间的模拟。我们已经将我们的算法原型化,并将我们的工具应用于多个改进的验证。
2018-03-26 cs.FL cs.LO cs.SE
Compositional Verification in Concurrent Separation Logic with Permissions Regions
本文提出带权限区域的 CSL-Perm 组合式验证系统,通过可推断框架规则残余堆的蕴涵过程实现线程与函数调用推理,并经 CoSl 工具验证其优势。
2025-10-06 cs.LO cs.PL
Barriers in Concurrent Separation Logic: Now With Tool Support!
我们开发并证明了一个合理的并发分离逻辑的Pthreads风格的障碍。尽管Pthreads屏障在系统中被广泛使用,并且分离逻辑被广泛用于验证,但是还没有任何努力将两者结合起来。与锁和临界区不同,Pthreads屏障允许在多个线程之间同时进行资源重新分配,并且本质上是有状态的,导致逻辑设计及其可靠性证明的显着复杂性。我们展示了我们的逻辑可以应用到一个特定的示例程序中的模块化的方式。我们的校样在Coq进行机器检查。我们展示了一个程序验证工具集,自动应用逻辑规则,并履行相关的证明义务。
2012-04-19 cs.LO
Automated Verification of Reactive and Concurrent Programs by Calculation
反应式程序将传统的顺序编程结构与原语相结合,以允许与其他并发代理进行通信。它们在现代应用中无处不在,从组件系统和Web服务到网络物理系统和自主机器人。在本文中,我们提出了一个代数验证策略的并发反应式程序,与一个大的或无限的状态空间。我们定义了新的运营商来描述相互作用和状态更新,以及相关的方程理论。有了这个,我们可以计算一个反应式程序的指称语义,从而促进自动证明。值得注意的是,我们的推理支持迭代程序与反应不变量,Kleene代数的基础上,并行组成。我们通过验证反应缓冲区来说明我们的策略。我们的法律和战略是机械化的伊莎贝尔/UTP,我们的霍尔和他的统一编程理论(UTP)框架的实施,提供健全的保证和实际的验证支持。
2021-04-12 cs.LO cs.PL
Towards modular verification of pathways: fairness and assumptions
模块化验证是一种用于解决并发交互系统等复杂系统的性能验证中经常遇到的状态爆炸问题的技术。模块化方法是基于这样的观察,即感兴趣的属性通常只涉及系统的一小部分。因此,可以构建简化的模型,其近似于整个系统的行为,从而允许更有效的验证。生物化学途径可以被看作是复杂的并发交互系统。因此,验证它们的属性通常在计算上非常昂贵,并且可以利用模块化方法。在本文中,我们报告的生化途径的模块化验证框架的发展的初步结果。我们认为生物化学途径是竞争分子资源的并行反应系统。模块化验证技术可以基于仅包含涉及感兴趣的分子资源的反应的简化模型。对于一个适当的描述系统的行为,我们认为,它是必不可少的考虑一个合适的公平性的概念,这是一个完善的概念,并发理论,但在该领域的新途径建模。我们提出了一个建模方法,包括公平性,我们确定的假设下,验证属性可以在一个模块化的方式。我们证明了这种方法的正确性,并证明它的模型上的EGF受体诱导的MAP激酶级联Schoeberl等。
2012-11-17 cs.LO
Efficient Verification of Concurrent Programs Over TSO Memory Model
我们解决的问题,多线程程序运行在总存储顺序(TSO)内存模型的有效验证。它已被证明,即使有限的数据域程序,控制状态可达下TSO的复杂性是非原始递归。在本文中,我们首先提出了一种有界缓冲区验证方法,其中缓冲区的大小上的界限放置,验证是递增地进行,通过增加的缓冲区的大小与验证过程的每次迭代,直到达到所述的界限。对于有限数据域上的程序,我们还证明了存在一个缓冲区的界限K,如果该程序是安全的,那么它也是安全的无界缓冲区。我们已经实现了这种技术在一个工具ProofTraPar。我们的结果对memorax [2],一个国家的最先进的声音和完整的验证TSO记忆模型,一直令人鼓舞。
2016-06-17 cs.LO cs.PL
A Note on Runtime Verification of Concurrent Systems
本文提出基于Mazurkiewicz迹的三值LTrL运行时验证方法,通过迹一致Büchi自动机构造监控器,使同一迹的所有线性化得到一致的验证结论。
2025-07-07 cs.FL cs.LO cs.SE
Practical Deductive Verification of OCaml Programs (Extended Version)
本文提供使用 GOSPEL 规范语言和 Cameleer 工具对 OCaml 程序进行演绎验证的实践教程,涵盖纯函数式与命令式两类程序,实现大部分自动化验证。
2024-07-20 cs.LO
On Reducing Linearizability to State Reachability
原子对象(如并发堆栈和队列)的有效实现特别容易受到编程错误的影响,并且需要自动验证。不幸的是,他们的正确性标准-相对于给定的ADT规格的线性化-很难验证。即使在通常的时间安全属性(如控制状态可达性)是可判定的实现类上,线性化也是不可判定的。在这项工作中,我们证明了验证线性化某些固定ADT规格是可减少控制状态的可达性,尽管更难任意ADT。我们实现了几个最流行的原子对象的这种减少。这种减少产生的第一个可判定性结果的验证,而不限制并发线程的数量。此外,它使现有的安全验证工具的线性化验证的应用。
2015-05-25 cs.LO
A Rewriting Logic Approach to Stochastic and Spatial Constraint System Specification and Verification
本文讨论的问题,指定,模拟和验证反应系统重写逻辑。它提出了一个可执行的语义概率,时间和空间并发约束编程-这里称为随机和空间并发约束系统(SSCC)-在重写逻辑语义框架。该方法是基于一个增强和广义模型的并发约束规划(CCP)的计算层次空间可以分配给属于代理。可执行语义忠实地表示和操作捕捉高度并发的性质,不确定的行为,空间和认知特征的反应系统与信息流。在SSCC中,定时属性(由随机持续时间表示)可以与进程相关联,并且还支持排他性和独立的概率选择。利用Maude系统中的SMT求解技术,实现了SSCC的底层约束系统,包括整数和实数上的无量词公式。这导致了一个完全可执行的实时符号规范,可用于定量分析的统计模型检验的形式。SSCC的主要特点和能力说明了整个文件的例子。这一贡献是一个更大的研究工作的一部分,旨在提供正式的分析技术和工具,数学上建立在CCP的方法,研究界。
2022-11-03 cs.LO
Formal Verification of Chase-Lev Deque in Concurrent Separation Logic
本论文利用并发分离逻辑并在 Coq proof assistant 中对 Chase-Lev deque 进行了形式化验证,采用无界现实实现与 linearizability 强规范,满足最小可信计算基等三大标准,并扩展支持安全内存回收与松弛内存模型基础。
2023-05-20 cs.LO cs.PL
Modular termination verification with a higher-order concurrent separation logic (Intermediate report)
我们报告的中间结果,我们的研究推理活性属性,除了深正确性的一个命令,并发程序设计语言与高阶存储。目前,我们集中在一个特定的活性属性,即终止。通过保证终止性,我们可以将部分正确性的陈述加强为完全正确性。这是通过将终止性转换为安全属性的经典方法来实现的。特别是,我们扩展的程序设计语言考虑与调用权限,这已被证明,使模块化的推理终止。添加原子块是为了增加我们基于调用权限的方法的表现力。我们的工作建立在Iris --一个基础的、机器检查的、高阶并发分离逻辑框架--之上,而不修改它。有了这些补充,我们就能够模块化地推理并发但非阻塞算法的终止。我们对正在考虑的程序设计语言的添加保留了Iris对帮助和预言进行推理的能力。作为一个例子,我们将当前的系统应用于现有的无锁并发堆栈的案例研究,并在Iris中得到了证明。最后,我们概述了扩展阻塞并发方法的后续步骤。
2022-12-28 cs.LO cs.PL
Verifying Relational Properties using Trace Logic
我们提出了一个逻辑框架,在命令式程序中的关系属性的验证。我们的工作是出于安全应用程序的关系属性,往往需要推理公式与量词交替。我们的框架减少了验证的关系属性的命令式程序的有效性问题到跟踪逻辑,一阶谓词逻辑的表达实例。跟踪逻辑从它的语法中提取它的表达能力,这允许在计算跟踪上表达属性。它的公理化支持程序执行中中间步骤的细粒度推理,特别是循环迭代。我们提出了一个算法来编码的语义程序,以及它们的关系属性的跟踪逻辑,然后显示如何一阶定理证明可以用来推理所产生的跟踪逻辑公式。我们的工作是在快速工具中实现的,并与来自安全领域的例子进行评估。
2019-08-12 cs.LO
Formal Verification of Imperative First-Class Functions in Move
Aptos Labs(Aptos实验室)
本文研究了Move语言中命令式一等函数的形式验证,通过引入行为谓词和状态标签,实现了对函数值的高效表示与验证,支持Rust风格的引用和全局变量修改,并提升了SMT编码效率。
2026-08-14 cs.LO cs.PL cs.SE
Soundness and Completeness of the NRB Verification Logic
这篇简短的论文给出了一个模型,并证明了确定性命令式程序的NRB验证逻辑的完整性,该逻辑在过去曾被用作大型,快速变化的开源C代码档案(如Linux内核源代码)的自动语义检查的基础。该模型是一个彩色的状态转换模型,从上面的一组可能的程序的过渡近似。相应地,逻辑捕获可能在程序中的给定点触发特定缺陷的所有跟踪,但也可能标记误报。
2013-08-18 cs.LO
A Verified Implementation of B+-Trees in Isabelle/HOL
在本文中,我们提出了无处不在的B+树数据结构的交互式定理证明器Isabelle/HOL的强制性实现的验证。该实现支持成员资格测试,插入和范围查询与有效的二进制搜索节点内导航。命令式实现的验证分为两个步骤:一个抽象的集合接口被细化为一个可执行的,但效率低下的纯功能的实现,这是进一步细化为有效的命令式实现。
2022-08-18 cs.DS cs.LO
Proving Equivalence Between Imperative and MapReduce Implementations Using Program Transformations
分布式程序通常在MapReduce、Spark和Thrill等流行的功能框架中制定,但为此类框架编写高效的算法通常是一项不平凡的任务。由于大规模运行错误算法的成本可能很高,因此非常需要验证它们的正确性。我们建议采用现有的命令式参考实现作为MapReduce实现的规范。为此,我们提出了一种新的验证方法,其中一个命令和MapReduce实现之间的等价性建立了一系列的程序转换。在本文中,我们提出了如何等价框架可以用来证明之间的等价性的PageRank算法和MapReduce变种的强制性实现。八个单独的转换步骤分别介绍和解释。
2018-03-27 cs.LO cs.PL
CCS-Based Dynamic Logics for Communicating Concurrent Programs
这项工作提出了三个日益表现力的动态逻辑,其中的程序是CCS进程(sCCS-PDL,CCS-PDL和XCCS-PDL)。他们的目标是推理使用CCS描述的并发程序和系统的属性。为了实现这一点,CCS的操作符和结构被添加到基本模态逻辑中,以创建适合于描述和验证通信,并发和非确定性程序和系统的属性的动态逻辑,类似于PDL用于顺序情况。我们提供完整的公理化的三个逻辑。与Peleg的带通道的并发PDL不同,我们的逻辑具有简单的Kripke语义、完备的公理化和有限模型性质。
2009-04-01 cs.LO
Solving reachability problems on data-aware workflows
Fondazione Bruno Kessler(布鲁诺·凯斯勒基金会);Free University of Bozen-Bolzano(博尔扎诺-博岑自由大学)
本文面向命令式数据感知业务流程的可达性验证,提出基于 Workflow Nets 扩展模型的框架,并将其语义映射到 Action Languages、Classical Planning 与 Model Checking,评估三类工具性能。
2020-09-03 cs.AI cs.LO
Denotational Semantics for Probabilistic and Concurrent Programs
本文针对兼具概率动作与并行组合的命令式程序,提出具有良好域论性质的指称模型,并通过两个适当性定理证明其统一涵盖并发与概率非确定语义。
2025-06-07 cs.LO cs.PL
Deductive Verification of Weak Memory Programs with View-based Protocols (extended version)
University of Twente(特温特大学);TU Delft(代尔夫特理工大学);Eindhoven University of Technology(埃因霍温理工大学)
本文提出在VerCors中编码弱内存并发的方案,通过扩展原子操作支持并引入协议自动机概念,实现基于许可的分离逻辑,用于验证弱内存并发程序的正确性。
2026-04-22 cs.LO
Sheaves and geometric logic and applications to the modular verification of complex systems
在本文中,我们表明,并发系统的状态,转移和行为往往可以建模为一个合适的拓扑空间上的层。在这种情况下,几何逻辑可以用来描述当互连系统时,在全局级别上保留哪些局部属性(即单个系统的属性)。主要应用领域是复杂系统的模块化验证。我们说明的想法,通过一个例子,涉及一个家庭的相互作用的控制器的火车上的铁路轨道。
2008-10-16 cs.LO
Robust Verification of Concurrent Stochastic Games
Department of Computer Science, University of Oxford, Oxford OX1 2JD, UK(计算机科学系,牛津大学,牛津 OX1 2JD,英国)
本文提出鲁棒并发随机游戏模型及验证框架,用于处理多智能体系统中转移概率的不确定性问题。
2026-01-21 cs.AI cs.GT cs.LO
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
The Singularity Theory of Concurrent Programs: A Topological Characterization and Detection of Deadlocks and Livelocks
该研究提出并发程序分析的奇点理论范式,通过分支拓扑空间建模程序执行,用代数拓扑不变量检测死锁与活锁,为并发验证提供新的拓扑基础。
2025-10-29 cs.DC cs.LO cs.PL
Bilateral Proofs of Safety and Progress Properties of Concurrent Programs
本文提出了并发程序的可组合规格说明的一种理论,它允许:(1)对给定规格说明的程序代码进行验证;(2)组合组件的规格说明以产生程序的规格说明。该规范包括在程序执行结束时(如果执行终止)保持的终端属性和在整个执行过程中保持的永久属性。我们设计(1)证明技术的验证,和(2)组合规则,以获得规格的程序,从它的组件。我们利用组件的终端属性导出永久的性质的程序,反之亦然。因此,这种证明策略被称为双边的。该理论的组成方面是很重要的,在组装程序的组件,其中一些源代码可能是不可用的,因为越来越多的情况下,跨供应商的程序集成。
2017-04-05 cs.LO cs.PL
Correlated Equilibria and Fairness in Concurrent Stochastic Games
博弈论技术和均衡分析促进了竞争系统的设计和验证。虽然均衡计算的算法复杂性已被广泛研究,但博弈论方法的实际实现和应用是最近才出现的。工具,如PRISM游戏支持自动验证和合成的零和和(ε-最优子博弈完美)社会福利纳什均衡性能并发随机游戏。然而,这些方法变得效率低下的代理人的数量增长,也可能产生的均衡,产生显着的变化,个别代理人的结果。相反,我们考虑相关的均衡,其中玩家可以通过公共信号进行协调,并引入一个替代的社会公平的最优性标准,它可以应用于纳什均衡和相关均衡。我们发现,相关的均衡更容易计算,更公平,也可以改善联合结果。我们实现了范式游戏和更复杂的情况下,多玩家并发随机游戏的时间逻辑规范的算法。
2022-02-01 cs.GT cs.LO
On the Expressivity of Typed Concurrent Calculi
本论文全面探究支撑类型化编程语言的形式化计算模型,聚焦函数式与并发程序演算,指出其为程序语义评估及相关分析、验证技术开发提供严谨框架,为含附录的完整版论文。
2024-08-15 cs.LO cs.PL
Partial Orders for Efficient BMC of Concurrent Software
并发程序中存在的大量交织是导致并发软件自动分析困难的根本原因。人们普遍认为,记忆力差会使这个问题更加困难。我们解决这两个问题的建模程序的执行与偏序,而不是交错语义(SC)。基于这些思想,我们实现了一个软件分析工具。它可以扩展到足够大的程序,以实现对各种型号(包括SC、Intel x86和IBM Power)上的非平凡并发系统代码的首次形式化验证。
2013-01-08 cs.LO cs.PL
Trillium: Higher-Order Concurrent and Distributed Separation Logic for Intensional Refinement
本文提出Trillium分离逻辑框架,通过内涵细化方法强化高阶并发与分布式分离逻辑,支持证明非平凡的安全性和活性属性,并分别实例化出Fairis和扩展Aneris以验证并发与分布式系统的活性及与TLA+模型的细化关系。
2024-08-22 cs.LO cs.PL
Hoare-style Specifications as Correctness Conditions for Non-linearizable Concurrent Objects
设计可扩展的并发对象,它可以有效地用于多核处理器,往往需要放弃标准的规范技术,如线性化,有利于更宽松的一致性要求。然而,各种各样的替代正确性条件使得在特定情况下难以选择使用哪一个,并且在使用其行为通过不同标准指定的对象时难以组合它们。缺乏句法验证方法的大多数这些标准构成了挑战,在他们的系统采用和应用。在本文中,我们认为使用霍尔风格的程序逻辑作为一种替代和统一的方法规范和组合形式化验证的并发对象及其客户端程序的安全属性。通过一系列的案例研究,我们展示了如何现有的程序逻辑的并发性可以采用现成的捕捉重要的状态和历史不变,允许一个明确量化的环境线程的干扰,并提供直观和富有表现力的霍尔式规范的几个非线性并发对象,以前只指定通过专用的正确性标准。我们通过验证一些并发客户端的情况下,利用以前指定的并发对象,捕捉并发意识的线性化,静态和定量静态一致性等正确性条件的本质,说明我们的规范的充分性。本文中描述的所有示例都在Coq中进行了机械验证。
2016-07-21 cs.LO cs.PL
Verification Logics for Quantum Programs
我们调查景观的霍尔逻辑的量子程序。我们回顾三篇论文:Chadha,Mateus和Sernadas的“Reasoning about imperative quantum programs”; Yoshihiko Kakutani的“A logic for形式化验证of quantum programs”; Mingsheng Ying的“Floyd-霍尔逻辑for quantum programs”。我们比较了逻辑的数学基础,它们的底层语言,以及它们的断言的表达能力。我们还使用这些语言对Deutsch-Jozsa算法进行了验证,并讨论了它们在实际中的相对可用性。
2019-04-08 cs.ET cs.LO cs.PL
Formal Derivation of Concurrent Garbage Collectors
众所周知,并发垃圾收集器很难正确实现。以前的方法产生正确的收集器的问题主要是基于位置和证明验证或应用程序的域特定的模板和转换。我们展示了如何从一个正式的规范,强调域独立的设计理论和转换的应用程序,通过细化派生的并发垃圾收集器的家庭的上游。一个关键的贡献是扩展到经典的格理论的不动点定理,占并发突变和收集的动态。
2010-06-22 cs.DC cs.LO
Algebraic Principles for Rely-Guarantee Style Concurrency Verification Tools
我们提供了简单的等式原则,推导出可靠保证风格的推理规则和细化法律的基础上幂等半环。我们将代数层与基于语言和执行轨迹的程序的具体模型联系起来。我们已经实现了伊莎贝尔/HOL的方法作为一个轻量级的并发验证工具,支持推理的控制和数据流的并发程序在不同层次的抽象共享变量。这在两个简单的验证示例中进行了说明。
2013-12-04 cs.DC cs.LO
Towards Concurrent Quantitative Separation Logic
本文提出并发定量分离逻辑,将定量分离逻辑与并发分离逻辑结合,用于验证并发、指针和随机化程序实现后置条件的概率下界。
2024-09-30 cs.LO cs.PL
Guarded Kleene Algebra with Tests: Verification of Uninterpreted Programs in Nearly Linear Time
带测试的Kleene代数(GKAT)是带测试的Kleene代数(KAT)的变体,它通过将KAT的并($+$)和迭代($*$)操作限制为谓词保护版本而产生。我们开发的(共)代数理论的GKAT和展示它如何可以有效地用于理由的命令式程序。在对比KAT,其方程理论是PSPACE-完全的,我们表明,GKAT的方程理论是(几乎)线性时间。我们还提供了一个完整的Kleene定理和证明完整性的类似Salomaa的公理化Kleene代数。
2019-12-13 cs.LO cs.PL
Automated Synthesis of Distributed Controllers
LaBRI, University of Bordeaux(波尔多大学)
本文探讨了在Mazurkiewicz轨迹设定下分布式综合的概念及其在去中心化运行时监控中的应用,针对并发程序验证与分析的挑战提出新的方法。
2015-06-08 cs.FL cs.LO cs.SY
Fair Termination for Parameterized Probabilistic Concurrent Systems (Technical Report)
我们考虑的问题,自动验证一个参数化的概率并发系统的家庭终止的概率为1的所有实例对抗对抗的竞争对手。一个参数化的族定义了一个无限状态系统:对于每个数n,这个族由一个实例和n个有限状态进程组成。与安全性相比,活性的参数化验证目前仍然被认为是极具挑战性的,特别是在模型中存在概率的情况下。一个主要的挑战是提供一个足够强大的象征性框架。一个著名的符号框架的参数化验证的非概率并发系统是定期模型检验。虽然该框架最近扩展到概率系统,将公平性的框架-通常是至关重要的验证终止-一直特别困难,由于存在无限数量的公平性约束(每个过程一个)。我们的主要贡献是一个系统的,正则保持,编码有限的公平性(一个现实的公平性的概念,提出了由Henzinger)定期模型检验的概率参数化系统的框架。我们的编码减少了终止有限的公平性,以验证参数化的终止没有公平性的概率系统在定期模型检验(验证框架已经存在)。我们表明,我们的算法可以验证终止许多有趣的例子,从分布式算法(赫尔曼的协议)和进化生物学(莫兰过程,细胞周期开关),这并不符合标准的公平概念。据我们所知,我们的算法是第一个全自动的方法,可以证明这些例子的终止。
2017-10-30 cs.DC cs.FL cs.LO
Automated Verification, Synthesis and Correction of Concurrent Systems via MSO Logic
在这项工作中,我们提供了算法解决方案的五个基本问题的验证,合成和校正的并发系统,可以建模有界p/t-网。我们表示并发通过偏序,并假设行为规范通过一元二阶逻辑。c-偏序是Hasse图可以被c路覆盖的偏序。对于有限的变迁集T,设P(c,T,n)表示所有T-标号的c-偏序满足n的集合。若N=(P,T)是p/t-网,则P(N,c)表示N的所有c-偏序游程的集合。一个(b,r)-有界p/t-网是一个b-有界p/t-网,其中每个位置最多重复出现r次。我们解决了以下问题:1.验证:给定一个MSO公式n和一个有界p/t网N,确定P(N,c)是否\subseteq P(c,T,n),P(c,T,n)是否\subseteq P(N,c),或P(N,c)\cap P(c,T,n)是否= \emptyset。2.根据MSO质量标准合成:给定一个MSO公式n,合成一个满足P(c,T,n)\subseteq P(N,c)的语义极小(b,r)-有界p/t-网N. 3.语义最安全子系统:给定一个定义安全偏序集的MSO公式,和一个可能包含不安全行为的b-有界p/t-net N,合成出行为介于P(N,c)\cap P(c,T,N)和P(N,c)之间的最安全的(b,r)-有界p/t-net N'. 4.行为修复:给定两个MSO公式\cap P(c,T,)和一个b-有界p/t-网N,合成一个语义极小(b,r)-有界p/t…
2014-02-11 cs.DC cs.DS cs.LO
Sound and Complete Witnesses for Template-based Verification of LTL Properties on Polynomial Programs
本文提出命令式程序LTL验证的可靠完备证据,并针对多项式算术程序给出自动合成LTL证据的高效算法,实验证明其能处理以往工具无法处理的程序。
2024-07-01 cs.LO cs.PL
Formal verification in Coq of program properties involving the global state effect
一个命令式语言的语法没有明确提到的状态,而它的指称语义必须提到它。在本文中,我们提出了一个框架,在Coq的性质的程序操纵全局状态效果的验证。这些性质用一个证明系统来表达,这个证明系统与语法接近,就像在有效系统中一样,在这个意义上,状态并不显式地出现在操纵它的表达式类型中,而是通过添加到项和方程中的装饰来出现。在这个系统中,程序的证明因此呈现两个方面:性质可以被验证{ \em直到效果}或者效果可以被考虑。因此,我们的Coq库的设计反映了这两个方面:我们的框架围绕着两个归纳和依赖类型的构建,一个用于效果的术语,另一个用于装饰的操作。
2013-10-14 cs.LO cs.PL
Parametric Verification: An Introduction
本文对并发系统的参数验证作了一个简短的介绍。它起源于在托鲁塞(2016)和萨拉戈萨(2017)的Petri网会议上举行的两次为期一天的教程。本文不仅介绍了视频版本中处理的基本形式概念,而且还提供了广泛的文献,为读者提供进一步的参考,涵盖该领域。我们首先介绍了一般参数验证背后的动机,然后重点介绍了不同的模型和方法,用于验证几种类型的系统。它们包括参数时间自动机,用于实时系统建模,其中时间约束不一定是先验已知的。类似地,参数区间马尔可夫链允许对事件发生概率是具有参数边界的区间的系统进行建模。参数Petri网允许系统的紧凑表示,并处理不同类型的参数。最后,动作合成的目的是在并发系统中启用或禁用动作,以保证其某些属性。在本教程的实践课上使用了一些实施这些方法的工具。相应的实践可以在网上免费获得。
2019-07-01 cs.LO cs.SE
HMC: Verifying Functional Programs Using Abstract Interpreters
我们提出了Hindley-Milner-Cousots(HMC),一个算法,允许任何一阶命令式程序的过程间分析被用来验证类型化高阶函数程序的安全属性。HMC工作如下。首先,它利用函数程序的类型结构来生成一组逻辑精化约束,这些约束的满足意味着源程序的安全性。其次,它将逻辑精化约束转换成一个简单的一阶命令式程序,该程序是安全的,当且仅当约束是可满足的。因此,HMC一举使工具的不变生成,例如,基于抽象域、谓词抽象、反例引导的精化和Craig插值可以直接应用于以全自动的方式验证现代函数式语言的安全属性。我们已经实现了HMC,并描述了初步的实验结果,使用两个命令式检查器- ARMC和InterProc -来验证OCaml程序。因此,通过组成基于类型的推理在程序语法和基于状态的推理在抽象解释的基础上,HMC打开了大门,以现代程序设计语言编写的程序的自动验证。
2010-12-30 cs.LO cs.PL
Foundations for Deductive Verification of Continuous Probabilistic Programs: From Lebesgue to Riemann and Back
本文为含循环、连续分布和条件化的概率程序验证奠定基础,通过黎曼和近似积分实现SMT不变量验证,并证明收敛性与完备性,且可在现有工具中应用。
2025-02-26 cs.LO cs.PL
Simulating reachability using first-order logic with applications to verification of linked data structures
本文介绍了如何利用现有的一阶逻辑定理证明器自动验证执行动态存储分配和破坏性更新的指针值结构字段的命令式程序的安全属性。其中一个主要的障碍是指定和证明(缺乏)的可达性动态分配的细胞之间的属性。主要的技术贡献是使用一阶公式以保守的方式模拟可达性的方法-该公式描述了一组程序状态的超集,如果有一个精确的方式来表达可达性,则会指定该超集。这些方法用于半自动程序验证(即,使用程序员提供的循环不变量),例如标记并清除垃圾回收和单链表的破坏性反转。(The标记和扫描的例子以前已经被报道为超出了ESC/Java的能力。
2009-05-27 cs.LO cs.PL
Abstract Diagnosis for Timed Concurrent Constraint programs
时间并发约束语言(Timed Concurrent Constraint Language,简称tccp)是一种基于简单但功能强大的并发约束范式Saraswat的并发逻辑语言。在这种范例中,存储作为值的概念被存储作为约束的概念所取代,这引入了与存储作为值的概念的一些差异。其他并发方法。在本文中,我们提供了一个通用的框架调试tccp程序。为此,我们首先提出了一个新的紧凑的,自底向上的语义的语言,非常适合于调试和验证的目的,在反应式系统的上下文中。我们还提供了一个抽象的语义,使我们能够有效地实现基于抽象解释的调试算法。给定一个tccp程序和一个行为规范,我们的调试方法自动检测程序是否满足规范。这与其他半自动调试方法不同,避免了提前提供症状的需要。我们通过介绍两个说明性的例子来展示我们的方法的有效性。我们选择一个特定的抽象域,并展示我们如何可以检测到一个程序是错误的。
2011-09-07 cs.LO cs.PL
Proving Correctness of Imperative Programs by Linearizing Constrained Horn Clauses
本文提出了一种基于规范自动转换的命令式程序正确性验证方法。给定一个程序prog,我们考虑形式为$\{φ\}$ prog $\{ψ\}$的部分正确性规范,其中断言$φ$和$ψ$是由可能递归的Horn子句的集合Spec定义的谓词,其前提中具有线性算术(LA)约束(也称为约束Horn子句)。验证方法包括在构造一组PC的约束Horn子句,其可满足性意味着$\{φ\}$ prog $\{ψ\}$是有效的。我们强调了一些限制的国家的最先进的约束霍恩子句求解方法,这里称为LA求解方法,证明可满足性的条款,通过寻找线性算术解释的谓词。特别是,我们证明了存在一些规格,不能证明有效的任何这些LA解决方法。这些规范要求证明一组包含非线性子句(即前提中有多个原子的子句)的受约束Horn子句的PC的可满足性。然后,我们提出了一个转换,称为线性化,PC转换成一组线性条款(即条款,在其前提中最多一个原子)。我们表明,几个规格,不能被证明是有效的LA解决方法,可以被证明是有效的线性化后。我们还提出了一种策略,用于执行线性化在一个自动的方式,我们报告的一些实验结果,通过使用我们的方法的初步实施。
2015-07-21 cs.LO cs.PL
A beginner guide to Iris, Coq and separation logic
本指南面向初学者,介绍使用 Iris 和 Coq 进行形式化验证,重点讲解示例、策略、分离逻辑,并全面覆盖相关工具,以帮助读者安全验证并发算法。
2025-01-23 cs.LO cs.PL