Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logic 符号模型是什么样子的_Logic_Formal Verification_Model Checking_Symbolic Execution - Fatal编程技术网

Logic 符号模型是什么样子的

Logic 符号模型是什么样子的,logic,formal-verification,model-checking,symbolic-execution,Logic,Formal Verification,Model Checking,Symbolic Execution,我试图理解符号执行引擎是如何工作的。调查使用C语言的技术。他们提到了符号记忆: 3.1全符号存储器 在通用性的最高级别上,引擎可以将内存地址视为完全符号化的 以紧凑的形式表示内存。[32]中采用了这种方法,其中 符号(而非具体)将表达式寻址到数据,表示可能的 使用压缩中的符号地址引用内存而产生的替代状态, 隐式 还对Java的符号堆进行了一些探讨: 4.1符号状态表示法 符号状态s由符号堆H组成 原语类型字段的赋值,路径条件 PC和程序计数器 我想知道这实际上意味着什么,这个符号堆。对我来说,这

我试图理解符号执行引擎是如何工作的。调查使用C语言的技术。他们提到了符号记忆:

3.1全符号存储器

在通用性的最高级别上,引擎可以将内存地址视为完全符号化的

以紧凑的形式表示内存。[32]中采用了这种方法,其中 符号(而非具体)将表达式寻址到数据,表示可能的 使用压缩中的符号地址引用内存而产生的替代状态, 隐式

还对Java的符号堆进行了一些探讨:

4.1符号状态表示法

符号状态s由符号堆H组成 原语类型字段的赋值,路径条件 PC和程序计数器

我想知道这实际上意味着什么,这个符号堆。对我来说,这意味着符号执行中使用的所有数据结构都将使用符号内存,而不是实际内存。这意味着像数组这样的结构需要有符号模型。我很想知道这些模型是什么样子的。我不明白你如何“象征性地模拟数组长度”。在我看来,它是一个整数,所以它将是一个整数值。但作为一种象征意义,我想知道这意味着什么。我还没看到。想知道是否可以从较高的层次上解释如何对一些数据结构(如数组或具有不同字段值的结构)进行符号化建模,以便在符号执行中使用

提到:

也可以 定义另一种“符号执行”语义 对于一种编程语言,实际数据对象 不需要使用,但可以用任意 符号

不确定这是什么样子。

“数组X的大小为100,位置5的元素的值为7”是数组的符号表示。 符号表示法的关键点在于,你只专注于明确重要的东西

如果你想表示一个更具基因性的数组,你也可以把它的大小符号化,比如说“X的大小是L”,在分析过程中你可能会发现L=100或L>90


不同数据结构的捕获量取决于您想做什么。链表是一堆内存区域还是更多

符号执行引擎的一个完整的开源示例是JPF-symbolic Pathfinder。它在Java虚拟机级别上执行。它还应该回答您关于complexer数据结构(如数组或对象数组)的问题

这里有一本非常好的出版物: 《自动化软件工程期刊》2013年第20(3)期中的“符号探路者:将符号执行与Java字节码分析的模型检查相结合”

在这里,您可以看到一个详细的示例(第4.9节),说明如何“重写”具体代码并将其转换为符号代码。特别是如何处理堆栈和堆内存以及依赖于此符号内存的代码条件(图6+7)。不能简单地将内存与条件路径执行分开

非常简单:条件被所有“符号”分支上的循环所取代(非确定性选择)。内存由符号值(如您所提到的-通过所谓的属性传播)和这些值上的约束(取决于分支循环)替换。约束求解器用于进一步减少不可能的分支(回溯),并最终求解约束

Net代码的另一个非常好的实践示例是使用“composition.KeepUnexpanded”以完全符号模式运行MicrosoftSpecExplorer(XRTs)。在生成的遍历路径图中,您可以看到一个很好的示例,说明符号内存和约束是如何表示的。不幸的是,XRTs不是开源的

附言: 事实上,符号变量的表示是一大挑战。以下是一些非常好的出版物:


Wikipedia条目包含一个非常简单的符号执行示例,请先看它。我在那里看了,它很有帮助,但我仍然看不到数组的数据结构是什么样子。例如,您现在可以尝试阅读阿尔贝托·科恩·波里西尼和弗拉维奥·德·保利的“符号执行中的数组表示法”(如果你有权访问一些科学数据库)我没有权限不幸的是:/每天都可能是圣诞节