Core Concepts
プログラムの終了性を証明するために、ランキング関数と不変式を協調的に合成する新しいフレームワーク「Syndicate」を提案する。Syndicateは、ランキング関数と不変式の合成を効率的に行うことで、より多くのベンチマークを証明し、既存の手法と比べて平均実行時間を17%から70%削減できる。
Abstract
本論文は、プログラムの終了性を証明するための新しいフレームワーク「Syndicate」を提案している。
プログラムの終了性を証明する際には、ランキング関数と不変式の2つの要素が重要である。ランキング関数は、到達可能な全ての状態で有界であり、各反復で一定量減少する必要がある。一方、不変式は到達可能な状態の上近似を表す。
従来の手法では、ランキング関数と不変式を独立に合成するか、単一の問合せに統合していたが、いずれも非効率的であった。
そこで本論文では、ランキング関数と不変式の合成を協調的に行うSyndicateを提案する。Syndicateでは、ランキング関数の検証時に得られた反例を用いて不変式を強化し、不変式の検証時に得られた反例を用いてランキング関数を改善する。この相互作用により、より効率的な終了性証明が可能となる。
Syndicateは、任意の深さの入れ子ループを持つプログラムにも適用可能である。ループ毎の不変式と、ループ間の相互依存関係を適切に扱うことで、完全性も保証される。
実験結果では、Syndicateが既存手法と比べて、より多くのベンチマークを証明し、平均実行時間も大幅に削減できることを示している。
Stats
プログラムの終了性を証明するためには、ランキング関数が有界であり、各反復で一定量減少する必要がある。
Quotes
ランキング関数は、到達可能な全ての状態で有界であり、各反復で一定量減少する必要がある。
不変式は、到達可能な状態の上近似を表す。