この分数のような「離散数学」スタイルの表記法は、正式なルールに使用されますか?


18

「A Conflict-Free Replicated JSON Datatype」という論文で、「ルール」を正式に定義するためにこの表記法に出会いました。

論文に示されている「ルール」の一部] [1

この表記は何と呼ばれますか?どうやって読むの?

例えば:

  • DOCルールは、「分子」には何も持っていません-なぜありませんか?
  • EXECそしてGET規則はそれがどういう意味、ライン上記の二つの別々の用語を持っているように見えますか?
  • VAR他の多くのルールがトップアップ(私は「意味」を意味するのにかかる)矢印のいくつかの並べ替えを使用しながら、この1つは、xのみが何かの要素であると言っているように見えるので、ルールは、同様に少し目立ちます。
  • Ap,「レプリカpの状態はAp、有限部分関数によって記述されている」とテキストで説明されているイニシャルがほとんどすべてにこだわっています。この表記法に精通した読者は、どの規則のその部分を「見る」傾向がありますか?

このサイトは、小さなステップに関するこの質問の最初のルールとして、⟨B、s⟩->⟨B '、s'⟩の重要性についての質問について、いくつかの非常に類似した表記を持つ関連する質問を提案しましたセマンティクス?—これはOperational Semanticsとしてタグ付けされており、それが強力なリードと思われます。それは確かに私がこれらの図を解釈すべきフレームワークですか?これを「クラッシュコース」形式で簡単に要約してください。そうすれば、彼らの証明の正確性を検証できなくても、少なくともこのセクションで彼らが言っていることをもう少し理解できるでしょうか。

回答:


25

これは、推論規則の標準表記です。施設は水平線の上に配置され、結論は線の下に配置されます。したがって、最終的には「分数」のように見えますが、1つ以上の論理的な命題が線の上にあり、1つの命題が線の下にあります。ラベル(例では「LET」または「VAR」)が横に表示されている場合、それは特定のルールを識別するための単なる人間が読める名前です。

これは、自然控除またはGentzenスタイルの自然控除と呼ばれることもあります。

これは、プログラミング言語の文献では一般的な表記法です。あなたはそれをあちこちで見るでしょう。その分野で生じる一種の結論と再帰構造化された証明にとって非常に便利です。

この表記法は、公理/ルールを表現するために使用されます。各公理は、「メタ変数」(たとえば、expr)を持つテンプレートと考えることができます。各メタ変数をプログラミング言語の構文(たとえば、プログラミング言語で有効な式)に置き換えることができ、ルールのインスタンスを取得できます。推論規則は、すべての命題が行の上にある場合(規則の一貫して各メタ変数を一貫して同じ値に置換するテンプレートの一部の場合)、行の下の命題も真になることを約束します。


2
注目すべき用途の1つは、Hindley-Milner型推論を指定することです。「Milner-Hindleyのどの部分を理解していないのですか?」に対するこの回答では、そのルールセットの読み方と使用方法を説明します。
-DylanSp

1つの小さな修正:前提と結論は判断であり、命題ではありません。命題は特定の形式の判断です。これらの線に沿って、判決は明らかではなく、(真実の概念は、言語のセマンティクスをプログラミングするための興味深いのは本当に定義することは困難ではないため)。
ガーデンヘッド

7

ここで非常に正式な表記法に慣れていないかもしれないのヘルプの人がドアに足を取得することを非公式説明が。正式な定義を置き換えるものではありません!

Apがお使いのシステムや実行中のプログラムの状態です。「状態」は多くのことを意味しますが、この場合、定義されたすべてのローカル変数とその値のリストが含まれているようです。Apはなぜ機能なのですか?それは変数の割り当てを表現する便利な方法だからです:Ap(x)は変数xの値を与えます。

ここで、例としてルールEXECを取り上げます。これは、コマンド実行のセマンティクス定義CMD1コマンド続いCMD2状態で何が起こるか、すなわち、Apを実行するとき、システムのCMD1が続くCMD2を

  • 境界線より上:これらは施設です。彼らが言うこと:「cmd1をコマンドにします。システムが状態Apにあるときにコマンドcmd1を実行すると、システムは新しい状態Ap 'になります。」
  • 行の下:ここで、ルールは2つのコマンドcmd1cmd2を順番に実行することの意味を説明しています。それは言う:「あなたのシステムが状態にあると仮定するのAp、実行CMD1をしてからCMD2実行するための手段CMD2をお使いのシステムが状態にあるときのAp」」(ことを覚えておいてくださいApは「あなたが実行した後に取得している状態であるCMD1をで定義されているように、前提)。

他のルールは、個々のコマンドと式のセマンティクスを記述します。たとえば、VARルールは、変数を「実行」することの意味を説明しています。xがローカル変数(行の上)である場合、変数xを評価/実行するとはどういう意味ですか?これは、線の下に書かれています:あなたのプログラムが状態にあるときのAp、評価xはあなたの価値与え、X、すなわちAP(X)を

それがお役に立てば幸いです。


おかげで、これは私が探していたものを正確に理解するのに非常に役立ちます!ただし、最初の質問は未回答のままです。この表記には、一般的に、および/またはこの特定のコンテキストで名前がありますか?私の推測では「操作上のセマンティクス」でしたが、ここでのもう1つの答えは、単なる「推論規則」であると述べています。2つの部分に分かれた質問をすると、答えを分割するに値するのではないかと思いますが、今はどちらを受け入れる
べきか分から

1
@natevwこれらは推論ルールです。操作上のセマンティクスは、推論ルールで一般的に表現される多くのことの1つにすぎません。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.