Prophecy-Based Automated Verification of Message-Passing Programs
The University of Tokyo(东京大学);Kyoto University(京都大学);MPI-SWS(马克斯·普朗克计算机科学研究所)
提出一种通过将验证问题归约为约束Horn子句求解的自动化方法,利用基于预言的通道建模和消息时间戳,实现消息传递并发程序功能正确性的模块化验证。
2026-06-29 cs.PL
2LS for Program Analysis
2LS(“tools”)是一个基于CPROVER框架的C程序验证工具。它允许验证用户指定的断言,内存安全属性(例如缓冲区溢出),数值溢出,除以零,内存泄漏和终止属性。分析是通过将验证任务转换为二阶逻辑公式,包括位向量、数组和浮点算术理论来执行的。该公式是解决了一个模块化的组合算法,涉及展开和基于模板的不变合成的帮助下,增量SAT解决。2LS的优点包括其非常快速的增量有界模型检验算法和其灵活的框架,用于试验新的分析和抽象思想的不变推理。缺点是它缺乏对某些程序特性的支持(例如多线程)。
2023-02-05 cs.LO cs.PL cs.SE
Automated Verification of Tree-Manipulating Programs Using Constrained Horn Clauses
本文提出一种结合自动机和逻辑的自动验证技术,通过knitted-tree编码将程序执行映射为单一树结构,并利用约束Horn子句刻画其组合性质,将验证简化为求解CHC可满足性问题,广泛适用于树操作程序的多种验证任务。
2024-10-12 cs.PL
kmclib: Automated Inference and Verification of Session Types
基于多方会话类型的理论和工具为使用消息传递进行通信的并发程序提供了正确性保证。这些保证通常以本质上自顶向下的方法为代价,这种方法需要将整个程序的通信行为指定为全局类型。本文介绍了kmclib:一个OCaml库,它支持开发正确的消息传递程序,而无需编写任何类型。该库利用OCaml的元编程工具来自动推断并发程序的会话类型并验证其兼容性(k-MC)。用kmclib编写的类型良好的程序不会导致通信错误,也不会卡住。
2021-11-26 cs.PL
Automated Verification of CountDownLatch
CountDownLatch(CDL)是一种通用的并发机制,最早在Java 5中引入,现在也被C++和C#采用。它的使用允许一个或多个线程交换资源,并通过等待某些任务完成,然后其他任务才能继续进行同步。在本文中,我们提出了一个新的框架,用于验证使用CDLs的并发应用程序的正确性。我们的框架是建立在两个现有的机制,并发抽象谓词和虚构的分离逻辑,与一些增强,如借用堆和线程本地抽象。此外,我们提出了一种新的基于等待关系的不一致检测机制,以保证死锁自由。以前的并发验证工作主要集中在数据竞争自由。作为一个实际的概念证明,我们已经实现了这个新的规范和验证机制CDL在一个新的工具,称为HIPCAP,在现有的HIP验证器。我们已经使用这个新工具成功验证了CDL的各种用例。
2019-08-26 cs.PL
Automated Verification of Soundness of DNN Certifiers
本文提出ProveSound验证过程,通过引入符号DNN概念,将任意DNN架构的认证器可靠性属性简化为可处理的符号表示,并利用标准SMT求解器实现自动化验证,解决了手动证明耗时的问题。
2025-04-06 cs.PL
CHC-based Automated Verification of WebAssembly Programs
The University of Tokyo(东京大学)
研究基于约束 Horn 子句的 WebAssembly 程序自动验证方法,通过利用类型信息过滤间接函数调用候选者,用控制流分析总结恐慌处理程序,经初步实验证实该方法有效。
2026-07-21 cs.PL
Morpheus: Automated Safety Verification of Data-dependent Parser Combinator Programs
本文提出Morpheus解析器组合子框架,通过可组合效应抽象和丰富规范语言,实现数据依赖解析程序的高效自动化安全验证,并在多个现实应用中验证其有效性。
2023-05-13 cs.PL
Solvable Tuple Patterns and Their Applications to Program Verification
The University of Tokyo(东京大学);Tokyo University of Agriculture and Technology(东京农工大学);Tohoku University(东北大学)
提出可解元组模式(STP)和合取STP(CSTP),通过少量正样本高效推断列表状递归数据结构的不变量,并集成到CHC求解器中显著提升程序验证性能。
2026-05-26 cs.PL
Automatic HFL(Z) Validity Checking for Program Verification
本文提出了一种自动化的方法来检验HFL(Z)公式的有效性,HFL(Z)是一种高阶逻辑,具有不动点算子和整数。结合Kobayashi et al.的减少,从高阶程序验证HFL(Z)的有效性检查,我们的方法产生一个全自动的,统一的验证方法的任意时间属性的高阶功能程序表示的模态μ演算,包括终止,非终止,公平终止,公平非终止,也分支时间属性。我们已经实现了我们的方法,并取得了可喜的实验结果。
2022-12-09 cs.PL
TensorRight: Automated Verification of Tensor Graph Rewrites
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);University of Washington(华盛顿大学);Google(谷歌);Google DeepMind(谷歌DeepMind);University of California, Santa Cruz(加州大学圣克鲁兹分校)
TensorRight 是首个能自动验证任意秩和大小张量图重写的系统,通过聚合轴定义和有界验证算法证明重写规则的正确性。
2025-11-21 cs.PL
DissProve: Automated Verification of Asynchronous Distributed Protocols with Affine Communication
University of Colorado Boulder(科罗拉多大学博尔德分校);Amazon(亚马逊)
提出基于反向不可达性证明的自动验证技术,通过物化、因果性和摘要化处理仿射协议的无界参数化,实现异步参数化系统的安全属性自动验证。
2026-08-05 cs.LO cs.PL
RealityCheck: Bringing Modularity, Hierarchy, and Abstraction to Automated Microarchitectural Memory Consistency Verification
现代SoC是由不同团队甚至可能是不同供应商开发的组件组成的异构并行系统。这种SoC中的处理器的存储器一致性模型(MCM)指定了排序规则,该排序规则约束了可以由在这种系统上运行的并行程序中的加载指令读取的值。所需MCM排序的实现可以跨越可能由许多不同团队设计和实现的组件。理想情况下,每个团队都能够独立指定其组件执行的顺序,然后在进行MCM验证时将它们连接在一起。然而,没有用于正式硬件MCM验证的先前自动化方法提供这一点。为了使自动化的硬件MCM验证符合现实的设计过程中,我们提出RealityCheck,一种方法和工具,自动化的正式MCM验证模块化微体系结构订购规格。RealityCheck允许用户将他们的设计指定为相互连接的不同模块的层次结构,而不是单个平面规范。然后,它可以根据这些模块化规范自动验证石蕊测试程序。RealityCheck还提供了对抽象的支持,通过将整个设计的验证分解为更小的验证问题来实现可扩展的验证。我们目前的结果验证石蕊测试7个不同的设计使用RealityCheck。这些包括有序和无序管道,非阻塞缓存和异构处理器。我们的案例研究涵盖了TSO和RISC-V(RVWMO)弱记忆模型。RealityCheck能够在4分钟内验证98个RVWMO石蕊测试,其抽象能力使RVWMO石蕊测试验证时间减少了32.1%。
2020-03-09 cs.DC cs.PL
Proceedings 11th International Workshop on Automated Specification and Verification of Web Systems
这些会议记录包含在2015年6月23日在挪威奥斯陆举行的第11届Web系统自动化规范和验证国际研讨会(WWV 2015)上提交的论文,作为第20届形式化方法国际研讨会(FM 2015)的卫星研讨会。WWV是一个年度跨学科论坛,研究人员来自以下领域:声明式,基于规则的编程,形式化方法,软件工程和基于Web的系统。该研讨会促进这些领域的混合方法的交叉和进步。
2015-08-14 cs.LO cs.PL cs.SE
Proceedings 10th International Workshop on Automated Specification and Verification of Web Systems
这些会议记录包含在第10届Web系统自动规范和验证国际研讨会上提交的论文(WWV 2014),于2014年7月18日在奥地利维也纳举行,作为联邦逻辑会议的卫星研讨会(FLoC 2014),与第七届自动推理国际联合会议(IJCAR 2014)相关,作为维也纳逻辑之夏(VSL 2014)的一部分。WWV是一个年度研讨会,旨在提供一个跨学科的论坛,以促进交叉施肥和混合方法的发展,这些方法利用基于规则的编程,正式方法,软件工程和面向Web的研究的概念和工具。
2014-09-08 cs.LO cs.PL cs.SE
Automated Parameterized Verification of CRDTs
维护数据的多个副本对于在分布式应用中实现可伸缩性、可用性和低延迟至关重要。无冗余复制数据类型(CRDT)是该领域中的重要构建块,因为它们被设计为在弱一致性分布式设置中可能的无数行为下正确地操作。由于在不同副本上对同一对象的并发更新的可能性,以及对这些更新没有任何顺序保证,收敛是CRDT的重要正确性标准。此属性断言接收相同更新集(以任何顺序)的两个副本必须收敛到相同的状态。证明CRDT上的操作收敛的一种方法是证明它们是可交换的,因为根据定义,可交换操作的行为是相同的,而不管它们执行的顺序如何。在本文中,我们提出了一个框架,自动验证不同的弱一致性政策下的CRDTs的收敛。令人惊讶的是,根据底层系统支持的一致性政策,我们表明,并不是所有的操作的CRDT需要通勤,以实现收敛。我们开发了一个参数化的证明规则的一致性规范的基础上的概念,交换性模一致性政策和不干扰交换性。我们描述的设计和实施的验证引擎配备了这一规则,并显示它如何可以用来提供第一个自动收敛证明一些具有挑战性的CRDTs,包括集,列表和图形。
2019-05-14 cs.PL
Automated Software Verification of Hyperliveness
针对现有超属性验证多聚焦$k$-安全性的局限,提出基于约束的自动化算法,结合可靠完备程序逻辑与参数化最强后置条件,验证含超活性的$\forall^k\exists^l$属性,工具ForEx实验效果良好。
2024-03-05 cs.LO cs.PL
Automated Verification of Reactive and Concurrent Programs by Calculation
反应式程序将传统的顺序编程结构与原语相结合,以允许与其他并发代理进行通信。它们在现代应用中无处不在,从组件系统和Web服务到网络物理系统和自主机器人。在本文中,我们提出了一个代数验证策略的并发反应式程序,与一个大的或无限的状态空间。我们定义了新的运营商来描述相互作用和状态更新,以及相关的方程理论。有了这个,我们可以计算一个反应式程序的指称语义,从而促进自动证明。值得注意的是,我们的推理支持迭代程序与反应不变量,Kleene代数的基础上,并行组成。我们通过验证反应缓冲区来说明我们的策略。我们的法律和战略是机械化的伊莎贝尔/UTP,我们的霍尔和他的统一编程理论(UTP)框架的实施,提供健全的保证和实际的验证支持。
2021-04-12 cs.LO cs.PL
Iso-Recursive Multiparty Sessions and their Automated Verification -- Technical Report
本文提出一种等递归GMST类型系统,通过名为合规性的终止函数计算环境行为属性,解决了传统等递归方法机械化复杂和依赖模型检查器的问题,并在OCaml中实现和自动化验证了无死锁与无不匹配特性。
2025-01-29 cs.PL
Tunable Automation in Automated Program Verification
New York University(纽约大学);Microsoft Research(微软研究院);MPI-SWS(德国马克斯·普朗克软件系统研究所)
本文提出了一种在自动程序验证中调节自动化的机制,通过细粒度控制量词事实的可用性,使开发者能够根据需求选择不同的自动化级别。
2025-12-03 cs.LO cs.PL cs.SE
Automated Formal Verification of a Software Fault Isolation System
本文针对软件故障隔离验证器可能存在健全性缺陷的问题,对轻量级故障隔离(LFI)系统进行了自动化形式化验证,证明其接受的程序不会在指定沙箱区域外读写内存。
2025-08-21 cs.CR cs.PL
VeriThoughts: Enabling Automated Verilog Code Generation using Reasoning and Formal Verification
本文针对自动化硬件设计的正确性需求,提出VeriThoughts数据集、基于形式验证的评估基准框架及专用小规模Verilog生成模型,可生成可验证正确的硬件实现,加速硬件开发。
2025-11-18 cs.AI cs.LO cs.PL
CertiQ: A Mostly-automated Verification of a Realistic Quantum Compiler
我们提出了CertiQ,一个验证框架,用于编写和验证Qiskit,最广泛使用的量子编译器的编译器通行证。据我们所知,CertiQ是第一个以最自动化的方式验证真实世界量子编译器通过的努力。在CertiQ接口中编写的带有注释的验证器通道可用于生成验证条件,以及可集成到Qiskit中的可执行代码。CertiQ引入了量子电路演算,通过将这种检查过程编码到SMT问题中来实现量子线路的等效性的有效检查。CertiQ还提供了一个经过验证的广泛使用的数据结构库、电路转换函数以及不同量子数据表示的转换函数。这个经过验证的库不仅可以进行模块化验证,而且还可以为未来的量子编译器设计提供指导。我们已经在CertiQ中重新实现并验证了26个(共30个)Qiskit编译器通道,在此期间,在Qiskit实现中检测到三个错误。我们验证的编译器通过实现通过了所有Qiskit的回归测试,没有显示出明显的性能损失。
2020-11-26 cs.ET cs.PL quant-ph
Decoupling Lock-Free Data Structures from Memory Reclamation for Static Analysis
并发数据结构的验证是软件验证中最具挑战性的任务之一。在过去十年中,这一专题受到了相当大的关注。然而,人类驱动的技术仍然很麻烦,而且非常困难,而自动化方法的适用性有限。自动化的主要障碍是并发数据结构的复杂性。在没有垃圾回收的情况下尤其如此。无锁存储管理的复杂性与并发数据结构的复杂性相结合,使得自动化验证难以实现。在这项工作中,我们提出了一种方法来验证并发数据结构和它们的存储管理分开。我们建议两个简单的验证任务,暗示的数据结构的正确性。第一个任务建立了存储管理的回收行为的过度近似。第二个任务利用这种过度近似来验证数据结构,而不需要考虑存储管理本身的实现。为了使由此产生的验证任务易于处理的自动化技术,我们建立了第二个结果。我们表明,验证工具需要考虑只有一个单一的内存位置被重用的执行。我们实现了我们的方法,并且能够验证Michael&Scott的队列和DGLM队列对于危险指针和基于时期的回收的线性化。据我们所知,我们是第一个完全自动验证此类实现的公司。
2018-11-09 cs.PL
Automated Deductive Verification for Ladder Programming
梯形图逻辑是IEC 61131-3标准化的程序设计语言,广泛用于对工业可编程逻辑控制器(PLC)进行编程。PLC程序由输入(其值在运行时由工厂传感器给出),输出(其值在运行时提供给工厂执行器)和从输入值计算输出值的逻辑表达式组成。由于梯形图程序的图形形式,以及典型工业程序中的输入和输出量,调试此类程序既耗时又容易出错。在本文中,我们提出了一个基于Why 3的工具原型,我们已经实现了自动化的演绎验证的使用,以提供一个易于使用和强大的调试工具的阶梯程序员。
2019-12-23 cs.LO cs.PL cs.SE
Combining Type Checking and Set Constraint Solving to Improve Automated Software Verification
本文通过为{log}语言定义类型系统并实现类型检查器,将类型检查与集合约束求解结合,提高了软件验证的自动化程度,并通过两个工业案例验证了其有效性。
2024-03-21 cs.LO cs.PL
Automated Verification of Correctness for Masked Arithmetic Programs
本文针对特征为2的伽罗瓦域上掩码算术程序与原始密码算法的功能等价性问题,提出基于项重写并辅以随机测试和SMT求解的自动验证方法,实现为工具FISCHER,实验证明其有效、高效且可扩展,并发现EUROCRYPT 2017掩码实现中的新缺陷。
2023-05-26 cs.CR cs.PL cs.SE
A Deductive Verification Framework For Higher Order Programs
在本报告中,我们介绍了为我们的APDC(Area Prática de Desenvolvimento Curriculum)课程研究项目开展的初步工作。这个项目的主要目标是开发一个框架,在Why3工具之上,用于验证有效的高阶程序。我们使用去功能化作为从高阶OCaml实现到一阶OCaml实现的中间转换。我们翻译的目标是WhyML,Why3的程序设计语言。我们相信去功能化可以是一个有趣的路线,高阶程序的自动验证,因为人们可以采用现成的自动程序验证器来证明所生成的一阶程序的正确性。这份报告还向读者介绍了演绎程序验证的主题,以及用于证明高阶有效程序的一些工具和概念。
2020-11-28 cs.LO cs.PL
Automated Verification of Monotonic Data Structure Traversals in C
针对C语言中常见的单调数据结构遍历,提出基于“替罪羊尺寸下降”策略的自动化验证工具Shrinker,并在包含Linux等大型代码库的基准集上显著提升了验证能力。
2025-05-24 cs.LO cs.PL
Automated Theorem Proving for Prolog Verification
université de La Réunion(留尼汪大学)
本文提出通过将LPTP的公理转换为一阶公式并利用自动定理证明器验证Prolog程序属性。
2026-01-07 cs.LO cs.PL
Proceedings 9th Workshop on Horn Clauses for Verification and Synthesis and 10th International Workshop on Verification and Program Transformation
这些会议记录包括在第九届验证和合成霍恩条款研讨会和第十届验证和程序转换国际研讨会上提交的选定论文,这两个研讨会都隶属于ETAPS 2022。许多感兴趣的程序验证和综合问题可以直接使用Horn子句建模,CLP和CAV社区的许多最新进展都集中在有效地解决Horn子句提出的问题上。HCVS系列研讨会旨在汇集在约束/逻辑编程社区工作的研究人员(例如,ICLP和CP),程序验证(例如,CAV、TACAS和VMCAI)和自动演绎(例如,CADE,IJCAR),关于基于Horn子句的分析、验证和综合的主题。这些团体在不同的时期从不同的角度倡导关于核查和综合的霍恩条款,组织HCVS是为了促进互动和富有成效的经验交流和整合。VPT研讨会的目的是汇集在程序验证和程序转换领域工作的研究人员。这两个领域之间有很大的潜力进行有益的互动,因为:1)一方面,在程序转换领域开发的方法和工具,如部分评估,折叠/展开转换和超级编译,都已成功应用于验证无限状态和参数化系统。2)另一方面,模型检验,抽象解释,SAT和SMT解决和自动定理证明已被用来加强程序转换技术。此外,程序转换工具的正式认证,如自动重构工具和编译器,最近吸引了相当大的兴趣,提出了重大挑战。
2022-11-19 cs.LO cs.PL cs.SC
Neural Theorem Proving for Verification Conditions: A Real-World Benchmark
Nanyang Technological University(南洋理工大学);Peking University(北京大学);MBZUAI;Imperial College London(帝国理工学院);East China Normal University(华东师范大学);University of Edinburgh(爱丁堡大学)
本研究提出NTP4VC,首个现实世界多语言基准测试,评估LLMs在自动验证条件证明中的表现,揭示程序验证中的挑战与未来研究方向。
2026-01-28 cs.AI cs.PL cs.SE
Forward Symbolic Execution for Trustworthy Automation of Binary Code Verification
Uppsala University(乌普萨拉大学);KTH Royal Institute of Technology(皇家理工学院);Intel Labs(英特尔实验室)
本文提出了一种面向符号执行的理论,用于在可信系统中自动验证二进制代码的功能和非功能属性,通过HOL4定理证明器实现了该理论,并展示了其在RISC-V和ARM Cortex-M0上的应用效果。
2026-01-13 cs.CR cs.LO cs.PL