(57)【要約】【課題】  非同期性、並行性、および並列性を容易にするよりよい集積回路およびプログラミング言語を提供すること。【解決手段】  ρ計算法と呼ばれる反射的プロセス代数を使用して、この反射的プロセス代数のレベルでプロセスの直列化を容易にする。この反射的プロセス代数は、その反射的性質のため、資源の有限なコンピューティング・システム上で使用することができる。この反射的プロセス計算には、メモリや帯域などの資源に対して細心の注意を払いようにさせることができ、したがってマシン・レベルでのプログラミング言語として支障なく使用できるようになる。この反射的プロセス計算により、計算エンティティのもつ双対的性質があらわにされる。名前はプロセスになるように、プロセスは名前になるように強制することができる。【選択図】  図７Ｂ
2005228325.tif 000002
【特許請求の範囲】
【請求項１】
情報を処理して所望の結果を出力するためのコンピュータであって、
プロセスをリテラル化することによって名前を表し、名前を非リテラル化することによってプロセスを表す式を含むサービスを格納するコンピュータ可読媒体と、
名前を介して相互作用を行い、アクションを実行することまたは他のプロセスを進展させることによって進展するプロセスとして、前記サービスを実行するマイクロ・プロセッサと
を備えることを特徴とするコンピュータ。
【請求項２】
前記サービスは、統一資源指示子（uniform resource indicators）によって識別可能なポートを含み、行動タイプを賦与されることを特徴とする請求項１に記載のコンピュータ。
【請求項３】
前記サービスは、あるサービスのポートの行動タイプが別のサービスの別のポートの別の行動タイプと互換性がある場合に組成されることを特徴とする請求項２に記載のコンピュータ。
【請求項４】
前記マイクロ・プロセッサ上での実行のために前記サービスを協調させるための分散化されたオペレーティング・システムをさらに備えることを特徴とする請求項３に記載のコンピュータ。
【請求項５】
プロセスをリテラル化することによって名前を表し、名前を非リテラル化することによってプロセスを表す式を含むミドル・ウェアをさらに備え、前記ミドル・ウェアは前記サービスと前記分散化されたオペレーティング・システムの間に置かれることを特徴とする請求項４に記載のコンピュータ。
【請求項６】
命令を実行するためのマイクロ・プロセッサであって、
命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータであって反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含むデータをフェッチし、結果を保存するためのタイミングおよび制御ユニットと、
前記命令の指定するオペレーションを実行するための算術論理演算ユニットと
を備え、
前記命令は反射的プロセス代数で表現され、前記反射的プロセス代数は、プロセスのリテラル化として名前を表し、名前の非リテラル化としてプロセスを表すことが可能であることを特徴とするマイクロ・プロセッサ。
【請求項７】
前記実行済み命令の結果を格納するためのレジスタ・アレイをさらに備えることを特徴とする請求項６に記載のマイクロ・プロセッサ。
【請求項８】
前記マイクロ・プロセッサが実行中の前記命令を保持するための命令レジスタおよびデコーダをさらに備えることを特徴とする請求項７に記載のマイクロ・プロセッサ。
【請求項９】
前記マイクロ・プロセッサが内部的にはメモリ内へのデータを受け取ること、および前記マイクロ・プロセッサが外部的には前記実行済み命令の結果の通信を行うことを可能にするバス接続をさらに備えることを特徴とする請求項８に記載のマイクロ・プロセッサ。
【請求項１０】
前記タイミングおよび制御ユニット、前記算術論理演算ユニット、および命令レジスタおよびデコーダは、ポートと関連付けられる片務契約を有するポートを介して通信することを特徴とする請求項９に記載のマイクロ・プロセッサ。
【請求項１１】
プロセスが、進展できるように、または他のプロセスを進展させることができるように共有名を介してアクションを実行することまたは相互作用することを可能にするための方法を実行するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
プロセスを表すプロセス構文要素を含む反射的プロセス代数で表現されたコンピュータ実行可能命令を備え、
前記プロセス構文要素は不活性プロセス０、出力プロセスＸ［Ｙ］、入力プロセスＸ（Ｚ）．Ｐ、リフト・プロセスＬＩＦＴ  Ｘ．Ｐ、プロセスの組成Ｐ｜Ｐ、および名前の非リテラル化＞Ｘ＜からなる群から選択されることを特徴とするコンピュータ可読媒体。
【請求項１２】
前記コンピュータ実行可能命令は、名前を表す構文要素を含み、名前を表す前記構文要素はプロセスのリテラル化＜Ｐ＞から形成されることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記出力プロセスＸ［Ｙ］における前記名前ＹはプロセスＰのリテラル化から構築され、前記プロセスＰの前記リテラル化は、前記プロセスＰが所定の型Ｔのメンバでない場合に禁止されることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記入力プロセスＸ（Ｚ）．Ｐにおける前記名前ＺはプロセスＰのリテラル化から構築され、前記プロセスＰの前記リテラル化は、前記プロセスＰが所定の型Ｕのメンバでない場合に禁止されることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１５】
名前ＸはプロセスＰの前記リテラル化から構築され、前記プロセスＰの前記リテラル化は、Ｐの大きさが所定のしきい値を超える場合に禁止されることを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１６】
サービスを処理するためのコンピュータ実行可能な方法であって、
プロセスを名前の非リテラル化として表し、名前をプロセスのリテラル化として表すことが可能な反射的プロセス代数におけるプロセスとして、前記サービスを表すこと、および
名前がプロセス間で共有されるときに、プロセスの進展を容易にするように、プロセスにアクションを実行させることまたは通信を行わせること
を備えることを特徴とするコンピュータ実行可能な方法。
【請求項１７】
前記反射的プロセス代数で書かれた式をサービスから抽出すること、および前記式は前記反射的プロセス代数の前記構文規則に適合するかどうかを検査すること、をさらに備えることを特徴とする請求項１６に記載のコンピュータ実行可能な方法。
【請求項１８】
前記式が停止プロセス０を表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項１９】
前記式が出力プロセスＸ［Ｙ］を表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２０】
前記式が入力プロセスＸ（Ｚ）．Ｐを表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２１】
前記式がリフト・プロセスＬＩＦＴ  Ｘ．Ｐを表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２２】
前記式がプロセスの組成Ｐ｜Ｐを表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２３】
前記式が名前の非リテラル化＞Ｘ＜を表す場合に、前記式はプロセスであると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２４】
前記式がプロセスのリテラル化＜Ｐ＞を表す場合に、前記式は名前であると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２５】
前記式がプロセスのリテラル化を表しかつ前記プロセスの大きさがしきい値を超えない、すなわち＜Ｐ＞，＃（Ｐ）≦Ｋの場合に、前記式は名前であると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２６】
前記式がプロセスのリテラル化を表しかつ前記プロセスが型Ｔに属する、すなわち＜Ｐ＞，Ｐ：Ｔの場合に、前記式は名前であると決定することをさらに備えることを特徴とする請求項１７に記載のコンピュータ実行可能な方法。
【請求項２７】
前記反射的プロセス代数で書かれた式をサービスから抽出すること、および前記式を構造的合同に関する前記反射的プロセス代数の１組の等式規則に照らして検査することをさらに備えることを特徴とする請求項１６に記載のコンピュータ実行可能な方法。
【請求項２８】
前記式が＜＞Ｘ＜＞の形をしている場合に、前記式は名前Ｘと構造的に合同であると決定することをさらに備えることを特徴とする請求項２７に記載のコンピュータ実行可能な方法。
【請求項２９】
前記式がプロセスの組成Ｐ｜０である場合に、前記式はプロセスＰと構造的に合同であると決定することをさらに備えることを特徴とする請求項２７に記載のコンピュータ実行可能な方法。
【請求項３０】
前記式がプロセスの組成０｜Ｐである場合に、前記式はプロセスＰと構造的に合同であると決定することをさらに備えることを特徴とする請求項２７に記載のコンピュータ実行可能な方法。
【請求項３１】
前記式がプロセスの組成Ｐ０｜Ｐ１である場合に、前記式はＰ１｜Ｐ０と構造的に合同であると決定することをさらに備えることを特徴とする請求項２７に記載のコンピュータ実行可能な方法。
【請求項３２】
前記式がプロセスの組成（Ｐ０｜Ｐ１）｜Ｐ２である場合に、前記式はＰ０｜（Ｐ１｜Ｐ２）と構造的に合同であると決定することをさらに備えることを特徴とする請求項２７に記載のコンピュータ実行可能な方法。
【請求項３３】
前記反射的プロセス代数で書かれた式をサービスから抽出すること、および前記式の意味を前記反射的プロセス代数の１組の操作的意味論の規則に照らして検査すること、をさらに備えることを特徴とする請求項１６に記載のコンピュータ実行可能な方法。
【請求項３４】
前記式がＬＩＦＴ  Ｘ．Ｐの形をしている場合に、前記式はＸ［＜Ｐ＞］に簡約可能であると決定すること、をさらに備えることを特徴とする請求項３３に記載のコンピュータ実行可能な方法。
【請求項３５】
前記式がプロセスの組成Ｐ０｜Ｐ２でありかつＰ０はプロセスＰ１に簡約可能である場合に、前記式はＰ１｜Ｐ２に簡約可能であると決定すること、をさらに備えることを特徴とする請求項３３に記載のコンピュータ実行可能な方法。
【請求項３６】
前記式がプロセスＰ２であり、Ｐ２はＰ０と構造的に合同であり、Ｐ０はプロセスＰ１に簡約可能であり、かつＰ１はＰ３と構造的に合同である場合に、前記式はＰ３に簡約可能であると決定すること、をさらに備えることを特徴とする請求項３３に記載のコンピュータ実行可能な方法。
【請求項３７】
前記式がプロセスの組成Ｘ０［Ｘ２］｜Ｘ０（Ｘ１）．Ｐ０である場合に、前記式は第２の式Ｐ０｛Ｘ２／Ｘ１｝に簡約可能であると決定すること、をさらに備えることを特徴とする請求項３３に記載のコンピュータ実行可能な方法。
【請求項３８】
前記第２の式が（０）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしている場合に、前記第２の式を不活性プロセス０と等しいと置くこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項３９】
前記第２の式が（Ｒ｜Ｓ）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしている場合に、前記第２の式を（Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜｜（Ｓ）＞｛＜Ｑ＞／＜Ｐ＞｝＜と等しいと置くこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項４０】
前記第２の式が（Ｘ（Ｙ）．Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしている場合に、前記第２の式を（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝（Ｙ）．（（Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜）と等しいと置くこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項４１】
前記第２の式が（Ｘ［Ｙ］）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしている場合に、前記第２の式を（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝［（Ｙ）｛＜Ｑ＞／＜Ｐ＞｝］と等しいと置くこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項４２】
前記第２の式が（ＬＩＦＴ  Ｘ．Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしている場合に、前記第２の式をＬＩＦＴ（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝．（Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜と等しいと置くこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項４３】
前記第２の式が（＞Ｘ＜）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形のものでありかつＸは＜Ｐ＞と構造的に合同である場合には、前記第２の式をプロセスＱと等しいと置くこと、および、そうでない場合には、前記第２の式を＞Ｘ＜と等しいとおくこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項４４】
前記第２の式が（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝の形のものでありかつＸは＜Ｐ＞と構造的に合同である場合には、前記第２の式を名前＜Ｑ＞と等しいと置くこと、および、そうでない場合には、前記第２の式をＸと等しいとおくこと、をさらに備えることを特徴とする請求項３７に記載のコンピュータ実行可能な方法。
【請求項４５】
命令を実行するためのマイクロ・プロセッサのアレイであって、
命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータで、反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含むデータをフェッチし、結果を保存するタイミングおよび制御ユニット、
プロセスのリテラル化として名前を、名前の非リテラル化としてプロセスを表すことが可能な反射的プロセス代数で表現された前記命令の指定するオペレーションを実行するための算術論理演算ユニット
のうちの１つまたは複数の構成要素を含む少なくとも１つのマイクロ・プロセッサを備えることを特徴とするアレイ。
【請求項４６】
マイクロ・プロセッサの前記アレイは単一の集積回路上にあることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項４７】
マイクロ・プロセッサの前記アレイは複数の集積回路上にあり、前記複数の集積回路は単一のボード上に搭載されることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項４８】
マイクロ・プロセッサの前記アレイは複数の集積回路上にあり、前記複数の集積回路は複数のボード上に搭載され、前記複数のボードは１台のコンピュータの単一のラック内に収容されることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項４９】
マイクロ・プロセッサの前記アレイは複数の集積回路上にあり、前記複数の集積回路は複数のボード上に搭載され、前記複数のボードは複数のコンピュータの複数のラック内に収容されることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項５０】
１つまたは複数のマイクロ・プロセッサを結合するためのネットワークをさらに備え、前記ネットワークは常時接続および一時接続の群から選択されることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項５１】
前記少なくとも１つのマイクロ・プロセッサの前記構成要素は、前記反射的プロセス代数で書かれたプログラムをコンパイルするコンパイラの出力する命令によって同期が取られることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項５２】
マイクロ・プロセッサの前記アレイは、前記反射的プロセス代数で書かれたプログラムをコンパイルするコンパイラの出力する命令によって同期が取られることを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【請求項５３】
前記少なくとも１つのマイクロ・プロセッサの前記構成要素は、実行すべき次の命令を予測するための回路を欠くことを特徴とする請求項４５に記載のマイクロ・プロセッサのアレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、プログラミング言語に関し、より詳細には、資源の有限なマイクロ・プロセッサによって最終的に実行できるプロセスおよびその相互作用を表現するための人工言語に関する。
【背景技術】
【０００２】
ＣＩＳＣベースのマイクロ・プロセッサ１０２などのマイクロ・プロセッサが、すべてのパーソナル・コンピュータの心臓部にある。図１を参照されたい。電源１０４およびメモリ１０６をＣＩＳＣベースのマイクロ・プロセッサ１０２に加えると、１台のコンピュータを形成するのに必要な部品はすべて揃うことになる。ＣＩＳＣベースのマイクロ・プロセッサ１０２は、与えられる命令通りに動作することによってタスクを達成する。命令は、プログラミング言語などの人工言語で書かれた表現である。初期のマイクロ・プロセッサでは、単純な命令だけを使用していたが、これは、複雑な命令を実行することが可能なマイクロエレクトロニクスのハードウェアのコストが非常に高価であるためであった。こうしたコストが時とともに低下するにつれて、もっと複雑な命令が可能になった。複雑な命令（complex instructions、複数のマイクロ・プロセッサオペレションを指示する単一の命令）は、コンピュータが余分な命令を取り出す必要がなくなるために、時間を節約することができる。たとえば、７個のオペレーションを一緒にして１つの命令にした場合、命令をフェッチするステップのうち６つが省かれ、マイクロ・プロセッサがそれらのオペレーションを処理するのにより短い時間しかかからない。いくつかのオペレーションを一緒にして１つの命令にするマイクロ・プロセッサを、ＣＩＳＣ（complex instruction set computers、複合命令セット・コンピュータ）と呼ぶ。
【０００３】
ＣＩＳＣベースのマイクロ・プロセッサ１０２では、複数のレジスタが、実行した命令の結果を格納するのに使用される。各レジスタは、データを特定の目的で保持するのに使用する、ＣＩＳＣベースのマイクロ・プロセッサ１０２内部の高速メモリで構成された複数ビットから成るセットである。各レジスタは、アセンブリ言語プログラムでは、ＡＸ（Ｉｎｔｅｌ  ８０Ｘ８６プロセッサで算術オペレーションの結果が入るレジスタ）やＳＰ（様々なＣＩＳＣベースのマイクロ・プロセッサでスタックの先頭のメモリ・アドレスを入れるレジスタ）などの名前で、参照される。各レジスタは、本質的には、ＣＩＳＣベースのマイクロ・プロセッサ１０２に属する各構成要素間の共有メモリである。複数のレジスタを共有メモリとして使いながら、ある構成要素が特定のオペレーションを実行し、その特定のオペレーションの結果をあるレジスタに格納する。逐次的に、別の構成要素が次いで他のオペレーションを実行する際に同じレジスタにアクセスしてその結果を得ることができる。
【０００４】
オペレーションをそのように逐次実行することにより、ＣＩＳＣベースのマイクロ・プロセッサ１０２の構成要素は、通信において同期しているかのように見せることができるようになる。ＣＩＳＣベースのミドル・ウェア１０８内など、プログラム中のほぼすべての命令が、逐次的に実行されるように設計されている。ＣＩＳＣベースのマイクロ・プロセッサ１０２で利用可能なハードウェア割り込みは、非同期性を付け加え、それによりオペレーションの並行（concurrent）実行を付け加えるやり方として使用される場合がある。ハードウェア割り込みは、ＣＩＳＣベースのマイクロ・プロセッサ１０２にサービスを求める要求であり、その生成は、外部的にはディスク・ドライブや入出力ポートなどのハードウェア装置により、または内部的にはＣＩＳＣベースのマイクロ・プロセッサ１０２自体によって行われる。外部ハードウェア割り込みは、ポートからある１キャラクタが受け取られて処理する必要がある場合、１ブロックのデータ転送に対するディスク書き込みレディの発生時、システム・タイマの１チックの発生時、などの場合に使用される。内部ハードウェア割り込みの発生は、利用可能でないアドレスへのアクセスやゼロ除算など、不可能なアクションをプログラムが試みたときに生じる。アーキテクチャの不一致（マイクロ・プロセッサの構成要素の同期的な性質とハードウェア割り込みの非同期的な性質）に起因して、割り込みハンドラの中のたった１つのプログラミング・エラーは、ＣＩＳＣベースのマイクロ・プロセッサ１０２をデッドロックさせ、またはデータを病的な、まれにしか復元できない状態に破壊してしまうこともある。
【０００５】
π計算法（π calculus）のプログラム１１０は、ＣＩＳＣベースのミドル・ウェア１０８およびＣＩＳＣベースのマイクロ・プロセッサ１０２の同期的で逐次的な実行の設計に、所望の非同期性および並列性（parallelism）をもたせることが可能である。π計算法は、相互作用のある並行システムにおけるプロセスを記述するための数学的言語である。π計算法の中心部は、リンクを介して通信を行う独立した並列プロセスからなる１つのシステムで構成される。あるプロセスが他のプロセスと通信できるかどうかは、様々な異なるリンクについてのそれ自身の知識に依存している。特定のプロセスだけがリンク上で通信できるように、リンクを制限することも可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
π計算法は、コンピューティングに、非常に必要とされる非同期性および並列性をもたせることができるが、顕著な欠点がある。π計算法では、それぞれ単なるビットパターンとしてしか定義されて、構造化された情報ではない、純粋な名前（pure name）に非常に重点が置かれている。π計算法およびその変種は、名前付きリンク上で構造化されたデータの受け渡しを許容していない。名前Ｘなどの新しい名前を新規作成するには、π計算法ではνオペレータを使う。たとえば、数学的な項（νＸ）Ｐは、名前Ｘの新規作成を表し、そのスコープ（範囲）はプロセスＰに制限される。プロセスＰの各構成要素は、相互にＸを使用して相互作用できるが、他のプロセスとの間ではそれができない。数学的な構造的合同規則（νＸ）（νＸ）Ｐ≡（νＸ）Ｐを考えよう。項（νＸ）は、ｍａｌｌｏｃ（）などの関数を使ってメモリ割り当てを要求するオペレーションと定義される。コンピューティング・システムには項（νＸ）の１回の呼び出しに十分なメモリしか残っていないとしよう。その場合、構造的合同規則の右辺にある項（νＸ）は、障害を起こすことなく処理される。構造的合同規則の左辺にある項（νＸ）（νＸ）Ｐでは、そうはならず、これは（νＸ）の第２の呼び出しがメモリ・フォールトを引き起こすことになるためである。
【０００７】
π計算法の別の問題は、複製（replication）の数学的概念、すなわち！Ｐである。π計算法では、言語のプリミティブとして複製！Ｐが提供されている。項！Ｐは、互いに並列して動作するプロセスＰの無限の組成（composition）を意味するものと解釈できる。！Ｐは、理論の上では超越的であってよいのに対して、実際の具体化の際には問題を引き起こす。マイクロ・プロセッサは、メモリや帯域などの有限資源を備えた創造物（creature）なのである。π計算法のプログラムは、所望の同期性を付け加えるが、こうしたπ計算法のプログラムの実行されるマイクロ・プロセッサが資源に束縛されていることを認識してはくれない。
【０００８】
要するに、ＣＩＳＣベースのマイクロ・プロセッサは、並行する並列の計算を要求する非同期システム、すなわち分散化された、インターネットなどの大規模コンピュータ・システム向けにはうまく働かない可能性がある。従来の（traditional）逐次実行アーキテクチャは、オペレーションの並行実行の必要とするものには適していない可能性がある。π計算法により、非同期性および並列性をもたせる点でいくつかの救済策が提供されるが、その数学的プリミティブの一部は資源の有限なコンピューティング装置と両立しない。上述の問題に対する解決策がなければ、やがてはユーザはもうコンピューティング・システムが所望のコンピューティング体験を提供してくれると思わなくなるかもしれず、市場でコンピュータ・システムに対する需要は時とともに縮小することになろう。したがって、既存のＣＩＳＣベースのマイクロ・プロセッサおよびπ計算法に関連付けられた以上のおよび他の問題を回避または低減する一方、よりよい非同期性、並行性、および並列性を容易にするよりよい集積回路およびプログラミング言語が必要とされている。
【課題を解決するための手段】
【０００９】
この発明によれば、反射的プロセス代数（reflective process algebra）で書かれたサービスを処理するためのシステム、方法およびコンピュータ可読媒体が提供される。本発明のあるシステムの形式（form）は、情報を処理して所望の結果を出力するためのコンピュータを含む。前記コンピュータは、サービスを格納するためのコンピュータ可読媒体を備える。前記サービスはプロセスをリテラル化すること（literalizing processes）によって名前を、名前を非リテラル化すること（deliteralizing names）によってプロセスを表す式を含む。前記コンピュータは、さらに、複数のサービスを複数のプロセスとして実行するためのマイクロ・プロセッサを備える。前記プロセスは複数の名前を介して相互作用を行い、複数のアクションを実行することによって、または他のプロセスを進展させる（evolve）ことによって、進展する。
【００１０】
この発明のさらなる諸態様によれば、本発明の別のシステムの形式は、命令を実行するためのマイクロ・プロセッサを含む。前記マイクロ・プロセッサは、命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータをフェッチし、結果を保存するためのタイミングおよび制御ユニットを備える。前記データは反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含む。前記マイクロ・プロセッサは、さらに、前記命令の指定するオペレーションを実行するための算術論理演算ユニットを含む。前記命令は反射的プロセス代数で表現される。前記反射的プロセス代数は、プロセスのリテラル化として名前を、名前の非リテラル化（deliteralization）としてプロセスを表すことが可能である。
【００１１】
この発明のさらなる諸態様によれば、本発明のあるコンピュータ可読媒体の形式は、共有名を介して、プロセスが、進展しまたは他のプロセスを進展させるようにアクションすることまたは相互作用することを可能にするための方法を実行するコンピュータ実行可能命令の格納してあるコンピュータ可読媒体を含む。前記コンピュータ可読媒体は、反射的プロセス代数の形で表現されたコンピュータ実行可能命令を含む。前記反射的プロセス代数は、プロセスを表すプロセス構文要素を含む。前記プロセス構文要素は不活性プロセス（inactive process）０、出力プロセスＸ［Ｙ］、入力プロセスＸ（Ｚ）．Ｐ、リフト・プロセスＬＩＦＴ  Ｘ．Ｐ、プロセスの組成Ｐ｜Ｐ、および名前の非リテラル化＞Ｘ＜、からなる群から選択される。
【００１２】
この発明のさらなる諸態様によれば、本発明のある方法の形式は、サービスを処理するためのコンピュータ実行可能な方法を含む。前記コンピュータ実行可能な方法は、サービスを反射的プロセス代数におけるプロセスとして表す行為（act）を含む。前記反射的プロセス代数はプロセスを名前の非リテラル化として、名前をプロセスのリテラル化として表現することが可能である。前記コンピュータ実行可能な方法の他の行為は、プロセスの進展を支障なく行わせるために、名前がプロセス間で共有されるときにプロセスにそのアクションを実行させたり、または通信を行わせたりすることを含む。
【００１３】
この発明のさらなる諸態様によれば、本発明のさらに別のシステムの形式は、命令を実行するためのマイクロ・プロセッサのアレイを含む。マイクロ・プロセッサの前記アレイは、命令をメモリから取り出し、前記命令をデコードし、前記命令に関連するデータをフェッチし、結果を保存するためのタイミングおよび制御ユニットを含む、少なくとも１つのマイクロ・プロセッサを備える。前記データは反射的プロセス代数におけるプロセスをリテラル化することによって得られる名前を含む。前記マイクロ・プロセッサは、さらに、前記命令の指定するオペレーションを実行するための算術論理演算ユニットを含む。前記命令は反射的プロセス代数で表現される。前記反射的プロセス代数は、プロセスのリテラル化として名前を、名前の非リテラル化としてプロセスを表すことが可能である。
【００１４】
以上の諸態様およびこの発明の利点の多くは、同発明を、以下の詳細な説明への参照により、添付の図面と併せ解釈するとき、よりよく了解されてくるにしたがって、より容易に理解されてこよう。
【発明を実施するための最良の形態】
【００１５】
本発明の様々な実施形態は、反射的プロセス代数のレベルでプロセスの直列化（serialization）を容易にするρ計算法と呼ばれる反射的プロセス代数を提供する。この反射的プロセス代数は、その反射的性質のため、資源が有限なコンピューティング・システム上で使用することができる。π計算法など従来のプロセス計算は、システム障害を引き起こす可能性のあるプロセスの際限のない組成および名前の新規作成を規定(govern)する表現力に欠けている。この反射的プロセス計算には、メモリおよび帯域などの、資源に対して細心の注意を払うようにさせることができ、これによりマシン・レベルでのプログラミング言語としてこれを使用することを容易にすることができる。反射的プロセス計算により、計算エンティティのもつ双対的性質があらわにされる。名前はプロセスになるように、プロセスは名前になるように強制することができる。このため、反射的プロセス計算により、計算エンティティの動的な性質と静的な性質の対応（correspondence）が表現される。計算エンティティが（たとえば直列化またはコンパイルを経て）静的であるときは、そのプログラムは、他のプログラムによる変更、または保管が可能となり、再び動的になったときに、他のプロセスとの相互作用への参加を、進展すること（evolving）によってまたは他のプロセスを進展させることによって行うことができる。
【００１６】
図２Ａに、ρベースのマイクロ・プロセッサ２００に基づくコンピューティング装置を示している。「マイクロ・プロセッサ」という用語は、中央処理装置、デジタル・シグナルプロセッサ、ＦＰＧＡ（field programmable gate array）、または算術、論理、および決定処理を実行するようにプログラムできる任意の集積回路を含めたものを意味する。ρベースのマイクロ・プロセッサ２００は、コマンドを与えてデータ転送、算術、論理、および意思決定などの様々な関数を実行させることができる装置である。ρベースのマイクロ・プロセッサ２００は、単一の集積回路上の中央処理装置（ＣＰＵ、central processing unit）と考えることができる。ρベースのマイクロ・プロセッサ２００は、数百万以上のトランジスタを搭載していることもあり、パーソナル・コンピュータなどの計算装置の心臓部にある。ρベースのマイクロ・プロセッサ２００の電源が投入され、ρベースのマイクロ・プロセッサ２００にメモリの要素２０４が加わると、入出力装置２２２を除き、１台のコンピュータに必須なすべての要素が揃うことになる。１つまたは複数のρベースのマイクロ・プロセッサ２００は、複数のρベースのマイクロ・プロセッサ２００から成るアレイを形成することができる。一実施形態では、複数のρベースのマイクロ・プロセッサ２００から成るアレイは、単一の集積回路上に存在する。別の実施形態では、複数のρベースのマイクロ・プロセッサ２００から成るアレイは複数の集積回路上に存在し、この複数の集積回路は単一のボード上に搭載される。さらに別の実施形態では、複数のρベースのマイクロ・プロセッサ２００から成るアレイは複数の集積回路上にあって、この複数の集積回路は複数のボード上に搭載されて、この複数のボードは１台のコンピュータの単一のラック内に収容される。さらに別の実施形態では、複数のρベースのマイクロ・プロセッサ２００のアレイは複数の集積回路上にあって、この複数の集積回路は複数のボード上に搭載されて、この複数のボードは複数台のコンピュータの複数のラック内に収容される。別の実施形態では、複数のρベースのマイクロ・プロセッサから成るアレイは、１つまたは複数のマイクロ・プロセッサを結合するためのネットワークを含む。このネットワークは、常時接続および一時接続の群から選択される。
【００１７】
入出力装置２２２は、ρベースのマイクロ・プロセッサ２００にデータを提供するため、またはこれからデータを受け取るため、あるいはその両方に使用できるハードウェアの要素である。ＰＤＡ（personal digital assistant）は、入出力装置の例である。キーボードやマウスなどの一部の装置は、入力のためだけに使用することができる。プリンタなどの他の一部の装置は、出力のためだけに使用することができる。ρベースのマイクロ・プロセッサ２００から形成されるほとんどの装置は、必ずしもデバイス・ドライバと呼ばれるソフトウェア・ルーチンをインストールしなくてもデータの送信および受け取りを行うことができる。メモリの要素２２４は、情報を格納および取り出しを行える装置である。好ましくは、メモリの要素２２４は、コンピューティング装置のメイン・メモリ、すなわちρベースのマイクロ・プロセッサ２００に直接結合される高速な半導体ストレージ（ＲＡＭ）を指すものとする。
【００１８】
ρベースのミドル・ウェア２２６は、2つ以上のタイプのソフトウェアの間に位置し、その間で情報を翻訳するソフトウェアである。ρベースのミドル・ウェアは、多様な範囲のソフトウェアをカバーし、一般にサービス２２８と分散化されたオペレーティング・システムとの間に位置する。ρベースのミドル・ウェア２２６は、以下でさらに詳細に論じるように新しい名前を生成する名前サービスなどのサービスを含む。ρベースのミドル・ウェア２２６と考えることのできる別のソフトウェアの要素は、複製サービス（replication service）である。ρベースのミドル・ウェア２２６は、π計算法言語の変種を用いて表現されるサービス２２８が、ρベースのマイクロ・プロセッサ２００上でよりよく実行できることを可能にする。
【００１９】
サービス２２８は、各サービスの定義するプロトコルに従ってメッセージを交換する自律的な計算エンティティである。サービスは、あるコンピューティング・システムにローカルとすることもできるが、リモートのコンピューティング・システムに置くこともできる。サービスは、単一の信頼ドメインによってアクセスできるが、それ自体のセキュリティポリシをもつ別の信頼ドメインによってもアクセスできる。サービス２２８は、ディレクトリ・サービスによって発見可能であるが、ディレクトリ・サービスでないサービスによっても発見可能である。サービス２２８は、サービスの一意の指定を構成する統一資源指示子（uniform resource indicators）によって識別可能なポートを有する。サービスのポートには、片務契約（unilateral contract）で指定される行動タイプ（behavioral type）が賦与される。サービス２２８の好ましい通信機構は、プログラム的に有線接続された（programmatically wired）ポートを通す機構である。有線接続されたポートは、（あるサービスの）一方のポートの行動タイプが（別のサービスの）もう１つのポートの行動タイプと互換性がある場合に使用可能となる。ポートがプログラム的に互いに有線接続されている場合、サービス２２８は互いにメッセージを送ることによって通信を行う。簡単に言えば、片務契約は、π計算法の変種などの言語で表現されており、サービス２２８に出入りするメッセージの順序を指定している。たとえば、ファイルはサービスでありうる。読み取り専用ファイルの片務契約は、次の行動式、すなわち、ＲＥＣ  Ｆ（ｒｅａｄ．Ｆ＋ｄｒｏｐ）．０を含むことができるのに対し、読み取り書き込みファイルの片務契約は、次の行動式、すなわち、ＲＥＣ  Ｆ（ｒｅａｄ．Ｆ＋ｗｒｉｔｅ．Ｆ＋ｄｒｏｐ）．０をもつことができる。これらの行動式を構文解析すると、項ＲＥＣ  Ｆは行動フレーズに対する再帰を示し、行動フレーズＦはカッコの対の内側の行動式を示し、動詞”ｒｅａｄ”は読み取り操作（read operation）を示す。ピリオド記号”．”は、ピリオド記号の前の行動フレーズが起き、その後、次いでピリオド記号の後の行動フレーズが起きるというシーケンスを表す。プラス符号の記号”＋”１つまたは複数の行動フレーズのうちからの選択肢を示し、動詞”ｗｒｉｔｅ”は書き込み操作（write operation）を示し、動詞”ｄｒｏｐ”は２つのサービスの間の通信の終了を示し、ゼロの記号（”０”）は、行動式の終了を示す。
【００２０】
図２Ｂには、ρベースのマイクロ・プロセッサ２００の内部アーキテクチャを備える構成要素の一部をより詳細に示している。各コンポーネントは、好ましくはポートを通して通信するρプロセスとして表される（各ポートは視覚的に正方形で表してある）。ここにあるのはρベースのマイクロ・プロセッサ２００の主な５つの構成要素である。すなわち、レジスタ・アレイ２０４、２０８、２１０、タイミングおよび制御ユニット２１４、算術論理演算ユニット２０６、命令レジスタおよびデコーダ２１２、および外界へのバス接続２１６、２１８である。ρベースのマイクロ・プロセッサ２００は、ρ命令を実行するときに、5つの一般的なステップを経る。第１に、タイミングおよび制御ユニット２１４が、メモリからρ命令、たとえば、並列して動作する２つのプロセスを組成する命令、を取り出す。第２に、タイミングおよび制御ユニット２１４が、そのρ命令をデコードしてρベースのマイクロ・プロセッサ２００を制御する電気信号にする。第３に、タイミングおよび制御ユニット２１４が、データ（２つのプロセスのリテラル化である２つの名前）をフェッチする。第４に、算術論理演算ユニット２０６が、特定のオペレーション（２つの名前の非リテラル化による２つのプロセスの組成）を実行する。第５に、タイミングおよび制御ユニット２１４が結果（組成をリテラル化することによる２つのプロセスの組成）をレジスタ・アレイ２０４、２０８、２１０のうちのあるレジスタに保存する。
【００２１】
ρベースのマイクロ・プロセッサ２００は、一時的データ、メモリ・アドレス、命令、およびρベースのマイクロ・プロセッサ２００のステータスに関する情報を保持するのに使用する様々な内部レジスタを含む。たとえば、命令レジスタ２１２は、ρベースのマイクロ・プロセッサ２００が現在実行中の命令を保持するのに使用する。命令レジスタ２１２からのデコード済みの命令は、ρベースのマイクロ・プロセッサ２００の残りの部分、メモリ、およびタイミングおよび制御ユニット２１４と外界への外部ピンによって入出力の制御を、行う。命令レジスタ２１２は、それ自体のポートをもつ別のプロセスであるタイミングおよび制御ユニット２１４と通信する１つまたは複数のポートをもつ１つのプロセスである。命令レジスタ２１２は、好ましくは内部データ・バス２０２によって通信する。この内部データ・バス２０２もそれ自体のポートをもつ１つのプロセスとして表すことができる。内部データ・バス２０２は、入出力においてメモリとの間で情報を運ぶのに使用する。好ましくは、内部データ・バス２０２のバス・ラインは、情報を双方向に伝送する能力のある双方向のラインである。ステータス・レジスタ２０８（これもポートを通して通信する）は、算術論理演算ユニット２０６（これもポートを通して通信する）用のメモリからの情報を保持するのに使用する一時レジスタを含む。算術論理演算ユニット２０６へのもう１つの入力は、累算器２０４からのものである（通信のためにはポートを用いる）。ステータス・レジスタ２０８は、算術論理演算ユニット２０６のオペレーションを指示するのに使用するフラグ・レジスタを含む。また、ステータス・レジスタ２０８は、情報を格納するための汎用レジスタも含む。累算器２０４は、算術論理演算ユニット２０６の実行するほとんどあらゆる算術演算（arithmetic operation）および論理演算（logic operation）の後で、オペレーション結果（answer）を累算するのに使用する。オペレーション結果は通常ここに置かれるので、累算器２０４はオペレーション結果レジスタと考えることができる。累算器２０４とステータス・レジスタ２０８はどちらも、情報の送信および受信のために、内部データ・バス２０２に結合されている。プログラム・カウンタ２１０（その通信はポートを通して行われる）も、内部データ・バス２０２に結合されている。プログラム・カウンタ２１０の目的は、ρベースのマイクロ・プロセッサ２００が実行すべき次の命令を探すために使用することである。プログラム・カウンタ２１０により、ρベースのマイクロ・プロセッサ２００は、メモリからの次の命令を実行することができるようになる。ρベースのマイクロ・プロセッサ２００は、アドレス・バス（図示せず）およびデータ・バス（図示せず）との間の情報をバッファリングするためのアドレス・バッファ２１８およびデータ・バッファ２１６を含む。
【００２２】
本発明の様々な実施形態に従って使用する「プロセス」という用語は、アクションを実行することにより進展する能力を有する、または他のプロセスの進展を可能にする、１つまたは複数の計算エンティティの動的な表現である。言い換えれば、「プロセス」という用語は、計算エンティティの双対的性質のうちの１つを表している。計算エンティティが静的であるときには、プログラムを見ることなどによって、計算エンティティを検査することができる。計算エンティティが（プロセスとして）動いているときには、計算エンティティを見ることはできないが、その行動は、本発明の様々な実施形態によって形成したρ計算法の言語３００によって、表現されることが可能であり、また検査されることが可能である。図３Ａを参照されたい。ρ計算法の言語３００は、文法、構造的合同に関する規則、および操作的意味論（operational semantics）に関する規則を含む。言語３００の文法は、容認可能な（permissible）プログラミング文を形成するためにプロセスおよび名前の構文要素を統合するやり方を定義する規則の体系である。言い換えれば、言語３００の文法で正しく表現できない場合には、特に、名前を得るためのプロセスのリテラル化などの概念の通信を行うことができない。式が正しく形成されると、意味論の規則がその式を意味と結びつける。プロセスは動的なものなので、言語３００は、操作的意味論（operational semantics）を使用して意味をプロセスに結合する。言い換えれば、プロセスは、そのアクションを実行することによって、または他のプロセスと相互作用することによって、進展する。言語３００の式の意味を理解することは、その操作（operation）を理解することに直接に関係する。構造的合同に関する規則は、言語３００の操作的意味論を、ある式を別の式と同一視できるという点で、単純化することを可能にする。したがって、これらの規則はρ計算法の言語３００の式の置換に適用できるので、操作的意味論のためのいくつかの規則は、その数を少なく抑えることができる。ρ計算法の言語３００の表現の構文要素３０２〜３１４は、単独で使用することができ、または置換の形で組み合わせてプロセス間の計算のニュアンスを表現することができる。ρ計算法の言語３００に関する構文規則は図３Ａを参照して説明される。構造的合同規則は図８Ｆ〜８Ｈを参照して説明される。操作的意味論の規則は図８Ｊ〜８Ｒを参照して説明される。
【００２３】
プロセスおよび名前は、ρ計算法の言語３００を使用して表現することができる（その後で、好ましくはρサービスに渡すことができる）。行３０２では、１つのプロセスに対するある定義”Ｐ：：＝０”を記述しており、ここで、記号Ｐはプロセスを表し、記号”：：＝”はその左辺の項の定義がこれから開始されようとしていることを表し、構文要素”０”は、そのプロセスが不活性である、または終了していることを表す。行３０４では、記号Ｐによって表されるプロセスに関する別の構文要素”Ｘ［Ｘ］”を定義しており、ここで、記号Ｘは、行３１４で記述され、ρ計算法の言語３００における名前を表し、記号Ｘ［Ｘ］は、記号Ｘによって表される名前などの計算エンティティが記号Ｘによって表される名前を介して送ることができることを表す。行３０６では、プロセスＰに関する別の定義を提供している。行３０６の構文要素は、入力アクション”Ｘ（Ｘ）．Ｐ”を記述しており、ここで記号Ｘは行３１４で記述される名前を表し、記号”Ｘ（Ｘ）”は、Ｘによって表される名前を介して任意の名前を受け取り、受け取った名前をカッコで囲まれた名前Ｘに代入して、Ｐによって表される別のプロセスとして継続することのできるアクションを表す。行３０８では、Ｐによって表されるプロセスに関する別の構文要素を”ＬＩＦＴ  Ｘ．Ｐ”として記述しており、ここで記号Ｘは行３１４に記述される名前を表し、記号Ｐは構文要素３０２〜３１２によって定義されるプロセスを表し、構文要素”ＬＩＦＴ  Ｘ．Ｐ”は記号Ｐによって表されるプロセスのリテラル化が、記号Ｘによって表される名前で送られまたは利用可能になることを表す。ＬＩＦＴ演算子により、プロセスの動的な組成が、通信で使用するための名前としてそうしたプロセスを具象化（reify）する前に行えるようになる。行３１０では、記号Ｐによって表されるプロセスに関する別の構文要素”Ｐ｜Ｐ”を提供しており、ここで、記号Ｐは構文要素３０２〜３１２の定義するプロセスを表し、縦棒”｜”は、２つのプロセスの組成を、各プロセスが独立に進行し、共有名を介して相互作用するものとして表す（言い換えれば、２つのプロセスは互いに並列または並行して動作する）。行３１２に示す構文要素”＞Ｘ＜”は、記号Ｘによって表される名前の非リテラル化を表す。行３１２では、記号Ｐによって表されるプロセスのもついくつかの性質のうちの双対性という性質の一方の性質、すなわち記号Ｘによって表される名前の非リテラル化を示している。もう一方の性質は行３１４に記述してあり、そこでは、記号Ｘによって表される名前が記号Ｐによって表されるプロセスのリテラル化＜Ｐ＞であると定義されている。こうしたρ計算法の言語３００におけるプロセスと名前との反射的性質は、プロセスでも名前でもありうるという点で、計算エンティティの双対性を明らかにする。
【００２４】
図３Ｂには、計算エンティティ３１６の双対的な性質を示している。計算エンティティ３１６は、プロセス３１６Ａであり、これはρ計算法の言語３００の構文要素３０２〜３１２を用いて表現される。本明細書でこれまでに論じたように、プロセス３１６Ａは計算エンティティ３１６の動的な性質を表している。計算エンティティ３１６の静的な性質は、名前３１６Ｂであり、これはρ計算法の言語３００の行３１４に示した構文要素を用いて表現することができる。プロセス３１６Ａをリテラル化または変換して名前３１６Ｂにすると、そうした名前の送信を、２つのプロセス間の通信セッション中にポート３２２を介して行うことができる。行３０４で表現される構文要素Ｘ［Ｘ］を参照されたい。名前３１６Ｂ（通信後の名前３１６Ｂを区別するため、新しい符号３１８Ａを使用する）をポート３２２のもう一方の端で受け取ると、名前３１８Ａが、数学的に非リテラル化してプロセス３１８Ｂを得ることができ、これはプロセス３１６Ａと等価となる。まとめて言えば、計算エンティティ３１８は名前３１８Ａとプロセス３１８Ｂのどちらでもあることになる。
【００２５】
ρ計算法の言語の変種４００は、ρ計算法の言語３００に基づいており、型付きプロセスを用いる名前の作成（production）に対して制御を可能にする。図４Ａを参照されたい。ρ計算法の言語の変種４００は、ρ計算法の言語３００に関して説明した構文要素と同様のいくつかの構文要素を含む。たとえば、記号Ｐによって表されるプロセスは、構文要素”０”によって表される不活性プロセスまたは終了プロセスを含む。行４０２を参照されたい。行４０４では、構文要素”Ｘ［Ｙ］”によって表される出力プロセスを記述しており、ここで記号Ｘは行４１４で定義され、記号Ｙは行４１６で定義され、合わせて構文要素”Ｘ［Ｙ］”は、記号Ｙによって表される名前が記号Ｘによって表される名前を介して送られることを表す。行４０６では、構文要素”Ｘ（Ｚ）．Ｐ”を記述しており、ここで記号Ｘは行４１４で定義される名前を表し、記号Ｚは行４１８で記述する別の名前を表し、記号Ｐは行４０２〜４１２でその定義が記述されるプロセスを表し、合わせて構文要素”Ｘ（Ｚ）．Ｐ”は、記号Ｘによって表される名前が他任意の名前を受け取ることができ、その後、受け取った名前を記号Ｚによって表される名前に置換して、記号Ｐによって表されるプロセスが実行されることを表す。行４０８で記述される構文要素”ＬＩＦＴ  Ｘ．Ｐ”は、記号Ｐによって表されるプロセスの別の定義を提供している。本質的に、行４０８では、記号Ｐによって表されるプロセスが、記号Ｘによって表される名前で、リフトされること、または利用可能になることができることを記述している。プロセスの並行実行、または並列して動作する２つのプロセスの組成を、行４１０で”Ｐ｜Ｐ”で記述しており、ここで縦棒”｜”の両側の記号Ｐは並列して動作する２つのプロセスを表す。行４１２では、記号Ｐによって表されるプロセスを得るために記号Ｘによって表される名前を非リテラル化する構文要素＞Ｘ＜を記述している。構文要素”＜Ｐ＞”は、記号Ｐによって表されるプロセスのリテラル化を表しており、この後、記号Ｘによって表される名前が得られる。行４１４を参照されたい。行４１６にある構文要素＜Ｐ＞，Ｐ：Ｔは、記号Ｙによって表される名前の作成が行４１４のそれと同様であることを記述している。しかし、記号Ｙによって表される名前の作成は、記号Ｐによって表されるプロセスが記号Ｔによって表される特定の型の要素の生成でなければならない点で制約されている。１つの適切な型Ｔは、パターン認識器であるプロセスを選択する型を含むが、他の適切な型も使うことができる。記号コロン”：”は、記号Ｐによって表されるプロセスが、記号Ｐによって表されるプロセスのリテラル化＜Ｐ＞が可能ではないと言うことなく、記号Ｔによって表される特定の型に属することを表す。記号Ｚによって表される名前も同様に行４１８で構文要素＜Ｐ＞，Ｐ：Ｕで制約されている。記号Ｚによって表される名前は、記号Ｐによって表されるプロセスＰをリテラル化することによって作り出されるが、そのようなプロセスＰは記号Ｕによって表される型の要素でなければならない。１つの適切な型Ｕは、値を表すプロセスを選択する型を含むが、そのようなプロセスに限定されるものではなく、他の適切な型も使用���ることができる。記号Ｔ、Ｕによって表される型は、プロセスベースの環境で通信のプリミティブである、名前へと進展するプロセスに対する精密な（minute）制御を可能にする。
【００２６】
図４Ｂには、２つの計算エンティティ４２０、４２２が示されている。計算エンティティ４２２は、プロセス４２２Ａを含むが、プロセス４２２Ａがリテラル化に適した型のものである場合に、リテラル化して名前４２２Ｂに変換することができる。名前４２２Ｂはポート４２４を介して送ることができる。（議論を簡単にするために、名前４２２Ｂはポート４２４の終端で受け取られたときには新しい符号４２８Ｂで参照することとする。）名前４２８Ｂは、受け取られると、非リテラル化してプロセス４２８Ａを得ることができるが、これは元来のプロセス４２２Ａと等価である。計算エンティティ４２０は、プロセス４２０Ａを含むが、プロセス４２０Ａが名前に進展することができるプロセス型の要素ではないため、対応する名前を構築することはできない。したがって、プロセス４２０Ａのリテラル化は、プロセス４２０Ａの属する型がρ計算法の言語の変種４００に従って名前を構築することが許されていないため、抑制される。
【００２７】
図５Ａには、ρ計算法の言語３００、４００に基づく、別のρ計算法の言語の変種５００の一部が示されている。ρ計算法の変種５００の多くの構文要素はρ計算法の言語３００、４００と同様である。たとえば、行５０２では、行３０２、４０２で定義されるものと同様の、不活性または停止（stop）プロセスが定義される。行５０４では、行３０４、４０４で定義されるものと同様の、出力プロセスが定義される。行５０６では、行３０６，４０６で定義されるものと同様の、プロセスＰが後続する入力プロセスが定義される。行５０８では、行３０８、４０８で定義されるもの同様のリフト・アクションが定義される。行５１０では、行３１０、４１０で定義されるものと同様の、互いに並列して動作するプロセスの組成が定義される。行５１２では、行３１２、４１２で定義されるものと同様の記号Ｐによって表されるプロセスを得るための名前の非リテラル化が定義される。行５１４では、Ｘによって表される名前が”＜Ｐ＞，＃（Ｐ）≦Ｋ”で定義され、ここで記号Ｐは構文要素５０２〜５１２の定義するプロセスを表し、記号”＜Ｐ＞”は記号Ｐによって表されるプロセスのリテラル化を表し、記号”，”は記号Ｐによって表されるプロセスのリテラル化に対する制約がこれから開始されようとしていることを表し、記号”＃”は、プロセスを引数として取ってプロセスの構文木の大きさを出力する（produce）関数を表し、ここで、記号”＃（Ｐ）”は記号Ｐによって表されるプロセスに関して構文木の大きさを出力する関数が実行されることを表し、記号”≦”は記号Ｐによって表されるプロセスの構文木の大きさがある定数より小さいか等しいことを表し、記号Ｋはリテラル化することが許される定数で、記号Ｐによって表されるプロセスに関する構文木の最大の大きさである定数、を表す。行５１４により、ρ計算法の言語の変種５００が、アクションの実行または他のプロセスとの相互作用に参加するためにリテラル化し名前を作成できるプロセスの大きさを制約し、封じ込め（confine）、または制限することができるようになる。
【００２８】
図５Ｂには、ρ計算法の言語の変種５００が名前の作成を制限するのに使用できる制約を視覚的に示している。図５Ｂでは、２つの計算エンティティ５２０、５２２およびその対応する構文木５２０Ｃ、５２２Ｃを示している。計算エンティティ５２０はプロセス５２０Ａをもつが、対応する名前５２０Ｂを構築することが禁止される。計算エンティティ５２２は、プロセス５２２Ａを含むが、対応する名前５２２Ｂを構築する自由がある。構文木５２０Ｃ、５２２Ｃのそれぞれは、ノードはオペレーションを表し、そのノードの子はそのオペレーションの引数を表す階層構造である。たとえば、構文木５２０Ｃのノード５２０Ｅには、置換の記号”＝”が格納されている。ノード５２０Ｅの子は、変数ＡＣＣＥＬＥＲＡＴＩＯＮ５２０Ｄおよび除算の記号”／”５２０Ｈを含んでいる。除算の記号”／”５２０Ｈは、別のノード５２０Ｈを形成し、これには２つの子がある。ＭＩＬＥＳ５２０Ｆはノード５２０Ｈの一方の子であり、もう一方の子はＨＯＵＲ５２０Ｇである。ＨＯＵＲ５２０Ｇは、除算オペレーション”／”を格納する別のノード５２０Ｉと結合されている。ノード５２０Ｉには、別の子ＨＯＵＲ５２０Ｊがある。
【００２９】
構文木５２２Ｃに関しては、ノード５２２Ｅには置換の記号”＝”が格納されている。ノード５２２Ｅの子は、変数ＶＥＬＯＣＩＴＹ５２２Ｄを含む。ノード５２２Ｈは、ノード５２２Ｅの子であり、除算オペレーション”／”を格納している。ノード５２２Ｈの子が２つあり、それは変数ＭＩＬＥＳ５２２Ｆ、および変数ＨＯＵＲ５２２Ｇである。構文木５２２Ｃは、構文木５２０Ｃより大きさが小さい。行５１４で定義した制約に従って、計算エンティティ５２２は、構文木５２２Ｃが特定のしきい値を下回るため、プロセス５２２Ａをリテラル化して名前５２２Ｂを構築することができる。計算エンティティ５２０は、そのプロセス５２０Ａの大きさがこのしきい値を超える構文木をもっているので、そうすることはできない。
【００３０】
図６Ａには、ρ計算法の言語の変種３００〜５００の１つを用いて形成される複製サービス６００を示している。従来のπ計算法の数学（mathematics）では、記号”！Ｐ”は互いに並列して動作するプロセスの無限の組成を表す。そのような無限の計算エンティティは、資源の有限なマイクロ・プロセッサなどの集積回路上での実行では、理論的に両立しない。本発明の様々な実施形態により、そのようなプリミティブがρ計算法の言語３００〜５００から取り除かれる。それでも、無限の組成の概念をエミュレートすることは、サービスをρ計算法の言語３００〜５００で書くことによって可能である。複製サービス６００が１つの例となる。行６０２では、無限の組成”！Ｐ”は、数学的に”ＬＩＦＴ  Ｘ．（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）｜Ｘ（Ｚ）．（＞Ｚ＜｜Ｘ［Ｚ］）”であると定義されている。数学的な項ＬＩＦＴ  Ｘ．（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）は、数学的な項Ｘ（Ｚ）．（＞Ｚ＜｜Ｘ［Ｚ］）によって表される別のプロセスに対して並列に動作するプロセスである。
【００３１】
図６Ｂには、複製サービス６００が実行中の状況を動的に示している。数学的な項（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）はプロセスＰ１  ６０６を表している。ここで、項Ｘ（Ｙ）は、ある名前をチャネルＸ上で受け取ることができ、その後、そのような名前が名前Ｙに代入されることになることを表す。プロセス＞Ｙ＜は、プロセスＸ（Ｙ）がアクションを実行した後、プロセスＸ［Ｙ］と並列して動作することになる。項＞Ｙ＜は、プロセスＸ［Ｙ］と並列して動作することになるプロセスを得るための名前Ｙの非リテラル化を表す。項Ｘ［Ｙ］は、名前Ｙが名前Ｘによって表されるチャネルに沿って送ることができることを表す。プロセスの組成Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）は、別のプロセスＰと並列して動作する。
【００３２】
プロセス６０４、すなわちＬＩＦＴ  Ｘ．（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）は、数学的にＸ［＜Ｐ１＞］に簡約可能（reducible）であり、ここで項Ｐ１はプロセスの組成（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）である。数学的な項Ｘ［＜Ｐ１＞］は、プロセスＰ１がリテラル化されて、名前Ｘによって表されるポートで利用可能にされることを意味する。プロセスＰ１がリテラル化されて名前Ｘで利用可能になると、プロセスＸ（Ｚ）は項＜Ｐ１＞を受け取り、これが名前Ｚに代入されることになる。プロセスＸ（Ｚ）の分解（resolution）は、項＜（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）＞を含む。プロセスＸ（Ｚ）６０８がアクションを実行すると、プロセス＞Ｚ＜６１０が活性化する。プロセス＞Ｚ＜６１０は、名前Ｚが非リテラル化されて、数学的に（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）と記述される、プロセスＰ１  ６０６を再構成することを表す。このプロセス（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）は、今度は別のプロセスＸ［Ｚ］６１２と並列して動作する。プロセスＸ［Ｚ］６１２は、名前Ｚが、プロセスＰ１  ６０６のリテラル化への代用（substitution）であり、Ｘという名前のポートで送り出されるという点で、プロセスＬＩＦＴ  Ｘ．（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）６０４を簡約したもの（reduction）と似ている。複製またはプロセスの無限の組成は、プロセス＞Ｚ＜６１０の項Ｘ（Ｙ）が、名前Ｘで出力されようとしている名前Ｚを受け取るときに実現される。プロセス（Ｘ（Ｙ）．（＞Ｙ＜｜Ｘ［Ｙ］）｜Ｐ）の組成における一連のアクションおよび相互作用がもう一度起きて、これにより、π計算法の複製プリミティブがエミュレートされる。
【００３３】
図７Ａに、名前サービス７００を示す。名前サービス７００は、ρ計算法の言語３００〜５００のうちの１つで書かれている。名前サービス７００は、π計算法における新しい名前の実装についての問題点を回避または低減するために、新しい名前の新規作成を、言語のプリミティブとするのではなく、サービスに入れられることの容易さを例示している。項Ｎ（Ｉ，Ｘ，Ｆ，Ｒ）は、名前サービス７００に対する署名７０２を表す。４つの名前、Ｉ，Ｘ，Ｆ，Ｒが、署名７０２に提供される。第１の名前はポートＩ上で送られ、残りの名前はポートＸ上で送られ、ポートＦは、名前サービス７００に提供されるすべての名前と異なる新しい名前を受け取るのに使用される。
【００３４】
行７０４は、加数（summand）Ｉ（Ｙ）．（ＬＩＦＴ  Ｒ．（Ｙ［＜０＞］｜Ｎ（Ｉ，Ｘ，Ｆ，Ｒ））を定義し、これは名前サービス７００の１つの機能を記述している。行７０４では、名前サービス７００の初期化機能のためにアクションを実行し、および相互作用するプロセスが表現されている。行７０６は、別の加数Ｘ（Ｙ）．Ｒ（Ｓ）．（ＬＩＦＴ  Ｒ．（Ｙ［＜０＞］｜＞Ｓ＜）｜Ｎ（Ｉ，Ｘ，Ｆ，Ｒ））であり、これは名前サービス７００の主要な機能を表現している。行７０８では、また別の加数Ｆ（Ｂ）．Ｒ（Ｓ）．ＬＩＦＴ  Ｂ．（＜０＞［＜０＞］｜＞Ｓ＜）が定義されており、これは名前サービス７００に提供される他の名前とは異なる名前の作成において仕上げのためにアクションを実行するおよび相互作用するプロセスを表現している。
【００３５】
図７Ｂには、名前サービス７００の加数の構成要素のアクションの実行および相互作用を視覚的に示している。名前サービス７００は、プロセスＰ１  ７１０によってまとめて表してある。プロセスＩ（Ｙ）７１２は、活性化して名前Ｉを介して任意の名前を受け取り、その後、受け取った名前を名前Ｙに代入する。次に、プロセスの組成（ＬＩＦＴ  Ｒ．Ｙ［＜０＞］｜Ｐ１）７１４が活性化する。プロセスの組成７１４は、簡約されてプロセスの組成Ｒ［＜Ｙ［＜０＞］＞］｜Ｐ１になり、ここで、項＜０＞は不活性プロセス０のリテラル化を表し、項Ｙ［＜０＞］は不活性プロセス０のリテラル化が名前Ｙで利用可能になることを表し、項Ｒ［＜Ｙ［＜０＞］＞］はプロセスＹ［＜０＞］のリテラル化を表し、そのようなリテラル化が名前Ｒ（これは累算した情報を格納するためのレジスタ（register）を表す）で利用可能になることを表す。項｜Ｐ１は、プロセスＰ１  ７１０がプロセス項Ｒ［＜Ｙ［＜０＞］＞］と並列して動作することを表す。プロセス７１２、７１４は、行７０４で記述されている加数での名前サービス７００の機能を例示する。
【００３６】
プロセスＸ（Ｙ）７１６は、行７０６で示す加数における第１のアクションを表現し、名前サービス７００の別の機能を示している。項Ｘ（Ｙ）は、ポートＸを介して任意の名前を受け取ることができ、その後、そのような受け取った名前が名前Ｙに代入されることを表す。プロセスＸ（Ｙ）７１６がアクションを実行した後、別のプロセスＲ（Ｓ）７１８が活性化される。項Ｒ（Ｓ）は、名前Ｒによって任意の名前を受け取ることができ、その後、そのような受け取った名前が別の名前Ｓに代入されることを表す。プロセスＲ（Ｓ）７１８がアクションを実行した後、別のプロセスの組成（ＬＩＦＴ  Ｒ．（Ｙ［＜０＞］｜＞Ｓ＜）｜Ｎ（Ｉ，Ｘ，Ｆ，Ｒ））７２０が活性化する。プロセスの組成７２０は、数学的に別のプロセスの組成、Ｒ［＜（Ｙ［＜０＞］｜＞Ｓ＜）＞］｜Ｐ１に簡約することができ、ここで項＜０＞は不活性プロセス０のリテラル化を表し、項Ｙ［＜０＞］は項＜０＞をポートＹで送ることを表し、項｜はプロセスＹ［＜０＞］が別のプロセスと並列して実行されることを表し、項＞Ｓ＜は名前Ｓが非リテラル化されていることを表し、項＜（Ｙ［＜０＞］｜＞Ｓ＜）＞は、プロセスの組成（Ｙ［＜０＞］｜＞Ｓ＜）のリテラル化を表し、項Ｒ［＜（Ｙ［＜０＞］｜＞Ｓ＜）＞］は、プロセスの組成（Ｙ［＜０＞］｜＞Ｓ＜）のリテラル化が名前Ｒで利用可能になることを表し、項｜Ｐ１は、名前サービス７００がプロセスＰ１と並列して動作していることを表す。プロセス７１６、７１８および７２０は行７０６にある加数の構成要素であり、この被加数は、名前サービス７００の主要な機能を記述している。
【００３７】
プロセスＦ（Ｂ）７２２は、ポートＦを介して任意の名前を受け取り、その後、この受け取った名前が名前Ｂに代入されることを可能にする。名前Ｂは、名前サービス７００に提示される他の名前とは異なる名前が得られるコールバックポートを表す。プロセスＦ（Ｂ）７２２がアクションを実行した後、別のプロセスＲ（Ｓ）７２４が活性化する。プロセスＲ（Ｓ）７２４は、名前Ｒを介して任意の名前を受け取り、その後、受け取った名前は名前Ｓに代入される。プロセスＲ（Ｓ）７２４は、新しい名前についての累算済み情報に関するメモ（scratch）情報を格納するレジスタを指す。このプロセスの後、Ｒ（Ｓ）７２４がアクションを実行した後に、別のプロセスＬＩＦＴ  Ｂ．（＜０＞［＜０＞］｜＞Ｓ＜）７２６が活性化する。プロセスＬＩＦＴ  Ｂ．（＜０＞［＜０＞］｜＞Ｓ＜）７２６は、簡約してプロセスＢ［＜（＜０＞［＜０＞］｜＞Ｓ＜）＞］にすることができ、ここで、項０は不活性プロセスまたはプロセスの終了を表し、項＜０＞は不活性プロセス０のリテラル化を表し、項＜０＞［＜０＞］は不活性プロセス０のリテラル化から得られる名前が不活性プロセス０のリテラル化を出力するポートとして使用されることを表す。項（＜０＞［＜０＞］｜＞Ｓ＜）は、プロセス＜０＞［＜０＞］が別のプロセス＞Ｓ＜と並列して動作していることを表し、項＞Ｓ＜は、名前Ｓが非リテラル化されつつあることを表し、項Ｂ［＜（＜０＞［＜０＞］｜＞Ｓ＜）＞］は、プロセスの組成（＜０＞［＜０＞］｜＞Ｓ＜）のリテラル化がポートＢで利用可能になることを表す。
【００３８】
図８Ａ〜８Ｒには、複製サービス６００や名前サービス７００などのρ計算法のプログラムをコンパイルまたは実行するための方法８００を示している。ρ計算法のプログラムを分析する際、方法８００は、ρ式の構造およびコンテンツを規定する複数組の構文規則を実行する。ρ式の構造的合同を規定する複数組の等式規則（equational laws）も、方法８００によって実行される。また、言語３００〜５００などのρ計算法の言語は、ρ計算法の言語３００〜５００の複数組の構文規則に従って正しく形成されたρ式の意味を規定する複数組の操作意味論の規則を含む。明瞭さのために、方法８００の以下の説明では、図３Ａ〜５Ａに示すρ計算法の言語３００〜５００に関して例示した様々な要素への参照を行う。
【００３９】
本題からそれるが、方法８００は、好ましくはρベースのマイクロ・プロセッサ２００の構成要素またはρベースのマイクロ・プロセッサのアレイを同期させるために使用できるコンパイラの一部を形成する。この同期の制御は、マイクロ・プロセッサが提供する暗黙の制御に依存せずに、コンパイラによって明示的に制御される。最近のＣＩＳＣベースのマイクロ・プロセッサでは、実行されそうな次の命令についての推測を提供する回路を利用して、プログラムの実行を高速化するようになっている。たとえば、一部のＣＩＳＣベースのマイクロ・プロセッサでは、プログラム中で分岐が起きるか起こらないかを推測し、適当な場所から実行コードをフェッチするプリフェッチと呼ばれる命令を使用する技法が使用される。分岐命令が実行されると、この命令および次に実行される命令がバッファに格納される。この情報を使用して、次にこの命令が実行されるときはどちらに分岐するかを予測する。この予測が正しければ、これはうまく働く。この予測が正しくなければ、分岐の実行によってキャッシュヒットがはずれ、またはパイプラインブレイクが生じ、その結果システムは次の命令を取り出す必要によって劇的に遅くなる。この問題は、実行プログラムが逐次的でなく非同期であり、並列性が要求されるとき、複雑化される。
【００４０】
本発明の様々な実施形態のコンパイラは、ＣＩＳＣベースのマイクロ・プロセッサから予測の必要性を減少させる。本発明の様々な実施形態のコンパイラにより、単一の集積回路上または複数の集積回路上にある１つまたは複数のマイクロ・プロセッサ上での明示的な同期モデルを創出することが可能になる。本発明の様々な実施形態のコンパイラは、アセンブリ言語にまさるものとして区別可能な、ρ計算法の言語３００〜５００などの、数学的言語で書かれたプログラムのコンパイルを行う。アセンブリ言語では、それぞれの文が単一のマシン命令に対応する省略形またはニモニック・コードが使用される。ρ計算法の言語３００〜５００は、基礎にある機械語の上に、アセンブリ言語から発展したある抽象化のレベルを提供する。ρ計算法の言語３００〜５００の文は、コンピュータの言語の構造を定義する１組の構文的および意味論的な規則を定義する。プロセスと名前との協調およびプロセスの進展（evolution of processes）のもつ置換的ニュアンスが、ρ計算法の言語３００〜５００を用いて表現することが可能になる。こうした表現力のニュアンスは、ρ計算法の言語３００〜５００の数学（mathematics）によって適切に保存され、その結果プログラマの意図は、アセンブリ言語や機械語などの低水準言語へのコンパイルの過程で弱められることなく、最終的に実現される。従来のプログラミング言語では、プログラマの意図は、プログラムが高水準言語から低水準言語へとコンパイルされる際に融けるようにして失われてしまう。高水準言語は低水準言語よりも表現力が高く、これは高水準言語の含む情報がより多いためであるが、望ましくないことに、この情報がコンパイルまたはリンクの過程で取り除かれてしまっている。
【００４１】
図８Ａに戻ると、開始ブロックから、方法８００は、継続ターミナル（「ターミナルＡ」）と出口ターミナル（「ターミナルＢ」）の間で定義される１組の方法ステップ８０２へと進む。この１組の方法ステップ８０２は、ρ文（ρ statement）の構造およびコンテンツを規定する構文規則に照らしてρ計算法のプログラムを動作させる。ターミナルＡ（図８Ｂ）から、方法８００は、ブロック８０８へと進み、ここでρ計算法のプログラムまたはサービスからρ式（Π）を抽出する。次に、判断ブロック８１０で、検査を行ってそのρ式が”０”という形をしているかどうかを決定する。判断ブロック８１０での検査の答えがＹＥＳである場合、方法８００はブロック８１２に進み、ここでそのρ式は、不活性または停止アクションを表すρプロセスとなる。次いで、方法は別の継続ターミナル（「ターミナルＡ４」）へと続く。判断ブロック８１０での検査の答えがＮＯである場合、方法８００は別の判断ブロック８１４に進み、ここで別の検査を行ってそのρ式がＸ［Ｙ］の形をしているかどうかを決定する。判断ブロック８１４での検査の答えがＹＥＳである場合、そのρ式は、名前Ｙが名前Ｘで利用可能になる出力アクションを表すρプロセスとなる。次いで、方法８００はターミナルＡ４へと進む。判断ブロック８１４での検査の答えがＮＯである場合、方法８００は別の継続ターミナルへと続く（「ターミナルＡ１」）。
【００４２】
ターミナルＡ１（図８Ｃ）から、方法８００は判断ブロック８１８へと進み、ここでそのρ式がＸ（Ｚ）．Ｐの形をしているかどうかを決定する。判断ブロック８１８での検査の答えがＹＥＳである場合、そのρ式は、入力アクションに続くプロセスＰを表すρプロセスとなる。言い換えれば、名前Ｘによって任意の名前を受け取ることができ、その後、受け取った名前で名前Ｚが置き換えられ、そのプロセスはプロセスＰを継続する。方法８００はターミナルＡ４へと進む。判断ブロック８１８での検査の答えがＮＯである場合、方法８００は判断ブロック８２２に入り、ここで別の検査を実行してそのρ式がＬＩＦＴ  Ｘ．Ｐの形をしているかどうかを決定する。判断ブロック８２２での検査の答えがＹＥＳである場合、そのρ式は、リフト・アクションを表すρプロセスとなる。ブロック８２４を参照されたい。次いで、方法８００はターミナルＡ４へと続く。判断ブロック８２２での検査の答えがＮＯである場合、方法８００は別の継続ターミナル（「ターミナルＡ２」）へと進む。
【００４３】
ターミナルＡ２（図８Ｄ）から、方法８００は判断ブロック８２６へと進み、ここで検査を行ってそのρ式がＰ｜Ｐの形をしているかどうかを決定する。判断ブロック８２６での検査の答えがＹＥＳである場合、そのρ式は、組成として別のプロセスと並列して動作するプロセスを表すρプロセスとなる。ブロック８２８を参照されたい。次いで、方法８００はターミナルＡ４へと進む。判断ブロック８２６での検査の答えがＮＯである場合、方法８００は別の判断ブロック８３０へと進み、ここで検査を行ってそのρ式が＞Ｘ＜の形をしているかどうかを決定する。判断ブロック８３０での検査の答えがＹＥＳである場合、そのρ式は、名前Ｘの非リテラル化を表すρプロセスである。次いで、方法８００はターミナルＡ４へと進む。判断ブロック８３０での検査の答えがＮＯである場合、次いで方法８００は別の継続ターミナル（「ターミナルＡ３」）へと進む。
【００４４】
ターミナルＡ３（図８Ｅ）から、方法８００は判断ブロック８３４へと進み、ここで検査を行ってそのρ式が＜Ｐ＞，＃（Ｐ）≦Ｋの形をしているかどうかを決定する。判断ブロック８３４での検査の答えがＹＥＳである場合、そのρ式は名前Ｘなどの名前を表現するρプロセスＰのリテラル化となる。構文フレーズ”＃（Ｐ）≦Ｋ”は、名前の作成においてρプロセスのリテラル化に制約が課されていることを表す。１つの適切な制約は、ρプロセスＰの構文木の大きさを、それを超えるとプロセスＰのリテラル化からは名前の作成ができないような特定のしきい値と比べて検査することを含む。他の制約も、ρプロセスを実行するマイクロ・プロセッサに結合された有限な資源の一部を少なくともその制約がモデル化している限りは可能である。次いで、方法８００はターミナルＡ４へと続く。判断ブロック８３４での検査の答えがＮＯである場合、方法８００は別の判断ブロック８３８へと続き、ここで検査を行ってそのρ式が＜Ｐ＞，Ｐ：Ｔの形をしているかどうかを決定する。判断ブロック８３８での検査の答えがＹＥＳである場合、そのρ式は、型Ｔの制約するρプロセスのリテラル化となる。ブロック８４０を参照されたい。ρプロセスが特定の型のメンバであることを強制することにより、リテラル化して名前を形成することのできるプロセスの型に対する管理が支障なく行われ、したがってプロセスの通信機能に対する管理が行われる。次いで、方法８００はターミナルＡ４へと続く。判断ブロック８３８での検査の答えがＮＯである場合にも、方法８００はターミナルＡ４へと続く。判断ブロック８４２では検査を行ってまだ評価すべきρ式があるかどうかを決定する。答えがＮＯである場合、方法８００は出口ターミナルＢへと続く。そうでない場合、判断ブロック８４２での検査の答えはＹＥＳとなり、方法８００は別の継続ターミナル（「ターミナルＡ５」）へと進む。ターミナルＡ５（図８Ｂ）から、方法８００はブロック８０８へとループを戻り、ここで上記の処理ステップが繰り返される。
【００４５】
出口ターミナルＢから、方法８００は、継続ターミナル（「ターミナルＣ」）および出口ターミナル（「ターミナルＤ」）の間で定義される、１組の方法ステップ８０４へと続く。この１組の方法ステップ８０４では、１組の等式規則を使用してρ式を構造的合同に関して検査する。ターミナルＣ（図８Ｆ）から、方法８００はブロック８４４へと進み、ここで方法８００は１個のρ式を抽出する。ブロック８４６で、検査を行ってそのρ式が＜＞Ｘ＜＞の形をしているかどうかを決定する。判断ブロック８４６での検査の答えがＹＥＳである場合、方法８００は、そのρ式が名前Ｘと構造的に合同であると推論する。ブロック８４８を参照されたい。次いで、方法８００は別の継続ターミナル（「ターミナルＣ３」）へと続く。そうでない場合、判断ブロック８４６での検査の答えはＮＯとなり、方法８００は判断ブロック８５０へと進み、ここで別の検査を行ってそのρ式がＰ｜０の形をしているかどうかを決定する。判断ブロック８５０での検査の答えがＹＥＳである場合、方法８００は、そのρ式がプロセスＰと構造的に合同であると推論する。次いで、方法８００はターミナルＣ３へと入る。そうでない場合、判断ブロック８５０での検査の答えはＮＯとなり、方法は別の継続ターミナル（「ターミナルＣ１」）へと続く。
【００４６】
ターミナルＣ１（図８Ｇ）から、方法８００は判断ブロック８５４へと進み、ここで検査を行ってそのρ式が０｜Ｐの形をしているかどうかを決定する。判断ブロック８５４での検査の答えがＹＥＳである場合、方法８００は、そのρ式がプロセスＰと構造的に合同であると推論する。ブロック８５６を参照されたい。方法８００はターミナルＣ３へと入る。判断ブロック８５４での検査の答えがＮＯである場合、方法８００は引き続いて判断ブロック８５８で別の検査を実行して、そのρ式がＰ０｜Ｐ１の形をしているかどうかを決定する。判断ブロック８５８での検査の答えがＹＥＳである場合、方法８００は、そのρ式がプロセスの組成Ｐ１｜Ｐ０と構造的に合同であると推論する。ブロック８６０を参照されたい。方法８００はターミナルＣ３へと続く。判断ブロック８５８での検査の答えがＮＯである場合、方法８００は別の継続ターミナル（「ターミナルＣ２」）へと続く。
【００４７】
ターミナルＣ２（「図８Ｈ」）から、方法８００は判断ブロック８６２へと続き、ここで検査を行ってそのρ式が（Ｐ０｜Ｐ１）｜Ｐ２の形をしているかどうかを決定する。判断ブロック８６２での検査の答えがＹＥＳである場合、そのρ式はプロセスの組成Ｐ０｜（Ｐ１｜Ｐ２）と構造的に合同となる。方法８００はターミナルＣ３へと続く。判断ブロック８６２での検査の答えがＮＯである場合にも、方法８００はターミナルＣ３へと続く。
【００４８】
ターミナルＣ３（図８Ｉ）からは、判断ブロック８６６で方法８００は検査を行って評価すべきρ式がまだあるかどうかを決定する。答えがＮＯである場合、方法８００は出口ターミナルＤへと続く。そうでない場合、判断ブロック８６６での検査の答えはＹＥＳとなり、方法は別の継続ターミナル（「ターミナルＣ４」）へと続く。ターミナルＣ４（図８Ｆ）からは、方法８００はブロック８４４へとループを戻り、ここで上述の処理ステップが繰り返される。
【００４９】
出口ターミナルＤ（図８Ａ）から、方法８００は、継続ターミナル（「ターミナルＥ」）と出口ターミナル（「ターミナルＦ」）の間で定義される１組の方法ステップ８０６へと進む。この１組の方法ステップ８０６は、ρ計算法のプログラムを１組の操作的意味論の規則に照らして動作させてρプロセスの表現の意味を検査する。ターミナルＥ（図８Ｊ）から、方法８００はブロック８６８へと進み、ここで方法８００は評価のため１個のρ式を抽出する。方法８００は判断ブロック８７０へと進み、ここで検査を行ってそのρ式がＬＩＦＴ  Ｘ．Ｐの形をしているかどうかを決定する。判断ブロック８７０での検査の答えがＹＥＳである場合、そのρ式を簡約してＸ［＜Ｐ＞］にする。次いで方法は別の継続ターミナル（「ターミナルＥ１１」）へと続く。判断ブロック８７０での検査の答えがＮＯである場合、方法８００は、判断ブロック８７４で別の検査を実行し、ここでそのρ式がＰ０｜Ｐ２の形をしているかどうかを決定する。判断ブロック８７４での検査の答えがＹＥＳである場合、方法は別の継続ターミナル（「ターミナルＥ１」）へと続く。そうでない場合、判断ブロック８７４での検査の答えはＮＯとなり、方法８００は別の継続ターミナル（「ターミナルＥ２」）へと入る。
【００５０】
ターミナルＥ１（図８Ｋ）から、方法８００は判断ブロック８７６へと進み、ここで検査を行って項Ｐ０を項Ｐ１に簡約可能（reducible）とすることができるかどうかを決定する。判断ブロック８７６での検査の答えがＹＥＳである場合、そのρ式を簡約してＰ１｜Ｐ２にする。次いで、方法８００はターミナルＥ１１へと続く。そうでない場合、判断ブロック８７４での検査の答えはＮＯとなり、方法８００はターミナルＥ２へと続く。ターミナルＥ２（図８Ｋ）からは、検査を行ってそのρ式がＰ２の形をしているかどうかを決定する。判断ブロック８８０を参照されたい。判断ブロック８８０での検査の答えがＹＥＳである場合、別の検査を実行して項Ｐ２が項Ｐ０と構造的に合同であるであるかどうかを決定する。判断ブロック８８２を参照されたい。判断ブロック８８２での検査の答えがＹＥＳである場合、方法８００は別の継続ターミナル（「ターミナルＥ３」）へと進む。判断ブロック８８０または判断ブロック８８２での検査の答えがＮＯである場合、方法８００は別の継続ターミナルへと入る（「ターミナルＥ４」）。
【００５１】
ターミナルＥ３（図８Ｌ）から、方法８００は結合ブロック８８４へと進み、ここで検査を行って、項Ｐ０を項Ｐ１に簡約可能かどうかを決定する。判断ブロック８８４での検査の答えがＹＥＳである場合、判断ブロック８８６で別の
検査を行って、項Ｐ１は構造的に項Ｐ３と合同かどうかを決定する。判断ブロック８８６での検査の答えがＹＥＳである場合、方法８００は、項Ｐ２を簡約して項Ｐ３にする。判断ブロック８８８を参照されたい。方法８００はターミナルＥ１１へと進む。判断ブロック８８４または判断ブロック８８６での検査の答えがＮＯである場合、方法８００はターミナルＥ４へと続く。
【００５２】
ターミナルＥ４（図８Ｌ）からは、方法８００は検査を実行してそのρ式がＸ０［Ｘ２］｜Ｘ０（Ｘ１）．Ｐ０の形をしているかどうかを決定する。判断ブロック８９０を参照されたい。判断ブロック８９０での検査の答えがＹＥＳである場合、方法８００は別の継続ターミナル（「ターミナルＥ５」）へと進む。そうでない場合、判断ブロック８９０での検査の答えはＮＯとなり、次いで方法は別の継続ターミナル（「ターミナルＥ９」）へと入る。
【００５３】
ターミナルＥ５（図８Ｍ）からは、そのρ式を簡約して第２のρ式（Π１）、すなわちＰ０｛Ｘ２／Ｘ１｝にする。ブロック８９２を参照されたい。判断ブロック８９４で検査を実行して、第２のρ式が（０）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしているかどうかを決定する。判断ブロック８９４での検査の答えがＹＥＳである場合、この第２のρ式をプロセス０と等しいと置く（equate）ことができる。ブロック８９６を参照されたい。次いで、方法８００はターミナルＥ１１に進む。そうでない場合、判断ブロック８９４での検査の答えはＮＯとなり、方法８００は別の判断ブロック８９８へと進んで、ここで別のテストを実行して第２のρ式が（Ｒ｜Ｓ）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしているかどうかを決定する。判断ブロック８９８での検査の答えがＹＥＳである場合、第２のρ式を（Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜｜（Ｓ）＞｛＜Ｑ＞／＜Ｐ＞｝＜と等しいと置くことができる。ブロック８９９を参照されたい。方法８００はターミナルＥ１１へと続く。判断ブロック８９８での検査の答えがＮＯである場合、方法８００は別の継続ターミナル（「ターミナルＥ６」）へと続く。
【００５４】
ターミナルＥ６（図８Ｎ）からは、方法８００は、判断ブロック８９７で検査を実行して第２のρ式が（Ｘ（Ｙ）．Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしているかどうかを決定する。判断ブロック８９７での検査の答えがＹＥＳである場合、第２のρ式を（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝（Ｙ）．（（Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜）と等しいと置くことができる。ブロック８９５を参照されたい。方法８００はターミナルＥ１１へと進む。判断ブロック８９７での検査の答えがＮＯである場合、方法８００は判断ブロック８９３へと入り、ここで別の検査を行って第２のρ式が（Ｘ［Ｙ］）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしているかどうかを決定する。判断ブロック８９３での検査の答えがＹＥＳである場合、第２のρ式を（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝［（Ｙ）｛＜Ｑ＞／＜Ｐ＞｝］と等しいと置くことができる。ブロック８９１を参照されたい。方法８００はターミナルＥ１１へと進む。判断ブロック８９３での検査の答えがＮＯである場合、方法８００は別の継続ターミナル（「ターミナルＥ７」）へと進む。
【００５５】
ターミナルＥ７（図８Ｏ）から、方法は判断ブロック８８９へと続き、ここで検査を実行して第２のρ式が（ＬＩＦＴ  Ｘ．Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしているかどうかを決定する。判断ブロック８８９での検査の答えがＹＥＳである場合、第２のρ式を（ＬＩＦＴ  Ｘ）｛＜Ｑ＞／＜Ｐ＞｝．（Ｒ）＞｛＜Ｑ＞／＜Ｐ＞｝＜と等しいと置くことができる。ブロック８８７を参照されたい。方法８００はターミナルＥ１１へと進む。判断ブロック８８９での検査の答えがＮＯである場合、方法８００は、判断ブロック８８５で別の検査を行って第２のρ式が（＞Ｘ＜）＞｛＜Ｑ＞／＜Ｐ＞｝＜の形をしているかどうかを決定する。判断ブロック８８５での検査の答えがＹＥＳである場合、方法８００は別の継続ターミナル（「ターミナルＥ８」）へと入る。そうでない場合、判断ブロック８８５での検査の答えはＮＯとなり、方法８００はターミナルＥ９へと進む。
【００５６】
ターミナルＥ８（図８Ｐ）から、方法８００は判断ブロック８８３へと進み、ここで検査を行って、名前Ｘが、プロセスＰのリテラル化を表す＜Ｐ＞と構造的に合同であるかどうかを決定する。この答えがＹＥＳである場合、第２のρ式はプロセスＱと等しいと置くことができる。ブロック８８１を参照されたい。方法８００ターミナルＥ１１へと入る。判断ブロック８８３での検査の答えがＮＯである場合、方法８００はブロック８７９へと進み、ここで第２のρ式は、名前Ｘの非リテラル化である＞Ｘ＜と等しいと置くことができる。プロセスはターミナルＥ１１へと続く。
【００５７】
ターミナルＥ９（図８Ｑ）から、方法８００は判断ブロック８７７へと進み、ここで検査を実行して第２のρ式が（Ｘ）｛＜Ｑ＞／＜Ｐ＞｝の形をしているかどうかを決定する。この答えがＹＥＳである場合、方法８００は別の継続ターミナル（「ターミナルＥ１０」）へと進む。そうでない場合、判断ブロック８７７での検査の答えはＮＯとなり、方法はターミナルＥ１１へと進む。
【００５８】
ターミナルＥ１０（図８Ｒ）から、方法８００は判断ブロック８７５へと進み、ここで検査を行って、名前Ｘが、プロセスＰのリテラル化を表す＜Ｐ＞と構造的に合同であるかどうかを決定する。判断ブロック８７５での検査の答えがＹＥＳである場合、第２のρ式は、プロセスＱのリテラル化を表す＜Ｑ＞と等しいと置くことができる。ブロック８７３を参照されたい。方法８００はターミナルＥ１１へと続く。判断ブロック８７５での検査の答えがＮＯである場合、方法８００は、第２のρ式を名前Ｘと等しいと置くことができる。ブロック８７１を参照されたい。ブロック８７１から、方法８００はターミナルＥ１１へと続き、判断ブロック８６９で検査を行って、評価すべきρ式がまだあるかどうかを決定する。その答えがＮＯである場合、方法８００は出口ターミナルＦへと続き、ここで方法８００は終わり、実行を終了する。そうでない場合、判断ブロック８６９での検査の答えはＹＥＳとなり、方法８００は別の継続ターミナル（「ターミナルＥ１２」）に進む。ターミナルＥ１２から、方法８００はブロック８６８へとループを戻り、ここで上記の処理ステップが繰り返される。
【００５９】
本発明の好ましい一実施形態を例示し説明してきたが、本発明の趣旨および範囲から逸脱することなくこの実施形態において様々な変更を行えることが理解されよう。
【００６０】
排他的な特性（property）または特権（privilege）が請求される本発明の実施形態は、特許請求の範囲で定義される。
【図面の簡単な説明】
【００６１】
【図１】π計算法のプログラムがＣＩＳＣベースのマイクロ・プロセッサ上での実行のためにＣＩＳＣベースのミドル・ウェアとインターフェースを取るコンピューティング・システムを示す構成図である。
【図２Ａ】本発明の一実施形態による、ρベースのミドル・ウェアとインターフェースを取る、ρベースのマイクロ・プロセッサ上での実行のためのサービスを示す構成図である。
【図２Ｂ】本発明の一実施形態による、ρベースのマイクロ・プロセッサの内部アーキテクチャを示す構成図である。
【図３Ａ】本発明の一実施形態に従って形成される、プロセスプログラミング言語であるρ計算法の一部を示すテキスト図である。
【図３Ｂ】本発明の一実施形態による、ρ計算法の反射的性質を示す絵画図である。
【図４Ａ】本発明の一実施形態による、プロセスが型付けされるプロセスプログラミング言語であるρ計算法の一部を示すテキスト図である。
【図４Ｂ】本発明の一実施形態による、型を用いたρ計算法の反射的性質に対する制約を示す絵画図である。
【図５Ａ】本発明の一実施形態による、ρ計算法に基づく機械計算の一部を示すテキスト図である。
【図５Ｂ】本発明の一実施形態による、構文木を用いたρ計算法の反射的性質に対する制約を示す絵画図である。
【図６Ａ】本発明の一実施形態による、複製サービスを実装するρ計算法のプログラムを示すテキスト図である。
【図６Ｂ】本発明の一実施形態による、図６Ａで静的に示した複製サービスを動的に示す絵画図である。
【図７Ａ】本発明の一実施形態による、新しい名前の新規作成を実装するρ計算法のサービスを示すテキスト図である。
【図７Ｂ】本発明の一実施形態による、図７Ａで静的に示した名前サービスを動的に示す絵画図である。
【図８Ａ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｂ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｃ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｄ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｅ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｆ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｇ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｈ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｉ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｊ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｋ】ρ計算のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｌ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｍ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｎ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｏ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｐ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｑ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【図８Ｒ】ρ計算法のサービスのコンパイルまたはρ計算法のサービスの実行のためのこの発明に従って形成される例示的な方法を示すプロセス図である。
【符号の説明】
【００６２】
１００  コンピューティング・システム
１０２  ＣＩＳＣベースのマイクロ・プロセッサ
１０４  電源
１０６  メモリ
１０８  ＣＩＳＣベースのミドル・ウェア
１１０  π計算法のプログラム
２００  ρベースのマイクロ・プロセッサ
２０２  内部データ・バス
２０４  累算器
２０６  算術論理演算ユニット
２０８  ステータス・レジスタ
２１０  プログラム・カウンタ
２１２  命令レジスタ
２１４  タイミングおよび制御
２１６  データ・バッファ
２１８  アドレス・バッファ
２２２  入出力装置
２２４  メモリ
２２６  ρベースのミドル・ウェア
２２８  サービス
３００  ρ計算
３１６Ａ  プロセス
３１６Ｂ  名前
３１８Ａ  名前
３１８Ｂ  プロセス
４００  ρ計算における型付きプロセス
４２０、４２２、４２８  計算エンティティ
４２０Ａ、４２２Ａ、４２８Ａ  プロセス
４２０Ｂ、４２２Ｂ、４２８Ｂ  名前
４２４  ポート
５００  機械計算
５２０，５２２  計算エンティティ
５２０Ａ、５２２Ａ  プロセス
５２０Ｂ、５２２Ｂ  名前
５２０Ｄ  加速度
５２０Ｆ  マイル
５２０Ｇ  時間
５２０Ｊ  時間
５２２Ｄ  速度
５２２Ｆ  マイル
５２２Ｇ  時間
６００  複製サービス
６０２，６０４，６０６，６０８，６１０、６１２  プロセス
７００  名前サービス
７０２  署名
７１０〜７２６  プロセス
【図１】
2005228325.tif 000003
【図２Ａ】
2005228325.tif 000004
【図２Ｂ】
2005228325.tif 000005
【図３Ａ】
2005228325.tif 000006
【図３Ｂ】
2005228325.tif 000007
【図４Ａ】
2005228325.tif 000008
【図４Ｂ】
2005228325.tif 000009
【図５Ａ】
2005228325.tif 000010
【図５Ｂ】
2005228325.tif 000011
【図６Ａ】
2005228325.tif 000012
【図６Ｂ】
2005228325.tif 000013
【図７Ａ】
2005228325.tif 000014
【図７Ｂ】
2005228325.tif 000015
【図８Ａ】
2005228325.tif 000016
【図８Ｂ】
2005228325.tif 000017
【図８Ｃ】
2005228325.tif 000018
【図８Ｄ】
2005228325.tif 000019
【図８Ｅ】
2005228325.tif 000020
【図８Ｆ】
2005228325.tif 000021
【図８Ｇ】
2005228325.tif 000022
【図８Ｈ】
2005228325.tif 000023
【図８Ｉ】
2005228325.tif 000024
【図８Ｊ】
2005228325.tif 000025
【図８Ｋ】
2005228325.tif 000026
【図８Ｌ】
2005228325.tif 000027
【図８Ｍ】
2005228325.tif 000028
【図８Ｎ】
2005228325.tif 000029
【図８Ｏ】
2005228325.tif 000030
【図８Ｐ】
2005228325.tif 000031
【図８Ｑ】
2005228325.tif 000032
【図８Ｒ】
2005228325.tif 000033
【外国語明細書】
2005228325000001.pdf