変更保護者としてのフレームルール?


18

フレームルールは、下記のいずれかのように、プログラム与えられた、という考えキャプチャc前提でp、それを実行する前に保持し、事後条件q、その後保持している、いくつかの互いに素条件はr前と後の両方を保持する必要がありますc実行を。(コネクティブは*引数が互いに素であることが必要です。)多くの場合、事前条件と事後条件はヒープの状態でありc、何らかの方法でヒープを変更する効果的なプログラムです。

    {p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}

私が見たフレームルールの議論は、ヒープのばらばらの部分がどのようにr保存されるかに常に焦点を当てているようです。これにより、「ローカルな推論」が可能になります。効果について推論する場合、ヒープcr部分を無視し、実際に変化する部分のみに関心を持つことができます。しかし、別の見方をすれば、現在そこに座っているにもかかわらず、からpq変更が保存されるというrことです。言い換えれば、それは我々が事後条件で終わることが重要だ{q * r}のではなく、{q' * r}他のいくつかのためにq'

だから、私の質問は、議論したり作るが保存-の変更-from-の使用という枠ルールのいずれかの治療がありますかどうかであるp-to- q事。


私自身の質問に対する1つの答えは、このペーパーにあります:software.imdea.org/~gotsman/papers/interproc-sas06.pdfの文(強調鉱山)追加メモリR がある場合のCは同じ動作になり、Cは追加メモリに触れません。」「Cは余分なメモリに触れない」だけでなく、指摘する誰かを探していたのは「同じ動作になります」ということです。(リンクの@kaosjesterに感謝します。)
リンジークーパー

1
あなたは、フレームルールと分離ロジックの他のルールの健全性の証明を読んでいる場合、あなたは彼らはつまり、あなたが後にしている正確に何をしていることを発見します、彼らはからの変更方法について話しQが保存されています。そこに記載されている場所とフレームのプロパティに注意してください。pq
ウダイレディ

回答:


11

しかし、この変更q不可プロパティは実際には保持されません!

検討してください{emp} x := alloc(0) {x |-> 0}。さて、でフレームy |-> 3を入れると、

{y |-> 3} x := alloc(0) {x |-> 0 * y |-> 3}

しかし、結果のルールにより、事後条件を

{y |-> 3} x := alloc(0) {(x |-> 0 /\ x != y) * y |-> 3}

これをより具体的にするために、がであるyとします37。完全に空のヒープで割り当てコマンドを実行すると、アドレスを割り当ててしまう可能性37がありx = 37ます。しかし、代わりにaddressの単一のセルを含むヒープから開始するとy = 37、この結果はもはや不可能です!前提条件にフレームを追加すると、事後条件の非決定性の一部が取り除かれました。

「ローカルアクションと抽象分離ロジック」(Calcagno、O'Hearn、およびYang)の論文は、すべてより深い意味論的な観点からフレームルールを理解することに関するものです。この論文の重要な定義は「アクション」の局所性であり、アクションはプログラム(の意味表現)です。局所性によると、フレームヒープを追加する場合、元の事後条件を変更できる唯一の方法は、上記のように非決定性をプルーニングすることです。実際、プルーニングは割り当てのためにのみ発生します。


例と参考に感謝します!あなたの例は理にかなっています。しかし、それqは「q、そして...」にしか変更できないと言うのは公平ですか?さらに、ポストコンディションで非決定性を取り除くことができるのが割り当てだけである場合(それ自体がクールな結果です)、ポストコンディションの一部が位置に依存しない場合、ポストコンディションのその部分は変わらないことが保証されていますか?場所のアルファ名変更まで、事後条件は同じままであると言えますか?(例を念頭に置いていますが、電子メールで説明する方が良いかもしれません。)
リンジークーパー

1
はい、q変更できるのは「q、そして...」のみです。言い換えると、事後条件はより強くなるだけです。元の事後条件を意味します。これは、アクションのローカリティの定義の一部です。ただし、事後条件の変更が名前の変更のみに関係しているというのは事実ではありません。私が挙げた例では、xyが別個であるという追加の事実は、に選択された特定のアドレスに関係なく当てはまりますy。この例では、名前の変更時に不変である割り当ての新鮮さをキャプチャします
アーロンツーロン

11

まず、あなたの質問の文には小さな誤解があります。それは、アーロンが彼の答えでも得ていたものです。分離ロジックの述語は、ヒープのセット(または同等に、ヒープの述語)であり、分離論理積は次のように定義されます。PQ

PR{h1h2|h1Ph2Rdomh1domh2=}

だからフレームルールで

{P}c{Q}{PR}c{QR}

R(およびQ)は特定のヒープについては言及していません---それらはヒープのプロパティです(サブセットと述語は同等であるため)。何が起こっているのかを理解する最良の方法は、Hoareトリプルが保持する意味を定義することです。PQ

{P}c{Q}h1PhHeapsthh1h2Qh1h;ch2h;skp

この定義は基本的に(1)Pのh 1を実行すると、Qの最終状態h 2で終了し、(2)追加のメモリh を追加すると、そのメモリは実行の終了時に変更されません。ただし、h ′の選択が異なると、特定のh 2が異なることに注意してください。保証されているのは、ch1Ph2Qh h2hプロパティ Qが拡張下で保持されることであり、まったく同じ結果ヒープを取得することではありません。PQ

Hoare tripleのこの定義がフレームルールの成立をどのように示唆するかを確認することは、それほど難しくありませんが、まだ解決する価値があります。ご存じのとおり、これは一種の「変更の保存」プロパティであり、同時分離ロジックの並列構成ルールのステートメントに特に鮮明な表現があります。

{P1}c1{Q1}{P2}c2{Q2}{P1P2}c1||c2{Q1Q2}

c 1の場合c1及びメモリの互いに素な領域に作用し、それらを並列に実行されたとき、次にそれぞれが他方の実行の特性を妨害しないであろう。c2

これについては、Hoare et alの「On Locality and the Exchange Law for Concurrent Processes」の論文で議論されており、プログラムとアサーションの代数をマージする方法を示しています。


Hoareトリプルの定義は間違っているように見えます:実行が失敗しないと言うべきであり、非終了を許可するべきであり、おそらく安全な単調性を持たないモデルを排除すべきではありません。(しかし、はい、あなたが説明する理由のために「変更の保存」について話すことは完全に合理的であることに同意します。)
ラドゥグリゴール

3
(1)完全な正確さのトリプルのセマンティクスを与えたので、コマンドが安全に完了すると断言します-完全な正確さにより、事前条件と事後条件のforall / existsキャラクターの説明が見やすくなります。(2)このトリプルのセマンティクスは、トリプルの意味に組み込むことによって、言語セマンティクスに安全な単調性を持たない言語を処理するために実際に発明されました(BirkedalとYangによるIIRC)。その結果、Hoareロジックのフレームルールを保持したまま、言語に非単調な構造(ヒープの大きさに関するクエリなど)を含めることができます。
ニールクリシュナスワミ

(1)OK、しかしそれらのトリプルは異なって書かれています。(2)私はそれを知りませんでした。あなたが言ったことを言い換えると:単調性がなければ、フレームルールを失い、通常どおりHoareトリプルを使い続けることができます。これは最初のコメントで得ていたものですが、トリプルの定義を強化して、フレームルール。(3)なぜそれが障害を排除するのかわかりません。は決定論的だと思いますか?c
ラドゥグリゴール

1
ありがとう、ニール!そうです、私はプロパティPとQを特定のヒープと混同していました。したがって、コメントをまとめると:Qは保持されますが、最後に取得する特定のヒープは、以前に取得したものとは異なる Qを満たすヒープである可能性があります。はい?
リンジークーパー

1
@RaduGRIGore:はい、言語が決定論的であると仮定していましたが、並行性を追加するとこの仮定は失敗します。ナイスキャッチ!
ニールクリシュナスワミ

2

100%関連しているわけではありませんが、これは契約のdem等性の特徴を持っています。

{p}をcの前提条件と考え、{q}をcの事後条件と考えると、フレームルールのこの考え方は、事前条件と事後条件が計算のすべてのコンテキストで成立することを保証します。他に何も存在しない単純なケース。

そうは言っても、私が読んだ数十件の契約書のいずれにも、そのようなフレーム規則が提示されているとは言えません。しかし、それは確かに素晴らしいアイデアであり、そのような変更を要求することは、dem等の契約の合理的で具体的な理解を深めるのに大いに役立つかもしれません。


コメントありがとう。うーん、面白い-これを読んでいる他の誰かが、フレームの特性を述べた契約書を知っているのだろうか。
リンジークーパー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.