用語の書き換えが必要な理由


12

私は少しグーグルをやって、少し短くなりました。

計算科学者やプログラマーが用語の書き換えや用語のグラフの書き換えを研究する主な理由は何でしょうか。

私の知る限り、これは関数型プログラムと(命令型)プログラム制御に関する基本的な推論に役立ちます。どうやら、それは論理学者や建設的な抽象代数を研究する人々にとって非常に興味深いトピックです。

どんな助けでも大歓迎です!

回答:


11

これがあなたの知っている以上のものをもたらすとは思いません。しかし、私はあなたが用語の書き換えについて疑問に思う理由を理解できないかもしれません。それは役立ちます。

ご存知かもしれませんが、文法は文字列書き換えシステムです。Chomsky階層の最上位には、再帰的に列挙可能な(RE)言語を定義するタイプ0の文法があり、チューリングマシンの計算能力があります。

つまり、システムの書き換えは一般にアルゴリズムの表現に大きく関係していることがわかります。

一般に文字列の問題は、文字列にセマンティクスを付加する明確な方法がないことです。一種のアモルファス書き換えです。

人々が通常関心を持っているのは、構造と特性を持つ特定のドメインでアルゴリズムを表現することです。このようなドメインは、多くの場合、基本(原子)エンティティーから定義され、さまざまな操作によって閉じられます。これらはしばしば代数と呼ばれます。

多くの場合、これらのドメインは抽象的です。しかし、それらの要素の計算は、具体的な表現でのみ表現できます。用語は、これらの要素の自然な表現です。これは、操作を適用することによって他の要素の要素を取得する方法を表し、再帰的にアトミック要素に至るためです(ただし、一般的なプロパティは常に完全に下がる必要はありません)。用語は一種のツリー構造構文であり、(文字列のように)アルゴリズムを表現するために操作できます。しかし、用語の演算子オペランド構造では、準同型を使用して抽象的なドメインでセマンティクスに関連付けることもできます。

ウィキペディアやこのトピックに関する多くのテキストを非常に形式的に捉えるのではなく、単にプログラムを検討してください。通常、プログラムの便利な構文表現は、抽象構文ツリー(AST)と呼ばれるものであると認識されています。ただし、ASTはプログラムオブジェクトを表す用語にすぎません。確率論的意味論は、抽象的なドメインを定義し、これらのドメインの値を準同型の手段によってAST(またはASTサブツリー)に関連付ける方法です。AST形式のプログラムは、書き換えルールを適用することで変換または最適化できます(すべての最適化をそのように実行できる、または実行する必要があるとは主張していません)。

さまざまな目的のための代数式の変換は、項の書き換えによって表現できます。たとえば、いくつかの式の簡略化。導関数の計算など、さまざまな種類の計算を項の書き換えとして自然に表現することもできます。用語の書き換えは、同じ意味論的エンティティが複数の構文表現を持つことができる場合に、代数の標準形を定義するためにも使用されます。

このトピックに関するウィキペディアの記事をご覧になることをお勧めします。


6

私の考えは、用語の書き換えは非常に基本的なものであり、ハードウェアに依存せずに非常に低レベルで記述できるためです。

項書換えは文法を記述することができますが、一次論理などの記述された論理システムの仕組みも提供します。証明と演繹は項書として記述できます。次に、用語書き換えの置換は、実際にあなたが持っている唯一の操作です。ロジックを記述しているので、ここでの単純さは重要です。ロジックを完全に複雑にしてシステムを記述することはできません(それが記述しようとしているシステムだからです)。

これにより、ラムダ計算を論理的/公理的システムとして説明するために必要なメカニズムが得られ、非常に形式的で基本的な計算バージョンが得られます。

チューリングマシンは便利ですが、その基礎となる定義には、セットや関数などの概念が必要です。ビルドされていると想定される数学はもっとたくさんあります。

一方、ラムダ計算はロジックの観点から定義されているため、集合論や関数などの定義の方法をあまり必要とせずに使用できます。

ロジックによってモデル化された用語の書き換えは、関数型プログラミングだけに適用できるわけではありません。ハードウェアまたはソフトウェアの正式な検証を行う場合、常に何らかの推論を行うことになります。この推論は、用語の書き換えによってモデル化できます。


2

非常に実用的な理由の1つは、プログラム構文変換システム、つまり、表面構文の書き換えを使用してプログラムのコードを用語(抽象構文木)として操作できるツールの構築につながることです。

この私のシステムの1つの例であるDMSソフトウェアリエンジニアリングツールキットは、さまざまなプログラム分析や大規模な変換タスクに使用されています。DMS が書き換えをどのように表現するかを確認できます。これらの書き換えは、背後で動作する連想可換項書き換えシステムによって適用されます。

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