一次論理検証の概要


9

ソフトウェア検証に対するさまざまなアプローチを自分に教えようとしています。私はいくつかの記事を読みました。私が学んだ限り、時間を伴う命題論理は一般にSATソルバーによるモデルチェックを使用します(進行中の反応型システムで)が、時間を伴う1次論理はどうですか?定理証明を使用していますか?それともSATを使用できますか?

この問題に関する初心者向けの本や記事へのポインタは大歓迎です。


2
まず、CS:SEへようこそ。私はこれの専門家ではありませんが、あなたはたくさんの穴を残して一度にいくつかのトピックをつかんでいるようです。心配しないでください。私はいつもそれをしています。見てくださいソフトウェアの検証をその後、フォーマル検証の後、モデル検査フォーマルソフトウェア検証:モデル検査と定理の証明
ガイコーダ

回答:


9

一次論理は決定できないため、SAT解法は実際には役立ちません。とはいえ、一次式の有界モデル検査の手法は存在します。つまり、数式が真か偽かを判断しようとすると、考慮できるオブジェクトの数は固定されます。明らかにこれは完全ではありませんが、反例が見つかった場合、それは本当に反例です。

ツールAlloyは、モデルを1次論理で記述できるようにするツールの1つであり(表面構文は関係的に記述されたモデルに基づいています)、境界モデルチェックを使用してソリューションを見つけます。SATソルバーが内部で使用されます。1つの合金拡張は、一時的な特性を持つモデルを許可しますが、技術的には一時的なロジックをサポートしません。

たとえば、プログラムの正しさを検証するためにさらに探求したい場合は、プログラム検証ツールを調べることができます。これらは一般に、Hoareロジック(事前条件と事後条件を推論するため)に基づいており、分離ロジック(ヒープについて推論するため)で拡張されている可能性があります。これらのロジックは一般に決定不可能であるため、人間と検証ツールの間にはある程度の相互作用が必要です。ツールの例は次のとおりです。


10

あなたの質問を読んだ後、私が見ることができ、トピックを結び付けるのに十分な知識を持っていた唯一の方法は、ソフトウェア検証からドリルダウンするハイレベルな一連の記事を提供することで、最終的にモデルチェックと定理証明を統合しようとすることでした。うまくいけば、私のコメントはそれをしました:

見てくださいソフトウェアの検証をその後、フォーマル検証の後、モデル検査フォーマルソフトウェア検証:モデル検査と定理証明

デイブは良い答えをくれました。私もこれに慣れていないので、質問の最初の部分についてはデイブがした以上に正義を行うことはできません。

これはSEサイトでの最初の質問なので、私が回答を提供しなかったのはコメントである理由は、ここでの回答は単なるリンクのセットではなく、書面での回答を提供し、回答をサポートするリンクを使用する必要があるためです。したがって、答えの代わりにコメント。

その事に付いては:

この問題に関する初心者向けの本や記事へのポインタは大歓迎です。

私が提案して使用する本は次のとおりです。

現在、定理の証明についてこれ以上拡張することはできません。それぞれの長所と短所と違いをまだ学習しているためですが、私が焦点を当てているのは

  • ジョン・ハリソンのによるHOL Light
  • Coq は構造の計算に基づいているため
  • イザベルは高次の統一に基づいているためです。

    これらのプルーフアシスタントは、通常、本を持ち、最新で人気があり、オープンソースであり、保守されており、アクティブなサポートコミュニティを持っています。

注:私は本を参照するためにworldcat.orgを使用しましたが、Amazonの内部機能を使用してそれらをレビューできます。


回答への多くの編集を避けるために、私は追加された情報をコメントとしてドロップし、将来それらを回答にまとめます。プルーフアシスタント間の多くの類似点と相違点を整理するため。Google for Freek Wiedijk; 彼の論文はとても役に立つと思う。
ガイコーダ

あなたの詳細で完全な答えに感謝します。本へのコメントの追加および無料の本へのリンクの提供。繰り返しますが、私は十分に感謝することはできません:-)
FELIPE N.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.