第一个“能处理循环”的“x86汇编”的等价性检查器
Authors: Stanford University
Presenter: Xingyu Xie
Worked Example
非形式化地过一遍算法的关键点
Algorithm
算法上的细节
Implementation & Experiment
实现上的细节以及实验结果
# Contents
# Worked Example
# Proof Goal
验证目标:
当
那么
# Cutpoint
Cutpoint
# Proof Obligation
Proof obligation
# Code Paths Correspondence
Code Paths Correspondence
# 2 Crucial Questions
2 Crucial Questions:
Solution: data-driven!
# Invariant Inference
记录活跃寄存器的值的矩阵:
从中可以发现的等式:
有可能会发现伪不变式,会送给 SMT solver 来检验。
Generate cutpoints & corresponding paths
Generate Invariants
Checking Proof Obligations
# Algorithm
# Cutpoint
cutpoint: a pair of program points
generation: data-driven
# Correspondence
# Invariant
# Checking Proof Obligations
# Liveness Computation
# Testcase Generation
# Tracing
# Invariant Generation
# VC Generation
# Equality Saturation
# CompCert and gcc
# STOKE
cost function 中的 performance term 需要更新如下,nd() 是 loop nesting depth,w 是一个常数(我们设为 20)。