概要:ワールドは、多重計算を実現するための機構です。各ワールドに問題を配置して、互いの情報を参照や変更をしながら計算を行うことができます。これらの機能を用いて、複雑な問題を、単純化し効率的に解くことができます。ワールドは、等価変換による計算のための基本的な空間です。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 全てのルールが適用不可能になるまで変換を続けます。 createLeafWorldで生成されたルールは、システムによって自動的に消去されます。 |
述語名/引数 | (setDDWorld *clauses *w) (setSexpWorld *clauses *w) |
要約 | ワールドに節集合をセットします。 |
互換性 | Win Unix |
解説 | 節集合の形式についてはcreateRootWorldの例を参照してください。 対象のワールドに節が存在する場合は上書きされます。 |
述語名/引数 | (callRootWorld *w *t) |
要約 | 独立ワールドを指定された方法で実行します。 |
互換性 | Win Unix |
解説 | *tには以下の値が指定可能です。 0
全てのルールが適用不可能になるまで変換を続けます。
|
述語名/引数 | (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を参照してください。 |