正式に確認と正確性のアルゴリズム
-
23-09-2019 - |
質問
まずはこの限りアルゴリズムの持つことはありませんのでしょうか。
第二に、かつ、そのことが、当研究業績(著書-発表論文などが有ります。
解決
COQ の正しいOCamlの出力を生成する証明アシスタントです。それはかなりかかわらず複雑です。私はそれを見に周りにやったことがなかったが、私の同僚が開始してから2ヶ月後にそれを使用して停止しました。彼は速く物事を成し遂げるために望んでいたので、それはほとんどでしたが、あなたは、アルゴリズムを検証する必要がある場合、これは良い考えかもしれません。
ここCOQとアルゴリズムを証明について話し合いを使用してコースのです。
そして、ここCOQで学術論文を書くことについてのチュートリアルのです。
他のヒント
- 一般的に多く や 確認/正しく表示する際の副作用に関わるものではない、絶対に必要です。
- するためにドキュメンテーション形式仕様言語のように Z.正式な仕様な証明そのものが多いですが、根拠がないため記載しておりません。
通常正しさの証明が手元のアルゴリズムに非常に特定されます。
しかし、使用して、もう一度再使用されているいくつかのよく知られたトリックがあります。例えば、再帰的なアルゴリズムを使用することができますをrel="nofollow noreferrer">ます。
他の一般的なトリックは、どちらか簡単に問題を一般化するか、簡単に問題が元の問題への解決策に変換することができることを示し、正しさのあなたのアルゴリズムの証明はショーが容易であるため、問題に元の問題を軽減しています。 ここには説明があります。
あなたは心の中で特定のアルゴリズムを使用している場合は、は、あなたがそのアルゴリズムのための証拠ではなく、一般的な答えを構築する方法を尋ねるに良く行うことができます。
これらの本を購入する: http://www.amazon.com/Science-Programming -Monographs-コンピュータ/ DP / 0387964800 の
グリーズ帳、科学的なプログラミングは素晴らしいものです。患者、徹底し、完全ます。
ロジックは、コンピュータサイエンスでは、フートとライアンによって、システムを検証するための近代的なシステムの合理的に読める概要を説明します。または副作用があってもなくてもよいのプログラミング言語で - 正しいプログラムを証明の話の時間の人々の際に一度。インスタンス証明するためのプロトコルが正しいこと、またはチップの浮動小数点ユニットが正常に分けることができ、またはリンクされたリストを操作するためのロックフリールーチンが正しいことを - 私は別の場所で、この本から取得し、印象は実際のアプリケーションが異なっていることです。
ACMコンピューティング調査第41巻4号(2009年10月)は、ソフトウェア検証上の特別な問題です。あなたは「形式手法:実践と経験」を検索することにより、ACMアカウントなしで論文の少なくとも一方に取得することができますように見えます。
ツール FRAMA-C に、あなたの機能契約とさまざまな解析器を記述するための仕様言語、 ACSL に、検証のためにそのC関数を満たすような実行時エラーがないとしてその契約及び安全性特性
拡張チュートリアルの ACSL例示するによって、ショーの例実際のCアルゴリズムは、指定されたと検証、および副作用のもの(副作用を含まないものが容易に考えられ、チュートリアルで最初に来るされる)から副作用フリー機能を分離しています。それはそれは説明するツールの設計者によって書かれていなかったという点で、それはこれらの技術では新鮮でより多くの教訓的な外観を与えるように、この文書は、も興味深いものです。
していますがLISPしてきていたことから名前をとってACL2: http://www.cs.utexas.edu/~moore/acl2/acl2-doc.html
ダイクストラのはプログラミングの規律と彼のEWDSは、プログラミングの科学としてのフォーマル検証のための基礎を築きます。単純作業は、検証を使用する単純なアプローチで始まるヴィルトのの体系的プログラミング、です。ヴィルト用途は、言語のためのパスカル・ISOを事前。ダイクストラはアルゴル-68のようなガード付き(GCL)と呼ばれる形式主義を使用しています。フォーマル検証はダイクストラとホーア以来成熟しているが、これらの古いテキストはまだ良い開始点であってもよい。
スタンフォード大学の連中が開発したPVSツールは、仕様と検証システムです。私はそれに働いたとTheoramを証明するための、それは非常に有用であることが判明しました。
WRT(1)、あなたはおそらく、「キャプチャ」プログラム変数におけるアルゴリズムの副作用は、このような状態ベースの副作用をモデル化することを目的とする方法で、アルゴリズムのモデルを作成する必要があります。