ソフトウェア検証に対するさまざまなアプローチを自分に教えようとしています。私はいくつかの記事を読みました。私が学んだ限り、時間を伴う命題論理は一般にSATソルバーによるモデルチェックを使用します(進行中の反応型システムで)が、時間を伴う1次論理はどうですか?定理証明を使用していますか?それともSATを使用できますか?
この問題に関する初心者向けの本や記事へのポインタは大歓迎です。
ソフトウェア検証に対するさまざまなアプローチを自分に教えようとしています。私はいくつかの記事を読みました。私が学んだ限り、時間を伴う命題論理は一般にSATソルバーによるモデルチェックを使用します(進行中の反応型システムで)が、時間を伴う1次論理はどうですか?定理証明を使用していますか?それともSATを使用できますか?
この問題に関する初心者向けの本や記事へのポインタは大歓迎です。
回答:
一次論理は決定できないため、SAT解法は実際には役立ちません。とはいえ、一次式の有界モデル検査の手法は存在します。つまり、数式が真か偽かを判断しようとすると、考慮できるオブジェクトの数は固定されます。明らかにこれは完全ではありませんが、反例が見つかった場合、それは本当に反例です。
ツールAlloyは、モデルを1次論理で記述できるようにするツールの1つであり(表面構文は関係的に記述されたモデルに基づいています)、境界モデルチェックを使用してソリューションを見つけます。SATソルバーが内部で使用されます。1つの合金拡張は、一時的な特性を持つモデルを許可しますが、技術的には一時的なロジックをサポートしません。
たとえば、プログラムの正しさを検証するためにさらに探求したい場合は、プログラム検証ツールを調べることができます。これらは一般に、Hoareロジック(事前条件と事後条件を推論するため)に基づいており、分離ロジック(ヒープについて推論するため)で拡張されている可能性があります。これらのロジックは一般に決定不可能であるため、人間と検証ツールの間にはある程度の相互作用が必要です。ツールの例は次のとおりです。
あなたの質問を読んだ後、私が見ることができ、トピックを結び付けるのに十分な知識を持っていた唯一の方法は、ソフトウェア検証からドリルダウンするハイレベルな一連の記事を提供することで、最終的にモデルチェックと定理証明を統合しようとすることでした。うまくいけば、私のコメントはそれをしました:
見てくださいソフトウェアの検証をその後、フォーマル検証の後、モデル検査とフォーマルソフトウェア検証:モデル検査と定理証明
デイブは良い答えをくれました。私もこれに慣れていないので、質問の最初の部分についてはデイブがした以上に正義を行うことはできません。
これはSEサイトでの最初の質問なので、私が回答を提供しなかったのはコメントである理由は、ここでの回答は単なるリンクのセットではなく、書面での回答を提供し、回答をサポートするリンクを使用する必要があるためです。したがって、答えの代わりにコメント。
その事に付いては:
この問題に関する初心者向けの本や記事へのポインタは大歓迎です。
私が提案して使用する本は次のとおりです。
コンピュータサイエンスのロジック-システムのモデリングと推論第2版。HuthとRyanによるこれはロジックを導入し、モデルチェックに移りますが、定理証明には入りません。したがって、これはロジックとモデルのチェックに関連するすべての基本的な質問をカバーする必要があります。
BaierとKatoenによるモデルチェックの原則私はこれを読み始めたばかりで、たくさんの論文を読んでそれらがどのように組み合わさっているかを確認するよりもはるかに優れています。これは、モデルチェックに関する最も推奨される書籍の1つです。モデルチェックに関するより高度な質問に答える必要があります。
KrogerとMerzによる時相論理および状態システム私は、主題を自己学習するときに、さまざまな著者による本を入手したいことがよくあります。これは、「モデルチェックの原則」を補足/まとめるものです。
ハリソンによる実用的なロジックと自動推論のハンドブックプログラマーとして、この本を十分にお勧めすることはできません。この本は、ロジックの紹介から始まり、HOL Lightの作業に基づいて、定理証明者向けのカーネルを作成するポイントまで移動します。この本が機能するOCamlコードを使用していることを強調するために、定理を私が友好的であると考える用語で説明し、知っておく必要があることを説明しますが、接続を確立できなかったり、サイドトラックを走っているように感じたりすることはありません。論理から特定のタイプの定理証明への移行に非常に焦点を当てた本です。
それを証明する方法:Vellemanによる構造化されたアプローチ定理を証明するための証明アシスタントに入るには、あなたは生きて眠る定理が必要です。
証明と日ごとの数学的用語の紹介これは、「それを証明する方法」を補足するだけでなく、全体としてそれを超える無料の本です。これが人気になっているのに驚かない。
現在、定理の証明についてこれ以上拡張することはできません。それぞれの長所と短所と違いをまだ学習しているためですが、私が焦点を当てているのは
イザベルは高次の統一に基づいているためです。
これらのプルーフアシスタントは、通常、本を持ち、最新で人気があり、オープンソースであり、保守されており、アクティブなサポートコミュニティを持っています。
注:私は本を参照するためにworldcat.orgを使用しましたが、Amazonの内部機能を使用してそれらをレビューできます。