JPH0772866B2 - エキスパート・システムの状態を巻戻す方法及びシステム - Google Patents

エキスパート・システムの状態を巻戻す方法及びシステム

Info

Publication number
JPH0772866B2
JPH0772866B2 JP2406911A JP40691190A JPH0772866B2 JP H0772866 B2 JPH0772866 B2 JP H0772866B2 JP 2406911 A JP2406911 A JP 2406911A JP 40691190 A JP40691190 A JP 40691190A JP H0772866 B2 JPH0772866 B2 JP H0772866B2
Authority
JP
Japan
Prior art keywords
execution
inference
state
breakpoint
rule
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.)
Expired - Lifetime
Application number
JP2406911A
Other languages
English (en)
Other versions
JPH0689177A (ja
Inventor
レイモンド・アール・ヘイズ
ロ・シー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0689177A publication Critical patent/JPH0689177A/ja
Publication of JPH0772866B2 publication Critical patent/JPH0772866B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Control Or Security For Electrophotography (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、広くはコンピュータ・
システムに関するものであり、より詳しくはルール型エ
キスパート・システムに用いるのに適したデバッガに関
するものである。
【0002】
【従来の技術】エキスパート・システムとは、熟練者
(エキスパート)が問題を解決する際の行動を模倣する
ことを企図したコンピュータ・プログラムことである。
エキスパート・システムは、典型的な例としては、観測
情報の集合に基づいてそこから結論を導出するために利
用されたり、あるいは、所望の目的を達成するための仮
説の提示及び検証を行なうために利用されたりするもの
である。エキスパート・システムは、システムの基本要
素として複数の「ルール」を使用しており、そして例え
ば前向きチェイニング、或いは後向きチェイニング等の
制御手順を用いてそれらルールの操作を行なうことによ
って、具体的な問題の解決を得るようにしている。
【0003】ルールとは、「IF条件、THEN動作、
ELSE動作」という形で記述されたステートメントで
ある。条件部には、当該ルールを適用するためには真で
あることが必要とされるような、1つないし複数の事実
を記述する。動作部には、その条件が真である場合、或
いは偽である場合に、どのような動作を実行すべきかを
記述する。真の場合の動作と偽の場合の動作とは、夫
々、THEN部分とELSE部分とに記述される。これ
らの条件部や動作部では、問題解決の状態に関する情報
を一時的に格納するための変数の参照を、しばしば行な
う。従って、ある1つのルールの中の実行部において、
ある変数に対して値が付与された場合に、その変数が、
そのルールとは別のルールの条件部ないし動作部におい
て使用されている変数であるということもあり得る。
【0004】ルールは各々が独立した単位であると見な
され、また、各ルールは宣言方式によってエンターされ
且つ処理されるようになっているが、しかしながら複数
のルールの間で変数が共用されるならば、それによっ
て、それらのルールは相互作用を持ち得るようになる。
前向きチェイニングのシステムにおいては、ルールの起
動が発生したならば、ルール条件が真であるか否かを知
るためのチェックが反復して実行されることによって、
そのルール起動の影響が伝播されて行く。先ず、一組の
初期変数値をルール条件に突き合わせるという、突き合
わせを行なう。そして、ルール条件が真となったなら
ば、該当するルール動作が実行され、その処理の結果得
られた変数値が、また突き合わせに用いられる。この突
き合わせと実行とから成るサイクルが、何らかの停止条
件が満たされるか、あるいは実行可能なルール動作がな
くなるまで、反復して実行される。
【0005】後向きチェイニングのシステムでは、ゴー
ル変数の値を確定させるようなルールが使用されるよう
にしてある。先ず最初に一組の変数を、夫々ゴールであ
ると定める。あるルールの動作が、それらの変数に値を
付与する動作であるとき、そのルールはソースであると
見なされる。そのようなソース・ルールの条件部が変数
を含んでいることもあり得る。もしその条件部の変数の
値が定まっていたならば、そのルールの評価を行なうこ
とによって、ゴールの値を得ることができる。一方、そ
の条件部の変数の値が定まっていなかったならば、その
変数は、サブゴールであると定められ、そして更に別の
ルールがソースとして用いられることになる。この手順
が継続して行なわれることによって、諸々の条件部が評
価可能となり、また、ルール動作の実行の影響が、ソー
ス・ルールのチェインを通して後向きに伝播し、そして
最終的には、当初に設定したゴール変数に値が付与され
ることになる。
【0006】多くの推論エンジンでは、ルール以外のも
のも、ソースとして使用することができるようになって
いる。即ち、ファンクションのコールや、データベース
へのアクセス、或いはユーザへの照会を利用して変数の
値を獲得するということがしばしば行なわれている。し
かしながら、これらのソースは、前向きチェイニングの
場合には、値の伝播には寄与することがなく、また、後
向きチェイニングの場合には、ゴールないしサブゴール
の導出には寄与することがない。従って、このらの種類
のソースを利用して変数に値を付与した場合には、それ
によって、1つのエキスパート・システムの中の複数の
ルールの間の相互作用にまでは、影響を及ぼすことがで
きない。
【0007】ルールのエンターを宣言方式で行なうこと
ができ、また、エンターした後にはそれらのルールは、
問題の性質と知識ベース内のデータとに従って実行され
るのであるから、その当然の帰結として、エキスパート
・システムのプログラマは、通常は、複数のルールの間
の手順的な相互作用を明確に指定しておく必要はないと
いうことになる。しかしながら、そのエキスパート・シ
ステムが望ましい動作を発揮しなかった場合には、処理
手順がどの点から誤った方向へそれていってしまったの
かを正確に突き止めることは、しばしば非常に困難なこ
とになる。典型的なエキスパート・システムにおいて
は、そのエキスパート・システムがみずからの結論に到
達するまでに用いた複数のステップの軌跡をユーザが一
覧できるように、解説機構部が設けられている。しかし
ながら、その解説は、多くの場合、問題となっている部
分を容易に同定することができるだけの、充分なもので
はなく、また多くの場合、その解説を利用できるのは、
システムがユーザから値を提供してもらうことを必要と
した場合か、またはプログラムの実行が全て完了した後
だけでしかない。従って、たいていは、実行動作の中間
結果を見ることができるようにはなっていない。
【0008】従来の典型的なエキスパート・システムの
デバッガとしては、IBM社から供給されている製品で
ある「ノリッジ・ツール(Knowledge Tool)」や、「テ
イレシアス(TEIRESIAS)」等がある。ノリッジ・ツー
ルは前向きチェイニングを採用しており、このノリッジ
・ツールを用いることにより、ユーザは、推論プロセス
の中のステップを1つづつ実行させることができる。こ
のデバッガは、突き合わせと実行とから成る1回のサイ
クルが終了したときに、その時点において一時停止し
て、限られた状態情報を提示するものである。その状態
情報のうちの幾つかは、システムの実行の前後にも見る
ことができるようになっている。
【0009】テイレシアスについては、1982年、マ
グロウヒル社刊、R.デイヴィスとD.レナートとによ
る共著、「人口知能における知識ベース型システム」
(KNOWLEDGE-BASED SYSTEMS IN ARTIFICIAL INTELLIGEN
CE, R. Davis and D. Lenat, McGraw-Hill, 1982)の第
2部に詳細に記載されており、このテイレシアスは、後
向きチェイニングのシステムに適用されるものである。
処理の実行を一時停止してユーザから変数の値が入力さ
れるのを待っている待機時に、限られた状態情報を提示
させることができるようになっている。変数の変更が行
なわれた場合に、最初から実行がやり直される。
【0010】従来の、手順型プログラムのプログラミン
グ環境にも、同様の問題が存在していた。手順型プログ
ラムは、明確に示された処理手順として書かれるもので
あるから、一般的にその処理の流れは明瞭である。しか
しながら、変数の値の影響や中間結果は、処理の実行中
には見ることができない。従来のデバッガは、この問題
に対処するために、ユーザがブレークポイントを指定で
きるようにしていた。ブレークポイントというのは、実
行を一時停止して、ユーザが変数の値と処理情報とを調
べることができるようにした点のことである。
【0011】上で説明した2つのエキスパート・システ
ム用デバッガはいずれも、そのエキスパート・システム
の実行中に発生する、例えば変数の値やルール起動等の
種々の条件に基づいてブレークポイントを設定すること
は不可能となっている。またそれらのデバッガはいずれ
も、前向きチェイニングの推論エンジンと後向きチェイ
ニングの推論エンジンとの両方に好適に用いることので
きるものではない。更に、それらデバッガは双方とも
に、従来のデバッガに典型的に備えられている、幾つか
の単純なデバッグ技法を採用しているに過ぎない。
【0012】宣言方式のルール型エキスパート・システ
ムでは、多くの場合、その処理の流れを前もって知るこ
とはできず、また、その処理の流れが常に一定のものに
なるとは限らない場合すらあり得るため、従来のデバッ
ガにおいて採用されている技法は、エキスパート・シス
テムのプログラムに対して適用にするには不適当であ
る。ルール型エキスパート・システムに適用するための
デバッガとしては、ブレークポイントを使用することが
でき、また、そのエキスパート・システムの動作を明瞭
に説明することのできるユーザ情報機構部を備え、それ
によって、ユーザが行なう、プログラミングのエラーの
訂正という仕事を簡単化することのできるデバッガが望
ましいといえよう。更には、エキスパート・システムの
実行状態を以前のある状態へリセットし、即ち以前のそ
の状態まで巻戻し、そして、巻戻し先のその状態から、
エキスパート・システムの実行を再開できるようにする
方法を提供するものが、望ましいといえよう。
【0013】
【発明が解決しようとする課題】従って本発明の目的
は、システム実行状態を以前のある実行状態にまで巻戻
すことができるようにした、ルール型エキスパート・シ
ステムに用いるのに適したシステム及び方法を提供する
ことにある。
【0014】本発明の更なる目的は、エキスパート・シ
ステムを初期状態へ戻すことなく、中間に実行された処
理を元に戻してその処理の実行以前の状態とすることが
できるようにした、システム及び方法を提供することに
ある。
【0015】本発明の更なる目的は、ユーザが選択して
ブレークポイントを設定することができ、そして、その
設定したブレークポイントに達するまで、システムの実
行を巻戻すことができるようにした、システム及び方法
を提供することにある。
【0016】
【課題を解決するための手段】従って、本発明によれ
ば、ルール型エキスパート・システムに用いるのに適し
たシステム及び方法は、そのエキスパート・システムが
実行中に経過して行った様々な実行状態の履歴を保持す
るようにしている。ユーザが、以前のある実行状態を巻
戻し先実行状態として選択することができるようにして
あり、その選択がなされたならば、その選択された状態
に到達するまで、この履歴の中に保持されているそれ以
後の実行状態を、逆順で元に戻して行くようにしてい
る。もしユーザが、システムをそこまで巻戻すように指
定するブレークポイントを設定したいのであれば、それ
を行なうこともできるようにしてある。そのブレークポ
イントに対応する実行可能な状態は、全ての潜在的ブレ
ークポイントに関する保持されている履歴に基づいて判
別され、そして、システムが、その対応する実行可能状
態まで巻戻されるようにしている。
【0017】
【実施例】図1は、ルール型エキスパート・システムの
プログラムの実行及びデバッギングのためのシステム1
0の、ブロック図である。システム10は、推論エンジ
ン12を含んでおり、この推論エンジン12は、知識ベ
ース18内のルール14並びに変数16の状態に基づい
て推論演算を行なうものである。推論エンジン12には
デバッガ20が接続されており、このデバッガ20は、
推論エンジン12の演算を選択されたある点で一時停止
させ、そしてユーザが知識ベース18の中にあるエラー
を発見することができるようにするものである。これら
の推論エンジン12とデバッガ20とは、いずれも、ユ
ーザ・インターフェース19を介してユーザと情報伝達
を行なうようにしたものであり、このユーザ・インター
フェース19は、好ましくは、ディスプレイ上に出力さ
れる情報出力を制御し、また、キーボード上、或いはマ
ウス上の情報をユーザからの入力として受け入れるため
の、パッケージとするのが良い。
【0018】推論エンジン12は、知識ベース18内に
格納されている変数の値16に加えて更に、このエキス
パート・システムの外部からも変数の値を受け入れるこ
とができるものである。即ち、例えばC言語やLISP
等の言語で書かれた手順を呼び出す手順コール(21)
を行なうことによって、値を得ることができるようにな
っている。更には、データベースへの照会(22)を行
なうことによっても、また、ユーザへの直接的な照会
(23)を行なうことによっても、値を得ることができ
るようになっている。ユーザへの照会(23)は、求め
る情報のアイデンティティをユーザに対して表示し、そ
して、ユーザ・インターフェース19から1つまたは複
数の値を受け入れるという手順を実行することによっ
て、行なわれる。これらの、手順コール(21)、デー
タベースへのアクセス(22)、ないしはユーザへの照
会(23)によって得られる値は、通常は、知識ベース
18に格納される。ただし、システムによっては、例え
ば変数の値が必要とされるたびに手順コールを実行する
ようにすることも可能であり、そのようにすれば、その
エキスパート・システムに、現実世界で生起している事
象との間のリアルタイムの相互作用を、ある程度持たせ
ることがことができるようになる。
【0019】知識ベース18として構成されたエキスパ
ート・システムが、もし望ましくない動作を露呈した
り、不正解の答を出したりした場合には、ユーザは、そ
のエラーが何に由来するものかを解明しなければならな
い。この解明はデバッガ20を呼び出すことによって行
なわれ、このデバッガ20は、推論エンジン12の実行
に関するある特徴をモニタし、且つこの推論エンジン1
2の実行を所望の点において中断させ、割込むことがで
きるようにしたものである。図2は、このデバッギング
の処理を高度にブロック化したブロック図である。
【0020】好適実施例のデバッガを使用して行なうデ
バッギングの動作期間は、3つの段階に分けられる。そ
れらは、前置コンサルテーション段階24、コンサルテ
ーション段階26、及び、後置コンサルテーション段階
28である。前置コンサルテーション段階24にあると
きには、ユーザが、ある1つのエキスパート・システム
(即ち複数のルールと複数の変数とから成る集合)を選
択することができる。また、ユーザが、推論エンジン1
2をプログラムして、前向きチェイニングか、または後
向きチェイニングかの、いずれかのモードで動作させる
ようにすることができ、更に、このエキスパート・シス
テムにおける変数とルールとの間の相互関係の静的構造
のグラフを表示させることもできるようになっており、
このグラフは、ルール/変数網構造図と呼ばれているも
のである。この種のグラフについては、図7に関連して
更に詳細に説明することにする。
【0021】更には、ユーザが、知識ベース18内にお
けるルールと変数との間の関係を検査することができる
ようになっており、これは、HOW解説機構部とWHY
解説機構部とを呼び出すことによって行なわれる。これ
らの機構部については、図8に関連して更に詳細に説明
することにする。ユーザが、前置コンサルテーション段
階24にある間に、このデバッガから完全に脱出するこ
とを望むのであれば、そうすることもできるようになっ
ている。このようにしてユーザがこのエキスパート・シ
ステムの動作を観察する準備が整ったならば、コンサル
テーション段階26へ制御が渡される。
【0022】後に更に詳細に説明するが、このコンサル
テーション段階26にあるときにはユーザがエキスパー
ト・システムの実行を観察することができるようになっ
ている。また、選択された諸条件、ないしは選択された
条件の諸集合が発生したときに推論エンジン12の実行
を中断させるブレークポイントを、選択して設定するこ
とができるようにしてある。また、このコンサルテーシ
ョン段階にあるときには、変数の値、及びルールを変更
することができ、更には、諸変数をそれらの現在値に設
定するために用いられた推論ステップの調査をすること
ができるようにしてある。また、推論エンジンの実行状
態を、以前の中途状態にまで巻戻し、そしてその巻戻し
た点から、実行を再開させることができるようにしてあ
る。
【0023】ユーザが、種々の理由から、いかなる推論
をも実行させずにコンサルテーション段階26を終了さ
せて制御を前置コンサルテーション段階24へ返すとい
うことも可能となっている。これが役立つのは、例え
ば、ユーザが、使用すべきルール集合14に関して、或
いは、前向きチェイニングと後向きチェイニングとのい
ずれを使用すべきかということについて、気を変えた場
合等である。
【0024】正常に推論が完了した場合、または、実行
がブレークポイントにおいて一時停止している間にコン
サルテーションを終了させるべき旨の明確な指令がユー
ザから発せられた場合には、コンサルテーション段階2
6から後置コンサルテーション段階28へ制御が渡され
る。この後置コンサルテーション段階28にあるときに
は、ユーザが、コンサルテーション段階26にある間に
使用可能であった種々の解説機構部に、アクセスするこ
とができるようになっている。また、コンサルテーショ
ン段階26にある間に実行された推論の、そのある部分
に対して、再度コンサルテーションを行なうことや、あ
るいは、その部分について実行以前の状態に戻すこと
を、ユーザが決めることもできるようになっており、そ
のような場合には、コンサルテーション段階26へ制御
が返され、推論プロセスが再開されることになる。な
お、ユーザが、この後置コンサルテーション段階28か
ら、このデバッガを脱出することも可能となっている。
【0025】次に図3について説明すると、同図はコン
サルテーション段階26の中の制御の流れを示すブロッ
ク図である。前置コンサルテーション段階24におい
て、ユーザがコンサルテーションの開始を決めたなら
ば、前置推論段階30へと入る。既に説明したように、
実際に推論が開始される以前であれば、いつでも制御を
前置コンサルテーション段階24へ戻すことができる。
【0026】前置推論段階30にあるときには、ユーザ
が、様々な通常のブレークポイント処理コマンドにアク
セスすることができるようになっており、それらのコマ
ンドについては図8に関連して、後に更に詳細に説明す
ることにする。またこの段階にあるときには、ユーザ
は、推論エンジン12の実行を一時停止させるブレーク
ポイントを設定することもできる。更には、ユーザは、
推論を通常の実行モードで実行させるか、それとも単ス
テップ・モードで実行させるかを指定することができ
る。単ステップ・モードとは、1つの推論事象が完了す
るたびに、推論エンジン12をブレークしてデバッガ2
0へ移行させるようにするモードである。
【0027】推論ステップ32は、推論エンジン12が
知識ベース18に関する推論を、実際に実行することを
表わしている。この推論が完了したならば、制御は後置
コンサルテーション段階28へ渡される。一方、ブレー
クポイント条件に到達するような特別の推論動作が行な
われた場合には、制御はブレークポイント処理部34へ
渡される。このブレークポイント処理部34にあるとき
には、ユーザは、実行の状態と履歴とを調査することが
できる。ブレークポイント処理が完了したならば、実行
が再開されて、制御は推論ステップ32へ返される。通
常は、そのブレークポイントから先へ実行を進行させる
ようにすれば良いが、ブレークポイント処理部34か
ら、単ステップの実行の開始へと進むこともできる。更
には、制御が推論ステップ32へ返されたときには、実
行をその最初からやり直すことも、また、以前の中途状
態まで巻戻すこと(36)もできるようにしてある。
【0028】ブレークポイント処理部34の中にあると
きには、ユーザが、コンサルテーションをその実行完了
以前に終了させることができ、その場合には、制御は後
置コンサルテーション段階28へ渡される。このブレー
クポイント処理部34の中から、変数並びにルールの変
更を行なえるようにしてあるため、それらの変更によっ
て、コンサルテーションが矛盾状態とされる可能性もあ
る。例えば、ある変数の値がある推論において使用され
た後に、その変数の値が、このブレークポイント処理部
によって変更されたような場合には、推論ステップのう
ちの幾つかを、知識ベースの現在状態と矛盾するという
理由で、無効にしなければならないということもあり得
る。ユーザは、もし、矛盾状態を含んだまま実行が進行
することを望むのであれば、制御を推論ステップ32へ
直接返すことによって、その望みのとおりにすることが
できる。ただし、多くの場合に好ましいのは、最近に実
行された推論動作の、その実行以前の状態に戻すことに
よって、知識ベースと推論エンジンとを無矛盾状態にリ
セットする(36)ことである。この状態リセット(3
6)が行なわれると、その変更された変数ないしルール
が最初に使用された点の、その直前の点にまで遡行する
のに必要な数だけの推論ステップが、その実行以前の状
態に戻される。多くの場合、これは、推論プロセスの中
の比較的短い距離を戻るだけで済み、従って、プロセス
の全体をその最初から再度開始して、非常に多くの中間
推論をやり直すことと比べて、はるかに効率的なものと
なる。この、状態のリセット(36)が完了したなら
ば、制御は推論ステップ32へ返される。既に述べたよ
うに、推論ステップをその実行以前の状態に戻すという
ことは、後置コンサルテーション段階28から行うこと
もでき、その場合にも、制御は状態リセットのステップ
36へ渡されることになる。
【0029】図4は、推論エンジン12が後向きチェイ
ニング・モードで動作するようにモード選択がなされて
いるときに、この推論エンジン12の内部で実行され
る、処理ステップを図示したものである。更には、推論
プロセスの中の、そこでブレークポイントに遭遇する可
能性のある種々のロケーションも併せて図示してある。
好適実施例においては、ブレークポイントが発生される
可能性のある推論動作の1つ1つが実行されるたびに、
デバッガ20の中の、いずれかのブレークポイント条件
が満足されているか否かを判定するための手順を、手順
コールによって呼び出すようにしている。もし満足され
ているブレークポイント条件があったならば、ブレーク
ポイントが発生されて、制御はブレークポイント処理部
34へ渡される。いずれのブレークポイント条件も満足
されていなかったならば、制御は推論プロセスへ返さ
れ、そして推論プロセスの実行の続きが再開される。
【0030】推論プロセスにおける最初のステップ38
は、ゴールを設定するステップである。この時点では、
複数のゴール(変数)のうちの1つはその解が得られて
いない。ある変数がゴールとして選択されたならばこの
段階で実行を一時停止させるように、ブレークポイント
を設定することもできる。次のステップ40は、ソース
を活性化するステップである。これは、あるルールを、
あるゴールの解を得るための活性ソースとして選択する
ということである。更にここでは、デバッガに対して手
順コールを行ない、この選択したソースが既に活性化さ
れた状態にあるということを条件としたブレークポイン
トが設定されているか否かを判定するための手順を呼び
出すようにしている。
【0031】次のステップ42は、ルールの左辺の処理
を行ない、そのルールの前提部の評価を行なうステップ
である。あるルールの左辺に含まれている諸々の変数
は、そのルールの処理を行なうために実際に必要なこと
もあり、また必要ではないこともあるが、ここでは、選
択されたある変数が活性ルールの左辺に発見されたとき
に実行を一時停止させるようにブレークポイントを設定
することができる。
【0032】次のステップ44は、活性ルールを処理す
るために必要とされる左辺の変数のうちに、まだその解
が得られていない変数があるか否かを判定するステップ
である。もし、まだ解が得られていない変数があったな
らば、そのルールを処理するために必要であるにもかか
わらず、まだ解の得られていないそれらの変数を同定
(46)した後に、制御をステップ38へ返して、それ
らの変数のうちの1つをゴールに設定する。
【0033】一方、その活性ルールの左辺に含まれてい
る変数の全てについて、その解が得られていたならば、
或いは、既に解が得られている分の変数に基づいてその
活性ルールを起動することが可能な場合(例えば、OR
関係にある変数のうちの1つが真である場合等)には、
制御はステップ48へ進められる。このステップ48
は、ルールの左辺の評価を実際に行なうステップであ
る。そのルールの左辺の評価を行なうにはある変数の値
が実際に必要であるという場合に、この時点においてブ
レークポイントが発生されるようにしても良い。
【0034】あるルールの前提部の評価(48)が完了
したならば、続いて、解が得られていない変数を参照し
ている部分が、そのルールの動作部の中に有るか無いか
を調べる(49)。もし、解が得られていない参照部分
が存在していたならば、その参照部分に関係している変
数を同定(46)した上で、それらの、解が得られてい
ない変数のうちの1つをゴールとして選択するようにす
る(38)。それらの変数の解が得られたときには、ル
ールの左辺が真であるか、或いは偽であるかに応じて、
ブレークポイントを発生させることができる。それらの
変数の解が得られた時点で、そのルールの右辺の動作部
を実行する(50)。また、選択したある変数につい
て、この動作部の実行の段階でその変数の値が変化した
ならばブレークポイントが発生されるように、ブレーク
ポイントを設定しておくことも可能である。
【0035】次のステップ51は、まだソースが残って
いるか否かを判定するステップである。このステップ5
1において、選択したある変数について、その変数の値
を導出するために必要なソースの諸動作の全てが完了し
ていると判定された場合に、その変数の解が得られたと
いうことに対応したブレークポイントが発生されるよう
にしておくことも可能である。一方、それら諸動作の全
てが完了してはいないと判定されたならば、更に別のソ
ースを活性化する(40)ようにすれば良い。以上のプ
ロセスの全体が、解が得られていないゴールがなくなる
まで(52)反復して実行されるようになっており、そ
うなった時に、この推論プロセスは終了する。
【0036】図5は、前向きチェイニングが選択されて
いる場合に、推論エンジン12によって実行される推論
動作を示したものである。更には、選択して設定される
可能性のある様々なブレークポイントも併せて示してあ
る。後向きチェイニングの場合にもそうであったよう
に、ブレークポイントが発生される可能性のある推論動
作の1つ1つが完了するたびに、手順コールを実行し
て、ブレークポイントに到達したか否かの判定を行なう
ようにしており、また、ブレークポイントが設定されて
いた場合には、そのときの現在状態と、そのブレークポ
イントの条件との、比較対照を行なうようにしている。
【0037】最初のステップ54は、初期データの影響
を受ける全てのルールの前提部の評価を行なうステップ
である。変数の値が必要とされる可能性があるか否かに
基づいて、或いは、変数の値が実際に必要であるのか否
かに基づいて、ブレークポイントが発生されるように、
ブレークポイントを設定しておくことができる。
【0038】あるルールの全ての前提条件が真であった
場合には、そのルールを競合集合に加える(56)。競
合集合にルールが加えられたならばブレークポイントが
発生されるようにしておいても良い。
【0039】競合集合が空集合であれば(58)、この
プロセスの実行は終了する。競合集合が空集合ではない
場合には、その競合集合に所属しているルールの1つ
を、起動させるために選択し(60)、そして起動させ
る(62)。あるルールの起動がまさに行なわれようと
するときにブレークポイントが発生されるように、ブレ
ークポイントの設定をしておいても良い。ルールの起動
が行なわれた(62)ことによって、1つまたは複数の
変数の値が変化することもあり得る。ルールの起動の結
果、ある変数の値が変化した場合には実行が一時停止す
るように、ブレークポイントの設定をしておいても良
い。
【0040】あるルールが起動したならば、そのルール
起動の影響をこの知識ベースの残りの部分へも伝播させ
るようにし、この影響の伝播は、変化した変数の影響を
受けるルールがどのルールであるのかを同定することに
よって行なう。そして、ステップ54で、それら影響を
受けるルールの前提部を対象として、再び前提部の評価
を行なう。ステップ64において、それら影響を受ける
ルールの全てを、再評価を必要としているものとして同
定したならば、参照している変数が変化してしまったル
ールを表わすデータ(即ちそのルールのインスタンシエ
ーション)を、競合集合の中から抜き取る。競合集合か
らのルールの抜取りが行なわれたときにはブレークポイ
ントが発生されるように、ブレークポイントの設定をし
ておいても良い。
【0041】好適実施例においては、ユーザが推論を非
同期的に一時停止させることもできるようになってい
る。この非同期的な一時停止は、ユーザが、キーボード
ないしマウス等の入力デバイスから、ブレーク割込コマ
ンドを入力することによって行なわれる。ブレークポイ
ント条件が発生したか否かを判定するデバッガ手順を呼
び出すための手順コールが発せられたならば、そのたび
に、それらのブレーク・コマンドをユーザが入力したか
否かを調べるためのチェックを行なうようにしている。
ブレーク・コマンドが入力されたことが判明したなら
ば、予め設定されていたブレークポイントに達した場合
と全く同じように、ブレークポイント処理部を呼び出す
ようにしている。
【0042】既述の如く、ブレークポイント処理部が実
行可能な諸機能のうちの1つに、システムの実行状態を
以前の状態へ巻戻すという機能がある。この機能が必要
とされるのは、例えば、以前の実行中に使用されたこと
のあるルールないし変数が、新たに変更された場合等で
あり、そのような場合にシステムの実行を矛盾の無いも
のとするために、必要とされるのである。ユーザは、こ
のシステムの実行状態を、任意の時点の所望の状態にま
で巻戻すことができるようになっている。
【0043】図6の(a)は、実行状態をリセットするた
めに必要な情報を、どのようにしてセーブするかを示し
たものである。推論事象66、68は、図4及び図5に
関連して説明した事象に対応するものである。図6の
(a)には、推論事象を2つだけ示したが、実際にはより
多くの事象が存在する。
【0044】推論事象66と68とは、各々が複数の実
行動作から構成されている。それらの実行動作は、推論
エンジンがその様々な機能動作を発揮するために実行す
る、素動作である。推論事象66は、実行動作70と7
2とから構成されており、一方、推論事象68は、実行
動作74と76とから構成されている。1つの推論事象
を実行するために必要な実行動作の数は、その事象によ
って異なるものであり、ただ1つだけの実行動作から、
特別の推論事象を構成するために必要な多数の実行動作
まで、様々な数となり得る。
【0045】1つの実行動作が実行される度に、実行履
歴キュー78に、1つのレコードが加えられるようにし
ている。また、1つの推論事象が完了される度に、推論
履歴キュー80に、1つのレコードが加えられるように
している。これらの、キュー78とキュー80の夫々に
入れられるレコードは、各々の実行動作ないし各々の推
論事象に関して実行された動作の、完全な記述を含むも
のである。これらのキューに入れられている各々のレコ
ードは、そこから抜取ることができ、それによって、そ
のレコードに関する影響を元に戻して除去することがで
きるようにしてある。システムを以前の状態へ巻戻すた
めには、実行履歴キュー78並びに推論履歴キュー80
から、適当な数のレコードを、後入れ先出し法で抜き取
るだけで良い。各レコードが抜取られて行くにつれて、
そのレコードに関する影響が元に戻されて除去されて行
き、それによって、このシステムの実行履歴が、中途状
態を経由して後向きに進んで行くことになる。
【0046】好ましくは、システムによって、一群のデ
バッグ・キューが保持されるようにするのが良い。そし
て、個々のルールごとに、また個々の変数ごとに、個別
のキューが保持されるようにする。ある変数が使用され
るたびに、ないしは変更されるたびに、その変数の使用
ないし変更という事象を同定する同定情報(アイデンテ
ィファイア)が、その変数に対応したキューに加えられ
るようにする。また、後向きチェイニングにおいて、あ
るルールがソースとして選択されるたびに、或いは前向
きチェイニングにおいて、あるルールが競合集合に加え
られるたびに、それらの事象が発生した時とその選択に
関与した変数とを同定するレコードが、該当するキュー
に加えられるようにする。更に、あるルールが起動され
たときには、その起動ルールを選択するために用いられ
た句(クローズ)の中で参照された全ての変数の値が、
そのルールに対応した起動履歴キューに入れられるよう
にする。
【0047】図6の(b)は、エキスパート・システムの
状態の巻戻しを行なえるようにするために、情報をセー
ブしておく際の、そのセーブの動作機序を更に詳細に示
したものである。推論エンジン12は、好ましくは、状
態機械推論エンジン150として構成したものとするの
が良い。この推論エンジン150は、極めて簡明な実行
サイクルの中を連続的にループするようにした状態機械
である。1回のサイクルの間に、この推論エンジン15
0は、実行スタック152のレコードの1つをポップし
て抜き出し、そして、そのレコードのコピーを、実行履
歴キュー78に加える。実行履歴キュー78に加えられ
たこのレコードには、この実行サイクルが1回実行され
るたびにインクリメントされるカウンタの、そのときの
現在値を包含されてある。従って、実行履歴キュー78
は、実行スタック152の一番上に出て来た夫々のレコ
ードの履歴を表わす、連続番号を付けられた一連の複数
のレコードを包含することになる。
【0048】実行スタック152に積まれているレコー
ドの各々は、推論エンジン150のその時々の現在状態
を同定する同定情報を含んでいる。推論エンジン150
はそれらの状態に付随する動作を実行するために必要な
コードをコールする。それらの各実行状態に対応するコ
ードは、その実行状態に関連する情報の値を調査し、必
要とあらば変更を加え、そして次に入るべき、次実行状
態を算出するためのコードである。この後に、次実行状
態のレコードが実行スタックへプッシュされ、それによ
ってこのサイクルは完了する。
【0049】この推論エンジン150の、典型的な実行
状態には、「ルール前提部のチェック」、「ルール帰結
部の起動」、「値の導出」、「競合集合への加入」、そ
れに「競合集合からの抜き取り」等の実行状態がある。
これらの実行状態は、図6の(a)に関連して説明した、
素処理70、72、74、76等に対応するものであ
る。
【0050】前向きチェイニングと後向きチェイニング
の夫々の推論プロセスも、好ましくは、有限状態機械と
してモデル化されるような推論プロセスとするのが良
い。また、それらの推論プロセスの各々が、複数の推論
状態から成る1つのサイクルから構成されたものとし、
更に、一連の複数の実行状態を実行することによって、
それら複数の推論状態の各々を実行することができるよ
うにするのが良い。それらの推論状態は、図6の(a)
の、状態66や状態68に対応するものである。典型的
な推論状態には、「突き合わせ(比較対照)」、「実
行」、「値の導出」、それに「ルールの起動」等の推論
状態がある。1つの推論状態を実行するために必要とさ
れる実行状態の個数は、その推論状態を実行するために
必要とされる動作の複雑さに応じて異なったものとな
る。例えば、前向きチェイニングのプロセスにおける、
突き合わせと実行とから成るサイクルの、「突き合わ
せ」推論状態は、複数の「ルール前提部のチェック」実
行状態と「競合集合への加入」実行状態とから構成され
る。実行中に必要とされる、それら実行状態の個数は、
個々の具体的なルールの左辺に含まれている項の個数と
その値とに応じて定まる。更に別の例として、前向きチ
ェイニングのプロセスにおける「ルールの起動」推論状
態は、「競合集合からの抜き取り」実行状態と「ルール
帰結部の起動」実行状態との、2種類の実行状態を含む
ものである。後向きチェイニングのプロセスにおける
「ルールの起動」も、2種類の実行状態を含むものとす
るのが好ましく、その2つの状態とは「ルール前提部の
チェック」と「ルール帰結部の起動」とである。
【0051】推論の動作が実行されることに伴って、1
つの推論状態が推論スタック154にプッシュされるよ
うにしてある。その次の推論状態が開始されるときに、
1つのレコードを、この推論スタック154からポップ
して推論履歴キュー80へコピーするようにしており、
その際の方法は、実行レコードを実行履歴キュー78へ
コピーするときの方法と殆ど変わりはない。推論履歴キ
ュー80へコピーする推論レコードの各々には、現在実
行状態番号を表わすタイム・スタンプを包含させてお
り、その際の方法は、実行履歴キュー78へ入れられる
実行レコードにタイム・スタンプを包含させるときと同
じである。
【0052】既述の如く、ブレークポイントが発生され
る可能性のある状態に、推論エンジン150が至ったと
きには、実際にブレークポイントに遭遇したのか否かを
判定するためのブレークポイント手順を呼び出す、手順
コールが発せられる。このような潜在的ブレークポイン
トに到達するたびに、1つのレコードがブレークポイン
ト・キュー156へ入れられるようにしている。この、
ブレークポイント・キュー156へ入れられるレコード
は、それがこのキュー156に入れられるときの現在実
行状態番号を表示するものである。このレコードは更
に、それが発生される原因となったブレークポイントの
タイプも併せて表示するものである。例えば、潜在的な
ルール起動用ブレークポイントに到達したときには、そ
の旨が、ブレークポイント・キュー156に入れられる
レコードに明記される。
【0053】変数16に対して加えられる、あらゆる変
更の完全な履歴が、各々の変数に対応して設けられてい
るヴァージョン履歴キューに保持されるようにしてい
る。この履歴は、デバッグ・キュー履歴がそうしている
のと同じく、変数が使用されたときや、その変数がゴー
ルとされたとき、等々を示すものである。ある変数の値
が変化するたびに、その変数に対応したヴァージョン履
歴キューに、その変数の新たな値とそのときの現在実行
状態番号とを含む、1つのレコードが追加されるように
している。先に説明した場合と同じく、この場合の実行
状態番号も、様々な変数の値が変化したときを表示す
る、タイム・スタンプとして機能するものである。
【0054】ルール14には、その各々に対応してルー
ル履歴キューが設けられている。実行状態の間にあるル
ールが使用されるたびに、そのルールに対応したルール
履歴キューに、その使用に対応した1つのレコードが入
れられるようにしている。ここでもまた、現在実行状態
番号を、タイム・スタンプとして使用している。
【0055】エキスパート・システムの実行中には、様
々な種類の、1つまたは複数の集合が頻繁に使用され
る。それらの集合は、時々刻々と変更される可能性のあ
る要素の集まりである。推論エンジン150は、それら
の集合158にアクセスし、そしてそのような集合に変
更が加えられるたびに、1つのレコードを集合履歴キュ
ー160へ付加するようにしている。この集合履歴キュ
ー160の中の各々のレコードは、具体的な実装態様の
必要条件に応じて、ある場合には、変更後の集合158
の完全なコピーを包含することのできるレコードとされ
ることもあり、また別の場合には、集合158に加えら
れ、或いはそこから削除された全ての要素のリストだけ
を包含し得るレコードとされることもある。
【0056】この種の集合158の一例は、前向きチェ
イニングにおいて用いられる競合集合である。ルールが
この競合集合に加えられ、或いはこの競合集合から抜き
取られるにつれて、その動作は集合履歴キュー160に
反映されて行く。先に説明した様々な場合にそうしてい
るのと同様に、現在実行状態番号を、この集合履歴キュ
ー160に加えられる各レコードのタイム・スタンプと
して利用するようにしており、それによって、該当する
集合に対して実行された動作の、時間的履歴を提供する
ことができるようにしている。
【0057】推論エンジン150を以前の状態へ巻戻す
ためには、複数のスタック並びに複数のキューの全てを
リセットする必要がある。実行スタック152は、推論
エンジン150を逆方向へ走らせることによって再形成
される。推論エンジン150が逆方向へ走らされること
によって、実行スタック152に対するスタック動作の
全てが逆転され、そのため、この実行スタック152へ
のプッシュ動作が以前行なわれていたのであれば、ある
レコードをポップする動作が行なわれることになり、ま
た、ポップ動作が以前行なわれていたのであれば、実行
履歴キュー78の最後のレコードをこの実行スタック1
52へプッシュする動作が行なわれることになる。この
逆方向のプロセスが進んで行くと、実行履歴キュー78
から各々の実行状態が取出されてスタック152へプッ
シュされて行くにつれて実行状態番号が次第に小さくな
って行き、そして、この逆方向のプロセスは、その実行
状態番号が、所望の実行状態番号に到達するまで続けら
れる。
【0058】以上と同様のプロセスが、推論スタック1
54並びに各集合158に関しても実行される。その逆
方向プロセスが進行している間に、その実行状態番号
が、推論履歴キュー80並びに集合履歴キュー160の
各々の最新のレコードと共に格納されている実行履歴番
号と等しくなったときに、当該レコードが当該キューか
ら抜き取られる。推論履歴キュー80からレコードが抜
き取られた場合、そのレコードは推論スタック154へ
入れられる。集合履歴キュー160からレコードが抜き
取られたときには、そのレコードに対応した集合158
が、この集合履歴キューのレコードに格納されている値
に従って更新される。
【0059】変数16のリセットは、更に簡単な方法で
行なうことができる。即ち、単に、ヴァージョン履歴キ
ューの各々をスキャンして、その番号まで巻戻しを行な
おうとしているところの当該実行状態番号に等しいか或
いはそれよりも若いタイム・スタンプを有する最後のヴ
ァージョンを捜し出すだけで良い。そして、それより遅
いタイム・スタンプを有するヴァージョンについては、
それら全てを、単に廃棄する。様々なルール14の夫々
に対応した履歴キューの巻戻しも、以上の、変数のヴァ
ージョン履歴キューと同様の方法で行なう。
【0060】ブレークポイント・キュー156も、その
キューの中の選択した巻戻し先の点より後のレコードの
全てを廃棄するだけで、巻戻すことができる。ただし、
このブレークポイント・キュー156は、その他の目的
にも有効に利用することのできるものである。即ち、こ
のブレークポイント・キュー156を利用することによ
って、推論エンジン150が順方向に実行を進めている
ときのブレークポイントの指定の仕方と同様の方法で、
巻戻し先の状態を指定することができるのである。例え
ば、前向きチェイニングの場合、競合集合へのルールの
加入ないしは競合集合からのルールの抜取りが行なわれ
る時を、1つの逆方向ブレークポイントとして定めるこ
とができる。こうしてブレークポイントを定めたなら
ば、ブレークポイント・キュー156をその最後から先
頭へ向けてスキャンし、ブレークポイントである可能性
のある点である潜在的ブレークポイントの各々におい
て、チェックを行なう。即ち、この例に即していえば、
競合集合に関連した潜在的ブレークポイントの各々にお
いて、集合履歴キュー160に対して、競合集合に関す
るチェックを行なうようにする。そして、これによっ
て、所望のブレークポイントに逆方向から実際に到達し
たときに、その旨の判断が迅速に行なわれることにな
る。そのブレークポイントが識別されたならば、そのブ
レークポイントに対応する実行状態番号の同定が行なわ
れ、そしてシステムの残りの部分がその実行状態まで巻
戻される。
【0061】既に述べたように、このデバッガでは、ユ
ーザが、ブレークポイントにおいて変数の値を変更する
ことができるようにしてある。ある変数の値が変更され
た場合には、その変数の以前の値が、早期の推論ステッ
プにおいて既に使用されたことがあるかも知れない以
上、その変更によって、推論エンジンが矛盾状態とされ
る可能性があるといえる。多くの場合に望まれること
は、ブレークポイントの処理の期間中に加えられた全て
の変更に関して矛盾の無い状態にまで推論エンジンの巻
戻しを行ない、その巻戻した点から実行を再開すること
であろう。以上に説明した巻戻しのための機構を利用す
るならば、以前の矛盾の無いある状態を判別するだけ
で、エキスパート・システムを、任意の早期の状態にリ
セットすることができる。そこで次に、無矛盾状態への
巻戻しが望まれる場合に、このような最新の無矛盾状態
を判別するための技法について、説明することにする。
【0062】以下に説明する、以前の無矛盾状態を判別
するための4つの異なる技法は、後の方で説明するもの
ほど、より「スマート」な技法であるといえる。よりス
マートな技法を使用すれば、より短時間で巻戻しを行な
えるが、ただし、その状態まで巻戻しを行なうべき、巻
戻し先実行状態を判別するためには、より多くの計算資
源が必要とされることになる。
【0063】最初の技法は、従来のエキスパート・シス
テムのデバッガに用いられている技法と、実際上、同一
の技法である。この技法は、デバッギング処理期間中の
ルールないし変数の変更が、どの時点で行なわれたのか
とは無関係に、コンサルテーションの全体をその最初か
らやり直すというものである。この技法を用いると、多
くの場合、大量の計算を重複して実行することを余儀な
くされかねない。なぜならば、新たに加えられた変更
は、その変更が行なわれたブレークポイントの直前まで
のエキスパート・システムの実行には、何ら影響を及ぼ
さないものである可能性もあるからである。
【0064】第2の技法は、変更を加えた変数ないしル
ールが、既に使用された可能性がある最も早期の時点ま
で戻るというものである。この技法は、本好適実施例の
システムでは、変数に対して変更を加えたときに使用す
る技法として、採用されている。
【0065】変数に対して変更を加えたときには、常
に、その変数が使用された可能性がある最も早期の時点
にまで戻る必要がある。前向きチェイニングを実行して
いる推論エンジンでは、これは、その変数に値が付与さ
れた最も早期の時点を判別するということに等しい。そ
の変数が、かつて値を付与されたことがなかったのであ
れば、矛盾状態は発生していない。一方、その変数に既
に値が付与されていた場合には、その変数に対応したヴ
ァージョン履歴キューの中の先頭のエントリを調べるこ
とによって、その変数に値が付与された最も早期の時点
を判別することができる。この先頭のエントリに付され
ているタイム・スタンプが、無矛盾状態を確保するため
には推論エンジンをどこまで巻戻す必要があるのかを、
表わしている。ヴァージョン履歴キューから読み出した
このタイム・スタンプの値の、その直前の実行状態番号
まで推論エンジンを巻戻せば良く、その実行状態こそ
が、最後の無矛盾実行状態に他ならない。
【0066】後向きチェイニングの推論エンジンを採用
している場合には、当該変数が、かつてゴールであった
ことがあるか否かを判別する必要がある。この判定は、
その変数に対応したデバッグ・キューをその先頭からス
キャンして、その変数がゴールとして選択されたことを
表わすレコードが有るか否かを調べれば良い。その変数
が、かつてゴールとして選択されたことがあったなら
ば、そのゴールとしての選択の直前の実行状態が、推論
エンジンをそこまで戻すべき、最後の無矛盾状態であ
る。
【0067】ルールに対して変更を加えた場合も、上と
同一の技法を用いることが望まれるのであれば、そのよ
うにすることも可能である。しかしながら、本好適実施
例では、より洗練された調査法を採用しており、その調
査法は、ルールのシンタックスを利用して、そのルール
が実際に使用された可能性がある、最初の時点を判別す
るというものである。
【0068】後向きチェイニングの場合には、この使用
可能性に関する判別は、変更を加えた当該ルールによっ
てその値が推定される変数のいずれか(即ち、そのルー
ルの右辺に存在している変数のいずれか)がゴールに定
められた、最も早期の時点を判別することによって行な
うようにしている。このゴールに関する判別は、デバッ
グ・キューの中を調べて該当する変数を全て捜し出し、
そして、それらのいずれかのキューの中に存在してい
る、最も早期の実行状態番号を判別することによって、
行なうことができる。また、これとは別の方法として、
ブレークポイント・キュー156をその先頭からスキャ
ンして、ある変数がゴールとして選択されることを条件
とした種類のブレークポイントであることがフラグで示
されている潜在的ブレークポイントを捜し出すという方
法もある。そして、それに該当する変数が選出されたな
らば、その選出された変数のアイデンティティを識別
し、もしその変数が、変更を加えたルールの右辺に存在
している変数のうちの1つであったならば、その変数を
ゴールとして選択した直前の実行状態が、最後の無矛盾
状態であると判別される。
【0069】前向きチェイニングを採用している場合に
は、変更を加えた当該ルールが使用された可能性がある
最も早期の点は、そのルールが競合集合に入れられた可
能性のある最も早期の点に他ならない。この点を同定す
るために、好ましくは、変更を加えた当該ルールの最小
起動集合を判別するようにするのが良い。即ち、ルール
の多くは、そのルールの左辺に存在している全ての変数
の値が定まっていなければ起動可能にならないというこ
とはない。例えば、あるルールの左辺の形が、 (A and B) or (C and D) である場合には、AとBの値が定まるだけでも、また、
CとDの値が定まるだけでも、このルールが起動できる
可能性がある。従って、AとBとの組合せによって、こ
のルールの最小起動集合の1つの要素が形成されてお
り、また、CとDとの組合せによっても、その1つの要
素が形成されている。
【0070】当該ルールが競合集合に入れられた可能性
がある最も早期の時点を発見するためには、ブレークポ
イント・キュー156をその先頭から順方向にスキャン
して行き、該当する変数(上の例ではA、B、C、及び
D)に最初に値が付与された時点を判別するようにすれ
ば良い。また、これとは別の、効率的であるという点に
おいてより好ましい方法として、各変数に対応したヴァ
ージョン履歴キューを調査して、AとBの値が共に定ま
った最も早期における実行状態番号、またはCとDの値
が共に定まった最も早期における実行状態番号を、判別
するという方法もある。その実行状態番号の直前の実行
状態が、最後の無矛盾状態である。
【0071】第4番目の技法は、上の第3番目の技法と
類似したものであるが、ただし更に追加の手順を含むも
のである。その追加の手順とは、左辺に含まれている諸
々の変数の値を実際に調べ、そして、その左辺が、それ
らの変数の値によって、実際に競合集合へ入ることので
きる状態になっているか否かを判定するというものであ
る。このような判定を行なう結果、より後の無矛盾状態
が計算によって確かめられ、実行せねばならない巻戻し
の量が少なくて済む可能性があるが、しかしながら、先
に説明した判別法と比較して著しく複雑なものとなるた
め、効率という点からは好ましいものではない。ある種
のシステムでは、様々な変数の値やルールの構造の如何
に応じて、それに対応したより複雑な調査法を実行する
ことで、有効な節約を達成し得る可能性もある。そのよ
うなシステムでは、ルールに変更を加えた後には、変数
の値を使用して最後の無矛盾状態を判別することが、適
切な方法となることもあり得る。
【0072】様々な変数並びにルールの夫々の履歴を利
用することによって、変数に生じた変化やルールが使用
された時点を、遡行して明らかにすることができるよう
になっている。またこれによって、ユーザが、エラーの
原因を判別するために、選択したルールないし変数の履
歴の中を一度にステップ1つ分づつ、戻ることができる
ようになっている。
【0073】本好適実施例によって提供されるデバッギ
ング・ツールは、ルール/変数網構造図の、図形ディス
プレイという好ましい形態としてある。その種の図形デ
ィスプレイの簡単な一例を、図7の(a)に示した。図7
の(a)は、4つのルール84、86、88、90と、9
つの変数92〜108とを有する知識ベースを、図形で
表わしたものである。あるルールの条件部において使用
されている変数は、そのルールを表わす矩形の左側に連
結してあり、また、あるルールの実行部においてそれに
関する結論が導出されるところの変数は、そのルールを
表わす矩形の右側に連結してある。例えば、ルール84
は、変数92と変数94とを使用して変数102に関す
る結論を導出するものであり、また、ルール88は、変
数98と変数100とを使用して、変数96と変数10
6に関する結論を導出するものである。
【0074】図7の(a)の網構造図は、前置コンサルテ
ーション・モード、コンサルテーション・モード、及び
後置コンサルテーション・モードのいずれにおいても、
利用されるものである。ただし、この網構造図の利用目
的は、システムがそれらのいずれのモードにあるかによ
って、幾らか異なったものとなる。図7の(a)に示した
静的ルール/変数網構造図は、前置コンサルテーション
・モードにおいては、知識ベース内の様々なルール及び
変数の間の、依存関係を図示するために用いられる。ユ
ーザは、この網構造図を利用することによって、夫々の
変数に変更を加えるとどのルールに影響が及ぶのか、ま
た、夫々のルールに変更を加えるとどの変数に影響が及
ぶのかを判別することができる。
【0075】エキスパート・システムの実行中(コンサ
ルテーション・モード)には、推論プロセスにおける事
象の進行を視覚表示するために、このルール/変数網構
造図を一種のアニメーションの形で提供するようにして
いる。そのようにするためには、エキスパート・システ
ムによって実行されている推論の進行状況を、図形で表
示するための、種々の表示記号を使用すれば良い。ルー
ルの状態、並びに変数の状態を表示するには、色や明度
を変化させるという方法を利用することができる。即
ち、カラー・ディスプレイが装備されている場合には、
ルールや変数を表わす図形要素の、色を変化させるよう
にすれば良い。また、モノクロ・ディスプレイが装備さ
れている場合には、明度を変化させるという方法を用い
ることができる。
【0076】図7の(b)から(i)までは、モノクロの図形
ディスプレイにおいて変化を表現するための、好適な方
法を図示したものである。ルール/変数網構造図の中の
変数ノード162の各々には、それに対応して、少しず
らして重ねた(即ちオフセットさせた)オフセット変数
ノード164を組合せてある。このオフセット変数ノー
ド164は、その上に重なっている変数ノード162に
よって部分的に隠されており、そして、その変数ノード
162の状態変化の表示を補助するためだけに使用され
るものである。ルール・ノード166の各々にも、オフ
セット変数ノード164と同様に機能する、オフセット
・ルール・ノード168を組合わせてある。図7の(b)
から(i)までにおいて、一方向のハッチングは、モノク
ロ・ディスプレイ上においてノードが灰色とされている
ことを表わしており、一方、クロス・ハッチングは、同
じく黒色とされていることを表わしている。
【0077】初期状態にあるときには、変数ノード16
2とオフセット変数ノード164とは、いずれの変数に
対応するものも、この網構造図の中では黒色とされてい
る。この状況を図7の(b)に示す。ここでは、推論エン
ジンは、後向きチェイニングを採用しているものとす
る。この場合、オフセット変数ノード164は、そのノ
ードが表わしている変数がゴールとして選択されたとき
に、灰色にされる。これを図7の(c)に示す。その変数
に値が付与された時点で、更に変数ノード162も灰色
にされ、これを図7の(d)に示す。その変数の解が得ら
れたときには、変数ノード162は灰色のままである
が、オフセット変数ノード164は白色に変わり、これ
を図7の(e)に示す。
【0078】ルール・ノード166及びオフセット・ル
ール・ノード168も、初期状態においては同様に黒色
とされており、これを図7の(g)に示す。ルールが活性
ソースとされたならば、オフセット・ルール・ノード1
68は灰色になるが、ルール・ノード166は黒色のま
まであり、これを図7の(h)に示す。そのルールが起動
された時点で、更にルール・ノード166も灰色にな
り、これを図7の(i)に示す。
【0079】基本となる推論エンジンが前向きチェイニ
ングを実行している場合にも、同様のアニメーション技
法が用いられる。前向きチェイニングの場合には、変数
がゴールとされることはないため、オフセット変数ノー
ドは使用されない。変数に値が付与された時点で、変数
ノード169が黒色から灰色へと変化し、その結果、図
7の(f)に示すディスプレイとなる。前向きチェイニン
グの場合には、ルールが競合集合に入れられたときに、
オフセット・ルール・ノード168が灰色に変化して図
7の(h)に示すディスプレイとなり、また、そのルール
が起動されたときに、ルール・ノード166が灰色に変
化して、図7の(i)に示すようになる。
【0080】変数によっては、初期状態において既にそ
の値が知識ベースに付与されているものもある。その種
の変数に対応したノードに対しては、値を付与された変
数の表示に用いられる図形表示値を、初期状態において
予め付与しておくようにしている。これによって、後向
きチェイニングの推論エンジンの場合には、初期状態に
おいて、オフセット変数ノード164は白色に、一方、
変数ノード162は灰色となるようになっている。ま
た、前向きチェイニングの推論エンジンの場合には、初
期状態において、オフセット変数ノード164は黒色と
なり、変数ノード162は灰色となるようになってい
る。
【0081】ルール並びに変数の状態変化をディスプレ
イするための、以上に説明した動的ディスプレイ法、な
いしはそれに類似した技法を用いるならば、動的視覚図
形をユーザに提示することのできる、ルール/変数網構
造図が得られる。後向きチェイニングを採用している場
合には、この網構造図の中を、複数のオフセット変数ノ
ード164並びに複数のオフセット・ルール・ノード1
68を通って右から左へと流れる灰色の流れによって、
推論プロセスにおける、ゴール、ソース、並びにサブゴ
ールの、チェインの生成が表現される。また、このルー
ル/変数網構造図の、複数の変数ノード162並びに複
数のルール・ノード166を通って左から右へと流れる
灰色の流れによって、ルール起動の影響と、変数の値の
伝播とが表現される。前向きチェイニングの場合におけ
る、この網構造図の中の同様の左から右への灰色の流れ
は、推論プロセスの視覚表示を提供するものである。
【0082】以上に説明した、或いはそれに類似のアニ
メーション式のディスプレイを用いることによって、ユ
ーザは、各ステップにおいて実行される多数の細かな動
作によって惑乱されることなく、推論プロセスの大きな
流れを観察することができるようになる。もし推論プロ
セスが、ユーザが誤った方向であることを既に知ってい
る方向を取り始めたならば、ユーザは非同期的に実行を
中断して割込み、その問題の原因の解明に取りかかるこ
とができる。
【0083】後置コンサルテーション段階においては、
このルール/変数網構造図は、知識ベース内の全てのル
ール並びに変数の、最終状態を静的に表示することにな
る。ユーザは、いずれの変数がゴールとして用いられ、
また値を付与されたのか、そして、いずれのルールが起
動されたのかを、図形で一覧することができる。
【0084】場合によっては、変数が循環の中にはまり
込んでしまうこともある。後向きチェイニングの推論エ
ンジンであれば、ある変数があるルールの左辺に含まれ
ており、そしてそのルールが、その変数の解を得るため
のサブゴールの中に用いられているという場合に、その
ような事態が発生する。例えば図7の(a)において、第
4の変数98のノードと第7の変数104のノードとが
実際には同一の変数であるものとして表示されていたな
らば、循環が発生することになる。このような循環が発
生したときには、通常の円形ノード162がルール/変
数網構造図の中の右側寄りに置かれることによってその
変数がゴールであることが表示されると共に、ダイヤモ
ンド形の記号を用いて、別体の変数ノード170が表示
される。推論の実行中には、円形ノード169は、オフ
セット・ノード164と同様にしてその明度の操作が行
われ、一方ダイヤモンド形ノード170は、変数ノード
162と同様にしてその明度の操作が行われる。前向き
チェイニングの場合にも、同じディスプレイ技法が用い
られる。
【0085】以上の、ルール並びに変数の図形表示を変
化させる手順は、先に説明したデバッガに容易に実装す
ることのできるものである。即ち、図4及び図5に関連
して既に説明したように、潜在的ブレークポイントに到
達したときには、そのたびにデバッガに対して手順コー
ルが発せられ、実際にブレークポイントに到達したのか
否かを判定するための手順が呼び出されるようになって
いる。そして、上で説明した図形表示の変化は、その各
々が潜在的ブレークポイントに対応している。例えば、
ある変数をゴールとして設定することは、図4のステッ
プ38に示したように、潜在的ブレークポイントに他な
らない。同様に、あるルールが起動されれば、それによ
って図4のステップ50に対応した、潜在的ブレークポ
イントが発生されることになる。そこで、図形表示を変
化させる種々の事象のうちのいずれかが発生したため
に、ブレークポイントのためのデバッガに対してコール
が発せられたときには、常に、ディスプレイ管理機構部
に対しても手順コールが発せられて、表示の該当するノ
ードを変化させるための手順が呼び出されるようにして
おけば良い。ただし、実際にその時点においてブレーク
ポイントが発生されるように設定がなされているか否か
とは無関係に、表示の変更は行なわれるようにしてお
く。
【0086】図8は、あるブレークポイントにおいてブ
レークポイント処理部34が呼び出されたときに、実行
される可能性のある様々な事象を図示したダイヤグラム
である。先ず最初に、推論エンジンの実行が一時停止す
る原因となった条件が、ユーザへの情報として、ディス
プレイ上に表示される(110)。続いて、ブレークポ
イント処理部は、ユーザから入力を受け取り(11
2)、そのユーザの選択に従って、様々な処理のうちの
1つを実行する。
【0087】ユーザは、後にこの推論エンジンの実行を
一時停止させることになるブレークポイントを調査し且
つ補正する(114)ことができる。また、ユーザにメ
ニューを提供することができるようになっており、それ
によって、ユーザが一度に複数のブレークポイントの追
加、補正、及び削除を行なえるようにしている。
【0088】更に、ユーザは、知識ベース内のルールを
調査し且つ補正すること(116)や、変数を調査し且
つ補正すること(118)も、選択して行なうことがで
きるようになっている。既に使用されたことのあるルー
ルないし変数の補正を、ユーザが行なう場合には、好ま
しくはこのシステムによって自動的に、無矛盾解析が実
行されるようにしておく。無矛盾状態のチェックを行な
うための好適な方法については既に説明したとおりであ
る。もしその変更によってシステムが矛盾状態とされて
しまうのであれば、ユーザにその旨が示されるようにし
ておく。ユーザが、実行を無矛盾状態にまで巻戻すこと
を望むのであれば、それを行なうこともできるようにし
てある。
【0089】ユーザが、ルールの詳細な追跡調査(12
0)を実行することもできるようにしてあり、それを行
なうことによって、ある特定のルール起動に関する、詳
細な情報が提示されるようにしてある。即ち、そのルー
ルに関して、参照される全ての変数の値と各々の前提条
件の真偽値とが示されるようにしてある。従来の解説機
構部には、この程度にまで詳細な情報を提供するものは
なかったが、しかしながら、この程度の詳細情報はデバ
ッギングを行なうために必要である。
【0090】ユーザが、選択により、ある変数の値が必
要とされている理由(=WHY)を提示させること(1
22)や、ある値が得られた経緯(=HOW)を提示さ
せること(124)も、可能となっている。WHY照会
動作(122)では、その制御手順(前向きチェイニン
グであっても後向きチェイニングであっても良い)があ
る特定の変数の値を必要としている場合にそれが必要と
されている理由、それに、その変数の値が様々なルール
並びに変数の相互作用によって伝播して行くものである
場合にそれがどのようにして伝播して行くのかを、ディ
スプレイ上に表示するものである。HOW照会動作(1
24)は、その制御手順が、ある変数の値をどのように
して決定しようと努めたかを、ディスプレイ上に表示す
るものである。WHY照会動作は本質的には前向きの質
問動作であり、「なぜ私はその情報を必要とするのか」
を問い質すものである。一方、HOWコマンドは本質的
に後向きの質問動作であり、「どのようにして物事がこ
のようになったのか」を問い質すものである。
【0091】コンサルテーション段階にあるときには、
HOW照会動作とWHY照会動作との両方を利用するこ
とによって、ルールないし変数の、過去における用いら
れ方と未来における用いられ方との両方を確認すること
ができるようになっている。WHY照会動作122で
は、ある変数が、どの点において使用されたか(過去)
と、どの点において再び使用される可能性があるか(未
来)とが示される。その場合、過去の情報を得るために
はデバッグ・キューが用いられ、一方、未来の事件につ
いては静的ルール/変数網構造図が用いられるが、その
用いられ方は、前置コンサルテーション段階においてそ
れらが用いられる場合と同じである。HOW照会動作1
24も、デバッグ・キューを利用して過去の情報を得る
ようにしており、それによって、ある変数に対してどの
ようにして現在値が付与されたか、ないしは、あるルー
ルがどのようにして起動されたかを、示すようにしてい
る。HOW照会動作124は、静的ルール/変数網構造
図を利用して、未だ発生していない事象に関する照会に
対して答えを与えるようにしており、これはWHY照会
動作122と同様の方法で行なわれている。
【0092】前置コンサルテーション段階24にあると
きには、HOW照会動作とWHY照会動作とは、推論エ
ンジンによって実行される可能性のあるステップを確認
するために使用することができるだけである。一方、コ
ンサルテーション段階26にあるとき、並びに後置コン
サルテーション段階28にあるときには、過去と、現在
と、未来の事象についての情報も得られるようになって
いる。
【0093】既に述べたように、ユーザは、幾つかの異
なった方法によって、このブレークポイント処理部34
からの脱出を選択することができるようになっている。
先ずユーザは、推論エンジンの単ステップ実行(12
6)を開始させ、あるいは継続的に行なわせることがで
きる。この場合には、1つのステップの実行が完了した
ならば、制御はこのブレークポイント処理部34へ戻っ
てくる。またユーザは、コンサルテーション段階を未完
のうちに終了させて、直ぐに後置コンサルテーション段
階へ進むこと(128)もできる。更にユーザは、この
ブレークポイント処理部から脱出して通常の実行へ戻る
(130)ことや、システムに全くの最初から実行をや
り直させること(132)も、できるようになってい
る。実行状態を、選択したある状態まで、或いは逆方向
ブレークポイントを設定した状態にまで巻き戻すこと
(134)も可能である。これがしばしば行なわれるの
は、前述の無矛盾状態解析119の結果、ある変更によ
って矛盾状態がもたらされたという事実が示され、且
つ、ユーザに対して、最後の無矛盾状態まで直接巻戻す
という選択が与えられた場合である。
【0094】以上に説明したルール型デバッガを用いる
ことによって、ユーザは、エキスパート・システムのプ
ログラムの進行についての詳細な情報を得ることができ
る。更には、ブレークポイントの設定と変更とを、動的
に行なうことができ、また、ルールないし変数の値の変
更がシステムの実行の全体に及ぼす影響を観察するため
に、それらに変更を加えてみることも可能となってい
る。同じデバッガを用いて、知識ベースにおける前向き
チェイニングと後向きチェイニングとの両方をサポート
することができ、そしてそれらのいずれの場合にも、ユ
ーザとの間の密接な相互作用を活用することができる。
ユーザは、実行の履歴に関する詳細な情報を、種々の形
で得ることができ、また、実行状態を以前の中途状態へ
と巻戻すことができる。この巻戻しが可能であるという
ことによって、推論を全くの最初からやり直す必要なし
に、ルール並びに変数に対して変更を加えることが可能
となっている。
【0095】当業者には理解されるように、エキスパー
ト・システムにおけるルール起動と並列処理システムに
おける複数プロセスの同時処理との間には、相似関係が
存在している。ルール間の相互依存性が存在していない
限りは、多数のルールを同時に動作させることが、理論
的に可能である。従って、ルールの各々を並列システム
におけるプロセスの1つづつに分布させ、そして、メッ
セージの受渡し或いは共用変数を利用して変更の伝達が
行なわれるようにすれば、相互依存性を持たない複数の
プロセスについては、それらを同時に実行することがで
きる。
【0096】以上に説明したデバッガは、エキスパート
・システム等に用いることのできるデバッガである。こ
のデバッガは、事象の発生順序を前もって知ることがで
きないような状況下において、有用なデバッギング情報
を提供することができるように構成したものである。こ
のような状況は、並列処理システムにおいても普通に遭
遇するところの状況であるから、以上に説明したデバッ
ガは、適当な変更を施すことによって、並列処理システ
ムにも用いることができる。ブレークポイントの設定
は、そのステップの各々ごとに個別に行なうことがで
き、それらブレークポイントのうちの1つに到達したと
きに、このデバッガが呼び出されるようにすることがで
きる。そのシステムの構成に応じて、その他のプロセス
も同時に一時停止するようにしても良く、また、その他
のプロセスは実行を継続しているようにしても良い。前
述のルール/変数網構造図に類似したツールを利用し
て、メッセージないしは共用変数を利用している複数の
プロセスの間の関係を、図形表示するようにしても良
い。前述の、種々のプロセスの実行履歴を調査すること
ができるようにした能力は、ルール型システムのデバッ
ギングに有効に利用されるのと同様に、並列システムの
デバッギングにも有効に利用できる能力である。
【0097】以上に本発明を好適実施例に関して具体的
に図示し説明したが、当業者には理解されるように、本
発明の範囲から逸脱することなく、その形態並びに細部
に対して様々な変更を加えることが可能である。
【図面の簡単な説明】
【図1】ルール型エキスパート・システムのデバッギン
グのためのシステムのブロック図である。
【図2】好適実施例のデバッガにおける3つの段階の制
御の流れを、高度にブロック化して示すブロック図であ
る。
【図3】図2に示したコンサルテーション段階のブロッ
クの詳細を示すブロック図である。
【図4】後向きチェイニングを採用しているときの、推
論実行中の潜在的ブレークポイントを示すフローチャー
トである。
【図5】前向きチェイニングを採用しているときの、推
論実行中の潜在的ブレークポイントを示すフローチャー
トである。
【図6】好適実施例に係る、デバッギングを支援するた
めの推論エンジンに採用しているデータ構造を示す説明
図である。
【図7】好適実施例のデバッガが描き出すことのできる
ルール/変数網構造図の例を示す説明図である。
【図8】ブレークポイントに遭遇したときに、ユーザか
らの入力に応答して実行され得る種々の動作を示すフロ
ーチャートである。
【符号の説明】
10 システム 12 推論エンジン 14 ルール 16 変数 18 知識ベース 20 デバッガ 24 前置コンサルテーション段階 26 コンサルテーション段階 28 後置コンサルテーション段階 30 前置推論段階 32 推論ステップ 34 ブレークポイント処理部 36 状態リセット・ステップ 78 実行履歴キュー 80 推論履歴キュー 82 デバッグ・キュー 150 推論エンジン 152 実行スタック 154 推論スタック 156 ブレークポイント・キュー 158 集合 160 集合履歴キュー
フロントページの続き (72)発明者 ロ・シー アメリカ合衆国カリフォルニア州94024, ロス・アルトス,デオダラ・ドライブ 1994 (56)参考文献 特開 平1−251237(JP,A)

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 推論エンジン並びに推論状態レコードを
    保持するための推論スタック及び実行状態レコードを保
    持するための実行スタックを有するルール型エキスパー
    ト・システムの状態を巻戻す方法であって、 少なくとも1つのブレークポイント条件を定義するユー
    ザ選択に応答して、対応する少なくとも1つのブレーク
    ポイントを上記推論エンジンについて設定するステップ
    と、 推論エンジンで推論を実行して、推論状態レコード及び
    実行状態レコードを上記推論スタック及び実行スタック
    からそれぞれ除去し、ルール/変数網の連鎖を生成する
    ステップと、 各実行状態レコードが上記実行スタックから除去される
    ごとに、該実行状態を識別するための実行状態番号を増
    分し、その時点での該実行状態番号とともに該実行状態
    レコードを実行履歴キューにコピーするステップと、 各推論状態レコードが上記推論スタックから除去される
    ごとに、その時点での実行状態番号とともに該推論状態
    レコードを推論履歴キューにコピーするステップと、 上記推論エンジンが動作中にブレークポイントに遭遇し
    たことに応答して、その時点での実行状態番号ととも
    に、ブレークポイント履歴キューに対応エントリを追加
    するステップと、 実行状態を巻き戻すためのブレークポイント条件定義を
    ユーザから受信したことに応答して、該受信したブレー
    クポイント条件定義と上記ブレークポイント履歴キュー
    のエントリとを比較し、所望の実行状態と該状態の状態
    番号を判定するステップと、 上記推論状態レコード及び上記実行状態レコードを、上
    記推論履歴キュー及び上記実行履歴キューから、上記推
    論スタック及び上記実行スタックにそれぞれコピーする
    ことによって、該推論スタック及び実行スタックをリセ
    ットするステップと、 上記実行状態レコードが上記実行履歴キューから実行ス
    タックにコピーされるごとに、上記実行状態番号を減分
    し、上記ルール/変数網の連鎖をトレースするステップ
    と、 上記実行状態番号が、上記所望の実行状態の状態番号に
    一致した場合に、上記リセット・ステップを停止するス
    テップと、 を具備する方法。
  2. 【請求項2】 上記比較ステップが、 上記ブレークポイント履歴キューを最新のエントリから
    走査するステップと、 上記ブレークポイント履歴キューの各エントリごとに、
    該エントリがユーザから受信した所望のブレークポイン
    ト条件定義に一致するエントリであるかどうかを判定す
    るステップと、 一致する場合、その一致したブレークポイント・エント
    リに対応するユーザの所望の実行状態を選択するステッ
    プとを含む、請求項1に記載の方法。
  3. 【請求項3】 上記比較ステップにおいて、所望の状態
    情報が選択されると、上記一致したエントリとその後続
    の全エントリを上記ブレークポイント履歴キューから削
    除するステップを含む、請求項2に記載の方法。
  4. 【請求項4】 ルール型エキスパート・システムの実行
    状態を以前の状態へ巻戻すシステムであって、 複数の推論状態レコードを含む推論スタックと、 複数の実行状態レコードを含む実行スタックと、 それぞれが対応する実行状態番号を有する複数のブレー
    クポイント・レコードを含むブレークポイント履歴キュ
    ーと、 推論を実行し、上記推論状態レコード及び実行状態レコ
    ードを操作する推論エンジンと、 上記推論スタックに関連し、該スタックからポップされ
    たエントリに対応するエントリを含む推論履歴キュー
    と、 上記実行スタックに関連し、該スタックからポップされ
    たエントリに対応するエントリを含む実行履歴キュー
    と、 ユーザのブレークポイント条件定義の指定に応答して、
    上記ブレークポイント履歴キューのブレークポイント・
    レコードから、所望の巻戻し先実行状態を判定する手段
    と、 上記推論及び実行スタック並びにそれぞれに関連する推
    論及び実行履歴キューを操作して、上記所望の巻戻し先
    実行状態に到達するまで推論エンジンを逆方向に実行す
    る手段であって、推論実行中に上記履歴キューにプッシ
    ュされたスタック・エントリを、該キューからポップし
    て該スタックにプッシュすることにより、所望の巻戻し
    先実行状態を獲得する逆方向実行手段と、 を具備するシステム。
  5. 【請求項5】 上記実行状態レコードが上記推論エンジ
    ンの実行状態に対応し、かつ上記推論状態レコードが上
    記推論エンジンの推論状態に対応する、請求項4に記載
    のシステム。
  6. 【請求項6】 上記推論エンジンで変数が使用された時
    点における実行状態番号並びに該変数の値を含むヴァー
    ジョン・レコードを有するヴァージョン・キューを具備
    し、上記逆方向実行手段が、上記所望の巻戻し先実行状
    態より後に発生した該ヴァージョン・レコードを該ヴァ
    ージョン・キューから削除する手段を含む、請求項4に
    記載のシステム。
  7. 【請求項7】 上記推論エンジンで実行された推論にお
    ける各推論集合をその時点での実行状態番号とともに含
    む集合レコードを有する集合履歴キューを具備し、上記
    逆方向実行手段が、該キューのエントリを用いて上記所
    望の巻戻し先実行状態まで競合集合の状態を巻戻す手段
    を含む、請求項4に記載のシステム。
  8. 【請求項8】 上記ブレークポイント履歴キューが、上
    記推論エンジンの実行中に到達しうる各ブレークポイン
    トに対応してエントリを有し、該エントリが1つの実行
    状態に対応する、請求項4に記載のシステム。
  9. 【請求項9】 上記逆方向実行手段が、上記ブレークポ
    イント履歴キューを逆順に走査して、上記所望のブレー
    クポイントに一致するエントリを特定し、該特定された
    エントリに対応する実行状態番号から所望の巻戻し先実
    行状態を特定する手段を含む、請求項8に記載のシステ
    ム。
JP2406911A 1990-01-26 1990-12-26 エキスパート・システムの状態を巻戻す方法及びシステム Expired - Lifetime JPH0772866B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US47083190A 1990-01-26 1990-01-26
US470831 1990-01-26

Publications (2)

Publication Number Publication Date
JPH0689177A JPH0689177A (ja) 1994-03-29
JPH0772866B2 true JPH0772866B2 (ja) 1995-08-02

Family

ID=23869231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2406911A Expired - Lifetime JPH0772866B2 (ja) 1990-01-26 1990-12-26 エキスパート・システムの状態を巻戻す方法及びシステム

Country Status (2)

Country Link
EP (1) EP0449402A3 (ja)
JP (1) JPH0772866B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9519677D0 (en) * 1995-09-27 1995-11-29 Philips Electronics Nv Data processing apparatus event cause determination
DE69704666T2 (de) * 1996-10-04 2002-05-29 Fisher Controls Int Verfahren und vorrichtung zur fehlersuche und feinabstimmung in einem prozesssteuerungsnetzwerk mit verteilten steuerfunktionen
JP2005165600A (ja) * 2003-12-02 2005-06-23 Nec Corp トランザクション処理システム、トランザクション処理方法およびプログラム
US7246276B2 (en) 2004-10-04 2007-07-17 Agilent Technologies, Inc. Error tolerant modular testing of services

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3566314D1 (en) * 1984-04-26 1988-12-22 Bbc Brown Boveri & Cie Apparatus for saving a calculator status
JPH01251237A (ja) * 1988-03-31 1989-10-06 Toshiba Corp 推論システム

Also Published As

Publication number Publication date
JPH0689177A (ja) 1994-03-29
EP0449402A3 (en) 1993-05-12
EP0449402A2 (en) 1991-10-02

Similar Documents

Publication Publication Date Title
US5140671A (en) Expert system debugger
US5170464A (en) Method for rolling back an expert system
US5297150A (en) Rule-based method for testing of programming segments
US6532401B2 (en) Methods for automatically verifying the performance of a virtual robot
US5167012A (en) Method for performing consistency checks
US6041182A (en) Automatic invocation of computational resources without user intervention
US6026362A (en) Tool and method for diagnosing and correcting errors in a computer program
US5535389A (en) Business process objects with associated attributes such as version identifier
US20010011370A1 (en) Interactive software testing system and method
JP2006202304A (ja) 計算資源自動起動システム
US5402526A (en) Interruptibility/priority control scheme for artificial intelligence software shell
US20090150870A1 (en) Method, Apparatus, and Computer Program Product for Implementing Enhanced Template Debug
US7844971B2 (en) Method and apparatus for detecting cross-thread stack access in multithreaded programs
JP2814691B2 (ja) 推論方法に基づく故障診断方法
JPH05197556A (ja) エキスパート・システム及びエキスパート・システムのエキスプラネーシヨン発生方法
US5398304A (en) Control process for artificial intelligence software shell
EP0439343A2 (en) Method of operating an expert system and computer systems therefor
JPH0772866B2 (ja) エキスパート・システムの状態を巻戻す方法及びシステム
EP0439342A2 (en) Method of operating an expert system and computer systems therefor
EP0439341A2 (en) Display for expert system
US5390286A (en) Reticular discrimination network for specifying real-time conditions
Hale et al. Towards a model of programmers' cognitive processes in software maintenance: A structural learning theory approach for debugging
KR100241849B1 (ko) 블랙보드 기반의 혼합추론 전문가시스템
CN115658511A (zh) 一种源代码的执行行为的监控方法和系统
JPH0784773A (ja) 集計プログラム自動生成装置