シンプルな書き換えシステムの合流性証明


14

次の用語で構成される単純な言語があるとします。

  • true
  • false
  • 場合用語では、次いで、そうでi ft1,t2,t3ift1thent2elset3

ここで、次の論理評価ルールを想定します。

iftruethent2elset3t2[E-IfTrue]iffalsethent2elset3t3[E-IfFalse]t1t1ift1thent2elset3ift1thent2elset3[E-If]

次のファンキーなルールも追加するとします。

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

与えられた評価ルールを持つこの単純な言語について、私は以下を証明したいと思います:

定理:および場合、およびような項があります。r t u s u t ursrtusutu

これをの構造の帰納法で証明しています。ここまでが私の証明です。すべてうまくいきましたが、最後のケースで行き詰まりました。の構造の帰納法では不十分なようですが、誰か助けてもらえますか?rrr

証明。帰納法により、が取り得るすべての形式を分離します。rrr

  1. rは定数であり、正規形は何にも評価されないため、証明するものはありません。
  2. trueの場合であれば、R 2、他の R 3。(a)両方の派生はE-IfTrueルールで行われました。この場合、 s = tなので、証明するものはありません。(b)1つの派生はE-IfTrueルールで行われ、もう1つの派生はE-Funnyルールで行われました。r sがE-IfTrueで行われたと仮定すると、他のケースも同様に証明されます。s = r 2であることがわかりました。また、 t = trueならば r 2 else r 3であり、 r 2r=r2r3s=trss=r2t=r2r3(前提)。ここで u = r 2を選択すると、ケースは終了します。r2r2u=r2
  3. その後、falseの場合は rは2他の R 3を。上記と同等に証明されています。r=r2r3
  4. if r 1 then r 2 else r 3 with r 1 trueまたはfalse。(a)両方の派生はE-Ifルールで行われました。s = if r 1 then r 2 else r 3および t = if r 1 then r 2 else r 3であることがわかりました。また、派生 r 1r 1が存在することも知っています。r=r1r2r3r1s=r1r2r3t=r1r2r3r1r1および(施設)。私たちは今、いくつかの用語が存在すると言うことは、誘導hypotheseを使用することができ、R 1ように、R " 1つのR 1およびR " 1つのR 1。ここで、u = if r 1 then r 2 else r 3と言い、 s uおよびt ur1r1r1r1r1r1r1u=r1r2r3sutuE-Ifルールによる。(b)1つの派生はE-Ifルールによって行われ、もう1つの派生はE-Funnyルールによって行われました。

E-Ifによって1つの導出が行われ、E-Funnyによって1つの導出が行われた後者のケースは、私が見逃しているケースです...仮説を使用することができないようです。

ヘルプは大歓迎です。


@Gillesは編集が非常にうまくできていました。SEのTeXエンジンがすべての機能を備えていることは知りませんでした... :
codd

私は間違っているか、この演習はPierceの「Types and Programming Languages」から取られていますか?
ファビオF.

@FabioF。実際、Pierceのタイプとプログラミング言語の本からです。彼は、彼が誘導を実行する方法のために、私が不明瞭だと思う証拠を提供します。それが、構造に関する帰納法によって自分で証明しようとした理由です。私はそれが本からのものであることを言及することを考えていましたが、それはむしろ無関係であると思いました。しかし、よく気づきました!
codd

回答:


7

では、r = i fの場合を考えてみましょう。 sはE-Ifルールを適用することにより導出され、 tはE-Funnyルールを適用することにより導出されます:So s = i fr=ift1thent2elset3stここで、 t 1t 1および t = i fs=ift1thent2elset3t1t1ここで、 t 2t 2t=ift1thent2elset3t2t2

私たちが探しているされてuが= I Fをus uはルールE-Funnyに従い、 t uはルールE-Ifに従います。u=ift1thent2elset3sutu


それに私を打つ。良くやった。
-Patrick87

まあ、私は本当に遠くを見ていました...ありがとう!
-codd

あなたはそれらを混同しました、はE-Funnyから続きます。または、何か間違っているのを見ていますか?su
-codd

@Jeroenあなたは正しいです-私はそれらを混ぜました。修正されました。
sepp2k

8

これを調べたい場合は、ちょっとした用語が役立つかもしれません。これらのルールは書き換えルールであり、タイプシステムとは関係ありません¹。あなたが証明しようとしている特性は合流と呼ばれます。より具体的には、強力な合流性です。あるステップで用語をさまざまな方法で減らすことができる場合、次のステップで収束することができます。一般に、confluenceでは、1つだけでなく、任意の数のステップを使用できます R * tはそこである Uよう sは* U T * uはrsrtusutu —用語がさまざまな方法で縮小できる場合、どれだけ離れていても、最終的に収束する可能性があります。

このような帰納的に定義された書き換え規則の特性を証明する最良の方法は、縮約された項の構造ではなく、縮約の派生の構造に対する帰納法です。ここでは、ルールは左側の用語の構造に従うため、どちらでも機能しますが、ルールの推論は簡単です。用語に飛び込む代わりに、ルールのすべてのペアを取り、両方の用語が左側になる可能性のある用語を確認します。この例では、最終的に同じケースになりますが、少し速くなります。

問題が発生した場合、一方の側が「if」部分を減らし、もう一方の側が「then」部分を減らします。(変更することを2つの部分の間の重複がないにおける[E-場合]、T 2、およびには制約がありません[E-IfFunny]における)T 2 [E-場合]または上のT 1における[E-はIfFunny]。したがって、両方のルールが適用される用語がある場合-i fの形式でなければなりませんt1t2t2t1、次のいずれかの順序でルールを適用することを選択できます。ifr1thenr2elser3

ifr1thenr2elser3[E-If][E-IfFunny]ifr1thenr2elser3ifr1thenr2elser3[E-IfFunny][E-If]ifr1thenr2elser3

¹ 型と書き直しを一緒に見ることもありますが、それらの中核は直交する概念です。

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