TRX: A Formally Verified Parser Interpreter
语法分析是计算机科学中的一个重要问题,然而令人惊讶的是,很少有人关注它的形式化验证。在本文中,我们提出了TRX:解析器解释器正式开发的证明助手Coq,能够产生正式正确的解析器。我们正在使用解析表达式语法(PEG),一种形式主义,基本上代表递归下降解析,我们认为这是一个有吸引力的替代上下文无关文法(CFG)。从这种形式化中,我们可以提取出一个任意PEG语法的解析器,保证完全正确,即,所得到的解析器在其语法和PEG的语义方面是终止的和正确的;这两个属性在Coq中被正式证明。
2011-06-22 cs.FL cs.LO cs.PL
Towards Cumulative Abstract Semantics via Handlers
University of Colorado Boulder(科罗拉多大学博尔德分校);Amazon(亚马逊)
本文提出通过作用域效应实现累积抽象语义,以构建模块化且优雅的抽象解释框架。
2026-02-17 cs.PL
Minuska: Towards a Formally Verified Programming Language Framework
本文提出形式化编程语言框架 Minuska,通过 MinusLang 定义语言并在 Coq 中实现和验证参数化解释器,从而为生成的语言工具提供可证明正确性保证。
2024-09-17 cs.PL
SAIL: Sound Abstract Interpreters with LLMs
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
提出SAIL框架,利用大语言模型自动合成全局可靠的抽象变换器,通过约束优化和代价函数确保可靠性,在神经网络验证中匹配甚至超越人工设计的变换器。
2026-06-02 cs.LG cs.PL
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
An Experiment Combining Specialization with Abstract Interpretation
以前的研究表明,控制流细化可以通过一个程序专门化结合基于属性的抽象来实现,以提高终止和复杂性分析工具。我们现在表明,这个专门构建的专门化程序可以以更模块化的方式进行重构,并且可以使用现成的部分评估工具来实现先前的结果,并将其应用于抽象解释器。抽象解释器的关键特征是抽象域,它是基于属性的抽象域与具体域的乘积。这种独立于语言的框架提供了一种实用的方法来实现各种强大的专门化,并有助于使用解释器和专门化来实现程序转换的研究。
2020-08-07 cs.LO cs.PL cs.SC
Understanding Formal Reasoning Failures in LLMs as Abstract Interpreters
University of Southern California(南加州大学)
本研究针对LLM用于程序验证时语义推理机制不明的问题,提出两种激发抽象解释推理的提示策略,在SV-COMP基准的22个程序上评估了多款前沿LLM,分析了不变量可靠性与推理错误模式,为LLM与程序验证交叉研究提供了新方向。
2025-09-30 cs.LG cs.PL cs.SE
FEther: An Extensible Definitional Interpreter for Smart-contract Verifications in Coq
区块链技术使用加密链接将记录添加到列表中。因此,区块链智能合约的安全性是当代最热门的研究课题之一。为了改进该领域的定理证明技术,我们正在开发一个可扩展的混合验证工具链,表示为FSPVM-E,用于以太坊智能合约验证。这个混合系统扩展了Coq中的证明助手,Coq是一个正式的证明管理系统。结合符号执行与高阶定理证明,它解决了一致性,自动化和可重用性问题的标准定理证明方法。本文通过对FSPVM-E证明引擎的开发,完成了FSPVM-E的实现。FSPVM-E是在我们前期工作FEther的基础上,完全在Coq证明助手上开发的一个可扩展的定义解释器。它支持Solidity编程语言的几乎所有语义,并同时执行多种类型的符号。FEther还包含一组自动化策略,以高自动化水平执行和验证Coq中的智能合约。在Coq中验证了FEther的功能正确性。在标准教程中,FEther的执行效率远远超过Coq中开发的解释器。
2018-10-19 cs.PL
Abstract Interpretation as a Programming Language
在David Schmidt的博士论文中,他探索了指称语义作为程序设计语言的使用。这是一项努力的一部分,不仅将形式语义视为规范,而且还将其视为编译器生成器的解释器和输入。语义本身可以被看作是一个程序,人们可以检查不同的编程风格和表示状态的方法。抽象解释主要是一种用于推导和规范程序分析的技术。与指称语义一样,我们也可以将抽象解释视为程序并检查其实现。本文的主要重点是表明,高阶严格性分析的结果可以更普遍地用作格上高阶函数的不动点算子,从而提供了一种立即实现一大类抽象解释的技术。此外,它可以被视为一种编程范式,并用于以循环风格编写程序。
2013-09-20 cs.PL
Testing Differential Privacy with Dual Interpreters
大规模应用差分隐私需要方便的方法来检查使用敏感数据进行计算的程序是否适当地保护了隐私。我们在这里提出了一个完全自动化的框架{ \em测试}差分隐私,适应一个众所周知的“逐点”技术从非正式证明的差分隐私。我们的框架,称为DPCheck,不需要程序员注释,处理所有以前验证或测试的算法,是第一个完全自动化的框架,以区分正确和错误的实现PrivTree,概率终止算法,以前没有机械检查。我们分析了DPCheck错误地接受非私有程序的概率,并证明了,从理论上讲,通过适当选择测试大小,错误接受的概率可以呈指数级小。我们证明DPCheck的效用经验,实现所有的基准算法,从以前的工作机械验证的差分隐私,加上其他几个和他们的不正确的变种,并显示DPCheck接受正确的实现,并拒绝不正确的变种。我们还演示了如何在实际工作流程中部署DPCheck,以测试2020年美国人口普查披露避免系统(DAS)的差异隐私。
2020-10-08 cs.CR cs.PL
An Environment for Analyzing Space Optimizations in Call-by-Need Functional Languages
我们提出了一个实现的解释器LRPi的调用需要演算LRP,基于一个变体的Sestoft的抽象机马克1,扩展了一个热切的垃圾收集器。它被用来作为一个工具,准确的空间使用分析,支持我们的调查空间的改进呼叫按需演算。
2017-01-03 cs.PL
A simple and efficient implementation of strong call by need by an abstract machine
University of Wrocław, Faculty of Mathematics and Computer Science(弗罗茨瓦夫大学数学与计算机科学系);Google(谷歌)
本文提出RKNL抽象机,通过双线性开销实现强调需调用,结合高阶求值器的memothunks技术,证明其在弱调需策略下扩展Krivine机,并在双线性步骤内模拟正常序策略。
2026-08-20 cs.PL
A verified abstract machine for functional coroutines
函数式协程是一种受限形式的控制机制,其中每个协程都用延续和环境来表示。这个限制最初是通过考虑一个建设性的版本Parigot的经典自然演绎,这是健全的和完整的恒定域逻辑。在这篇文章中,我们提出了一个改进的de Groote的抽象机的功能协程,我们证明了它的正确性。因此,这个抽象机器也提供了常数域逻辑的直接计算解释。
2016-06-21 cs.LO cs.PL
Abstract Interpretation of Temporal Safety Effects of Higher Order Programs
提出基于抽象解释的自动机参数化依赖效应分析,用于递归高阶程序时序安全验证,原型 evDrift 在 23 个基准中验证 21 个并显著优于既有工具。
2025-08-30 cs.PL
Automating the Functional Correspondence between Higher-Order Evaluators and Abstract Machines
函数对应是一种将高阶赋值器转换为语义等价的抽象机的手工推导技术。该转换包括两个著名的程序转换:翻译为延续传递风格,揭示了控制流的评估和雷诺的去功能化,产生一阶过渡函数。自从Danvy等人第一次描述了这种转换以来,它已经在连接已知的求值器和抽象机方面找到了许多应用,而且在为各种$λ$ -演算以及逻辑编程、命令式和面向对象语言发现新的抽象机方面也找到了许多应用。我们提出了一个算法,自动化的功能对应。该算法接受一个专用的最小函数元语言编写的评估器,它首先将其转换为管理范式,这有利于程序分析,然后执行选择性翻译继续通过风格,并选择性去功能化。这两个选择性的转换是由一个控制流分析,这是由一个抽象的解释器使用抽象的抽象机器的方法,这使得它可以只转换所需的部分评估计算。本文附带了一个命令行工具形式的算法实现,该工具允许对嵌入Racket源文件中的求值器进行自动转换,并对生成的机器进行细粒度控制。
2021-08-16 cs.PL
A Verified Information-Flow Architecture
SAFE是高度安全的计算机系统的全新设计,具有用于跟踪和限制信息流的普遍机制。在最低级别,SAFE硬件支持细粒度的可编程标记,在执行指令时具有有效和灵活的标记传播和组合。操作系统将这些通用设施虚拟化,以呈现一个信息流抽象机,该信息流抽象机允许用户程序使用丰富的机密性策略来标记敏感数据。我们提出了一个正式的,机器检查模型的关键硬件和软件机制,用于动态控制信息流的安全和端到端的证明,该模型的非干扰。我们使用一个改进的证明方法来传播的抽象机器的不干扰属性到具体的机器级别。我们使用一个中间层的细化链,因素的信息流控制策略的细节,并设计一个代码生成器编译成低级别的监控代码的信息流策略。最后,我们使用一个专用的霍尔逻辑,从低级别的机器指令抽象成一组可重用的验证结构化代码生成器验证此生成器的正确性。
2016-03-06 cs.PL
Formal Verification of a C Value Analysis Based on Abstract Interpretation
基于抽象解释的静态分析器是实现精细算法的复杂软件。即使静态分析技术已经被很好地理解,它们在真实语言上的实现仍然容易出错。本文提出了一个使用Coq证明助手的形式化验证:一个基于抽象解释的价值分析的形式化,以及价值分析的可靠性证明。形式化依赖于泛型接口。机械化的证明是由一个布尔东克莱不动点迭代器的翻译验证。这项工作已被集成到CompCert验证的C编译器。我们的验证分析直接操作的编译器的中间语言具有相同的表达能力为C。我们的价值分析到OCaml的自动提取产生了一个具有竞争力的结果的程序,从实验中获得的一些基准和比较的框架-C工具。
2013-04-12 cs.PL
A Higher-Order Abstract Syntax Approach to Verified Transformations on Functional Programs
我们描述了一种方法来验证实现的转换功能的程序,利用高阶表示的语法。在这种方法中,使用遗传Harrop公式的逻辑指定变换。一方面,这些规范直接作为实现,是Lambda Prolog语言中的程序。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。我们认为,这种方法是特别有效的实现转换,分析绑定结构。我们通过在Lambda Prolog中描述对这种结构敏感的类型化闭包转换和代码提升等转换的简洁编码,并通过展示如何使用Abella证明其正确性来做到这一点。
2016-01-23 cs.LO cs.PL
Functional programming with lambda-tree syntax
我们提出了一个新的功能性程序设计语言,MLTS,使用的数据树语法的方法来编码绑定出现在数据结构的设计。在这种方法中,绑定永远不会成为自由的,也不会脱离它们的范围:相反,数据结构中的绑定被允许移动到程序中的绑定。MLTS的设计在程序中包含了额外的站点,这些站点直接支持绑定的移动。为了正式定义语言的操作语义,我们提出了一个抽象的语法MLTS和一个自然的语义评估。我们将把这样的自然语义看作是一个丰富逻辑中的逻辑理论,这个逻辑包括 * 名义抽象 * 和 *nabla-quantifier*:因此,MLTS的自然语义规范可以给出一个简洁而优雅的表示。我们提出了一个类型化的原则,自然地扩展了核心ML程序的类型化,我们通过几个例子来说明MLTS的功能。本文简要介绍了一个MLTS的联机解释器。
2019-08-09 cs.PL
A Higher-Order Abstract Syntax Approach to the Verified Compilation of Functional Programs
我们认为,功能性程序设计语言的编译器的实现和验证大大简化了采用高阶表示的语法称为高阶抽象语法或HOAS。HOAS的基本思想是使用一种元语言,它为绑定相关概念提供内置的逻辑处理。通过将元语言嵌入到更大的编程或推理框架中,可以将对象语言中的绑定结构的处理吸收到系统的元理论中,从而大大简化整体实现和推理过程。我们在这篇论文中提出并证明了上述论点的有效性的方法来验证执行的编译器转换的函数程序,利用HOAS。在这种方法中,函数程序的转换首先以基于规则的关系规范的形式表达。这些规范被渲染成语言lambda Prolog的程序。一方面,这些程序直接作为实现。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。lambda Prolog和Abella都支持使用HOAS方法。因此,它们构成了一个框架,可用于在验证编译中测试HOAS方法的好处。我们用它们来实现和验证一个编译器的代表性的功能程序设计语言,体现了许多编译器的核心,这些语言的转换。在这两个编程和推理阶段,我们展示了如何使用的HOAS方法显着简化了绑定结构的表示,操作,分析和推理。
2017-02-11 cs.LO cs.PL
Do be do be do
我们探讨的设计和实施的弗兰克,一个严格的功能性程序设计语言的双向效果类型系统设计从地面上围绕一个新的变种Plotkin和Pretnar的效果处理抽象。效果处理程序为模块化有效编程提供了一个抽象:处理程序充当命令集合的解释器,这些命令的接口由类型系统静态跟踪。然而,Frank通过概括函数抽象本身的基本机制,消除了对额外效果处理构造的需要。函数只是不解释任何命令的Frank运算符的特殊情况。此外,Frank的操作符可以是多处理程序,可以同时解释来自多个源的命令,而不会干扰函数式编程的直接风格。Frank中的效应类型采用了一种新颖的效应多态形式,避免在源代码中提及效应变量。这是通过向内传播环境异能来实现的,而不是向外累积潜在效果的联合。我们介绍弗兰克的例子,然后给出一个正式的帐户弗兰克类型系统及其语义。我们通过将Frank操作符细化到函数、case表达式和一元处理程序中来引入Core Frank,然后为Core Frank给出一个合理的小步操作语义。使用效果和处理程序进行编程还处于起步阶段。我们对未来的可能性进行了探索,特别是与其他形式的丰富类型系统相结合。
2017-10-03 cs.PL
Theorem proving support in programming language semantics
我们描述了几种观点的语义的一个简单的程序设计语言的正式文件中的演算的归纳结构,可以验证的Coq证明系统。涵盖的方面是自然语义、指称语义、公理语义和抽象解释。递归函数的描述也在适当的时候提供,从而产生一个验证条件生成器和一个静态分析器,可以在定理证明器内运行,用于反射证明。还描述了从指称语义提取解释器。所有不同的方面都被正式证明是合理的自然语义规范。
2007-07-10 cs.LO cs.PL
Verified Code Transpilation with LLMs
提出基于 LLM 的验证式提升方法 LLMLift,利用 LLM 推理和生成等价性证明实现代码转译,在四种 DSL 上优于符号工具且构建成本更低。
2024-06-05 cs.PL
Toward Verified Library-Level Choreographic Programming with Algebraic Effects
针对库级编排编程缺乏坚实理论基础的问题,提出用代数效应建模该范式的方法,实现了基于Agda的原型框架,并正推进其正确性证明工作。
2024-07-09 cs.PL
CQS: A Formally-Verified Framework for Fair and Abortable Synchronization
本文提出了CQS框架,支持高效实现公平且可中止的同步原语,并在Coq的Iris框架中提供模块化的形式化证明,其在JVM上的实际性能显著优于Java的AbstractQueuedSynchronizer。
2023-05-20 cs.DS cs.PL
StarMalloc: A Formally Verified, Concurrent, Performant, and Security-Oriented Memory Allocator
本文提出StarMalloc,一个经形式化验证的并发安全内存分配器,利用Steel框架高效验证,并开发可复用数据结构,经Firefox及10个分配器评估,性能具有竞争力。
2024-03-14 cs.CR cs.PL
Proofs and Programs about Open Terms
形式演绎系统在计算机科学中非常常见。它们用于表示逻辑、程序设计语言和安全系统。此外,编写操纵它们并对它们进行推理的程序是重要和常见的。考虑证明助手、语言解释器、编译器和其他处理由形式系统描述的输入的软件。这篇论文表明,上下文类型可以用来构建工具,方便的实现和推理的演绎系统与绑定。我们讨论了三个方面:隐式参数的重建,使写作证明和程序的依赖类型更容易,除了上下文对象到现有的程序设计语言,使实现正式系统的绑定器更容易,最后,我们探索的想法嵌入的逻辑框架LF使用上下文类型完全依赖类型化理论。这是同一个信息的三个方面:使用正确的抽象进行编程可以让我们以更少的努力解决更深层次的问题。在这个意义上,我们希望:更容易编写程序和证明(使用隐式参数),支持绑定器的语言(通过使用上下文类型嵌入语法框架),以及逻辑框架LF的强大功能与依赖类型的表达能力。
2018-05-18 cs.PL
MirrorShard: Proof by Computational Reflection with Verified Hints
我们描述了一种在Coq证明助手中构建可组合且可扩展的验证过程的方法。与依赖于运行时生成和检查证明的传统方法不同,我们使用经过验证的正确过程与Coq可靠性证明。虽然他们是内在的Coq的逻辑,我们的证明支持声音扩展用户提示新的领域,使自动推理用户定义的抽象谓词。我们通过开发一个用于模块化包装,构建和组成提示数据库的体系结构来保持稳健性,该体系结构以前仅在其动态类型化,证明生成策略语言的级别上在Coq中实现。我们的证明器还包括对统一变量的丰富处理,使其能够与Coq中其他基于策略的演绎步骤集成。我们已经实现了我们的技术,在反射验证的开源框架,XNUMX碎片。我们证明了它的适用性,通过实例化它的分离逻辑,以理由有关的强制性程序验证。
2013-05-28 cs.LO cs.PL
Formally Verified Linear-Time Invertible Lexing
EPFL(洛桑联邦理工学院)
本文提出ZipLex,一种形式验证的线性时间可逆词法分析框架,支持最长匹配语义。该框架通过验证记忆化确保词法分析线性时间,同时保证词法分析与打印互为逆操作,适用于JSON处理等实际应用。
2026-05-21 cs.FL cs.PL
Teaching Type Systems Implementation with Stella, an Extensible Statically Typed Programming Language
本研究介绍了一门围绕可扩展静态类型语言Stella开设的半学期类型系统实现课程,依托BNF Converter提供多语言模板,覆盖多项类型系统特性,还汇报了相关教学成果。
2024-07-10 cs.PL cs.SE
Logical Relations for Formally Verified Authenticated Data Structures
本文提出基于新型关系分离逻辑的形式化证明方法,为可自动生成认证数据结构的库验证安全性与正确性,证明了库优化的正确性及手写实现与自动生成代码的可靠链接,结果已在Coq中通过Iris框架机械化验证。
2025-01-18 cs.LO cs.PL
Towards a Coq-verified Chain of Esterel Semantics
本文利用 Coq 构建并验证 Esterel 的形式语义链,提出去除 Must/Can 势函数对的微步语义,并证明其对 CSS 的精化以及 CBS 与 CSS 的等价性。
2025-01-06 cs.FL cs.LO cs.PL
Proceedings First International Workshop on Trends in Functional Programming in Education
2012年6月11日,第一届教育中函数式编程趋势国际研讨会(TFPIE 2012)在苏格兰圣安德鲁斯大学举行。TFPIE的目标是聚集研究人员,教授,教师和所有使用或有兴趣在教育中使用函数式编程的专业人士。提交的材料由TFPIE 2012计划委员会使用现行的学术标准进行审查。本卷中的4篇文章作为这一过程的结果被选中出版。这些文章涵盖了使用函数式编程进行教育的各种新颖方法。Page和Gamboa描述了他们如何向学生介绍计算思维和使用逻辑和基于等式的推理解决问题。O'Donnell描述了通过使用仿真和功能硬件描述语言使计算机系统课程变得生动的努力。Radge描述了一种新的CS1方法,该方法利用了数学抽象中的不精确性和编程中所需的精确性之间的相互作用。Stutterheim,Swierstra和Swierstra描述了一种新的方法,使用基于Web的解释器和定理证明器向高中生介绍编程和计算机科学中的重要思想。
2013-01-20 cs.CY cs.PL
Picachv: Formally Verified Data Use Policy Enforcement for Secure Data Analytics
针对数据分析中敏感数据使用策略执行的可移植性、可验证性不足问题,提出基于关系代数、经Coq形式化验证且结合TEEs的安全监控器Picachv,集成至Polars框架并经TPC-H测试验证,实现可证明合规的安全数据分析。
2025-01-17 cs.CR cs.DB cs.PL