核心概念
本文提出了一種基於 Farkas 引理自動生成仿射 while 循環的仿射析取不變量的新方法,並通過控制流轉換和不變量傳播技術提高了效率。
摘要
論文概述
本論文提出了一種名為 DInvG 的新方法,用於自動生成仿射 while 循環的仿射析取不變量。與現有的僅生成連續不變量的方法不同,DInvG 能夠生成更精確的析取不變量,從而更精確地捕捉循環的行為。
研究方法
DInvG 的核心是利用 Farkas 引理,這是一個關於線性不等式的基本定理,用於生成仿射不變量。為了將 Farkas 引理應用於析取不變量生成,DInvG 採用了以下兩個關鍵技術:
- 控制流轉換: 將循環中的每個執行路徑提取為轉換系統中的獨立位置,並建立它們之間的轉換關係。
- 不變量傳播: 通過將已計算的不變量盡可能地傳播到尚未計算的位置,從而最大程度地減少不變量計算工作量。
實驗結果
在超過 100 個仿射 while 循環(主要來自 SV-COMP 2023)上的實驗評估表明,與其他先進的驗證工具相比,DInvG 在生成精確的線性不變量方面具有更高的效率和準確性。
論文貢獻
本論文的主要貢獻如下:
- 提出了一種基於 Farkas 引理生成仿射析取不變量的新方法。
- 引入了控制流轉換和不變量傳播技術,以提高不變量生成的效率。
- 通過實驗評估證明了 DInvG 的有效性和效率。
未來研究方向
- 將 DInvG 擴展到處理更複雜的程式結構,例如包含數組和指針的程式。
- 研究如何將 DInvG 與其他驗證技術相結合,以進一步提高程式驗證的效率和準確性。
统计
DInvG 在 114 個測試案例中成功驗證了 101 個,而 Veriabs 驗證了 108 個,CPAChecker 驗證了 68 個。
DInvG 的總執行時間為 34.65 秒,而 Veriabs 為 8939.56 秒,CPAChecker 為 43573.42 秒。
引用
"In this work, we consider the automated generation of disjunctive invariants, i.e., invariants that are in the form of a disjunction of assertions. Compared with conjunctive invariants, disjunctive invariants capture disjunctive features such as multiple phases and mode transitions in loops."
"Our main contributions are two-fold. First, we combine Farkas’ Lemma with a succinct control flow transformation to derive disjunctive invariants from the conditional branches in the loop. Second, we propose an invariant propagation technique that minimizes the invariant computation effort by propagating previously solved invariants to yet unsolved locations as much as possible."