抽象解释的简短实现示例

时间:2010-05-28 11:24:43

标签: abstract-interpretation

我正在学习抽象解释课程,但我还没有看到任何关于理论如何映射到实际代码的例子。

我正在寻找简短的代码示例,我最好不必使用整个编译器。分析不一定有用,我只想看一个分析得出然后实现的例子。

有没有人知道任何这样的例子,也许来自大学课程?

4 个答案:

答案 0 :(得分:5)

AI基于数学理论名称Galois Connection。理论很简单:

  1. 摘要程序的行为。
  2. 在抽象层面上进行分析。
  3. Galois connection:关联ActualAbstract计划。

    This是迄今为止关于抽象解释的最佳教程:

答案 1 :(得分:3)

也许这个工具对你来说也很有趣: Interproc Analyzer

它是一种抽象的分析器,用于提供非常简单的语言 过程间分析。您可以尝试分析并获得有关分析程序的数值不变量。源代码可用(OCaml)。

一个非常彻底和精确的课程,由其中一位"创作者"摘要解释,帕特里克库斯特(已在其中一个答案中提到): MIT course about Abstract Interpretation。该课程还提供OCaml中的作业。

答案 2 :(得分:2)

Bertot有这篇论文

Structural abstract interpretation, A formal study using Coq

使用Coq Proof Assistant为简单的玩具语言提供了一个抽象解释器的完整实现。我用这个作为具体参考,并发现它很有用,虽然有点难,但考虑到主题,这是预期的。 Coq是一个很棒的软件。

我还看到了一篇Cousot论文:

A gentle introduction to formal verification of computer systems by abstract interpretation

粗略的细节(但我相信会有一些有用的引用,以便详细说明)Astrée的实施,我对Astrée不熟悉,所以实际上并未阅读该部分,但我认为它符合您的标准。

如果你再遇到,请告诉我!特别想看一个prolog抽象翻译。

答案 3 :(得分:1)

有MonoREIL,它附带最近开源的工具BinNavi

参见here是一个简短的介绍。

请注意,MonoREIL框架的上下文不是编译器,而是二进制代码的分析。然而,它已被用于现实世界的应用程序,参见this介绍的幻灯片34 ff(其中包含更多正式背景)。