Hoare-FloydロジックとScott–Stracheyセマンティクスの間の主要なブレークスルーは何でしたか?


8

ミルナーのマイクゴードンによる「厳密な証明を支援するための機械の使用」についての解説を読んでいます。このペーパーでは、Dana ScottとStracheyによる表示セマンティクスのアイデアからLCFがどのように生まれたかを説明します。

FCFを開発するにはFloyd-Hoareロジックでは不十分であるように見えますが、なぜこれが当てはまるのかはわかりません。最後に、Hoareロジックでは、いくつかの前提条件を満たし、関係を介していくつかの事後条件適合するプログラム状態を扱い、Iはこの式を提供できます。ウィキペディアは、意味論的意味論は次のように述べています:PrQ

は、言語からの式の意味を説明する数学的オブジェクト(表記と呼ばれる)を作成することにより、プログラミング言語の意味を形式化するアプローチです。

Hoareロジックでは、再帰を扱った覚えがありませんでしたが、このアプローチでインスタンス再帰がいくつかの関係の固定点としてどのようにモデル化されるかに関するいくつかの直観に精通しています。それでも、両方のアプローチは、数学的関係を使用して入力と出力の間の関係を記述しようとするようです。

質問

それでは、Hoareロジックと表記セマンティクスの違いは何ですか?表示セマンティクスはプログラムのいくつかの複雑さをよりよく管理しますか?その場合は、例を挙げて説明してください。

たぶん、次のミルナーの表記意味論に関する引用は、あなたの答えを導くのに興味深いです:

このロジックでプログラミング言語の構文を書き留め、ロジックでセマンティクスを記述することができました。


1
機能的な世界では、表記法は非常に自然だと思います。運用上のセマンティクス(特に小さなステップの場合)とは異なり、それはうまく構成されています。私は関数型プログラムのHoareロジックを見たことがないことを告白しなければなりません-純粋なFPには命令型プログラミングでの割り当てのような「状態を更新する」構造がないため、存在する場合、それが扱いにくいかもしれないと思います。
2017年

4
@chiもちろん、FPにはHoareロジックがたくさんあります。先駆的な仕事でしたポリモーフィック高階関数のためにA組成プログラムのロジック。これは絶対に必要高階関数」の例*アンobservationally完全なプログラムロジックで拡張されたそれは、さまざまな方法で拡張された、ホンダ/吉田。
マーティン・バーガー

@MartinBergerああ、面白い。参照いただきありがとうございます。
2017年

質問の主なポイントからFPへの言及が気を散らしています。Hoareロジックと表記セマンティクスの違いは、前者はプログラムの構文に基づくプロパティに関係しているのに対し(後者は構文的に与えられています)、後者はプログラムをその意味に似た数学オブジェクトに関連付けることです。つまり、この2つは大きく異なります。
Kai

回答:


10

なぜ人々が以前にラムダ計算のHoareロジックを開発しなかったのかはわかりません。これを正しく行う最初の作業は、ホンダ他の

ポリモーフィック高次関数の構成プログラムロジック

これ以前にいくつかの試みがありましたが、たとえば、問題を完全に解決することはできませんでした。関数型プログラムの値をどのように表すのですか?関数空間コンストラクターに対応する構文は何ですか?正しく理解する必要のある小さなことがいくつかあります。

推測してみましょう。主な問題は、Hoareロジックは通常、ステートフルな計算に関係していたということです。状態関数と高次関数を組み合わせると、次のようなプログラムなど、エイリアシングをすぐに処理する必要があります

λバツRefNatλyRefNatバツ:=バツ+1;y:=y+1
だけでなく、ローカルストアとストアを介した再帰。これらは2000年代の初めに、命令型の高階関数(ストア内の再帰)の観測的に完全なプログラムロジックのような作業でのみ解決されました。命令型の高階関数(エイリアシング)でのエイリアシングの論理分析、ローカル状態(完全ローカルストア)を伴う高階関数の論理推論。同時に、分離ロジックは別の角度からエイリアシング問題に取り組みました。

この作品は、A。シャルゲローの作品でCoqに実装されており、現在Javascriptのセマンティクスでも使用されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.