Formal Aspects of Computing ( IF 1 ) Pub Date : 2024-03-20 , DOI: 10.1145/3605951 Dara Ly 1 , Nikolai Kosmatov 2 , Frédéric Loulergue 3 , Julien Signoles 1
Runtime Assertion Checking (RAC) for expressive specification languages is a non-trivial verification task that becomes even more complex for memory-related properties of imperative languages with dynamic memory allocation. It is important to ensure the soundness of RAC verdicts, in particular when RAC reports the absence of failures for execution traces. This article presents a formalization of a program transformation technique for RAC of memory properties for a representative language with pointers and memory operations, including dynamic allocation and deallocation. The generated program instrumentation relies on an axiomatized observation memory model, which is essential to record and monitor memory-related properties. We prove the soundness of RAC verdicts with regard to the semantics of this language.
中文翻译:
通过程序转换对内存属性进行声音运行时断言检查
表达规范语言的运行时断言检查 (RAC) 是一项不平凡的验证任务,对于具有动态内存分配的命令式语言的内存相关属性来说,它变得更加复杂。确保 RAC 判决的健全性非常重要,特别是当 RAC 报告执行跟踪不存在故障时。本文介绍了具有指针和内存操作(包括动态分配和释放)的代表性语言的内存属性 RAC 程序转换技术的形式化。生成的程序检测依赖于公理化的观察内存模型,这对于记录和监视内存相关的属性至关重要。我们证明了 RAC 判决关于该语言语义的合理性。