ワールド

概要:ワールドは、多重計算を実現するための機構です。各ワールドに問題を配置して、互いの情報を参照や変更をしながら計算を行うことができます。これらの機能を用いて、複雑な問題を、単純化し効率的に解くことができます。ワールドは、等価変換による計算のための基本的な空間です。ETIの実行開始時に暗黙のうちに1つのワールドが生成されます。それ以外のワールドは、ユーザ定義ルールから明示的に指定された場合に生成されます。

上へ

述語名/引数  (createRootWorld *w)
(createRootWorld *w *mode)
要約 新しい独立ワールドを作り、その識別子を*wに返します。
互換性 Win Unix
解説 *modeには以下の値が指定可能です。
empty ユーザー定義ルールをを持たないワールドを生成します。
copy  親ワールドのコピーのルールを持ちます。このルールは独立しています。
ref   親ワールドと同じルールを持ちます。ルールの変更は、互いに影響します。

一度以上変換が成功した場合は成功、変換が一度も成功しなかった場合は失敗します。

例:

(RuleClassOrder 1)

(as (testWorld):
(createRootWorld *w)
(setSexpWorld ( ( (ans (append *1 *2 (1 2 3))) (append *1 *2 (1 2 3))) ) *w)
(callRootWorld *w 0)
(getSexpWorld *s *w)
(print *s)
(killRootWorld *w))

(Rule ap
(Head (append *x *y *z))
(Body (exec (= *x (*X| *X1)) (= *z (*X | *Z1)))
         (append *X1 *y *Z1))
(Body (exec (= *x () ) (= *y *z))) )

 


述語名/引数  (createLeafWorld *w)
 (createLeafWorld *w *t)
要約 現在のワールドに従属する、新しい従属ワールドを作り、その識別子を*wに返します。
互換性 Win Unix
解説 *tは、従属ワールドの変換のされ方を指定します。*tには以下の値が指定可能です。

0  全てのルールが適用不可能になるまで変換を続けます。
負 変換回数を指定します。変換回数は*tの絶対値になります。指定された回数だけ変換が実行されると他のワールドに処理が移ります。
正 変換時間をmsec単位で指定します。指定された時間だけ変換を繰り返した後、他のワールドに処理が移ります。

createLeafWorldで生成されたルールは、システムによって自動的に消去されます。
killRootWorldで消去しないでください。

 


述語名/引数  (setDDWorld *clauses *w)
 
(setSexpWorld *clauses *w)
要約 ワールドに節集合をセットします。
互換性 Win Unix
解説 節集合の形式についてはcreateRootWorldの例を参照してください。

対象のワールドに節が存在する場合は上書きされます。

 


述語名/引数  (callRootWorld *w *t)
要約 独立ワールドを指定された方法で実行します。
互換性 Win Unix
解説 *tには以下の値が指定可能です。

0  全てのルールが適用不可能になるまで変換を続けます。
負 変換回数を指定します。変換回数は*tの絶対値になります。指定された回数だけ変換が実行されると終了します。
正 変換時間をmsec単位で指定します。指定された時間だけ変換を繰り返した後、終了します。

 

 


述語名/引数  (getDDWorld *s *w)
 (getSexpWorld *s *w)
要約 ワールドから節集合を取得します。
互換性 Win Unix
解説 このルールはワールドを変更しません。

 


述語名/引数  (getFactWorld *s *w)
要約 指定されたワールド*wから、単位節を一つ取り出します。取り出された節はs式に変換され、*sと単一化されます。取り出された単位節は、ワールドから削除されます。
互換性 Win Unix
解説 getFactWorldはこのルールの実行された節から、対象のワールドの単位節の見え方を変更します。
よって、対象のワールドが、他からも参照されているとき、この変更は、他の参照に影響をあたえません。

 


述語名/引数  (getAllFactWorld *s *w)
要約 指定されたワールド*wから、全ての単位節を取り出し*sと単一化します。取り出された単位節は、ワールドから削除されます。
互換性 Win Unix
解説 getFactWorldはこのルールの実行された節から、対象のワールドの単位節の見え方を変更します。
よって、対象のワールドが、他からも参照されているとき、この変更は、他の参照に影響をあたえません。

 


述語名/引数  (emptyWorld *w)
要約 指定されたワールド*wに節があるかどうか調べます。節が存在しないとき成功します。
互換性 Win Unix
解説  

 


述語名/引数  (killRootWorld *w)
要約 指定されたワールド*wを消去します。
互換性 Win Unix
解説 このルールで消去できるのはcreateRootWorldで生成された独立ワールドだけです。

 


述語名/引数  (getWorldID *w)
要約 現在処理中のワールドの識別子を取得します。
互換性 Win Unix
解説  

 


述語名/引数  (exCompute *ws)
 (exCompute *w *ws)
要約 全通り計算を行ないます。
互換性 Win Unix
引数 *w [in] 計算対象のワールド
*ws [out] 計算結果のワールドのリスト
解説 このルールはNルールの全通り計算を1ステップ行ないます。結果はワールドの集合としてそれぞれ異なったルール適用の結果を保持します。

このルールを使うためにはルールのロードの前にsetExhaustiveModeによって全通り計算モードに設定する必要があります。

 


述語名/引数  (setExhaustiveMode *w *f)
要約 全通り計算モードの設定を行ないます。
互換性 Win Unix
引数 *w [in] 設定対象のワールド
*f [in] 設定する値on又はoff
解説 ルールのロードの前にsetExhaustiveModeによって全通り計算モードに設定する必要があります。

 


述語名/引数  (copyRootWorld *w *cw)
要約 独立ワールドを指定された方法で実行します。
互換性 Win Unix
引数 *w [in] コピー元
*cw [out] コピー先
成功/失敗 true  正しくコピーされ、*cwのマッチングに成功した。
false 上記以外
解説 *wが持つルール集合がどのようにコピーされるかは*wのコピーモードに依存します。こぴモードについてはcreateRootWorld/2を参照してください。