(Co-)Inductive semantics for Constraint Handling Rules
在本文中,我们解决的问题,定义一个不动点语义的约束处理规则(约束处理规则),捕获的行为的简化和传播规则在一个健全的和完整的方式,就其声明性语义。首先,我们证明了一组简化规则的状态的逻辑读取可以通过CHR的抽象操作语义生成的转换系统上的最小不动点来表征。同样,我们证明了一组传播规则的状态的逻辑读取可以通过最大不动点来表征。然后,为了利用这两种类型的规则,而不失去定点特征,我们提出了一个持久的操作语义。我们最后建立,这种语义的特点是两个嵌套的不动点,我们所得到的语言是一个优雅的框架,使用共归纳推理程序。
2011-08-01 cs.LO cs.PL
Numerical Invariants through Convex Relaxation and Max-Strategy Iteration
在这篇文章中,我们开发了一个最大策略改进算法,用于计算实数上的算子的最小不动点,这些算子是多个单调和序凹算子的点式最大值。计算这些算子的唯一确定的最小不动点是在数值程序/系统验证/分析的上下文中经常发生的问题。作为一个应用程序的例子,我们讨论了我们的算法如何可以应用于计算程序的数值不变量的抽象解释的基础上二次模板。
2012-04-05 cs.PL
The Octagon Abstract Domain
本文通过抽象解释提出了一种新的静态分析数值抽象域。它扩展了以前基于差界矩阵的数值抽象域,并允许我们表示形式为(+/-x+/-y<=c)的不变量,其中x和y是程序变量,c是实常数。我们专注于给出一个有效的表示的基础上的差异界矩阵- O(n2)的内存成本,其中n是变量的数量-和图形为基础的算法,所有常见的抽象运算符- O(n3)的时间成本。这包括一个范式算法来测试等价的表示和扩大运营商计算最少不动点近似。
2007-03-16 cs.PL
Abstract Interpretation as a Programming Language
在David Schmidt的博士论文中,他探索了指称语义作为程序设计语言的使用。这是一项努力的一部分,不仅将形式语义视为规范,而且还将其视为编译器生成器的解释器和输入。语义本身可以被看作是一个程序,人们可以检查不同的编程风格和表示状态的方法。抽象解释主要是一种用于推导和规范程序分析的技术。与指称语义一样,我们也可以将抽象解释视为程序并检查其实现。本文的主要重点是表明,高阶严格性分析的结果可以更普遍地用作格上高阶函数的不动点算子,从而提供了一种立即实现一大类抽象解释的技术。此外,它可以被视为一种编程范式,并用于以循环风格编写程序。
2013-09-20 cs.PL
Formal Verification of a C Value Analysis Based on Abstract Interpretation
基于抽象解释的静态分析器是实现精细算法的复杂软件。即使静态分析技术已经被很好地理解,它们在真实语言上的实现仍然容易出错。本文提出了一个使用Coq证明助手的形式化验证:一个基于抽象解释的价值分析的形式化,以及价值分析的可靠性证明。形式化依赖于泛型接口。机械化的证明是由一个布尔东克莱不动点迭代器的翻译验证。这项工作已被集成到CompCert验证的C编译器。我们的验证分析直接操作的编译器的中间语言具有相同的表达能力为C。我们的价值分析到OCaml的自动提取产生了一个具有竞争力的结果的程序,从实验中获得的一些基准和比较的框架-C工具。
2013-04-12 cs.PL
Abstract Compilation as Abstraction of Operator Semantics, applied to Cost Analysis
Universidad Politécnica de Madrid(马德里理工大学);IMDEA Software Institute(IMDEA软件研究所);Spanish Council for Scientific Research (CSIC)(西班牙国家研究委员会);Computer Science Laboratory of Sorbonne University (LIP6)(索邦大学计算机科学实验室);STMicroelectronics(意法半导体)
该研究提出算子语义与抽象编译框架,将其应用于静态代价分析,开发出支持通用函数未知量等的最优递归提取技术,提升了代价分析的可靠性与精确性。
2026-08-11 cs.LO cs.PL
Correctness Witness Validation by Abstract Interpretation
本文提出一种新颖的抽象操作 unassume,通过将见证不变式纳入抽象程序状态以加速不动点收敛并提升精度,实现了通过抽象解释验证正确性见证,显著减少了多线程程序验证的 CPU 时间并能验证原本无法验证的属性。
2023-10-25 cs.PL
Computing Abstract Distances in Logic Programs
抽象解释是执行逻辑程序的静态分析的一种成熟的技术。然而,选择提供最佳精度-成本权衡的抽象域、加宽、固定点等仍然是一个悬而未决的问题。这在很大程度上是因为在测量和比较不同分析的精度方面存在挑战。我们提出了一种新的方法来测量这样的精度,定义在抽象域的距离,并将它们扩展到一个给定的程序的整个分析之间的距离,从而允许在不同的分析精度进行比较。我们调查和扩展现有的建议,在格或抽象域的距离和度量,我们提出了一些常见的域中使用的逻辑程序分析的度量,以及扩展这些度量的空间,整个程序分析。我们在CiaoPP框架内实现这些指标,并将它们应用于衡量基准和现实程序上不同分析的精度。
2019-07-30 cs.LO cs.PL
Invariant Generation through Strategy Iteration in Succinctly Represented Control Flow Graphs
我们考虑的问题计算数值不变的程序,例如边界上的数值程序变量的值。更具体地说,我们研究的问题进行静态分析的抽象解释使用模板线性约束域。这样的不变量可以通过Kleene迭代获得,为了保证终止,通过加宽算子加速。然而,在许多情况下,应用这种形式的外推导致不变量比可以在使用中的抽象域中表达的最强归纳不变量弱。传统抽象解释技术的另一个众所周知的不精确性来源源于它们在控制流图中的合并节点处使用连接运算符。所提到的弱点可能阻止这些方法证明安全特性。我们在本文中开发的技术解决了这两个问题:与通过加宽算子加速的Kleene迭代相反,它保证产生可以在使用的模板线性约束域中表达的最强归纳不变量。它还通过区分无循环代码段的所有路径来避免连接运算符。从形式上讲,我们的技术计算的最小不动点在一个给定的模板线性约束域的过渡关系,简洁地表示为存在量化的线性实数算术公式。与以前发表的依赖于量词消去的技术相比,我们的算法被证明具有最佳的复杂性:我们证明了与我们的不动点问题相关联的决策问题是在多项式时间层次的第二层。
2012-09-28 cs.PL
Abstract Acceleration of General Linear Loops
我们提出了抽象的加速技术计算循环不变量的数值程序与线性分配和条件。抽象解释技术通常迭代地过度近似可达状态的集合,而抽象加速则利用应用于循环头处的初始状态的单个非迭代传递函数来捕获循环的效果。与以前的加速技术相比,我们的方法适用于任何线性循环,没有限制。它的新颖性在于使用的约旦范式分解的循环体,以获得符号表达式的元素的矩阵建模的效果n>=0的循环迭代。这种矩阵的元素通过复多项式、指数和三角函数依赖于$n$。因此,我们引入了一个抽象域矩阵,捕捉这些复杂的表达式之间的线性不等式关系。这将产生一个抽象矩阵,用于描述循环的定点语义。我们的方法集成到标准的抽象解释器顺利,可以处理嵌套循环和循环包含条件分支的程序。我们评估它在控制软件中常见的小而复杂的循环,将其与其他计算线性循环不变量的工具进行比较。我们的基准测试中的循环通常表现出多项式,指数和振荡行为,对现有方法提出了挑战。我们的方法找到了非平凡的不变量来证明这些循环的变量值的有用界限,在精度方面明显优于现有的方法,同时表现出良好的性能。
2014-01-06 cs.PL
Compositional Semantics for the Procedural Interpretation of Logic
逻辑程序的语义由证明论、模型论和直接后果算子的不动点给出。如果子句逻辑是一种程序设计语言,那么它也应该具有组合语义。程序设计语言的组合语义遵循程序的抽象语法,通过对其组成单元的含义进行数学运算来组成单元的含义。逻辑的过程解释只产生了逻辑程序的不完整的抽象语法。我们完成它,并使用的结果作为基础的组合语义。我们提出比较塔斯基的代数化的一阶谓词逻辑,这是在实质上的组合语义为他选择的语法。我们的特点是我们的语义等价的直接后果运营商。
2006-05-07 cs.PL
Interactive Abstract Interpretation: Reanalyzing Whole Programs for Cheap
为了使静态程序分析在软件开发人员的指尖,我们提出了一个框架的交互式抽象解释。虽然提供了合理的分析结果,但抽象解释通常可能非常昂贵。为了实现快速的响应时间,我们增加了分析基础设施,包括后处理,而不需要对分析规范本身进行任何修改。我们依赖于本地通用定点引擎TD,它动态跟踪依赖关系,同时探索有助于回答初始查询的未知数。对受程序变化影响的分析结果采用惰性失效方法。专门的改进支持并发缺陷(如数据竞争)的增量分析。该框架已在静态分析器Goblint中为多线程C实现,使用MagpieBridge将发现中继到IDE。我们评估我们的实施w.r.t.响应时间和一致性的标尺:以前证明的不变量应该被保留-当它们不受变化的影响时。结果表明,与我们的方法,小的变化后的重新分析只需要一小部分的从头开始的分析时间,而大部分的精度被保留。我们还提供了程序开发的例子,突出了整体方法的可用性。
2022-11-25 cs.PL
Composing Programs in a Rewriting Logic for Declarative Programming
基于构造器的条件重写逻辑是一个集成一阶泛函和逻辑程序设计的通用框架,它为非确定性泛函-逻辑程序提供了一种代数语义。在这种形式主义的背景下,我们引入了一个简单的概念,程序模块作为一个开放的程序,可以扩展与几种机制结合起来。这些机制是基于一组减少的操作。然而,这些操作的高表达性使我们能够以简单的方式为程序模块化建模典型的构造,如隐藏,导出/导入,泛型/实例化和继承。我们还通过引入一个直接结果运算符来处理该建议的语义方面,并在逻辑编程的路线上研究基于该运算符的程序模块的几种替代语义:运算符本身,它的最小不动点(模块的最小模型),其前缀定点的集合(模块的术语模型)和一些其他变体,以便找到一个组合的和完全抽象的语义wrt的操作集和一个自然的可观察性概念。
2002-03-04 cs.LO cs.PL
Hypercollecting Semantics and its Application to Static Analysis of Information Flow
我们展示了安全信息流的静态分析如何在抽象解释的框架内完全表达和证明正确。关键思想是定义一个伽罗瓦连接,直接近似的超感兴趣的性质。为了使用这种伽罗瓦连接,我们引入了超收集语义的不动点特征,即“集合的集合”Transformer。这使得完全在抽象解释的计算框架内系统地导出超性质的静态分析成为可能。我们通过推导实例静态分析来评估这种技术。对于定性信息流,我们推导出一个类似于Amtoft和Banerjee(SAS'04)的逻辑和Hunt和Sands(POPL'06)的类型系统的依赖分析。对于定量信息流,我们推导出一种新的基数分析,它限制了程序所传达的泄漏,而不是简单地决定它是否存在。这包括超安全性问题,但不是k-安全性问题。我们把框架使用,并介绍了变化,实现精度媲美最新的和精确的静态分析的信息流。
2016-11-07 cs.CR cs.PL
Characterizations of Stable Model Semantics for Logic Programs with Arbitrary Constraint Atoms
University of Alberta(阿尔伯塔大学)
研究了具有(抽象)约束原子的逻辑程序的稳定模型语义及其性质。我们介绍了一个简洁的抽象表示,这些约束原子中的约束原子表示companies。我们展示了两个应用程序。首先,在这种约束原子的表示下,我们推广了Gelfond-Lifschitz变换,并将其应用于定义具有任意约束原子的逻辑程序的稳定模型(也称为答案集)。由此产生的语义与Son等人定义的语义一致,它基于定点方法。我们的方法的一个优点是,它可以被应用,在一个自然的方式,定义稳定的模型与约束原子的析取逻辑程序,这可能会出现在析取头以及在身体的规则。其结果是,我们的方法的稳定模型语义的逻辑程序与约束原子一般化了以前的一些方法。其次,我们表明,我们的抽象表示的约束原子提供了一种手段来表征原子的依赖关系的程序与约束原子,使一些标准的特征和属性依赖于这些依赖关系在过去的逻辑程序与普通原子可以扩展到逻辑程序与约束原子。
2009-04-30 cs.AI cs.LO cs.PL
TensorIR: An Abstraction for Automatic Tensorized Program Optimization
Shanghai Jiao Tong University(上海交通大学);Carnegie Mellon University(卡内基梅隆大学);OctoML(OctoML公司);University of Washington(华盛顿大学);UC Berkeley(加州大学伯克利分校);Amazon Web Services(亚马逊云科技)
在各种设备上部署深度学习模型已经成为一个重要的课题。硬件专业化的浪潮为多维张量计算带来了各种各样的加速原语。这些新的加速原语,以及新兴的机器学习模型,带来了巨大的工程挑战。在本文中,我们提出了TensorIR,一个编译器抽象优化程序与这些张量计算原语。TensorIR概括了现有机器学习编译器中使用的循环嵌套表示,将张量计算作为一等公民。最后,我们在我们的抽象之上构建了一个端到端框架,以自动优化给定张量计算原语的深度学习模型。实验结果表明,TensorIR编译自动使用给定硬件后端的张量计算原语,并提供与跨平台的最先进手动优化系统竞争的性能。
2022-10-27 cs.AI cs.LG cs.PL
Taking out the Toxic Trash: Recovering Precision in Mixed Flow-Sensitive Static Analyses
本文针对混合流敏感静态分析中全局变量信息因累积多余贡献而精度受损的问题,提出收窄、不情愿加宽和抽象垃圾收集三种互补技术,以合理成本恢复全局变量的分析精度。
2025-04-08 cs.PL cs.SE
A simple abstraction of arrays and maps by program translation
我们提出了一种处理数组的程序的静态分析方法,数组程序的语义和纯标量操作的语义之间有伽罗瓦连接。实现它的最简单的方法是通过自动地将数组程序语法转换为标量程序,然后使用任何静态分析技术(抽象解释、加速、谓词抽象等)分析标量程序。.).由此获得的标量不变量被翻译回原始程序作为普遍量化的数组不变量。我们说明了我们的方法上的各种例子,导致“荷兰旗”算法。
2015-06-12 cs.LO cs.PL
Abstractions of Sequences, Functions and Operators
针对递归函数闭式界推导难题,提出B-bound约束抽象域与域抽象函子,构建可处理高度非线性不变量的高阶抽象解释方法,适用于程序分析与混合系统等领域。
2025-07-30 cs.LO cs.PL
An Order Theory Framework of Recurrence Equations for Static Cost Analysis $-$ Dynamic Inference of Non-Linear Inequality Invariants
本文针对静态代价分析中递归方程求解的局限性,提出了一种基于序理论的框架,将递归视为算子、解视为不动点,利用前/后缀点搜索技术设计新求解器,实验证明其能高效推断出复杂递归的非线性上下界。
2024-08-29 cs.LO cs.PL