JPH04123232A - 一貫性検出方法 - Google Patents
一貫性検出方法Info
- Publication number
- JPH04123232A JPH04123232A JP2412972A JP41297290A JPH04123232A JP H04123232 A JPH04123232 A JP H04123232A JP 2412972 A JP2412972 A JP 2412972A JP 41297290 A JP41297290 A JP 41297290A JP H04123232 A JPH04123232 A JP H04123232A
- Authority
- JP
- Japan
- Prior art keywords
- rule
- variable
- execution
- inference
- breakpoint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3698—Environments for analysis, debugging or testing of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
[0001]
本発明はデバツギング方法及びデバッグ装置に関し、特
にルールに基づくエキスパートシステムを有するコンピ
ュータシステムに適用して好適なものである。 [0002]
にルールに基づくエキスパートシステムを有するコンピ
ュータシステムに適用して好適なものである。 [0002]
エキスパートシステムは模倣エキスパート問題解決動作
を試してみるコンピュータプログラムである。これらの
プログラムは所定の目的を達成するために0群の観測か
ら結果を導くため又は仮説を立ててこれを確めるなめに
一般に使用される。これらのシステムはその基本構成要
素としてルールを用い、特定の問題を解決するために例
えば順方向連鎖又は逆方向連鎖のような制御手続きを用
いてこれらのルールを取り扱う。 [0003] ルールは「IFJ条件、l’−THENJアクション、
「ELs、Elアクションを表した形状の記述である。 この条件は適用されるルールについて真でなくてはなら
ない1つ以上の事実を記述する。アクションの部分はそ
のルールが真又は偽のときに採られるべきアクションを
記述する。真及び偽の場合のアクションはそれぞれ[T
HENJ部分及び「E L S E1部分に見い出され
る。この条件及びアクションは問題解決の状態について
の情報を一時的に記憶する変数と呼ばれる。かくして、
1つのルールにおけるアクションは他のルールの条件又
はアクションにおいて用いられる変数に1つの値を与え
ることになる。 [0004] 各ルールは独立ユニットと考えられ、そして宣言型とし
て入れられて処理されるカミルール間において変数を共
用すればそれらの対話を可能にする。順方向連鎖システ
ムではルール開始の効果はルール条件が真であるかどう
かを知るために繰り返しチエツクを行うことにより伝播
する。−群の初期変数値がこれらルール条件に対して突
合される。ルール条件が真になると、適正なルールアク
ションが実行され、その結果変数値が突合される。 [0005] 逆方向連鎖システムではこれらのルールが目標の変数値
を決めるために用いられる。−群の変数がまず目標とし
て作られる。これらの変数に値を割り当てる機能をもつ
ルールがソースとして考察される。これらのルールの条
件は変数を含んでいる。これらの変数が値をもてばルー
ルは目標の値を得ることができると評価される。これら
の変数が値をもたない場合にはこれが補助目標として決
定され、ソースとしては他のルールが用いられる。この
手続きは条件が評価されかつルールアクションの効果が
ソースルールの連鎖を介してリップルバックして元の目
標変数に値を割り当てるまで続けられる。 [0006]
を試してみるコンピュータプログラムである。これらの
プログラムは所定の目的を達成するために0群の観測か
ら結果を導くため又は仮説を立ててこれを確めるなめに
一般に使用される。これらのシステムはその基本構成要
素としてルールを用い、特定の問題を解決するために例
えば順方向連鎖又は逆方向連鎖のような制御手続きを用
いてこれらのルールを取り扱う。 [0003] ルールは「IFJ条件、l’−THENJアクション、
「ELs、Elアクションを表した形状の記述である。 この条件は適用されるルールについて真でなくてはなら
ない1つ以上の事実を記述する。アクションの部分はそ
のルールが真又は偽のときに採られるべきアクションを
記述する。真及び偽の場合のアクションはそれぞれ[T
HENJ部分及び「E L S E1部分に見い出され
る。この条件及びアクションは問題解決の状態について
の情報を一時的に記憶する変数と呼ばれる。かくして、
1つのルールにおけるアクションは他のルールの条件又
はアクションにおいて用いられる変数に1つの値を与え
ることになる。 [0004] 各ルールは独立ユニットと考えられ、そして宣言型とし
て入れられて処理されるカミルール間において変数を共
用すればそれらの対話を可能にする。順方向連鎖システ
ムではルール開始の効果はルール条件が真であるかどう
かを知るために繰り返しチエツクを行うことにより伝播
する。−群の初期変数値がこれらルール条件に対して突
合される。ルール条件が真になると、適正なルールアク
ションが実行され、その結果変数値が突合される。 [0005] 逆方向連鎖システムではこれらのルールが目標の変数値
を決めるために用いられる。−群の変数がまず目標とし
て作られる。これらの変数に値を割り当てる機能をもつ
ルールがソースとして考察される。これらのルールの条
件は変数を含んでいる。これらの変数が値をもてばルー
ルは目標の値を得ることができると評価される。これら
の変数が値をもたない場合にはこれが補助目標として決
定され、ソースとしては他のルールが用いられる。この
手続きは条件が評価されかつルールアクションの効果が
ソースルールの連鎖を介してリップルバックして元の目
標変数に値を割り当てるまで続けられる。 [0006]
多くの推論機構はノンルールソースを使用することがで
きる。しばしば機能呼出し、データベースアクセス又は
ユーザ照会が用いられて変数の値を得るようになされて
いる。しかしながらこれらのソースは順方向連鎖におけ
る値の伝播又は逆方向連鎖における目標又は補助目標の
追跡には寄与しない。このように、変数に値を与えるた
めにそのようなソースを使用すれば、エキスパートシス
テムにおけるルールの対話には影響しない。 [0007] これらのルールが宣言型で入れられ、また知識ベースの
問題及びデータの性質により決まる方法で実行できると
いう事実は、エキスートシステムのプログラマが一般に
ルール間の手続き的な対話を特定する必要がないという
ことを意味する。しかしながら、このシステムが所望の
行動を表示しないときには実行動作がどこで誤ったかを
正確に決定することが一般に非常に困難である。典型的
なエキスパートシステムでは、結論に到るためにエキス
パートシステムが用いたステップの追跡をユーザが視覚
的に知り得るようにするために説明機能が設けられてい
る。しかしながらこれらの説明は多くの場合、問題を簡
易に識別するには充分ではなく、また一般にシステムが
ユーザに値の供給を要求するときだけ又はフログラムが
実行を完了した後にだけ与えられる。実行アクティビテ
ィの中間結果(よ多くの場合毎えられない。 [0008] 典型的な従来のエキスパートシステムのデバッガはIB
Mのノーレッジツール及び「TEIRESIAJを含む
。ノーレッジツールは順方向連鎖を用いてユーザが推論
フロセスによりステップを単一化できるようにする。デ
バッガは突合せ実行サイクルの終端で停止して特定され
た状態情報を与える。システムの実行前及び後にある静
的情報が得られる。 [0009] アール・デービス及びデー・レナート著、マクグロー・
ヒル社1982年版rKNOWLEDGE−BASED
SYSTEMS IN ARTIFICIAL IN
置LIGENCEづの第2部に詳述eれている「TEI
RESIASJが逆方向連鎖システムに適用される。特
定された状態情報は実行が停止し、ユーザからの変数値
の入力を待っときに得られる。変数が変更されると実行
動作が最初から再スタートする。 [0010] 従来の手続き的なフログラミングにも同様な問題がある
。フログラムは明示手続きとして書込まれるから実行動
作の流れは一般に明らかである。しかしながら変数値及
び中間結果の効果を実行動作中に見ることができる。従
来のデバッガは実行を停止してユーザが変数値及び実行
情報を調整することができるブレークポイントを特定し
得るようにすることにより、この問題に対処している。 上記のエキスパートシステムのデバッガはいずれもエキ
スパートシステムの実行中に生ずる変数値及びルール排
除のような種々の条件によってはブレークポイントを特
定できない。またこれらのデバッガはいずれも順方向連
鎖及び逆方向連鎖推論機構の両方について用いるには適
さない。これら両連鎖は従来のデバッガに一般的に見い
出すことができる簡単なデバッグ技術のみを利用する。 [0011] 宣言型のルールに基づくエキスパートシステムにおける
実行動作の流れは一般に予め知られておらず、また決定
論的ではないから、従来のデバッガに用いられる方法は
エキスパートシステムのプログラムに使用するには適さ
ない。ルール型エキスパートシステムでの使用に適した
デバッガについては当該エキスパートシステムの動作を
明確にするブレークポイント及びユーザ情報機能を与え
るようにし、またプログラムエラーの修正についてユー
ザの作業を単純化できるようにすることが望ましい。 [0012] さらにルール又は変数がユーザによって変更されたとき
はいつでも、一貫性検査を実行するようにしたエキスパ
ートシステムのデバツギング方法を提供することが望ま
しい。 従って本発明の目的は、ルール型エキスパートシステム
に使用して好適なデバッガを提供するもので、このデバ
ッガはルール又は変数に対する変更がエキスパートシス
テムの現在の実行動作状態と一致するかどうかを決定す
るようになされている。
きる。しばしば機能呼出し、データベースアクセス又は
ユーザ照会が用いられて変数の値を得るようになされて
いる。しかしながらこれらのソースは順方向連鎖におけ
る値の伝播又は逆方向連鎖における目標又は補助目標の
追跡には寄与しない。このように、変数に値を与えるた
めにそのようなソースを使用すれば、エキスパートシス
テムにおけるルールの対話には影響しない。 [0007] これらのルールが宣言型で入れられ、また知識ベースの
問題及びデータの性質により決まる方法で実行できると
いう事実は、エキスートシステムのプログラマが一般に
ルール間の手続き的な対話を特定する必要がないという
ことを意味する。しかしながら、このシステムが所望の
行動を表示しないときには実行動作がどこで誤ったかを
正確に決定することが一般に非常に困難である。典型的
なエキスパートシステムでは、結論に到るためにエキス
パートシステムが用いたステップの追跡をユーザが視覚
的に知り得るようにするために説明機能が設けられてい
る。しかしながらこれらの説明は多くの場合、問題を簡
易に識別するには充分ではなく、また一般にシステムが
ユーザに値の供給を要求するときだけ又はフログラムが
実行を完了した後にだけ与えられる。実行アクティビテ
ィの中間結果(よ多くの場合毎えられない。 [0008] 典型的な従来のエキスパートシステムのデバッガはIB
Mのノーレッジツール及び「TEIRESIAJを含む
。ノーレッジツールは順方向連鎖を用いてユーザが推論
フロセスによりステップを単一化できるようにする。デ
バッガは突合せ実行サイクルの終端で停止して特定され
た状態情報を与える。システムの実行前及び後にある静
的情報が得られる。 [0009] アール・デービス及びデー・レナート著、マクグロー・
ヒル社1982年版rKNOWLEDGE−BASED
SYSTEMS IN ARTIFICIAL IN
置LIGENCEづの第2部に詳述eれている「TEI
RESIASJが逆方向連鎖システムに適用される。特
定された状態情報は実行が停止し、ユーザからの変数値
の入力を待っときに得られる。変数が変更されると実行
動作が最初から再スタートする。 [0010] 従来の手続き的なフログラミングにも同様な問題がある
。フログラムは明示手続きとして書込まれるから実行動
作の流れは一般に明らかである。しかしながら変数値及
び中間結果の効果を実行動作中に見ることができる。従
来のデバッガは実行を停止してユーザが変数値及び実行
情報を調整することができるブレークポイントを特定し
得るようにすることにより、この問題に対処している。 上記のエキスパートシステムのデバッガはいずれもエキ
スパートシステムの実行中に生ずる変数値及びルール排
除のような種々の条件によってはブレークポイントを特
定できない。またこれらのデバッガはいずれも順方向連
鎖及び逆方向連鎖推論機構の両方について用いるには適
さない。これら両連鎖は従来のデバッガに一般的に見い
出すことができる簡単なデバッグ技術のみを利用する。 [0011] 宣言型のルールに基づくエキスパートシステムにおける
実行動作の流れは一般に予め知られておらず、また決定
論的ではないから、従来のデバッガに用いられる方法は
エキスパートシステムのプログラムに使用するには適さ
ない。ルール型エキスパートシステムでの使用に適した
デバッガについては当該エキスパートシステムの動作を
明確にするブレークポイント及びユーザ情報機能を与え
るようにし、またプログラムエラーの修正についてユー
ザの作業を単純化できるようにすることが望ましい。 [0012] さらにルール又は変数がユーザによって変更されたとき
はいつでも、一貫性検査を実行するようにしたエキスパ
ートシステムのデバツギング方法を提供することが望ま
しい。 従って本発明の目的は、ルール型エキスパートシステム
に使用して好適なデバッガを提供するもので、このデバ
ッガはルール又は変数に対する変更がエキスパートシス
テムの現在の実行動作状態と一致するかどうかを決定す
るようになされている。
【0013】
また本発明の他の目的は、当該一致の検査を効率良くな
し得るようにしたデバッガを提供する。 さらに本発明の他の目的は、ルール又は変数について変
更がなされた後、システムの以前の一貫状態と一致し得
るようなデバッガを提供する。 [00143
し得るようにしたデバッガを提供する。 さらに本発明の他の目的は、ルール又は変数について変
更がなされた後、システムの以前の一貫状態と一致し得
るようなデバッガを提供する。 [00143
【課題を解決するための手段]
かかる課題を解決するため本発明においては、一貫性が
ある推論状態間を移る推論機構を用意し、エキスパート
システムにある各変数について、当該変数が使用された
か又は使用される可能性があったとき、エントリ表示を
含む対応するデバッグ列を発生し、ルール又は変数がユ
ーザによって変更されたとき、当該ル−ル又は変数がエ
キスパートシステムに使用されたかどうかを決定し、変
更されたルール又は変数が使用されたとき、当該変更さ
れたルール又は変数が使用される可能性があった最も早
いポイントを決定してエキスパートシステムのうち変更
されたルール又は変数と一致する前回の状態として当該
ポイントを選択することにより、ルール型エキスパート
システムの一貫性を検査する。 [0015] 【作用】 ルール又は変数が変更されたとき、デバッガはエントリ
表示を含んでなるデバッグ列を発生して一致するルール
又は変数があるか否かを検出する。一致するルール又は
変数があったときデバッガは当該ポイントのうち最も早
いポイントを前[0016]
ある推論状態間を移る推論機構を用意し、エキスパート
システムにある各変数について、当該変数が使用された
か又は使用される可能性があったとき、エントリ表示を
含む対応するデバッグ列を発生し、ルール又は変数がユ
ーザによって変更されたとき、当該ル−ル又は変数がエ
キスパートシステムに使用されたかどうかを決定し、変
更されたルール又は変数が使用されたとき、当該変更さ
れたルール又は変数が使用される可能性があった最も早
いポイントを決定してエキスパートシステムのうち変更
されたルール又は変数と一致する前回の状態として当該
ポイントを選択することにより、ルール型エキスパート
システムの一貫性を検査する。 [0015] 【作用】 ルール又は変数が変更されたとき、デバッガはエントリ
表示を含んでなるデバッグ列を発生して一致するルール
又は変数があるか否かを検出する。一致するルール又は
変数があったときデバッガは当該ポイントのうち最も早
いポイントを前[0016]
以下図面について本発明の一実施例を詳述する。
図1はルール型エキスパートシステムプログラムを実行
することによりデバッグ処理するシステム10のブロッ
ク図である。システム10は知識ベース18内のルール
14及び変数16の状態に基づいて推論する推論機構1
2を含む。デバッガ20はこの推論機構12に接続して
その動作を選択された時点で停止させてユーザが知識ベ
ース18内のエラーを見つげることができるようにする
。推論機構12及びデバッガ20は、表示装置上の情報
出力を制御し、かつキーボード又はマウスによりユーザ
から入力された情報を受けるためのユーザインターフェ
ース19によりユーザと通信をする。 [0017] 知識ベース18に記憶された変数16に加えて、この推
論機構12はエキスパートシステム外部からの変数値を
得ることができる。変数値は手続きコール21から「C
」又は「L I S PJのような言語で書込まれる手
続きに対して与えられる。変数値はまたデータベースを
アクセスしくブロック22)又はユーザディレクトリを
照会する(ブロック23)ことにより得ることができる
。かかるユーザ照会は一般に所望の情報の識別をユーザ
に表示し、またユーザインターフェース19から1以上
の変数値を受ける手続きを実行することにより一般に行
われる。 手続きコール21、データベースアクセス22及びユー
ザ照会23から得られる変数値は一般に知識ベース18
に記憶される。しかしながら場合によっては例えば変数
値が必要なごとに手続きコールをすることによりエキス
パートシステムが実際に発生しているイベントとある量
の実時間対話をすることができるようにもし得る。 [0018] 知識ベース18に具体化されるエキスパートシステムが
望ましくない動作又は正しくない答えを示すときにはユ
ーザはそのようなエラーの発生源を追跡する必要がある
。これはデバッガ20を呼び出すことにより実行され、
このときデバッガ20は推論機構12の実行動作のうち
のある段階をモニタして所望のポイントでその実行動作
を中断する。図2はデバツギング処理についての高レベ
ルブロック図を示す。 [0019] 好適なデバッガを用いるデバツギング処理手順は3つの
段階に分けられる。これらの段階は事前診断段階24、
診断段階26及び事後診断段階28である。事前診断段
階24においてユーザは使用する特定のエキスパートシ
ステムを選択する(ルール及び変数の組を選択する)こ
とができる。ユーザは推論機イ412を順方向連鎖又は
逆方性連鎖モードで動作させるようにプログラムするこ
とができ、そしてそのエキスパートシステムのルール/
変数ネットワークと呼ばれる変数及びルール間の相互関
係を表す静的構造グラフを表示し得る。そのようなグラ
フについては図7について詳述する。 [00201 ユーザは「HOWj及びl”−WHYJ説明機能を呼び
出すことにより知識ベース18内のルール及び変数間の
関係を検査することもできる。これらの機能は図8に関
連して詳述する。必要に応じてユーザは事前診断段階2
4の期間の間にデバツガから完全に出ることができる。 ユーザがエキスパートシステムの動作を監視する用意が
できると制御は診断段階26に移る。 [0021] 後述するように、診断段階においてユーザはエキスパー
トシステムの実行動作を見ることができる。選択された
ブレークポイントを決めることができ、このブレークポ
イントは選択条件又は選択条件群が発生したとき推論機
構12の実行を中断し得る。変数値及びルールは診断段
階において変更することができ、変数をそれらの現在値
にセットするために用いられる推論ステップを試験する
ことができる。推論機構12の実行状態をその前の中間
状態にロールバックして当該前の点から再開させること
ができる。 [0022] いろいろな理由によりユーザは推論を実行させる前に診
断段階26を終了させて事前診断段階24に制御を戻す
ことができる。これは、例えばユーザが使用しようとし
たルール14について、もしくは順方向又は逆方向連鎖
のどちらを用いるべきかについて、変更しようとすると
き有用である。 [0023] 診断段階26は、通常の推論が完了したとき又はエンド
診断の明示コマンドがブレークポイントで実行を停止し
ている間にユーザにより与えられるときに、制御を事後
診断段階28に移す。事後診断段階28においてユーザ
は診断段階において使用できる種々の説明機能をアクセ
スし得る。またユーザは診断段階26の間に実行される
推論部分について再び診断を行うか又は取り消すかを決
めることができ、これにより診断段階26に制御を戻し
て推論処理を再開する効果を生ずる。最後に、ユーザは
事後診断段階28がらブロック2つを通ってデバッガを
出ることができる。 [0024] 図3のブロック図は診断段階26内の制御の流れを示す
。ユーザが診断を事前診断段階24から開始することを
決定すると、事前推論段階30に入る。前述のように推
論を実際に開始する前の任意の時点で制御を事前診断段
階24に戻すことができる。 [0025] 事前推論段階30においてユーザは図8について詳述す
る汎用ブレークポイント処理コマンドをアクセスし得る
。ユーザは推論機構12の実行を停止させるブレークポ
イントを特定し得る。またユーザは推論を正規の実行モ
ードで実行するか又は単一ステップモードで実行するか
を決定できる。単一ステップモードにおいて推論機構1
2が各推論イベントの後にデバッガ20を中断させる。 [0026] 推論ステップ32は知識ベース18に基づいて推論機構
12により実行される実際の推論を示す。推論が完了す
ると、制御は事後診断段階28に入る。ブレークポイン
ト条件に到達するような重要な推論アクティビティが生
じると、制御はブレークポイント処理段階34(これを
ブレークポイントプロセサと呼ぶ)に入る。ユーザはブ
レークポイントプロセサ34において実行の状態及び履
歴を検査し得る。ブレークポイント処理が完了すると、
実行動作が回復して制御が推論ステップ32に戻される
。通常のようにブレークポイントから処理が進められる
か、又は単一ステップをブレークポイントプロセサ34
から開始させ得る。これに加えて処理動作は最初から再
スタートすることができ、又は制御が推論ステップ32
に戻るときには前の中間状態36にロールバックするこ
とができる。 [0027] ブレークポイントプロセサ34においてユーザは実行動
作の完了前に診断を修了させることができ、このとき制
御は事後診断段階28に移る。変数及びルールはブレー
クポイントプロセサ34内から変更し得るので、診断を
不一致状態にすることができる。言い換えると、推論ス
テップの間に変数値が用いられ、現在その値がブレーク
ポイントプロセサにより変更されたときには、知識ベー
スの現在の状態を一致しないものとしである推論ステッ
プを無効とする必要がある。必要があれば、ユーザは制
御を推論ステップ32に直接戻すことにより不一致状態
で実行動作を進行させることができる。好適には殆んど
の場合、最近の推論アクティビティが取消されて知識ベ
ース及び推論機構が状態リセットステップ36において
一致状態にリセットする。状態リセットステップ36を
実行すると変更された変数又はルールが最初に使用され
たポイントの直前のポインt4で戻るのに必要な回数だ
け推論ステップが取消される。多くの場合、これは推論
フロセスへの比較的短い距離の戻り方にすぎず、全フロ
セスをはじめから再スタートして多数の中間推論を再度
実行するよりは著しく効率が高くなる。状態が状態リセ
ットステップ36にあるとき制御は推論ステップ32に
戻される。前述のように推論ステップは事後診断段階2
8から取消されて制御を状態リセットステップ36にパ
スさせる。 [0028] 図4は逆方向連鎖モードで動作するように選択されたと
き推論機構12内に生じる処理ステップを示す。またブ
レークポイントに出合う推論プロセス内の種々のロケー
ションがこの図に示されている。好適な実施例では、推
論機能が生じてブレークポイントを発生させるごとに、
手続きコールがデバッガ20内の手続きに対して行われ
て任意のブレークポイント条件が満足されているかどう
かを決定する。満足されている場合には1つのブレーク
ポイントが発生され、制御はブレークポイントプロセサ
34に入る。満足されていなげれば制御は推論フロセス
に戻されて処理動作を続行する。 [0029] 推論ステップは目標制定ステップ38を実行することに
より開始する。ここでは目標(変数値)は決定されない
。1つの変数が目標として選択されると、1つのブレー
クポイントが設定されてこの段階において実行動作を停
止させる。次のステップ40はソース(すなわち動作源
)を活用化する。これは1つのルールが1つの目標を決
定するために使用される活用ソースとして選択されたこ
とを意味する。手続きコールがデバッガに対してなされ
て選択されたルールを活用する条件についてブレークポ
イントをセットするかどうかを決定する。 [00301 次のステップ42はルールの左側を処理するもので、そ
の前提を評価する。ルールの左側に含まれる変数はその
ルールの処理に実際に必要なもの又は必要ではないもの
であり、ブレークポイントは、選択された変数が活用ル
ールの左側にあれば実行動作を停止するようにセットさ
れ得る。 [0031] 次のステップ44ば、活用ルールの処理に必要な左側の
変数が未決定であるかどうかを決定することである。未
決定なものがあれば、ステップ46においてルールを処
理するに必要なこれら未決定の変数が識別され、制御が
ステップ38に戻されてそのような変数の1つを目標と
して制定する。 活用ルールの左側の変数のすべてが決定され、又は活用
ルールが決定された(例えばOR関係にある1つの変数
が真のとき)変数に基づいて排除された場合には、制御
はステップ48に入る。このステップにおいてルールの
左側が実際に評価される。ブレークポイントは1つの変
数の値がルールの左側を評価するために実際に必要であ
るとすればこの時発生される。 [0032] ルールの前提がステップ48で評価された後に、その機
能がステップ49において未決定の変数に対する基準と
してチエツクされる。未決定のままの基準があれば関連
する変数はステップ46において識別され、それら変数
の1つがステップ38において目標として選択される。 これらの変数が決定されると、ブレークポイントはルー
ルの左側が真であるか偽であるかにより発生される。こ
の点において、ルールの右側のアクションがステップ5
0で実行される。この段階において選択された変数値が
変化したとき1つのブレークポイントが特定されて発生
する。 [0033] 次のステップ51はそれ以外のソースが残っているかど
うかを決定する。選択された変数についてのすべてのソ
ース決定アクティビティがステップ51において完了す
ると、この変数の決定に対応するブレークポイントが生
ずる。それでなければ別のソースがステップ40におい
て作動される。全プロセスは未決定の目標がなくなるま
でステップ52で繰り返され、目標がなくなったとき推
論処理が終了となる。 [0034] 図5は順方向連鎖が選択されたときに推論機構12によ
り実行される推論アクティビティを示す。選択できる種
々のブレークポイントも示している。逆方向連鎖の場合
と同様に、ブレークポイントとなったかどうかの決定は
、推論アクテイビテイが完了してブレークポイントにな
るたびに手続ぎコールを行うことにより実行され、現在
の状態の比較が特定されたブレークポイントの条件に対
して行われる。 [0035] 第1ステツプ54は初期データにより影響を受けるすべ
てのルールにつり)で前提の評価をする。ブレークポイ
ントはこの変数値が必要とされ得るか又は必要であるか
により生じるものとして特定される。 1つのルールのすべての前提が真であれば、当該ルール
がステップ56でコンフリクトセットに加入される。ま
たブレークポイントはルールがコンフリクトセットに加
入されるときに発生するようにすることもできる。 [0036] ステップ58においてコンフリクトセットが空であれば
処理が完了する。そうでなければ、コンフリクトセット
からのルールがステップ60においてファイア処理され
るものとして選択され、ステップ62において排除され
る。このときファイア処理されたルールについてブレー
クポイントを特定することができる。ステップ62にお
いてファイア処理することにより1以上の変数値が変化
し得る。 ルールがファイア処理によって排除された結果として変
数値が変更されるとき、実行動作を停止するためにブレ
ークポイントを特定する。 [0037] 1つのルールをファイア処理した効果は、変更された変
数によりどのルールが影響されるかを識別することによ
り、知識ベースの残りの部分に伝播する。これにより影
響されたルールの前提がステップ64において再評価さ
れる。影響されたルールのすべてがステップ64におい
て再評価を必要とするものとして識別されると、変更さ
れた基準変数を有するルールインスタンチェイション(
instantiation )がコンフリクトセット
から除去される。ルールがコンフリクトセットから除去
されるときブレークポイントが特定されることにより発
生する。 [0038] 好適な実施例ではユーザが推論を非同期的に停止させる
こともできる。これはキーボード又はマウス入力装置か
らユーザがブレークポイント処理中断コマンドを入れる
ことにより行われる。ブレークポイント条件が発生した
かどうかを決定するために任意のデバッガ手続きに対し
て手続きコールがなされるたびに、ユーザがそのような
中断コマンドを入れたかどうかを見るためのチエツクが
行われる。そのような場合にはブレークポイントプロセ
サは予定のブレークポイントに到達したものとして呼び
出される。 [0039] 前述のようにブレークポイントプロセサにより行うこと
のできる機能の1つはシステムの実行を前の状態にロー
ルバックすることである。これはルール又は変数が変更
されたときシステムの一貫した実行動作を保証するため
に、当該ルール又は変数が現在実行中の処理動作に用い
られているとき必要である。ユーザはシステムの実行を
任意の時点で任意の状態にロールバックすることができ
る。 [0040] 図6は実行状態をリセットするに必要な情報をいかにし
て保存するかを示す。 推論イベント66.68は図4、図5について述べたイ
ベントに対応する。実際には数多くの推論イベントがあ
るが、図6にはそのうち2つだけを示しである。 各推論イベント66.68は多数の実行アクションから
なる。実行アクションは推論機構によりその種々のアク
ティビティを行うために採られるアトミックアクション
である。推論イベント66は実行アクション70及び7
2からなり、推論イベント68は実行アクション74及
び76からなる。1つの推論イベントを行うに必要な実
行アクションの数はイベントにより決まり、1つの実行
アクションから、特定の推論イベントを特定するに必要
な数まであり得る。 [0041] 1つの実行アクションが行われるたびに、実行履歴列7
8に記録が加入される。推論イベントが完了するたびに
1つの記録が推論履歴列80に加えられる。履歴列78
及び80に置かれた記録は各アクション及びイベントに
ついてなされたアクションの完全な記述を含む。これら
履歴列に置かれる各記録は除去可能であり、そしてその
効果を取消し得る。システムを前の状態にロールバック
するために実行履歴列78及び推論履歴列80からラス
トインラストアウト方式で適正な数の記録を除去するだ
けで良い。各記録が除去されると、その効果は取り消さ
れかくしてシステムの実行履歴は中間状態を通って逆方
向に進む。 [0042] システムには1組のデバッグ列82が保持されている。 各デバッグ列は各ルール及び各変数について保持されて
いる。1つの変数が使用され又は変更されるたびに、そ
のようなイベントの識別子が対応するデバッグ列に加入
される。1つのルールが逆方向連鎖におけるソースとし
て選択され又は順方向連鎖のコンフリクトセットに加入
されるたびに、当該イベントが生じた時及び当該選択に
対応する変数を識別するために適正なデバッグ列に記録
が加入される。1つのルールがファイア処理されるとき
には、そのルールを排除するものとして選ぶなめに用い
られた文節において参照されたすべての変数についての
値が、当該ルールについてのファイア履歴列に記録され
る。 [0043] 図7はエキスパートシステムの状態をロールバックする
なめに情報を保存できるようにする機構の詳細を示す。 推論機構12は状態マシン推論機構150として好適な
手段となる。これは極めて単純な実行サイクルを介して
連続的なループを形成する状態マシンである。各サイク
ル中に推論機構150は実行スタック152から記録を
引き出させて当該記録のコピーを実行履歴列78に加入
する。実行履歴列78に加入された記録は実行サイクル
が行われるたびにインクリメントされるカウンタの現在
値を含む。かくして実行履歴列78は実行スタック15
2の最初に発生した記録の履歴を表わす一連の連番を有
する記録を含むことになる[0044] 実行スタック152上の各記録は、推論機構150の現
在の状態を識別する情報を含む。推論機構150はその
状態に関連するアクティビティを行うのに必要なコード
を呼び出す。各実行状態についてのこのコードは適切な
情報の値を検査し、必要な変更を行い、次に入るべき状
態を計算する。そのとき次の実行状態についての記録が
実行スタックに押し込まれ、かくしてそのサイクルが完
了する。 [0045] 推論機構150についての典型的な実行状態は「ルール
前提のチエツク」、「ルール結果のファイア処理」、「
コンフリクトセットへの加入J及び「コンフリクトセッ
トからの除去」を含む。これら実行状態は図6について
述べたアトミックアクション70.72.74.76に
対応する。 [0046] 順方向連鎖及び逆方向連鎖推論プロセスも限定型状態マ
シンとして好適なようにモデル化されている。各プロセ
スは推輪状態サイクルからなり、各推輪状態は所定の順
序で実行状態の処理を行うことにより実行される。これ
らの推輪状態は図6の状態66及び68に対応する。典
型的な推輪状態は「突合せ」、「実行」「値の取得」及
び「ルールのファイア処理」を含む。単一推輪状態を実
行するに必要な実行状態の数は推輪状態の処理をするの
に必要なアクションの複雑さにより決まる。例えば、順
方向連鎖における「突合せ」の状態は多数の「ルール前
提のチエツク」及び「コンフリクトセットへの加入」の
実行状態からなる。実行中に必要な数は特定のルールの
左側の項目の数及び値により決まる。他の例としては、
JIIN方向連鎖プロセスにおけるルールのファイアリ
ングは2つの実行状態、すなわち「コンフリクトセット
からの除去」及び「ルール結果のファイア処理」を含む
。逆方向連鎖プロセスでのルールのファイアリングも好
適には2つの状態すなわち「ルール前提のチエツク」及
び「ルール結果のファイア処理」を含む[0047] 推論アクティビティが生じると、推輪状態は推論スタッ
ク154に押し込まれる。次の推輪状態が開始すると、
この推論スタックから記録が引き出され、実行履歴列7
8に実行記録をコピーする場合と全く同様にして推論履
歴列80にコピーされる。推論履歴列80にコピーされ
た各推論記録は実行履歴列78における実行記録を記録
する場合と同様にして現在の実行状態数を示す時間スタ
ンプを含む。 [0048] 上述のように推論機構150がブレークポイントが生じ
得る状態になれば、実際にブレークポイントに達したか
どうかを決定するための呼び出しがブレークポイント手
続きに対しなされる。そのような潜在的なブレークポイ
ントになるたびにブレークポイント列156に記録され
る。この記録はブレークポイント列156にそれが記録
された時点での現在の実行状態番号を示す。この記録は
また発生されつつあるブレークポイントのタイプを示す
。例えば、潜在的ルールのファイアリングブレークポイ
ントとなれば、これがブレークポイント列156に記録
された記録によって識別される。 [0049] 変数16についてなされたすべての変化の完全な履歴が
各変数に対応するバージョン履歴列内に保持される。こ
の履歴は1つの変数が用いられる時、目標に達した時等
を示すデバッグ履歴列に加入される。変数の値が変化す
るたびに、1つの記録が、新しい変数値及び現在実行状
態番号を含む対応するバージョン履歴列に加入される。 このように実行状態番号は種々の変数が値を変えた時点
を示すための時間スタンプとして機能する。 [0050] ルール履歴列は各ルール14に関連する。1つの実行状
態において1つのルールが用いられるたびに、対応する
記録がそのルールについてのルール履歴列に記録される
。上述の場合と同様にして現在の実行状態番号が時間ス
タンプとして用いられる。 [0051] 1セット以上の種々のカインドがこのエキスパートシス
テムの実行中にしばしば利用される。これら力インドセ
ットは時々刻々変更するエレメントの集合である。推論
機構150はそのようなセット158をアクセスし、こ
のセットが変更されるたびにセット履歴列160に記録
を加入する。特定の実行要求があったとき、セット履歴
列160内の各記録は、変形されたセット158の完全
なコピーを含み、又はセット158に加入されかつ削除
されたエレメントのすべてのリストだけを含むことにな
る。 [0052] セット158の一例は順方向連鎖に用いられるコンフリ
クトセットである。ルールがコンフリクトセットに加入
され又は除去されるとき、このアクティビティはセット
履歴列160に反映される。前述のケースにおいて生じ
たように、現在の実行状態番号はそのセットについて行
われるアクティビティの時間的な履歴を与えるためにセ
ット履歴列160に加入される各記録についての時間ス
タンプとして用いられる。 [0053] 推論機構150を前の状態にロールバックするためには
すべてのスタック及び履歴列をリセットする必要がある
。実行スタック152は推論機構150を逆方向に動か
すことにより構成し直される。実行スタック152に対
するすべてのスタック動作は反転され、これにより実行
スタック152を前方に押し込むことにより記録が引き
出され、また前方に引き出されることにより実行履歴列
78内の最終記録が実行スタック152に押し込まれる
。この逆方向プロセスは、実行履歴列78から各実行状
態が引き出されてスタック152に押し込まれるたびに
実行状態番号を減少させることにより、所望の実行状態
番号となるまで続行される[0054] 同様のプロセスが推論スタック154及び各セット15
8について行われる。 この逆方向プロセス中の実行状態番号が、推論履歴列8
0及びセット履歴列160それぞれにおける最終記録と
共に記録された実行履歴番号と等しくなったとき当該記
録は履歴列から除去される。推論履歴列80から除去さ
れる記録の場合には、これらの記録は推論スタック15
4に置かれる。1つの記録がセット履歴列160から除
去されるとき、対応するセット158はセット履歴列に
記録された値に従って更新される。 [0055] 変数16のリセットは、より単純に行うことができる。 各バージョン履歴列はロールバックが行われている実行
状態番号より小さいか又は等しい時間スタンプを有する
最終バージョンについて単に走査される。その後の時間
スタンプを有するすべてのバージョンは同様に捨てられ
る。種々のルール14についての履歴列は変数バージョ
ン履歴列と同様にロールバックされる。 [0056] ブレークポイント列156も選択されたロールバック点
以降のブレークポイント列のすべての記録を単に捨てる
だけでロールバックし得る。しかしながらブレークポイ
ント列156は他の目的について有効に使用し得る。こ
れば、推論機構150が順方向に実行しているときにブ
レークポイントが特定されると同じようにしてロールバ
ンク状態を特定するために使用できる。例えば順方向連
鎖において逆ブレークポイントは、ルールがコンフリク
トセットに加入され又は除去される時点として特定され
る。このときブレークポイント列が終了ステップから開
始ステップへと走査され、それぞれ考えられるブレーク
ポイントにおいてチエツクがなされる。この場合、セッ
ト履歴列160は各関連するブレークポイントにおいて
コンフリクトセットについてチエツクされ、逆方向にお
いて実際に所望のブレークポイントに達したときの決定
を直ちに行うことができる。ブレークポイントが識別さ
れると、対応する実行状態番号が識別されてシステムの
残りの部分が当該実行状態にロールバックされる。 [0057] 上述のようにデバッガはユーザがブレークポイントにお
いて変数値を変更できるようにする。これは、その変数
の前の値が前の推論ステップですでに用いられている限
り推論機構を不一致状態に置くことができる。多くの場
合、ブレークポイントセツション中になされたすべての
変化と一致する状態に推論機構をロールバックし、そこ
から実行を再スタートすることが望ましい。このロール
バック機構は、前の一致状態が識別されるとエキスパー
トシステムを前の状態にリセットするために使用される
。一致状態へのロールバックが必要とされたとき、最後
の一致状態を決定するための技術を次に説明する。 [0058] 次に前の一致状態を決定するなめに用いる4つの「スマ
ート」技術を述べる。 よりスマートな技術はロールバック時間を短くするが、
ロールバックする際に用いる適正な実行状態を決定する
ためにより計算機的な動作源を必要とする。 第1の方法は従来のエキスパートシステムのデバッガに
おいて用いられるものと同様の方法を用いる。この方法
はデバッグセツション中にルール又は変数に変更が生じ
たときに最初からすべての診断を再度開始する。多くの
場合、値の変化何の効果ももたないので、多量に冗長計
算をする必要がある。 [0059] 次の方法は変更された変数又はルールが用いられる最も
早い時点に戻る。好適なシステムでは、変数に変化が生
じたときの方法が用いられる。 変数に変更が生じたとき当該変数が用いられた最も早い
時点に戻る必要がある。このことは、順方向連鎖を実行
する推論機構では、変数が1つの値を受けた最も早い時
点を決定することと等価である。この変数が値を受けて
いなければ不一致は生じない。この変数が値をもってい
れば、値を受は力最も早い時点が、当該変数に関連する
バージョン履歴列の第1番目のエントリを検査すること
により決定できる。そのようなエントリに関連する時間
スタンプは一致状態を保証するために推論機構をどこま
でロールバックすべきかを示す。推論機構は最後の一致
実行状態である列内に見い出された値の直前の実行状態
番号にロールバックする。 [0060] 逆方向連鎖推論機構が用いられるときにはその変数が常
に目標であったがどうかを決定する必要がある。これは
、ルールが目標として選択されたことを示す記録を探し
ながらデバッグ列を変数について最初から走査すること
により決定することができる。この変数が目標として選
択されたとき、直前の実行状態が推論機構を戻すべき最
後の一致状態になる。 [0061] この方法はルールの変化が生じたとき、必要に応じて、
使用することができる。しかしながら好適な実施例にお
いては、ルールが実際に用いられる第1点を決定するた
めにルールのシンタックスを利用するより複雑なテスト
が用いられる。 [0062] 逆方向連鎖についてはこのテストは、変更されたルール
が推理する任意の変数(すなわち、当該ルールの右側の
任意の値)が目標となる最も早い時点を決定することに
より行われる。これは当該変数をデバッグ列内に探し任
意のデバッグ列内の最も早い実行状態番号を決定するこ
とにより決定できる。他の技術は変数が目標として選択
されるタイプのフラグが付された潜在的なブレークポイ
ントを探しながらブレークポイント列156を最初から
走査するものである。選択された[0063] 順方向連鎖が用いられている場合は、変更されたルール
が用いられた最も早いは好適には変更されたルールに対
する最小ファイアリングセットの決定を含む。 理される前に特定する必要はない。例えば(A AN
D B)OR(CANDD)のような形式の左側をも
つルールでは、A及びBのみが特定され又はC及びDの
みが特定されるときそのルールをファイア処理すること
ができる。このようにA及びBは共にそのルールについ
ての最小ファイアリングセット内の1つの[0064] そのようなルールがコンフリクトセットに入り得た最も
早い点を見い出すためには、変数(この例ではA、B、
C,D)がはじめに値を受けるときを決定するため最初
からブレークポイント列156を順方向に走査すること
ができる。効果の点で有利な他の方法は、A及びBが共
に特定され又はC及びDが共に特定される最も早い実行
状態番号を決定するために、それぞれについてのバージ
ョン履歴[0065] 第4の方法はこれと同様であるが、左側の変数の値を実
際に見て当該変数値が実際に左側をコンフリクトセット
に入れさせるかどうかを決定することを含む。 そのような決定は、その後の演算において実行すべきロ
ールバックを少なくできる結果になるが、上述の決定の
仕方より著しく複雑になり、その結果効率の点で望まし
くない。あるシステムでは、種々の変数値及びルール構
造によって複雑なテストを行うことにより著しいセービ
ングを実現し得る。そのようなシステムに用いることは
正しいと考えられる。 [0066] 種々の変数及びルールの履歴はこれを変数に生ずる変化
及びルールを用いたポイントを追跡するために使用でき
る。これによりユーザがエラーの原因を決定するために
選択されたルール又は変数の履歴を1回に1ステツプ戻
るような方法を許容できる。 [0067] この実施例において好適に与えられるデバッグツールは
ルール/変数ネットワークのグラフィック表示である。 図8にそのような表示の一例を示す。図8は4つのルー
ル84.86.88.90及び9個の変数92〜106
を有する知識ベースの図形表示である。ルールの条件に
用いられる変数はルールボックスの左側に接続し、ルー
ルのアクションにおいて結論を出す変数はこのルールの
左側に接続する。例えばルール84は変数102につい
ての結論を出すために変数94及び92を用い、ルール
88は変数96及び106の結論を出すために変数98
及び100を用いる。 [0068] 図8のネットワークは事前診断モード、診断モード及び
事後診断モードの各モードにおいて使用される。このネ
ットワークの使用はどのモードとなっているかによって
少し変化する。図8に示す静的ルール/変数ネットワー
クは知識ベースにおける種々のルール及び変数間の静的
依存性を示すための事前診断モードで用いられる。これ
は、種々の変数を変えることにより影響を受けるルール
及び種々のルールを変えることにより影響を受ける変数
を決定するためにユーザによって利用される。 [0069] エキスパートシステム(診断モード)の実行中、推論プ
ロセス内のイベントの進行を可視表示するためにルール
/変数ネットワークに1つのアニメーションが与えられ
る。このため、種々の指標がエキスパートシステムによ
り行われる推論の信号を図形表示するために用いられる
。色彩の変化又は濃淡がルール及び変数の状態を示すた
め使用される。カラー表示の場合には色の変化がルール
及び変数[0070] 図9b−9iは白黒グラフィック表示における変化を表
す好適な方法を示す。 ルール/変数ネットワーク内の各変数7ノード162は
対応するオフセットした変数ノード164を有する。オ
フセット変数ノード164はそれに重なる変数ノード1
62により部分的に不明瞭となり、変数ノード162の
状態変化を示す補助としてのみ用いられる。各ルールノ
ード166は同様にしてオフセットしたルールノード1
68を有し、これも同じように機能する。図における単
一方向のハンチングは1つのノードが白黒表示で灰色と
なることを示し、クロスハツチングは1つのノードが黒
となることを示す。 [0071] まず変数ノード162及びオフセット変数ノード164
はこのネットワーク内のすべての変数について黒である
とする。この状態を図9bに示す。逆方向連鎖がこの推
論機構で用いられると、オフセット変数ノード164は
それが表わす変数が目標として選択されれば灰色となる
。これを図90に示す。1つの変数が値を受けると、変
数ノード162も図9dに示すように灰色になる。この
変数が導出されると、図9eに示すように、変数ノード
162は灰色のままになりかつオフセット変数ノード1
64が白となる。 [0072] ルールノード166及びオフセットルールノード168
は同様にして最初は、図9gに示すように、黒である。 ルールが活用されるソースになると、オフセットルール
ノード168は図9hに示すように灰色となる力板ルー
ルノード166は黒のままになる。これらルールがファ
イア処理されると、ルールノード166も図91に示す
ように灰色となる。 [0073] 基礎となる推論機構が順方向連鎖を実行しているとき同
じようなアニメーション技術が使用され、この場合には
、オフセットした変数ノード164は使用されずに、黒
色のまま残る。変数に値が割り当てられたとき、変数ノ
ード169は黒色から灰色に切り換わり、その結果図9
fに示すような表示がなされる。順方向連鎖の場合には
、ルールがコンフリクトセットを入れたときオフセット
したルールノード168が灰色になって図りに示すよう
な表示を与え、またルールが図91に示すようにファイ
ア処理されたとき、ルールノード166は灰色に切り換
わる。 [0074] いくつかの変数はまた知識ベースに割り当てられた値を
有する。これら変数に対応するノードは、値を受ける変
数用に用いられるグラフィック表示された値を割り当て
られる。このように、逆方向連鎖の推論機構については
、オフセット変数ノード164は白でありかつ変数ノー
ド162は灰色である。順方向連鎖の推論機構では最初
オフセット変数ノード164は黒でありかつ変数ノード
162は灰である。 [0075] この動的表示の使用又はルール及び変数についての状態
変化を表示する同様の技術を使用することにより、ユー
ザに動作可視グラフィック表示を与えるルール/変数ネ
ットワークが得られる。逆方向連鎖が用いられるとき、
オフセット変数ノード164及びオフセットルールノー
ド168の灰色の右から左への流れが推論プロセスにお
ける目標、ソース及び補助目標が連鎖的に発生したこと
を示す。 変数ノード162及びルールノード166の灰色の左か
ら右への流れはルールファイアリング及び変数値の伝播
効果を示す。順方向連鎖の場合、このネットワークの同
様な左から右への灰色の流れは推論プロセスの可視表示
を与える。 [0076] 上記のようなアニメーション化された表示によれば、ユ
ーザは各ステップで生ずる多くのデイテールにより混乱
させられることなく、推論プロセスの流れを見ることが
できる。ユーザが正しくないものとして知っている方向
に推論プロセスが開始するとすれば、ユーザは非同期的
に実行を中断させて問題の原因を検査することができる
。 [0077] 事後診断段階では、ルール/変数ネットワークが知識ベ
ース内のすべてのルール及び変数の最終状態を静的に表
示する。ユーザは目標としてどの変数が用いられて値を
受けたか、またどのルールがファイア処理されたかを図
形的に見ることができる。 [0078] ある場合には変数が1サイクルに関係することがある。 逆方向推論機構においてこの状態は、1つの変数がその
変数導出用の補助目標に用いられるルールの左側にある
ときに生ずる。サイクルは、例えば値VAR4の変数9
8及び値VAR7の変数104のノードカ飄実際に同一
の変数を表わすとき図8において生ずる。そのようなサ
イクルが生じたとき、図9jに示すように、通常は円形
のノード162がルール/変数ネットワークの右に置か
れてこれが目標であることを示しまた菱形記号がスプリ
ット変数ノード170を示すために用いられる。推論中
日形の変数ノード169はオフセット変数ノード164
と同様に灰色になり、菱形のスプリット変数ノード17
0は変数ノード162と同様に灰色になる。この表示技
術は順方向連鎖の場合に用いられる。 [0079] ルール及びノードの図形表示を変更するための手続きは
前述のデバッガにより容易に行われる。図4及び図5に
ついて述べたように、潜在的なブレークポイントに到達
するたびに、デバッガに対して手続きコールがなされて
実際にブレークポイントに達したかどうかを決定する。 図形表示用のこの変化はそれぞれ潜在的なブレークポイ
ントに対応する。例えば1つの変数を目標とすれば図4
のステップ38で示されるように潜在的なブレークポイ
ントになる。同様にルールのファイアリング処理は図4
のステップ50に対応する潜在的なブレークポイントを
発生する。図形表示に変化を生じさせるようなイベント
が発生することによりブレークポイントデバッガが呼び
出されると、手続きコールが表示マネージャに対して行
われて表示の適正なノードの変更を行う。ブレークポイ
ントがそのとき実際に生じたかどうかには無関係に表示
が変更される。 [0080] 図10はブレークポイントプロセサ34がブレークポイ
ントにおいて呼び出されるときに生じ得る種々のイベン
トを示す図である。まず、推論機構の実行を停止させる
条件がユーザの情報についてブロック110において表
示される。このときブレークポイントプロセサはブロッ
ク112においてユーザからの入力を受け、そしてユー
ザの選択により種々のアクションの内の1つを実行する
。 ユーザはブロック114において推論機構の実行を停止
させるブレークポイントを見て編集することができる。 1回に多数のブレークポイントを加え、編集し及び削除
し得るようにユーザにメニュを与えることができる。 [0081] ユーザはブロック116において知識ベース内のルール
を見て編集するか、又はブロック118で変数を見て編
集するかを選択することもできる。ユーザが用いられた
ルール又は変数を編集する場合には、システムにより一
貫性の分析が自動的に行われる。好適な一貫性のチエツ
ク方法はすでに述べた。この変化がシステムを非−貫性
状態にするものである場合には、ユーザに知らされる。 ユーザは必要であれば実行を一貫性状態にロールバック
する機会をもつ。 ユーザは特定のルールファイアリングについての詳細情
報を与える詳細ルールの追跡をブロック120において
行う。すなわち、参照されたすべての変数の値と各前提
条件についての真値が示される。このレベルのデイテー
ルは従来の説明機能では与えられないカミデバッグには
必要なものである。 [0082] ユーザはブロック122において変数値が必要な理由又
はブロック124においてその値が得られた理由の表示
を選ぶことができる。ブロック122における「WHY
J質問は、制御手続き(順方向又は逆方向連鎖)が特定
の変数についての値を必要とする理由又はいかにして変
数値が種々のルール及び変数の対話を通じてリップルす
るかを表示する。ブロック124の「HOWJ質問は、
いかにして制御手続きが特定の変数の値を決定しようと
しているかを表示する。「WHY」質問は本来未来形の
質問であり、「なぜこの情報が必要か」を問うものであ
る。1−HOWJコマンドは本来過去形の質問であり、
「いかにしてこのように事が生じたか」を問うものであ
る。 [0083] 診断段階&:Bbsで・ 「HOW」及び「WHYJ質
問がルール又は変数につり・ての過去及び将来の使用を
決定するために用いられる。ブロック122の「WHY
」質問はどこで変数が用いられたか(過去) またどこ
でそれが用いられるか(未来)を示す。デバッグ列は過
去情報を得るために用いられ、静的ルール/変数ネット
ワークは未来の事前診断段階で生ずるようなものについ
て用いられる。ブロック124の1−HOWJ質問は変
数が現在の値をどのように受けたか又はルールがどのよ
うな理由でファイア処理されたかを示す過去情報を得る
ためにデバッグ列を使用する。ブロック124の1HO
WJ質問は、ブロック122の「WHY」質問と同様に
して未だ生じていないイベントに関する質問に答えるた
めに静的ルール/変数ネットワークを用いる。 [0084] 事前診断段階24において「HOW」及び「WHY」質
問は推論機構により採用されることがあるステップを見
い出すなめにのみ用いることができる。診断段階26及
び事後診断段階28においては過去、現在及び未来のイ
ベントについての情報も使用できる。 [0085] 上述のようにユーザはいくつかの方法でブレークポイン
トプロセサ34を出ることができる。ユーザは推論機構
の単一ステップ実行ブロック126を開始し又は続行す
ることができる。制御は1つの単一ステップが完了した
後にブレークポイントプロセサ34に戻る。ユーザはブ
ロック128において診断段階を早めに終了させて事後
診断段階に直接移すことができる。またユーザはブロッ
ク130においてブレークポイントプロセサから出て通
常の実行に戻させることができ、又はブロック132に
おいてシステムの実行を最初から再スタートさせること
ができる。ブロック134において実行状態を選択され
た状態又はフレークポイントにより特定されるものにロ
ールバックすることができる。これは、ブロック119
の一貫性分析が変化により非−貫性が導入されたことを
示した後にしばしば行われるのであり、最後の一貫性状
態への直接のロールバックのオプションがユーザに与え
られる。 [0086]
することによりデバッグ処理するシステム10のブロッ
ク図である。システム10は知識ベース18内のルール
14及び変数16の状態に基づいて推論する推論機構1
2を含む。デバッガ20はこの推論機構12に接続して
その動作を選択された時点で停止させてユーザが知識ベ
ース18内のエラーを見つげることができるようにする
。推論機構12及びデバッガ20は、表示装置上の情報
出力を制御し、かつキーボード又はマウスによりユーザ
から入力された情報を受けるためのユーザインターフェ
ース19によりユーザと通信をする。 [0017] 知識ベース18に記憶された変数16に加えて、この推
論機構12はエキスパートシステム外部からの変数値を
得ることができる。変数値は手続きコール21から「C
」又は「L I S PJのような言語で書込まれる手
続きに対して与えられる。変数値はまたデータベースを
アクセスしくブロック22)又はユーザディレクトリを
照会する(ブロック23)ことにより得ることができる
。かかるユーザ照会は一般に所望の情報の識別をユーザ
に表示し、またユーザインターフェース19から1以上
の変数値を受ける手続きを実行することにより一般に行
われる。 手続きコール21、データベースアクセス22及びユー
ザ照会23から得られる変数値は一般に知識ベース18
に記憶される。しかしながら場合によっては例えば変数
値が必要なごとに手続きコールをすることによりエキス
パートシステムが実際に発生しているイベントとある量
の実時間対話をすることができるようにもし得る。 [0018] 知識ベース18に具体化されるエキスパートシステムが
望ましくない動作又は正しくない答えを示すときにはユ
ーザはそのようなエラーの発生源を追跡する必要がある
。これはデバッガ20を呼び出すことにより実行され、
このときデバッガ20は推論機構12の実行動作のうち
のある段階をモニタして所望のポイントでその実行動作
を中断する。図2はデバツギング処理についての高レベ
ルブロック図を示す。 [0019] 好適なデバッガを用いるデバツギング処理手順は3つの
段階に分けられる。これらの段階は事前診断段階24、
診断段階26及び事後診断段階28である。事前診断段
階24においてユーザは使用する特定のエキスパートシ
ステムを選択する(ルール及び変数の組を選択する)こ
とができる。ユーザは推論機イ412を順方向連鎖又は
逆方性連鎖モードで動作させるようにプログラムするこ
とができ、そしてそのエキスパートシステムのルール/
変数ネットワークと呼ばれる変数及びルール間の相互関
係を表す静的構造グラフを表示し得る。そのようなグラ
フについては図7について詳述する。 [00201 ユーザは「HOWj及びl”−WHYJ説明機能を呼び
出すことにより知識ベース18内のルール及び変数間の
関係を検査することもできる。これらの機能は図8に関
連して詳述する。必要に応じてユーザは事前診断段階2
4の期間の間にデバツガから完全に出ることができる。 ユーザがエキスパートシステムの動作を監視する用意が
できると制御は診断段階26に移る。 [0021] 後述するように、診断段階においてユーザはエキスパー
トシステムの実行動作を見ることができる。選択された
ブレークポイントを決めることができ、このブレークポ
イントは選択条件又は選択条件群が発生したとき推論機
構12の実行を中断し得る。変数値及びルールは診断段
階において変更することができ、変数をそれらの現在値
にセットするために用いられる推論ステップを試験する
ことができる。推論機構12の実行状態をその前の中間
状態にロールバックして当該前の点から再開させること
ができる。 [0022] いろいろな理由によりユーザは推論を実行させる前に診
断段階26を終了させて事前診断段階24に制御を戻す
ことができる。これは、例えばユーザが使用しようとし
たルール14について、もしくは順方向又は逆方向連鎖
のどちらを用いるべきかについて、変更しようとすると
き有用である。 [0023] 診断段階26は、通常の推論が完了したとき又はエンド
診断の明示コマンドがブレークポイントで実行を停止し
ている間にユーザにより与えられるときに、制御を事後
診断段階28に移す。事後診断段階28においてユーザ
は診断段階において使用できる種々の説明機能をアクセ
スし得る。またユーザは診断段階26の間に実行される
推論部分について再び診断を行うか又は取り消すかを決
めることができ、これにより診断段階26に制御を戻し
て推論処理を再開する効果を生ずる。最後に、ユーザは
事後診断段階28がらブロック2つを通ってデバッガを
出ることができる。 [0024] 図3のブロック図は診断段階26内の制御の流れを示す
。ユーザが診断を事前診断段階24から開始することを
決定すると、事前推論段階30に入る。前述のように推
論を実際に開始する前の任意の時点で制御を事前診断段
階24に戻すことができる。 [0025] 事前推論段階30においてユーザは図8について詳述す
る汎用ブレークポイント処理コマンドをアクセスし得る
。ユーザは推論機構12の実行を停止させるブレークポ
イントを特定し得る。またユーザは推論を正規の実行モ
ードで実行するか又は単一ステップモードで実行するか
を決定できる。単一ステップモードにおいて推論機構1
2が各推論イベントの後にデバッガ20を中断させる。 [0026] 推論ステップ32は知識ベース18に基づいて推論機構
12により実行される実際の推論を示す。推論が完了す
ると、制御は事後診断段階28に入る。ブレークポイン
ト条件に到達するような重要な推論アクティビティが生
じると、制御はブレークポイント処理段階34(これを
ブレークポイントプロセサと呼ぶ)に入る。ユーザはブ
レークポイントプロセサ34において実行の状態及び履
歴を検査し得る。ブレークポイント処理が完了すると、
実行動作が回復して制御が推論ステップ32に戻される
。通常のようにブレークポイントから処理が進められる
か、又は単一ステップをブレークポイントプロセサ34
から開始させ得る。これに加えて処理動作は最初から再
スタートすることができ、又は制御が推論ステップ32
に戻るときには前の中間状態36にロールバックするこ
とができる。 [0027] ブレークポイントプロセサ34においてユーザは実行動
作の完了前に診断を修了させることができ、このとき制
御は事後診断段階28に移る。変数及びルールはブレー
クポイントプロセサ34内から変更し得るので、診断を
不一致状態にすることができる。言い換えると、推論ス
テップの間に変数値が用いられ、現在その値がブレーク
ポイントプロセサにより変更されたときには、知識ベー
スの現在の状態を一致しないものとしである推論ステッ
プを無効とする必要がある。必要があれば、ユーザは制
御を推論ステップ32に直接戻すことにより不一致状態
で実行動作を進行させることができる。好適には殆んど
の場合、最近の推論アクティビティが取消されて知識ベ
ース及び推論機構が状態リセットステップ36において
一致状態にリセットする。状態リセットステップ36を
実行すると変更された変数又はルールが最初に使用され
たポイントの直前のポインt4で戻るのに必要な回数だ
け推論ステップが取消される。多くの場合、これは推論
フロセスへの比較的短い距離の戻り方にすぎず、全フロ
セスをはじめから再スタートして多数の中間推論を再度
実行するよりは著しく効率が高くなる。状態が状態リセ
ットステップ36にあるとき制御は推論ステップ32に
戻される。前述のように推論ステップは事後診断段階2
8から取消されて制御を状態リセットステップ36にパ
スさせる。 [0028] 図4は逆方向連鎖モードで動作するように選択されたと
き推論機構12内に生じる処理ステップを示す。またブ
レークポイントに出合う推論プロセス内の種々のロケー
ションがこの図に示されている。好適な実施例では、推
論機能が生じてブレークポイントを発生させるごとに、
手続きコールがデバッガ20内の手続きに対して行われ
て任意のブレークポイント条件が満足されているかどう
かを決定する。満足されている場合には1つのブレーク
ポイントが発生され、制御はブレークポイントプロセサ
34に入る。満足されていなげれば制御は推論フロセス
に戻されて処理動作を続行する。 [0029] 推論ステップは目標制定ステップ38を実行することに
より開始する。ここでは目標(変数値)は決定されない
。1つの変数が目標として選択されると、1つのブレー
クポイントが設定されてこの段階において実行動作を停
止させる。次のステップ40はソース(すなわち動作源
)を活用化する。これは1つのルールが1つの目標を決
定するために使用される活用ソースとして選択されたこ
とを意味する。手続きコールがデバッガに対してなされ
て選択されたルールを活用する条件についてブレークポ
イントをセットするかどうかを決定する。 [00301 次のステップ42はルールの左側を処理するもので、そ
の前提を評価する。ルールの左側に含まれる変数はその
ルールの処理に実際に必要なもの又は必要ではないもの
であり、ブレークポイントは、選択された変数が活用ル
ールの左側にあれば実行動作を停止するようにセットさ
れ得る。 [0031] 次のステップ44ば、活用ルールの処理に必要な左側の
変数が未決定であるかどうかを決定することである。未
決定なものがあれば、ステップ46においてルールを処
理するに必要なこれら未決定の変数が識別され、制御が
ステップ38に戻されてそのような変数の1つを目標と
して制定する。 活用ルールの左側の変数のすべてが決定され、又は活用
ルールが決定された(例えばOR関係にある1つの変数
が真のとき)変数に基づいて排除された場合には、制御
はステップ48に入る。このステップにおいてルールの
左側が実際に評価される。ブレークポイントは1つの変
数の値がルールの左側を評価するために実際に必要であ
るとすればこの時発生される。 [0032] ルールの前提がステップ48で評価された後に、その機
能がステップ49において未決定の変数に対する基準と
してチエツクされる。未決定のままの基準があれば関連
する変数はステップ46において識別され、それら変数
の1つがステップ38において目標として選択される。 これらの変数が決定されると、ブレークポイントはルー
ルの左側が真であるか偽であるかにより発生される。こ
の点において、ルールの右側のアクションがステップ5
0で実行される。この段階において選択された変数値が
変化したとき1つのブレークポイントが特定されて発生
する。 [0033] 次のステップ51はそれ以外のソースが残っているかど
うかを決定する。選択された変数についてのすべてのソ
ース決定アクティビティがステップ51において完了す
ると、この変数の決定に対応するブレークポイントが生
ずる。それでなければ別のソースがステップ40におい
て作動される。全プロセスは未決定の目標がなくなるま
でステップ52で繰り返され、目標がなくなったとき推
論処理が終了となる。 [0034] 図5は順方向連鎖が選択されたときに推論機構12によ
り実行される推論アクティビティを示す。選択できる種
々のブレークポイントも示している。逆方向連鎖の場合
と同様に、ブレークポイントとなったかどうかの決定は
、推論アクテイビテイが完了してブレークポイントにな
るたびに手続ぎコールを行うことにより実行され、現在
の状態の比較が特定されたブレークポイントの条件に対
して行われる。 [0035] 第1ステツプ54は初期データにより影響を受けるすべ
てのルールにつり)で前提の評価をする。ブレークポイ
ントはこの変数値が必要とされ得るか又は必要であるか
により生じるものとして特定される。 1つのルールのすべての前提が真であれば、当該ルール
がステップ56でコンフリクトセットに加入される。ま
たブレークポイントはルールがコンフリクトセットに加
入されるときに発生するようにすることもできる。 [0036] ステップ58においてコンフリクトセットが空であれば
処理が完了する。そうでなければ、コンフリクトセット
からのルールがステップ60においてファイア処理され
るものとして選択され、ステップ62において排除され
る。このときファイア処理されたルールについてブレー
クポイントを特定することができる。ステップ62にお
いてファイア処理することにより1以上の変数値が変化
し得る。 ルールがファイア処理によって排除された結果として変
数値が変更されるとき、実行動作を停止するためにブレ
ークポイントを特定する。 [0037] 1つのルールをファイア処理した効果は、変更された変
数によりどのルールが影響されるかを識別することによ
り、知識ベースの残りの部分に伝播する。これにより影
響されたルールの前提がステップ64において再評価さ
れる。影響されたルールのすべてがステップ64におい
て再評価を必要とするものとして識別されると、変更さ
れた基準変数を有するルールインスタンチェイション(
instantiation )がコンフリクトセット
から除去される。ルールがコンフリクトセットから除去
されるときブレークポイントが特定されることにより発
生する。 [0038] 好適な実施例ではユーザが推論を非同期的に停止させる
こともできる。これはキーボード又はマウス入力装置か
らユーザがブレークポイント処理中断コマンドを入れる
ことにより行われる。ブレークポイント条件が発生した
かどうかを決定するために任意のデバッガ手続きに対し
て手続きコールがなされるたびに、ユーザがそのような
中断コマンドを入れたかどうかを見るためのチエツクが
行われる。そのような場合にはブレークポイントプロセ
サは予定のブレークポイントに到達したものとして呼び
出される。 [0039] 前述のようにブレークポイントプロセサにより行うこと
のできる機能の1つはシステムの実行を前の状態にロー
ルバックすることである。これはルール又は変数が変更
されたときシステムの一貫した実行動作を保証するため
に、当該ルール又は変数が現在実行中の処理動作に用い
られているとき必要である。ユーザはシステムの実行を
任意の時点で任意の状態にロールバックすることができ
る。 [0040] 図6は実行状態をリセットするに必要な情報をいかにし
て保存するかを示す。 推論イベント66.68は図4、図5について述べたイ
ベントに対応する。実際には数多くの推論イベントがあ
るが、図6にはそのうち2つだけを示しである。 各推論イベント66.68は多数の実行アクションから
なる。実行アクションは推論機構によりその種々のアク
ティビティを行うために採られるアトミックアクション
である。推論イベント66は実行アクション70及び7
2からなり、推論イベント68は実行アクション74及
び76からなる。1つの推論イベントを行うに必要な実
行アクションの数はイベントにより決まり、1つの実行
アクションから、特定の推論イベントを特定するに必要
な数まであり得る。 [0041] 1つの実行アクションが行われるたびに、実行履歴列7
8に記録が加入される。推論イベントが完了するたびに
1つの記録が推論履歴列80に加えられる。履歴列78
及び80に置かれた記録は各アクション及びイベントに
ついてなされたアクションの完全な記述を含む。これら
履歴列に置かれる各記録は除去可能であり、そしてその
効果を取消し得る。システムを前の状態にロールバック
するために実行履歴列78及び推論履歴列80からラス
トインラストアウト方式で適正な数の記録を除去するだ
けで良い。各記録が除去されると、その効果は取り消さ
れかくしてシステムの実行履歴は中間状態を通って逆方
向に進む。 [0042] システムには1組のデバッグ列82が保持されている。 各デバッグ列は各ルール及び各変数について保持されて
いる。1つの変数が使用され又は変更されるたびに、そ
のようなイベントの識別子が対応するデバッグ列に加入
される。1つのルールが逆方向連鎖におけるソースとし
て選択され又は順方向連鎖のコンフリクトセットに加入
されるたびに、当該イベントが生じた時及び当該選択に
対応する変数を識別するために適正なデバッグ列に記録
が加入される。1つのルールがファイア処理されるとき
には、そのルールを排除するものとして選ぶなめに用い
られた文節において参照されたすべての変数についての
値が、当該ルールについてのファイア履歴列に記録され
る。 [0043] 図7はエキスパートシステムの状態をロールバックする
なめに情報を保存できるようにする機構の詳細を示す。 推論機構12は状態マシン推論機構150として好適な
手段となる。これは極めて単純な実行サイクルを介して
連続的なループを形成する状態マシンである。各サイク
ル中に推論機構150は実行スタック152から記録を
引き出させて当該記録のコピーを実行履歴列78に加入
する。実行履歴列78に加入された記録は実行サイクル
が行われるたびにインクリメントされるカウンタの現在
値を含む。かくして実行履歴列78は実行スタック15
2の最初に発生した記録の履歴を表わす一連の連番を有
する記録を含むことになる[0044] 実行スタック152上の各記録は、推論機構150の現
在の状態を識別する情報を含む。推論機構150はその
状態に関連するアクティビティを行うのに必要なコード
を呼び出す。各実行状態についてのこのコードは適切な
情報の値を検査し、必要な変更を行い、次に入るべき状
態を計算する。そのとき次の実行状態についての記録が
実行スタックに押し込まれ、かくしてそのサイクルが完
了する。 [0045] 推論機構150についての典型的な実行状態は「ルール
前提のチエツク」、「ルール結果のファイア処理」、「
コンフリクトセットへの加入J及び「コンフリクトセッ
トからの除去」を含む。これら実行状態は図6について
述べたアトミックアクション70.72.74.76に
対応する。 [0046] 順方向連鎖及び逆方向連鎖推論プロセスも限定型状態マ
シンとして好適なようにモデル化されている。各プロセ
スは推輪状態サイクルからなり、各推輪状態は所定の順
序で実行状態の処理を行うことにより実行される。これ
らの推輪状態は図6の状態66及び68に対応する。典
型的な推輪状態は「突合せ」、「実行」「値の取得」及
び「ルールのファイア処理」を含む。単一推輪状態を実
行するに必要な実行状態の数は推輪状態の処理をするの
に必要なアクションの複雑さにより決まる。例えば、順
方向連鎖における「突合せ」の状態は多数の「ルール前
提のチエツク」及び「コンフリクトセットへの加入」の
実行状態からなる。実行中に必要な数は特定のルールの
左側の項目の数及び値により決まる。他の例としては、
JIIN方向連鎖プロセスにおけるルールのファイアリ
ングは2つの実行状態、すなわち「コンフリクトセット
からの除去」及び「ルール結果のファイア処理」を含む
。逆方向連鎖プロセスでのルールのファイアリングも好
適には2つの状態すなわち「ルール前提のチエツク」及
び「ルール結果のファイア処理」を含む[0047] 推論アクティビティが生じると、推輪状態は推論スタッ
ク154に押し込まれる。次の推輪状態が開始すると、
この推論スタックから記録が引き出され、実行履歴列7
8に実行記録をコピーする場合と全く同様にして推論履
歴列80にコピーされる。推論履歴列80にコピーされ
た各推論記録は実行履歴列78における実行記録を記録
する場合と同様にして現在の実行状態数を示す時間スタ
ンプを含む。 [0048] 上述のように推論機構150がブレークポイントが生じ
得る状態になれば、実際にブレークポイントに達したか
どうかを決定するための呼び出しがブレークポイント手
続きに対しなされる。そのような潜在的なブレークポイ
ントになるたびにブレークポイント列156に記録され
る。この記録はブレークポイント列156にそれが記録
された時点での現在の実行状態番号を示す。この記録は
また発生されつつあるブレークポイントのタイプを示す
。例えば、潜在的ルールのファイアリングブレークポイ
ントとなれば、これがブレークポイント列156に記録
された記録によって識別される。 [0049] 変数16についてなされたすべての変化の完全な履歴が
各変数に対応するバージョン履歴列内に保持される。こ
の履歴は1つの変数が用いられる時、目標に達した時等
を示すデバッグ履歴列に加入される。変数の値が変化す
るたびに、1つの記録が、新しい変数値及び現在実行状
態番号を含む対応するバージョン履歴列に加入される。 このように実行状態番号は種々の変数が値を変えた時点
を示すための時間スタンプとして機能する。 [0050] ルール履歴列は各ルール14に関連する。1つの実行状
態において1つのルールが用いられるたびに、対応する
記録がそのルールについてのルール履歴列に記録される
。上述の場合と同様にして現在の実行状態番号が時間ス
タンプとして用いられる。 [0051] 1セット以上の種々のカインドがこのエキスパートシス
テムの実行中にしばしば利用される。これら力インドセ
ットは時々刻々変更するエレメントの集合である。推論
機構150はそのようなセット158をアクセスし、こ
のセットが変更されるたびにセット履歴列160に記録
を加入する。特定の実行要求があったとき、セット履歴
列160内の各記録は、変形されたセット158の完全
なコピーを含み、又はセット158に加入されかつ削除
されたエレメントのすべてのリストだけを含むことにな
る。 [0052] セット158の一例は順方向連鎖に用いられるコンフリ
クトセットである。ルールがコンフリクトセットに加入
され又は除去されるとき、このアクティビティはセット
履歴列160に反映される。前述のケースにおいて生じ
たように、現在の実行状態番号はそのセットについて行
われるアクティビティの時間的な履歴を与えるためにセ
ット履歴列160に加入される各記録についての時間ス
タンプとして用いられる。 [0053] 推論機構150を前の状態にロールバックするためには
すべてのスタック及び履歴列をリセットする必要がある
。実行スタック152は推論機構150を逆方向に動か
すことにより構成し直される。実行スタック152に対
するすべてのスタック動作は反転され、これにより実行
スタック152を前方に押し込むことにより記録が引き
出され、また前方に引き出されることにより実行履歴列
78内の最終記録が実行スタック152に押し込まれる
。この逆方向プロセスは、実行履歴列78から各実行状
態が引き出されてスタック152に押し込まれるたびに
実行状態番号を減少させることにより、所望の実行状態
番号となるまで続行される[0054] 同様のプロセスが推論スタック154及び各セット15
8について行われる。 この逆方向プロセス中の実行状態番号が、推論履歴列8
0及びセット履歴列160それぞれにおける最終記録と
共に記録された実行履歴番号と等しくなったとき当該記
録は履歴列から除去される。推論履歴列80から除去さ
れる記録の場合には、これらの記録は推論スタック15
4に置かれる。1つの記録がセット履歴列160から除
去されるとき、対応するセット158はセット履歴列に
記録された値に従って更新される。 [0055] 変数16のリセットは、より単純に行うことができる。 各バージョン履歴列はロールバックが行われている実行
状態番号より小さいか又は等しい時間スタンプを有する
最終バージョンについて単に走査される。その後の時間
スタンプを有するすべてのバージョンは同様に捨てられ
る。種々のルール14についての履歴列は変数バージョ
ン履歴列と同様にロールバックされる。 [0056] ブレークポイント列156も選択されたロールバック点
以降のブレークポイント列のすべての記録を単に捨てる
だけでロールバックし得る。しかしながらブレークポイ
ント列156は他の目的について有効に使用し得る。こ
れば、推論機構150が順方向に実行しているときにブ
レークポイントが特定されると同じようにしてロールバ
ンク状態を特定するために使用できる。例えば順方向連
鎖において逆ブレークポイントは、ルールがコンフリク
トセットに加入され又は除去される時点として特定され
る。このときブレークポイント列が終了ステップから開
始ステップへと走査され、それぞれ考えられるブレーク
ポイントにおいてチエツクがなされる。この場合、セッ
ト履歴列160は各関連するブレークポイントにおいて
コンフリクトセットについてチエツクされ、逆方向にお
いて実際に所望のブレークポイントに達したときの決定
を直ちに行うことができる。ブレークポイントが識別さ
れると、対応する実行状態番号が識別されてシステムの
残りの部分が当該実行状態にロールバックされる。 [0057] 上述のようにデバッガはユーザがブレークポイントにお
いて変数値を変更できるようにする。これは、その変数
の前の値が前の推論ステップですでに用いられている限
り推論機構を不一致状態に置くことができる。多くの場
合、ブレークポイントセツション中になされたすべての
変化と一致する状態に推論機構をロールバックし、そこ
から実行を再スタートすることが望ましい。このロール
バック機構は、前の一致状態が識別されるとエキスパー
トシステムを前の状態にリセットするために使用される
。一致状態へのロールバックが必要とされたとき、最後
の一致状態を決定するための技術を次に説明する。 [0058] 次に前の一致状態を決定するなめに用いる4つの「スマ
ート」技術を述べる。 よりスマートな技術はロールバック時間を短くするが、
ロールバックする際に用いる適正な実行状態を決定する
ためにより計算機的な動作源を必要とする。 第1の方法は従来のエキスパートシステムのデバッガに
おいて用いられるものと同様の方法を用いる。この方法
はデバッグセツション中にルール又は変数に変更が生じ
たときに最初からすべての診断を再度開始する。多くの
場合、値の変化何の効果ももたないので、多量に冗長計
算をする必要がある。 [0059] 次の方法は変更された変数又はルールが用いられる最も
早い時点に戻る。好適なシステムでは、変数に変化が生
じたときの方法が用いられる。 変数に変更が生じたとき当該変数が用いられた最も早い
時点に戻る必要がある。このことは、順方向連鎖を実行
する推論機構では、変数が1つの値を受けた最も早い時
点を決定することと等価である。この変数が値を受けて
いなければ不一致は生じない。この変数が値をもってい
れば、値を受は力最も早い時点が、当該変数に関連する
バージョン履歴列の第1番目のエントリを検査すること
により決定できる。そのようなエントリに関連する時間
スタンプは一致状態を保証するために推論機構をどこま
でロールバックすべきかを示す。推論機構は最後の一致
実行状態である列内に見い出された値の直前の実行状態
番号にロールバックする。 [0060] 逆方向連鎖推論機構が用いられるときにはその変数が常
に目標であったがどうかを決定する必要がある。これは
、ルールが目標として選択されたことを示す記録を探し
ながらデバッグ列を変数について最初から走査すること
により決定することができる。この変数が目標として選
択されたとき、直前の実行状態が推論機構を戻すべき最
後の一致状態になる。 [0061] この方法はルールの変化が生じたとき、必要に応じて、
使用することができる。しかしながら好適な実施例にお
いては、ルールが実際に用いられる第1点を決定するた
めにルールのシンタックスを利用するより複雑なテスト
が用いられる。 [0062] 逆方向連鎖についてはこのテストは、変更されたルール
が推理する任意の変数(すなわち、当該ルールの右側の
任意の値)が目標となる最も早い時点を決定することに
より行われる。これは当該変数をデバッグ列内に探し任
意のデバッグ列内の最も早い実行状態番号を決定するこ
とにより決定できる。他の技術は変数が目標として選択
されるタイプのフラグが付された潜在的なブレークポイ
ントを探しながらブレークポイント列156を最初から
走査するものである。選択された[0063] 順方向連鎖が用いられている場合は、変更されたルール
が用いられた最も早いは好適には変更されたルールに対
する最小ファイアリングセットの決定を含む。 理される前に特定する必要はない。例えば(A AN
D B)OR(CANDD)のような形式の左側をも
つルールでは、A及びBのみが特定され又はC及びDの
みが特定されるときそのルールをファイア処理すること
ができる。このようにA及びBは共にそのルールについ
ての最小ファイアリングセット内の1つの[0064] そのようなルールがコンフリクトセットに入り得た最も
早い点を見い出すためには、変数(この例ではA、B、
C,D)がはじめに値を受けるときを決定するため最初
からブレークポイント列156を順方向に走査すること
ができる。効果の点で有利な他の方法は、A及びBが共
に特定され又はC及びDが共に特定される最も早い実行
状態番号を決定するために、それぞれについてのバージ
ョン履歴[0065] 第4の方法はこれと同様であるが、左側の変数の値を実
際に見て当該変数値が実際に左側をコンフリクトセット
に入れさせるかどうかを決定することを含む。 そのような決定は、その後の演算において実行すべきロ
ールバックを少なくできる結果になるが、上述の決定の
仕方より著しく複雑になり、その結果効率の点で望まし
くない。あるシステムでは、種々の変数値及びルール構
造によって複雑なテストを行うことにより著しいセービ
ングを実現し得る。そのようなシステムに用いることは
正しいと考えられる。 [0066] 種々の変数及びルールの履歴はこれを変数に生ずる変化
及びルールを用いたポイントを追跡するために使用でき
る。これによりユーザがエラーの原因を決定するために
選択されたルール又は変数の履歴を1回に1ステツプ戻
るような方法を許容できる。 [0067] この実施例において好適に与えられるデバッグツールは
ルール/変数ネットワークのグラフィック表示である。 図8にそのような表示の一例を示す。図8は4つのルー
ル84.86.88.90及び9個の変数92〜106
を有する知識ベースの図形表示である。ルールの条件に
用いられる変数はルールボックスの左側に接続し、ルー
ルのアクションにおいて結論を出す変数はこのルールの
左側に接続する。例えばルール84は変数102につい
ての結論を出すために変数94及び92を用い、ルール
88は変数96及び106の結論を出すために変数98
及び100を用いる。 [0068] 図8のネットワークは事前診断モード、診断モード及び
事後診断モードの各モードにおいて使用される。このネ
ットワークの使用はどのモードとなっているかによって
少し変化する。図8に示す静的ルール/変数ネットワー
クは知識ベースにおける種々のルール及び変数間の静的
依存性を示すための事前診断モードで用いられる。これ
は、種々の変数を変えることにより影響を受けるルール
及び種々のルールを変えることにより影響を受ける変数
を決定するためにユーザによって利用される。 [0069] エキスパートシステム(診断モード)の実行中、推論プ
ロセス内のイベントの進行を可視表示するためにルール
/変数ネットワークに1つのアニメーションが与えられ
る。このため、種々の指標がエキスパートシステムによ
り行われる推論の信号を図形表示するために用いられる
。色彩の変化又は濃淡がルール及び変数の状態を示すた
め使用される。カラー表示の場合には色の変化がルール
及び変数[0070] 図9b−9iは白黒グラフィック表示における変化を表
す好適な方法を示す。 ルール/変数ネットワーク内の各変数7ノード162は
対応するオフセットした変数ノード164を有する。オ
フセット変数ノード164はそれに重なる変数ノード1
62により部分的に不明瞭となり、変数ノード162の
状態変化を示す補助としてのみ用いられる。各ルールノ
ード166は同様にしてオフセットしたルールノード1
68を有し、これも同じように機能する。図における単
一方向のハンチングは1つのノードが白黒表示で灰色と
なることを示し、クロスハツチングは1つのノードが黒
となることを示す。 [0071] まず変数ノード162及びオフセット変数ノード164
はこのネットワーク内のすべての変数について黒である
とする。この状態を図9bに示す。逆方向連鎖がこの推
論機構で用いられると、オフセット変数ノード164は
それが表わす変数が目標として選択されれば灰色となる
。これを図90に示す。1つの変数が値を受けると、変
数ノード162も図9dに示すように灰色になる。この
変数が導出されると、図9eに示すように、変数ノード
162は灰色のままになりかつオフセット変数ノード1
64が白となる。 [0072] ルールノード166及びオフセットルールノード168
は同様にして最初は、図9gに示すように、黒である。 ルールが活用されるソースになると、オフセットルール
ノード168は図9hに示すように灰色となる力板ルー
ルノード166は黒のままになる。これらルールがファ
イア処理されると、ルールノード166も図91に示す
ように灰色となる。 [0073] 基礎となる推論機構が順方向連鎖を実行しているとき同
じようなアニメーション技術が使用され、この場合には
、オフセットした変数ノード164は使用されずに、黒
色のまま残る。変数に値が割り当てられたとき、変数ノ
ード169は黒色から灰色に切り換わり、その結果図9
fに示すような表示がなされる。順方向連鎖の場合には
、ルールがコンフリクトセットを入れたときオフセット
したルールノード168が灰色になって図りに示すよう
な表示を与え、またルールが図91に示すようにファイ
ア処理されたとき、ルールノード166は灰色に切り換
わる。 [0074] いくつかの変数はまた知識ベースに割り当てられた値を
有する。これら変数に対応するノードは、値を受ける変
数用に用いられるグラフィック表示された値を割り当て
られる。このように、逆方向連鎖の推論機構については
、オフセット変数ノード164は白でありかつ変数ノー
ド162は灰色である。順方向連鎖の推論機構では最初
オフセット変数ノード164は黒でありかつ変数ノード
162は灰である。 [0075] この動的表示の使用又はルール及び変数についての状態
変化を表示する同様の技術を使用することにより、ユー
ザに動作可視グラフィック表示を与えるルール/変数ネ
ットワークが得られる。逆方向連鎖が用いられるとき、
オフセット変数ノード164及びオフセットルールノー
ド168の灰色の右から左への流れが推論プロセスにお
ける目標、ソース及び補助目標が連鎖的に発生したこと
を示す。 変数ノード162及びルールノード166の灰色の左か
ら右への流れはルールファイアリング及び変数値の伝播
効果を示す。順方向連鎖の場合、このネットワークの同
様な左から右への灰色の流れは推論プロセスの可視表示
を与える。 [0076] 上記のようなアニメーション化された表示によれば、ユ
ーザは各ステップで生ずる多くのデイテールにより混乱
させられることなく、推論プロセスの流れを見ることが
できる。ユーザが正しくないものとして知っている方向
に推論プロセスが開始するとすれば、ユーザは非同期的
に実行を中断させて問題の原因を検査することができる
。 [0077] 事後診断段階では、ルール/変数ネットワークが知識ベ
ース内のすべてのルール及び変数の最終状態を静的に表
示する。ユーザは目標としてどの変数が用いられて値を
受けたか、またどのルールがファイア処理されたかを図
形的に見ることができる。 [0078] ある場合には変数が1サイクルに関係することがある。 逆方向推論機構においてこの状態は、1つの変数がその
変数導出用の補助目標に用いられるルールの左側にある
ときに生ずる。サイクルは、例えば値VAR4の変数9
8及び値VAR7の変数104のノードカ飄実際に同一
の変数を表わすとき図8において生ずる。そのようなサ
イクルが生じたとき、図9jに示すように、通常は円形
のノード162がルール/変数ネットワークの右に置か
れてこれが目標であることを示しまた菱形記号がスプリ
ット変数ノード170を示すために用いられる。推論中
日形の変数ノード169はオフセット変数ノード164
と同様に灰色になり、菱形のスプリット変数ノード17
0は変数ノード162と同様に灰色になる。この表示技
術は順方向連鎖の場合に用いられる。 [0079] ルール及びノードの図形表示を変更するための手続きは
前述のデバッガにより容易に行われる。図4及び図5に
ついて述べたように、潜在的なブレークポイントに到達
するたびに、デバッガに対して手続きコールがなされて
実際にブレークポイントに達したかどうかを決定する。 図形表示用のこの変化はそれぞれ潜在的なブレークポイ
ントに対応する。例えば1つの変数を目標とすれば図4
のステップ38で示されるように潜在的なブレークポイ
ントになる。同様にルールのファイアリング処理は図4
のステップ50に対応する潜在的なブレークポイントを
発生する。図形表示に変化を生じさせるようなイベント
が発生することによりブレークポイントデバッガが呼び
出されると、手続きコールが表示マネージャに対して行
われて表示の適正なノードの変更を行う。ブレークポイ
ントがそのとき実際に生じたかどうかには無関係に表示
が変更される。 [0080] 図10はブレークポイントプロセサ34がブレークポイ
ントにおいて呼び出されるときに生じ得る種々のイベン
トを示す図である。まず、推論機構の実行を停止させる
条件がユーザの情報についてブロック110において表
示される。このときブレークポイントプロセサはブロッ
ク112においてユーザからの入力を受け、そしてユー
ザの選択により種々のアクションの内の1つを実行する
。 ユーザはブロック114において推論機構の実行を停止
させるブレークポイントを見て編集することができる。 1回に多数のブレークポイントを加え、編集し及び削除
し得るようにユーザにメニュを与えることができる。 [0081] ユーザはブロック116において知識ベース内のルール
を見て編集するか、又はブロック118で変数を見て編
集するかを選択することもできる。ユーザが用いられた
ルール又は変数を編集する場合には、システムにより一
貫性の分析が自動的に行われる。好適な一貫性のチエツ
ク方法はすでに述べた。この変化がシステムを非−貫性
状態にするものである場合には、ユーザに知らされる。 ユーザは必要であれば実行を一貫性状態にロールバック
する機会をもつ。 ユーザは特定のルールファイアリングについての詳細情
報を与える詳細ルールの追跡をブロック120において
行う。すなわち、参照されたすべての変数の値と各前提
条件についての真値が示される。このレベルのデイテー
ルは従来の説明機能では与えられないカミデバッグには
必要なものである。 [0082] ユーザはブロック122において変数値が必要な理由又
はブロック124においてその値が得られた理由の表示
を選ぶことができる。ブロック122における「WHY
J質問は、制御手続き(順方向又は逆方向連鎖)が特定
の変数についての値を必要とする理由又はいかにして変
数値が種々のルール及び変数の対話を通じてリップルす
るかを表示する。ブロック124の「HOWJ質問は、
いかにして制御手続きが特定の変数の値を決定しようと
しているかを表示する。「WHY」質問は本来未来形の
質問であり、「なぜこの情報が必要か」を問うものであ
る。1−HOWJコマンドは本来過去形の質問であり、
「いかにしてこのように事が生じたか」を問うものであ
る。 [0083] 診断段階&:Bbsで・ 「HOW」及び「WHYJ質
問がルール又は変数につり・ての過去及び将来の使用を
決定するために用いられる。ブロック122の「WHY
」質問はどこで変数が用いられたか(過去) またどこ
でそれが用いられるか(未来)を示す。デバッグ列は過
去情報を得るために用いられ、静的ルール/変数ネット
ワークは未来の事前診断段階で生ずるようなものについ
て用いられる。ブロック124の1−HOWJ質問は変
数が現在の値をどのように受けたか又はルールがどのよ
うな理由でファイア処理されたかを示す過去情報を得る
ためにデバッグ列を使用する。ブロック124の1HO
WJ質問は、ブロック122の「WHY」質問と同様に
して未だ生じていないイベントに関する質問に答えるた
めに静的ルール/変数ネットワークを用いる。 [0084] 事前診断段階24において「HOW」及び「WHY」質
問は推論機構により採用されることがあるステップを見
い出すなめにのみ用いることができる。診断段階26及
び事後診断段階28においては過去、現在及び未来のイ
ベントについての情報も使用できる。 [0085] 上述のようにユーザはいくつかの方法でブレークポイン
トプロセサ34を出ることができる。ユーザは推論機構
の単一ステップ実行ブロック126を開始し又は続行す
ることができる。制御は1つの単一ステップが完了した
後にブレークポイントプロセサ34に戻る。ユーザはブ
ロック128において診断段階を早めに終了させて事後
診断段階に直接移すことができる。またユーザはブロッ
ク130においてブレークポイントプロセサから出て通
常の実行に戻させることができ、又はブロック132に
おいてシステムの実行を最初から再スタートさせること
ができる。ブロック134において実行状態を選択され
た状態又はフレークポイントにより特定されるものにロ
ールバックすることができる。これは、ブロック119
の一貫性分析が変化により非−貫性が導入されたことを
示した後にしばしば行われるのであり、最後の一貫性状
態への直接のロールバックのオプションがユーザに与え
られる。 [0086]
上述のルール型デバッガによればユーザはエキスパート
システムフログラムの進行についての詳細な情報を得る
ことができる。ブレークポイントは動的にセットされそ
して変更することができ、システム全体の実行動作につ
いての効果を見るためにルール及び変数値に対するその
ような変化を与えることができる。このデバッガは知識
ベースについて順方向及び逆方向連鎖の両方を支持する
ために使用でき、またユーザとの一貫性のある対話がい
ずれの場合にも用いられる。実行動作の履歴に関する詳
細情報がいくつかの形でユーザに供されるので、実行動
作の状態を前の中間状態にロールバックさせ得る。この
機能により、推論を最初から再スタートすることなくル
ール及び変数に対して変更を行うことができることにな
る。 [0087] エキスパートシステムにおけるルールファイアリングと
並列処理システムにおける同時的なプロセス動作との間
には相似性があることは当業者には明らかである。理論
的にはルールの相互独立性がないかぎり多くのルールは
同時に動作する。各ルールが並列システム内の1つのプ
ロセスに対しマツプされ、メツセージが変化を通信する
ために用いられた変数を通し又は共用するとすれば、相
互独立性をもたないプロセスも同時に実行し得る。 [0088] 上記のデバッガはそのようなエキスパートシステムでも
使用できる。これはイベントの順序が予め知られていな
いとき有用なデバッグ情報を与えるように設計されてい
る。この状態は一般に並列処理システムにおいて生じる
から、前述のデバッガは適正な変更を加えることにより
そのようなシステムにも使用できる。ブレークポイント
は各プロセスについて別々に特定することができ、これ
によりデバッガはそれらが1つとなったときに呼び出さ
れる。システム設計により、残りのプロセスも停止する
ことができ、又は続行するようにすることもできる。ル
ール/変数ネットワークと等価なツールをメツセージ又
は共用変数を用いるプロセス間の関係を図形表示するた
めに用いることができる。種々のプロセスの実行履歴を
検査する能力はルール型システムのデバッグに有効なよ
うに並列システムのデバッグにも有効である。
システムフログラムの進行についての詳細な情報を得る
ことができる。ブレークポイントは動的にセットされそ
して変更することができ、システム全体の実行動作につ
いての効果を見るためにルール及び変数値に対するその
ような変化を与えることができる。このデバッガは知識
ベースについて順方向及び逆方向連鎖の両方を支持する
ために使用でき、またユーザとの一貫性のある対話がい
ずれの場合にも用いられる。実行動作の履歴に関する詳
細情報がいくつかの形でユーザに供されるので、実行動
作の状態を前の中間状態にロールバックさせ得る。この
機能により、推論を最初から再スタートすることなくル
ール及び変数に対して変更を行うことができることにな
る。 [0087] エキスパートシステムにおけるルールファイアリングと
並列処理システムにおける同時的なプロセス動作との間
には相似性があることは当業者には明らかである。理論
的にはルールの相互独立性がないかぎり多くのルールは
同時に動作する。各ルールが並列システム内の1つのプ
ロセスに対しマツプされ、メツセージが変化を通信する
ために用いられた変数を通し又は共用するとすれば、相
互独立性をもたないプロセスも同時に実行し得る。 [0088] 上記のデバッガはそのようなエキスパートシステムでも
使用できる。これはイベントの順序が予め知られていな
いとき有用なデバッグ情報を与えるように設計されてい
る。この状態は一般に並列処理システムにおいて生じる
から、前述のデバッガは適正な変更を加えることにより
そのようなシステムにも使用できる。ブレークポイント
は各プロセスについて別々に特定することができ、これ
によりデバッガはそれらが1つとなったときに呼び出さ
れる。システム設計により、残りのプロセスも停止する
ことができ、又は続行するようにすることもできる。ル
ール/変数ネットワークと等価なツールをメツセージ又
は共用変数を用いるプロセス間の関係を図形表示するた
めに用いることができる。種々のプロセスの実行履歴を
検査する能力はルール型システムのデバッグに有効なよ
うに並列システムのデバッグにも有効である。
【図1】
ルール型エキスパートシステムをデバッグするためのシ
ステムのブロック図である。
ステムのブロック図である。
【図2】
好適なデバッガにおける3つの段階をもつ高レベルな制
御の流れを示すブロック図である。
御の流れを示すブロック図である。
【図3】
図2の診断段階の詳細を示すブロック図である。
【図4】
逆方向連鎖が用いられるときの推論中の潜在的なブレー
クポイントを示すフローチャートである。
クポイントを示すフローチャートである。
【図5】
順方向連鎖が用いられるときの推論中の潜在的なブレー
クポイントを示すフローチャートである。
クポイントを示すフローチャートである。
【図61
好適な実施例によるデバッグを支持するために推論機構
により用いられるデータ構造を示す図である。 【図7】 好適な実施例によるデバッグを支持するために推論機構
により用いられるデータ構造を示す図である。
により用いられるデータ構造を示す図である。 【図7】 好適な実施例によるデバッグを支持するために推論機構
により用いられるデータ構造を示す図である。
【図8】
好適なデバッガにより描くことができるルール/変数ネ
ットワークの一例を示す系統図である。
ットワークの一例を示す系統図である。
【図9】
図8の図形表示を示す路線図である。
【図10】
ブレークポイントとなったときユーザ入力に応じて行わ
れる種々のアクションを示すフローチャートである。
れる種々のアクションを示すフローチャートである。
10・・・・・・エキスパートシステム、12・・・・
・・推論機構、14・・・・・・ルール、16・・・・
・・変数、18・・・・・・知識ベース、19・・・・
・・ユーザインターフェース、20・・・・・・デノ〈
ツガ、22・・・・・・データベースアクセス。
・・推論機構、14・・・・・・ルール、16・・・・
・・変数、18・・・・・・知識ベース、19・・・・
・・ユーザインターフェース、20・・・・・・デノ〈
ツガ、22・・・・・・データベースアクセス。
【図1】
図面
【図2】
【図3】
【図5】
【図8】
【図9】
Claims (7)
- 【請求項1】一貫性がある推論状態間を動く推論機構を
用意するステップと、エキスパートシステムにある各変
数において、当該変数が使用されたか又は使用される可
能性があつたとき、エントリ表示を含む対応するデバッ
グ列を発生するステップと、 ルール又は変数がユーザによつて変更されたとき、当該
ルール又は変数が上記エキスパートシステムに使用され
たかどうかを決定するステップと、上記変更されたルー
ル又は変数が使用されたとき、当該変更されたルール又
は変数が使用される可能性があつた最も早いポイントを
決定して上記エキスパートシステムのうち上記変更され
たルール又は変数と一致する前回の状態として上記ポイ
ントを選択するステップとを具え、ルール型エキスパー
トシステムの一貫性を検査することを特徴とするデバツ
ギング方法。 - 【請求項2】変数が変更されたとき、上記決定するステ
ップは、変更された変数に対応するデバッグ列を試すス
テップと、上記変数が使用される可能性があつた最も早
く決定されたポイントとしてデバッグ列内の最も早いエ
ントリを選択するステップとを有することを特徴とする
特許請求の範囲第1項に記載のデバツギング方法。 - 【請求項3】ルールが変更されたとき、上記決定するス
テップは、上記推論機構が逆方向連鎖を使用している場
合には、上記ルールが使用される可能性があつた最も早
いポイントとして、上記変更されたルールが活用ソース
として選択される可能性があつた第1のポイントを選択
するステップを有し、上記推論機構が順方向連鎖を使用
している場合には、上記ルールが使用される可能性があ
つた最も早いポイントとして、上記変更されたルールが
コンフリクトセットに入る可能性があつた第1のポイン
トを選択するステップを有することを特徴とする特許請
求の範囲第1項に記載のデバツギング方法。 - 【請求項4】上記推論機構が逆方向連鎖を使用している
とき、上記選択するステップは、上記変更されたルール
の右側のすべての変数に対応するデバッグ列を試すステ
ップと、 上記変更されたルールが使用される可能性があつた最も
早いポイントとして、対応する変数が目標となつた上記
デバッグ列のいずれかにある最も早いエントリを選択す
るステップとを有することを特徴とする特許請求の範囲
第3項に記載のデバツギング方法。 - 【請求項5】上記推論機構が順方向連鎖を使用している
とき、上記選択するステップは、上記変更されたルール
に対する最も最近のファイアリングセットを決定し、上
記最も最近のファイアリングセット内のすべての変数に
対応するデバッグ列を試すステップと、 上記変更されたルールが使用される可能性があつた最も
早いポイントとして、上記最も最近のファイアリングセ
ット内のすべての必要変数が特定された最も早い時点を
選択するステップとを有することを特徴とする特許請求
の範囲第3項に記載のデバツギング方法。 - 【請求項6】潜在的なブレークポイントが推論機構に到
達するごとにエントリを加入する場合に、エキスパート
システムが実行動作をしている間にブレークポイント列
を発生するステップを有することを特徴とする特許請求
の範囲第3項に記載のデバツギング方法。 - 【請求項7】上記推論機構が逆方向連鎖を使用するとき
、上記決定する手段は、最初からブレークポイント列を
見直すステップと、目標として、変数の選択に対応する
潜在的ブレークポイントを選択するステップと、 目標として選択された変数が上記変更されたルールの右
側にある場合に、上記変更されたルールが使用される可
能性があつた最も早いポイントとして、第1の上記選択
されたブレークポイントを選択するステップとを有する
ことを特徴とする特許請求の範囲第6項に記載のデバツ
ギング方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US47086590A | 1990-01-26 | 1990-01-26 | |
| US07/470865 | 1990-01-26 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04123232A true JPH04123232A (ja) | 1992-04-23 |
Family
ID=23869387
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2412972A Ceased JPH04123232A (ja) | 1990-01-26 | 1990-12-25 | 一貫性検出方法 |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP0439342A3 (ja) |
| JP (1) | JPH04123232A (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB9211368D0 (en) * | 1992-05-29 | 1992-07-15 | British Telecomm | Software fault location |
| GB9519677D0 (en) * | 1995-09-27 | 1995-11-29 | Philips Electronics Nv | Data processing apparatus event cause determination |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01251237A (ja) * | 1988-03-31 | 1989-10-06 | Toshiba Corp | 推論システム |
-
1990
- 1990-12-25 JP JP2412972A patent/JPH04123232A/ja not_active Ceased
-
1991
- 1991-01-23 EP EP19910300513 patent/EP0439342A3/en not_active Withdrawn
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01251237A (ja) * | 1988-03-31 | 1989-10-06 | Toshiba Corp | 推論システム |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0439342A2 (en) | 1991-07-31 |
| EP0439342A3 (en) | 1993-05-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5170464A (en) | Method for rolling back an expert system | |
| US5140671A (en) | Expert system debugger | |
| US7565642B2 (en) | Rule engine | |
| US5167012A (en) | Method for performing consistency checks | |
| US5247651A (en) | Interactive computer program specification and simulation system | |
| JP2005527916A (ja) | 作業リスト予報のためのシステムおよび方法 | |
| Montanari et al. | Contextual occurrence nets and concurrent constraint programming | |
| Reynolds et al. | Automated provenance graphs for models@ run. time | |
| EP0439343A2 (en) | Method of operating an expert system and computer systems therefor | |
| Bundy | How to improve the reliability of expert systems | |
| Molineaux et al. | Continuous explanation generation in a multi-agent domain | |
| Dastani et al. | Practical extensions in agent programming languages | |
| EP0449402A2 (en) | Method for rolling back an expert system | |
| JPH04123232A (ja) | 一貫性検出方法 | |
| Xu et al. | Intention interleaving via classical replanning | |
| EP0439341A2 (en) | Display for expert system | |
| EP0454294A2 (en) | A reticular discrimination network for specifying real-time conditions | |
| Oquendo et al. | A meta-CASE environment for software process-centred CASE environments | |
| Mani et al. | Search-based testing of multi-agent manufacturing systems for deadlocks based on models | |
| KR100241849B1 (ko) | 블랙보드 기반의 혼합추론 전문가시스템 | |
| Mani et al. | Monitoring Multi-Agent Systems for deadlock detection based on UML models | |
| van Eijk | Semantics of agent communication: An introduction | |
| Linster | Integrating conceptual and operational modeling: a case study | |
| van Lamsweerde et al. | Leaving inconsistency | |
| Rembold et al. | Material flow system model evaluation and improvement |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20070424 |