抽象化階層の正式な表現


9

前書き

私は、(「ソフトウェア製品」のように)製品に作用することができる変更(デルタと呼ばれる)の抽象的な代数的記述である抽象デルタモデリング(ADM)に関する博士論文を書いています。これは、一連の関連製品(「製品ライン」)を単純なコア製品および条件付きで適用されるデルタのセットとして編成するために使用できるため、基礎となるアーティファクトをさらに再利用できます。

デルタモデリングの詳細は私の質問にはそれほど重要ではありませが、ADMは問題を説明する良い例として役立つので、最も重要な概念を紹介します。

バックグラウンド

関心の主な構造は、三角筋 (P,D,,ϵ,[[]])。製品はユニバーサルセットから来ていPます。デルタはモノイドから来る(D,,ϵ)合成作用素と:D×DDと中性元素ϵD。意味評価演算子[[]]:D2P×P '構文'デルタ変換するdD関係にどのように決定した dは、製品を変更することができます。[[d]]P×Pd

質問

ADMは抽象的な代数であるため、私の仕事のほとんどは製品やデルタの具体的な性質から抽象化されており、多くの結果がより具体的なレベルに下ることなく証明されています。これらの結果は、より具体的な領域に引き継がれると予想されますが、これはまだ正式に確定していません。

具体的なドメインで機能する例とケーススタディがあります:オブジェクト指向のソースコード、コード、自然数、携帯電話のプロファイルなど。ネストされたキーと値のペアなど、抽象化の中間段階もあります。それぞれについて、私は再定義(または 'refine') P Dϵ [LATEX(P,D,,ϵ,[[]])

この階層を明確にしたいと思います。(1)読者により明確な説明を提供し、 (2)より抽象的なレベルの結果を使用して正式に正当化します。

私の質問:これらの抽象化レベルをどのように正式に整理すればよいですか?

私はシンプルな洗練関係を持つ理由にできるように願ってい三角筋に。そして、それはPDのサブセット関係にアピールするだけで定義できると思います。しかし、まだわかりません。私が説明している種類の問題に対する既存のアプローチはありますか?私が読むべき出版物?PD

三角筋の階層

私が何を意味するかをよりよく理解するために、ここに私が念頭に置いている三角筋の抽象階層があります:

  • 抽象三角筋:これは基本的な三角筋で、製品とデルタはまだ何でもかまいません。理論のほとんどはこれに基づいており、ほとんどの結果はこのレベルで証明されています。
    • Relational Deltoid:ここで、デルタは[Pは恒等関数です。 [[]]
      • 関数型三角筋:ここでは、デルタは関数型(または「決定論的」)です。
    • 自然数三角筋:これは三角筋の洗練を説明するためだけに作成された最も単純な具体的な三角筋です。ここで、積は自然数であり、デルタD = N +は多項式演算を表す単純な数列です。P=ND=N+
    • ネストされたキーと値のペアDeltoid:キーが値またはサブ階層にマップされている階層の抽象化の中間レベル。デルタは、この「ツリー」の変更を任意の深さで実行できます。
      • OOP Deltoid:オブジェクト指向プログラムの抽象的な表現用。プログラムはモジュール名をクラスのセットにマップし、クラス名をメソッドのセットにマップし、メソッド名をメソッドの実装にマップするため、基本的にはキーと値のペアがネストされています。
        • ABS Deltoid:ABSは実際のオブジェクト指向プログラミング言語です。
      • 電話プロファイルDeltoid:ここでの製品は、対応するドメインの値への設定(音量、画面の明るさなど)のフラットマッピングです。
    • DeltoidLATEX:製品はドキュメントとデルタは、マクロを再定義することでそれらを変更します。LATEX

まあ、それはあなたが私が考えていることの公正な考えをあなたに与えるはずです。ちなみに、三角筋については、からモノイド準同型である D D '対応関係三角筋に属します。[[]]DD

実際の階層はこれよりも大きい場合があります。また、使用する絞り込み理論の種類によっては、構成が異なる場合もあります。たとえば、Dで単純なサブセット関係を求めた場合、ABS DeltoidはネストされたKey-ValueペアDeltoidに適合しません。その製品とデルタは実際にはプレーンテキスト(ソースコード)だからです。しかし、準同型を使用する場合、与えられた階層はまだ機能する可能性があります。PD


3
抽象化階層とは何かをもっと明確にできますか?他のものの抽象化は何ですか?
デイブクラーク

やあ、デイブ!質問を更新しました。これで少しわかりやすくなったと思います。
mhelvens

4
三角筋の種類ごとにカテゴリを作成し、それらの間の左および右の随伴関手(存在する場合)を調べてみませんか?
マーティンバーガー

私はカテゴリー理論に精通していないと思います。:-(
mhelvens

回答:


8

ラティスベースのプログラム分析のわずかに異なる領域で、同様の質問に対する非常に完全な回答を提供する抽象解釈の理論を調べることは、あなたにとって有益だと思います。

代数に基づくフレームワークを使用しているようです。ここでは代数という言葉を普遍代数の意味で使用しています。代数の構造に対する制約は、項間の等式によって与えられると想定しています。抽象化(または階層)が全体像に入るには、2つの異なる意味があります。

  1. 2つの特定の代数の間の関係としての抽象化.1つの代数が別の代数よりも構造が豊富である、または1つの代数で解決できるすべての問題が他の代数で解決できると言いたい場合があります。この種の関係は、正式な購入準同型、または代数間のその他のマッピングとなるものです。
  2. 代数のファミリーとしての抽象化階層。あなたの場合、これらは特定の特性を持つ三角筋の家族です。より一般的な例として、部分的に順序付けられたすべてのセットを考えます。ラティス、分布ラティス、ブールラティスは、より豊富なプロパティを持つ一連のサブファミリと考えることができます。

2つの概念は密接に関連していますが異なります。

2つの構造間の抽象化

抽象的解釈の洞察は、考慮した構造に順序の概念を与えることは有用であるということです。2つの構造を検討する

(M,fM)(N,fN)fM:MMfN:NN

普遍代数の意味での準同型は次のようになります。

は、等式 h f Ma = f Nh a を満たす関数です。h:MNh(fM(a))=fN(h(a))

上記の2つの構造を事前に順序付けられた構造として表示できます

およびN = f N(M,=,fM)(N,=,fN)

そして、次の条件を満たす関数に書き換えることができる準同型

  1. a=bh(a)=h(b)
  2. aMh(fM(a))=fN(h(a))

ここで、理解できる他の近似の概念が利用できるとします。たとえば、プログラム検証で状態のセットを処理する場合、サブセットの包含は特定のアプリケーションにとって意味があり、自動控除で数式を処理する場合は、意味がわかります。より一般的には、

(M,,fM)(N,,fN)

これで、準同型の代わりに、抽象化関数を持つことができます

α:MN

  1. abα(a)α(b)
  2. α(fM(a))fN(α(a))aM

NMNNMN

MN

γ:NMfM(γ(b))γ(fN(b))

αγ

これまでに行ったことはすべて、1組の構造間の抽象化の概念を形式化するだけです。私が言ったことは、カテゴリー理論の言語ではるかに簡潔に要約できます。上記のコメントのため、私はカテゴリを避けました。

抽象化階層

MNNMN1N2M

私があなたの例を考えると、あなたの抽象的な三角筋はある階層の最大要素の候補であるかもしれません。抽象三角筋は特定の三角筋ではなく三角筋のファミリーのように見えるので、私は完全にはわかりません。

ここでできることは、さまざまな階層を検討することです。すべての三角筋の階層。上記のさまざまな考慮事項に基づくサブ階層。抽象解釈コンテキストの具体例は、特定のパワーセットラティスとガロア接続にある完全なラティスの階層と、分布ラティスまたはブールラティスのみで構成されるサブ階層です。

Martin Bergerがコメントで指摘しているように、階層間の抽象化のこの概念は、カテゴリー間の付属物の概念によって捉えられています。

カテゴリー的視点

カテゴリーについてさらにコメントを求めるコメントがありました。そのコメントはもうありませんが、とにかく応答します。

一歩下がって、三角筋の設計で何をしているのか、および上で説明したことをより一般的な観点から見てみましょう。ソフトウェアコンテキストで操作するエンティティの基本的な構造と、これらのエンティティ間の関係を理解することに関心があります。

最初の重要な認識は、一連の要素だけでなく、それらの要素に対して実行できる操作とそれらの操作のプロパティにも関心があるということです。この直感は、オブジェクト指向プログラミングにおけるクラスの設計と代数的構造の定義を推進します。関心のあるいくつかの操作を特定した三角筋の定義で、この直感をすでに明確にしています。より一般的には、これは代数的記述の基礎となる思考プロセスです。操作とは何か、操作にはどのようなプロパティがあるかを特定する必要があります。このステップでは、使用している型構造を教えてくれます。

2番目の認識は、要素のセットだけでなく、抽象関係にも興味があるということです。抽象化について私が想像できる最も簡単な形式化は、予約済みのセットを検討することです。予約済みのセットは、セットの厳密な一般化であり、近似の概念が組み込まれているものと考えることができます。

私たちは理想的には、上記の両方の洞察が一流の市民であるような環境で働きたいと思っています。つまり、代数のような型付き設定だけでなく、プレオーダーの近似を認識する設定も必要です。この方向の最初のステップは、ラティスを検討することです。ラティスは、2つの同等の方法で定義できるため、概念的に興味深い構造です。

  1. (L,,)abab=a
  2. (L,)L

したがって、ラティスは、代数的または近似的な観点からアプローチできる数学的構造です。ここでの欠点は、格子の要素自体が、近似関係に因数分解される型構造を持たないことです。つまり、多かれ少なかれ構造を持つという概念に基づいて要素を比較することはできません。

問題のコンテキストでは、カテゴリーは、(射の)近似の概念と代数の設定での型構造の両方を取り込む事前注文の自然な一般化と考えることができます。カテゴリ理論の設定により、さまざまな不要な区別を省き、気になるエンティティの構造とその構造の近似に焦点を合わせることができます。普遍的な特性と付属物は、あなたが興味のある構造の風景を理解するための非常に強力な語彙とツールを提供し、異なる抽象化レベルのような直感的な概念さえも厳密な数学的処理を可能にします。

抽象三角筋に関する私のコメントに関して、あなたが望むのはカテゴリーだと思われます。抽象三角筋は、セットのカテゴリーに類似した特定のカテゴリーです。あなたが検討している他のカテゴリがあります。私は最初、カテゴリー理論の意味で最終(または最終)オブジェクトになる三角筋を定義していると思っていました。

あなたはカテゴリー理論が非常に満足のいく答えを提供する種類の質問を研究しています。自分でその結論に到達できることを願っています。

参考文献

  1. 抽象解釈と論理プログラムへの適用、Patrick CousotおよびRadhia Cousot。この記事の前半は、抽象解釈のトピックへの一般的なチュートリアルスタイルの紹介です。
  2. 抽象解釈フレームワーク、Patrick CousotおよびRadhia Cousot。この記事では、抽象化と具体化の機能に関して、上でスケッチしたすべての可能性について非常に詳細に説明します。
  3. プログラム分析フレームワークの体系的な設計、Patrick CousotおよびRadhia Cousot。これは、プログラム分析のコンテキストで抽象化の階層の概念を導入した論文でした。
  4. Abstract Interpretation、Francesco Ranzato、Francesco Tapparo による一般化された強力な保存。このペーパーでは、これらのアイデアを、時相論理式を保持する抽象化の異なるコンテキストで適用します。ここでは、ブール型および分散型の抽象化の実際の例が見つかります。
  5. 抽象解釈、論理関係、およびKan Extensions、Samson Abramsky。上記の順序理論的材料に関するカテゴリー理論の視点を提示します。

完全な回答をありがとう!そして、カテゴリーの欠如は大歓迎です。;-)(私は将来、いくつかの中間カテゴリー理論を研究する必要があります。)私はあなたの参考文献を見ていきます。-=#=-それまでの間、「抽象的な三角筋は特定の三角筋ではなく三角筋のファミリーであるように見えます」というあなたの声明について質問があります。この点で抽象的な三角筋が他の三角筋とどのように異なるのか説明できますか?代数的構造を、そのすべての洗練のファミリーと見なすことはできませんか?
mhelvens 2013

@VijayD CTの更新をありがとう。コメントを書いてから削除したのは私です。OPの問題にはCTがより適していると私は深く信じています。あなたのアップデートを見た後、私はさらに確信します。OPがCTを使用してそれを実行したくない場合は、他の誰かがそれを行うと思います。
scaaahu 2013

カテゴリ理論が私の質問に対する最良の答えを提供する可能性が非常に高いようです。そして、それを研究し、それらの答えをよりよく理解できることを楽しみにしています。そして確かに、カテゴリー理論を研究して適用する時間が足りないことが、このWebサイトで「劣った」答えを出す口実になってはなりません。-=#=-それにもかかわらず、私はVijayの考慮に大いに感謝しています。モノイドレベルでの彼の答えは非常に役に立ちました。-=#=-そのため、今はカテゴリを使用できません。しかし、今後の作業でこのオプションを間違いなく検討します。皆さんありがとう!
mhelvens

あなたは問題をよく理解していて、カテゴリーの観点から直接分析できる問題を抱えているので、あなたは主題を取り上げるのに優れた立場にいます。これは何かを学ぶための最良の方法であり、カテゴリー理論に関するテキストは威圧的であるように思われるので、遅らせないでください。きっと一口サイズの勉強ができると思います。防御のために頑張ってください。
Vijay D

9

XX

δδ

δ

LaTeXとNokiaの携帯電話を一般論であまりにも真剣に形式化したいと思うかどうかはわかりません。しかし、もちろんあなたの理論はそのような例に当てはまるはずです(携帯電話に実際に明確に定義されたセマンティクスがないことがわかったときは、電話を切らないでください)。

あなたは あらかじめ決められたテクノロジーを(アドバイザーが?)主張することで、見た目を変えるによって、本当に自分自身を変えています。


2
一般的に私はあなたに同意します。そして、私は言い訳としてどちらも使用したことがありません。:-)しかし、この場合、私の論文のほとんどはすでに書かれており、モノイドはすべての私の出版物で使用されています。-=#=-とはいえ、あなたは素晴らしいことを言っています。プラスチック/金属ケースの例では、合成を許可することで処理しますが、結果として得られたデルタを空の関係に評価させます(ご想像のとおり)。それはすべて明確に定義されているので、今のところそれで十分です。しかし、私はあなたの提案がよりエレガントであることがわかります。カテゴリ理論を研究するもう1つの理由を教えてくれました。ありがとう!
mhelvens 2013

@mhelvens私は引退したソフトウェアエンジニアで、長い間業界に住んでいます。来て戻って引退した後、TCSに。私はあなたに実際の質問をします。論文でモノイドを使用してNokiaの電話製品を正式に正式化したとします。AppleがNokiaを買収したことを発表した場合、口頭弁論で何と言いますか?その発表はあなたのモデルを壊しますか?理論が一般的であるほど、より良いモデルになるように思えます。
scaaahu 2013

@scaaahu興味深い質問。:-)まず、「いいえ、まったくありません」と答えます。理論はデバイスの「タイプ」から独立しています。-=#=-汎化の利点を私に納得させる必要がないことを保証します。(実際、私はそれをやり過ぎることがあると思います。)たまたま、それが私のPhDの研究に役立つために、カテゴリー理論に間に合わなかったことが偶然に起こりました。私が言ったように、私はそれが価値あるアプローチであるかもしれないことに同意します。しかし、論文の締め切りから2か月は、私のアプローチを根本的に変える時ではありません。
mhelvens 2013

明らかに、あなたはポスドクの準備ができています;-)
Andrej Bauer

助成金申請書は既に発送されています。:-)私はこの分野で続けることができることを願っています。
mhelvens 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.