JPH05151025A - デバツギング方法及びデバツグ装置 - Google Patents

デバツギング方法及びデバツグ装置

Info

Publication number
JPH05151025A
JPH05151025A JP2412971A JP41297190A JPH05151025A JP H05151025 A JPH05151025 A JP H05151025A JP 2412971 A JP2412971 A JP 2412971A JP 41297190 A JP41297190 A JP 41297190A JP H05151025 A JPH05151025 A JP H05151025A
Authority
JP
Japan
Prior art keywords
execution
user
rule
breakpoint
inference
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.)
Granted
Application number
JP2412971A
Other languages
English (en)
Other versions
JPH0782439B2 (ja
Inventor
Raymond R Hayes
レイモンド・アール・ヘイズ
Lo Hsieh
ロ・シー
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 JPH05151025A publication Critical patent/JPH05151025A/ja
Publication of JPH0782439B2 publication Critical patent/JPH0782439B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

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

Abstract

(57)【要約】 【目的】本発明は、ルール型エキスパートシステムプロ
グラムを有するコンピユータシステムにおいて、プログ
ラムの実行中に生ずる選択条件に基づいてユーザがブレ
ークポイントを制定することができ、ブレークポイント
に到達したときユーザがエキスパートシステムの状態を
検査し、変更することができるようにしたデバツギング
方法及びデバツグ装置を提供する。 【構成】デバツグ装置は、エキスパートシステムの実行
中に生ずる選択された条件及びイベントに応じてユーザ
がブレークポイントを設定できるようにし、推論機構が
所定の推論を実行する際に手続きコールをしたとき、当
該ブレークポイントにおいて停止すべきであるかどうか
を決定する。ブレークポイントが1つになつたとき、ユ
ーザは当該エキスパートの種々のアスペクトを検査し、
変更することができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデバツギング方法及びデ
バツグ装置に関し、特にルールに基づくエキスパートシ
ステムを有するコンピユータシステムに適用して好適な
ものである。
【0002】
【従来の技術】エキスパートシステムは模倣エキスパー
ト問題解決動作を試してみるコンピユータプログラムで
ある。これらのプログラムは所定の目的を達成するため
に一群の観測から結果を導くため又は仮説を立ててこれ
を確めるために一般に使用される。これらのシステムは
その基本構成要素としてルールを用い、特定の問題を解
決するために例えば順方向連鎖又は逆方向連鎖のような
制御手続きを用いてこれらのルールを取り扱う。
【0003】ルールは「IF」条件、「THEN」アク
シヨン、「ELSE」アクシヨンを表した形状の記述で
ある。この条件は適用されるルールについて真でなくて
はならない1つ以上の事実を記述する。アクシヨンの部
分はそのルールが真又は偽のときに採られるべきアクシ
ヨンを記述する。真及び偽の場合のアクシヨンはそれぞ
れ「THEN」部分及び「ELSE」部分に見い出され
る。この条件及びアクシヨンは問題解決の状態について
の情報を一時的に記憶する変数と呼ばれる。かくして、
1つのルールにおけるアクシヨンは他のルールの条件又
はアクシヨンにおいて用いられる変数に1つの値を与え
ることになる。
【0004】各ルールは独立ユニツトと考えられ、そし
て宣言型として入れられて処理されるが、ルール間にお
いて変数を共用すればそれらの対話を可能にする。順方
向連鎖システムではルール開始の効果はルール条件が真
であるかどうかを知るために繰り返しチエツクを行うこ
とにより伝播する。一群の初期変数値がこれらルール条
件に対して突合される。ルール条件が真になると、適正
なルールアクシヨンが実行され、その結果変数値が突合
される。
【0005】逆方向連鎖システムではこれらのルールが
目標の変数値を決めるために用いられる。一群の変数が
まず目標として作られる。これらの変数に値を割り当て
る機能をもつルールがソースとして考察される。これら
のルールの条件は変数を含んでいる。これらの変数が値
をもてばルールは目標の値を得ることができると評価さ
れる。これらの変数が値をもたない場合にはこれが補助
目標として決定され、ソースとしては他のルールが用い
られる。この手続きは条件が評価されかつルールアクシ
ヨンの効果がソースルールの連鎖を介してリツプルバツ
クして元の目標変数に値を割り当てるまで続けられる。
【0006】
【発明が解決しようとする課題】多くの推論機構はノン
ルールソースを使用することができる。しばしば機能呼
出し、データベースアクセス又はユーザ照会が用いられ
て変数の値を得るようになされている。しかしながらこ
れらのソースは順方向連鎖における値の伝播又は逆方向
連鎖における目標又は補助目標の追跡には寄与しない。
このように、変数に値を与えるためにそのようなソース
を使用すれば、エキスパートシステムにおけるルールの
対話には影響しない。
【0007】これらのルールが宣言型で入れられ、また
知識ベースの問題及びデータの性質により決まる方法で
実行できるという事実は、エスキパートシステムのプロ
グラマが一般にルール間の手続き的な対話を特定する必
要がないということを意味する。しかしながら、このシ
ステムが所望の行動を表示しないときには実行動作がど
こで誤つたかを正確に決定することが一般に非常に困難
である。典型的なエキスパートシステムでは、結論に到
るためにエキスパートシステムが用いたステツプの追跡
をユーザが視覚的に知り得るようにするために説明機能
が設けられている。しかしながらこれらの説明は多くの
場合、問題を簡易に識別するには充分ではなく、また一
般にシステムがユーザに値の供給を要求するときだけ又
はプログラムが実行を完了した後にだけ与えられる。実
行アクテイビテイの中間結果は多くの場合与えられな
い。
【0008】典型的な従来のエキスパートシステムのデ
バツガはIBMのノーレツジツール及び「TEIRES
IA」を含む。ノーレツジツールは順方向連鎖を用いて
ユーザが推論プロセスによりステツプを単一化できるよ
うにする。デバツガは突合せ実行サイクルの終端で停止
して特定された状態情報を与える。システムの実行前及
び後にある静的情報が得られる。
【0009】アール・デービス及びデー・レナート著、
マクグロー・ヒル社1982年版「KNOWLEDGE-BASED SYSTEM
S IN ARTIFICIAL INTELLIGENCE」の第2部に詳述されて
いる「TEIRESIAS」が逆方向連鎖システムに適
用される。特定された状態情報は実行が停止し、ユーザ
からの変数値の入力を待つときに得られる。変数が変更
されると実行動作が最初から再スタートする。
【0010】従来の手続き的なプログラミングにも同様
な問題がある。プログラムは明示手続きとして書込まれ
るから実行動作の流れは一般に明らかである。しかしな
がら変数値及び中間結果の効果を実行動作中に見ること
ができる。従来のデバツガは、実行を停止してユーザが
変数値及び実行情報を調整することができるブレークポ
イントを特定し得るようにすることにより、この問題に
対処している。
【0011】上記のエキスパートシステムのデバツガは
いずれもエキスパートシステムの実行中に生ずる変数値
及びルール排除のような種々の条件によつてはブレーク
ポイントを特定できない。またこれらのデバツガはいず
れも順方向連鎖及び逆方向連鎖推論機構の両方について
用いるには適さない。これら両連鎖は従来のデバツガに
一般的に見い出すことができる簡単なデバツグ技術のみ
を利用する。
【0012】宣言型のルールに基づくエキスパートシス
テムにおける実行動作の流れは一般に予め知られておら
ず、また決定論的ではないから、従来のデバツガに用い
られる方法はエキスパートシステムのプログラムに使用
するには適さない。ルール型エキスパートシステムでの
使用に適したデバツガについては当該エキスパートシス
テムの動作を明確にするブレークポイント及びユーザ情
報機能を与えるようにし、またプログラムエラーの修正
についてユーザの作業を単純化できるようにすることが
望ましい。
【0013】従つて本発明の目的はルール型エキスパー
トシステムプログラムで使用するに適したデバツガを提
供することである。本発明の他の目的はプログラムの実
行中に生ずる選択条件に基づいてユーザがブレークポイ
ントを制定することのできるデバツガを提供することで
ある。本発明の更に他の目的はブレークポイントに到達
したとき、ユーザがエキスパートシステムの状態を検査
し、変更し得るようにするデバツガを提供することであ
る。
【0014】
【課題を解決するための手段】かかる課題を解決するた
め本発明においては、ブレークポイントを選択された条
件として特定する段階と、プログラム条件が状態を変更
できる各処理ステツプの後にブレークポイントを特定す
る条件が一致したかどうかを決定する段階と、特定する
条件が一致したときプログラムの実行を停止する段階と
によつてルール型プログラムの実行をモニタするように
する。
【0015】また本発明においては、実行前にエキスパ
ートシステム内の変換及びルール間の関係をユーザに図
形的に表示し、ユーザが選択された条件の発生によりシ
ステムの実行を停止させるためのブレークポイントを特
定し得るようにする段階と、エキスパートシステムを実
行する段階と、実行段階においてブレークポイントにな
つたとき実行を停止する段階と、当該実行完了後にエキ
スパートシステム内のルール及び変数間の関係をユーザ
に対して図形として表示し、ユーザがシステムの実行動
作のうち選択された部分を元に戻して実行動作を中間状
態から再開し得るようにする段階とによつてルール型エ
キスパートシステムを実行動作させるようにする。
【0016】
【作用】ルール型エキスパートシステムに使用するに適
したデバツガはそのエキスパートシステムの実行中に生
ずる選択された条件及びイベントによりユーザがブレー
クポイントをセツトし得るようにする。エキスパートシ
ステムを実行するために用いられる推論機構は選択され
た推論が実行されるときにデバツガに対する手続きコー
ルを実行する。このデバツガは推論機構を予定のブレー
クポイントにおいてシステム内の現在条件を比較するこ
とにより、停止すべきかどうかを決定する。ブレークポ
イントが1つになつたときユーザはこのエキスパートの
種々のアスぺクトを検査し、変更することができること
になる。次に制御が推論機構に戻されて以降の実行動作
をする。
【0017】
【実施例】以下図面について本発明の一実施例を詳述す
る。図1はルール型エキスパートシステムプログラムを
実行することによりデバツグ処理するシステム10のブ
ロツク図である。システム10は知識ベース18内のル
ール14及び変数16の状態に基づいて推論する推論機
構12を含む。デバツガ20はこの推論機構12に接続
してその動作を選択された時点で停止させてユーザが知
識ベース18内のエラーを見つけることができるように
する。推論機構12及びデバツガ20は、表示装置上の
情報出力を制御し、かつキーボード又はマウスによりユ
ーザから入力された情報を受けるためのユーザインター
フエース19によりユーザと通信をする。
【0018】知識ベース18に記憶された変数16に加
えて、この推論機構12はエキスパートシステム外部か
らの変数値を得ることができる。変数値は手続きコール
21から「C」又は「LISP」のような言語で書込ま
れる手続きに対して与えられる。変数値はまたデータベ
ースをアクセスし(ブロツク22)又はユーザデイレク
トリを照会する(ブロツク23)ことにより得ることが
できる。かかるユーザ照会は一般に所望の情報の識別を
ユーザに表示し、またユーザインターフエース19から
1以上の変数値を受ける手続きを実行することにより一
般に行われる。手続きコール21、データベースアクセ
ス22及びユーザ照会23から得られる変数値は一般に
知識ベース18に記憶される。しかしながら場合によつ
ては例えば変数値が必要なごとに手続きコールをするこ
とによりエキスパートシステムが実際に発生しているイ
ベントとある量の実時間対話をすることができるように
もし得る。
【0019】知識ベース18に具体化されるエキスパー
トシステムが望ましくない動作又は正しくない答えを示
すときにはユーザはそのようなエラーの発生源を追跡す
る必要がある。これはデバツガ20を呼び出すことによ
り実行され、このときデバツガ20は推論機構12の実
行動作のうちのある段階をモニタして所望のポイントで
その実行動作を中断する。図2はデバツギング処理につ
いての高レベルブロツク図を示す。
【0020】好適なデバツガを用いるデバツギング処理
手順は3つの段階に分けられる。これらの段階は事前診
断段階24、診断段階26及び事後診断段階28であ
る。事前診断段階24においてユーザは使用する特定の
エキスパートシステムを選択する(ルール及び変数の組
を選択する)ことができる。ユーザは推論機構12を順
方向連鎖又は逆方行連鎖モードで動作させるようにプロ
グラムすることができ、そしてそのエキスパートシステ
ムのルール/変数ネツトワークと呼ばれる変数及びルー
ル間の相互関係を表す静的構造グラフを表示し得る。そ
のようなグラフについては図7について詳述する。
【0021】ユーザは「HOW」及び「WHY」説明機
能を呼び出すことにより知識ベース18内のルール及び
変数間の関係を検査することもできる。これらの機能は
図8に関連して詳述する。必要に応じてユーザは事前診
断段階24の期間の間にデバツガから完全に出ることが
できる。ユーザがエキスパートシステムの動作を監視す
る用意ができると制御は診断段階26に移る。
【0022】後述するように、診断段階においてユーザ
はエキスパートシステムの実行動作を見ることができ
る。選択されたブレークポイントを決めることができ、
このブレークポイントは選択条件又は選択条件群が発生
したとき推論機構12の実行を中断し得る。変数値及び
ルールは診断段階において変更することができ、変数を
それらの現在値にセツトするために用いられる推論ステ
ツプを試験することができる。推論機構12の実行状態
をその前の中間状態にロールバツクして当該前の点から
再開させることができる。
【0023】いろいろな理由によりユーザは推論を実行
させる前に診断段階26を終了させて事前診断段階24
に制御を戻すことができる。これは、例えばユーザが使
用しようとしたルール14について、もしくは順方向又
は逆方向連鎖のどちらを用いるべきかについて、変更し
ようとするとき有用である。
【0024】診断段階26は、通常の推論が完了したと
き又はエンド診断の明示コマンドがブレークポイントで
実行を停止している間にユーザにより与えられるとき
に、制御を事後診断段階28に移す。事後診断段階28
においてユーザは診断段階において使用できる種々の説
明機能をアクセスし得る。またユーザは診断段階26の
間に実行される推論部分について再び診断を行うか又は
取り消すかを決めることができ、これにより診断段階2
6に制御を戻して推論処理を再開する効果を生ずる。最
後に、ユーザは事後診断段階28からブロツク29を通
つてデバツガを出ることができる。
【0025】図3のブロツク図は診断段階26内の制御
の流れを示す。ユーザが診断を事前診断段階24から開
始することを決定すると、事前推論段階30に入る。前
述のように推論を実際に開始する前の任意の時点で制御
を事前診断段階24に戻すことができる。事前推論段階
30においてユーザは図8について詳述する汎用ブレー
クポイント処理コマンドをアクセスし得る。ユーザは推
論機構12の実行を停止させるブレークポイントを特定
し得る。またユーザは推論を正規の実行モードで実行す
るか又は単一ステツプモードで実行するかを決定でき
る。単一ステツプモードにおいて推論機構12が各推論
イベントの後にデバツガ20を中断させる。
【0026】推論ステツプ32は知識ベース18に基づ
いて推論機構12により実行される実際の推論を示す。
推論が完了すると、制御は事後診断段階28に入る。ブ
レークポイント条件に到達するような重要な推論アクテ
イビテイが生じると、制御はブレークポイント処理段階
34(これをブレークポイントプロセサと呼ぶ)に入
る。ユーザはブレークポイントプロセサ34において実
行の状態及び履歴を検査し得る。ブレークポイント処理
が完了すると、実行動作が回復して制御が推論ステツプ
32に戻される。通常のようにブレークポイントから処
理が進められるか、又は単一ステツプをブレークポイン
トプロセサ34から開始させ得る。これに加えて処理動
作は最初から再スタートすることができ、又は制御が推
論ステツプ32に戻るときには前の中間状態36にロー
ルバツクすることができる。
【0027】ブレークポイントプロセサ34においてユ
ーザは実行動作の完了前に診断を修了させることがで
き、このとき制御は事後診断段階28に移る。変数及び
ルールはブレークポイントプロセサ34内から変更し得
るので、診断を不一致状態にすることができる。言い換
えると、推論ステツプの間に変数値が用いられ、現在そ
の値がブレークポイントプロセサにより変更されたとき
には、知識ベースの現在の状態を一致しないものとして
ある推論ステツプを無効とする必要がある。必要があれ
ば、ユーザは制御を推論ステツプ32に直接戻すことに
より不一致状態で実行動作を進行させることができる。
好適には殆んどの場合、最近の推論アクテイビテイが取
消されて知識ベース及び推論機構が状態リセツトステツ
プ36において一致状態にリセツトする。状態リセツト
ステツプ36を実行すると変更された変数又はルールが
最初に使用されたポイントの直前のポイントまで戻るの
に必要な回数だけ推論ステツプが取消される。多くの場
合、これは推論プロセスへの比較的短い距離の戻り方に
すぎず、全プロセスをはじめから再スタートして多数の
中間推論を再度実行するよりは著しく効率が高くなる。
状態が状態リセツトステツプ36にあるとき制御は推論
ステツプ32に戻される。前述のように推論ステツプは
事後診断段階28から取消されて制御を状態リセツトス
テツプ36にパスさせる。
【0028】図4は逆方向連鎖モードで動作するように
選択されたとき推論機構12内に生じる処理ステツプを
示す。またブレークポイントに出合う推論プロセス内の
種々のロケーシヨンがこの図に示されている。好適な実
施例では、推論機能が生じてブレークポイントを発生さ
せるごとに、手続きコールがデバツガ20内の手続きに
対して行われて任意のブレークポイント条件が満足され
ているかどうかを決定する。満足されている場合には1
つのブレークポイントが発生され、制御はブレークポイ
ントプロセサ34に入る。満足されていなければ制御は
推論プロセスに戻されて処理動作を続行する。
【0029】推論ステツプは目標制定ステツプ38を実
行することにより開始する。ここでは目標(変数値)は
決定されない。1つの変数が目標として選択されると、
1つのブレークポイントが設定されてこの段階において
実行動作を停止させる。次のステツプ40はソース(す
なわち動作源)を活用化する。これは1つのルールが1
つの目標を決定するために使用される活用ソースとして
選択されたことを意味する。手続きコールがデバツガに
対してなされて選択されたルールを活用する条件につい
てブレークポイントをセツトするかどうかを決定する。
【0030】次のステツプ42はルールの左側を処理す
るもので、その前提を評価する。ルールの左側に含まれ
る変数はそのルールの処理に実際に必要なもの又は必要
ではないものであり、ブレークポイントは、選択された
変数が活用ルールの左側にあれば実行動作を停止するよ
うにセツトされ得る。次のステツプ44は、活用ルール
の処理に必要な左側の変数が未決定であるかどうかを決
定することである。未決定なものがあれば、ステツプ4
6においてルールを処理するに必要なこれら未決定の変
数が識別され、制御がステツプ38に戻されてそのよう
な変数の1つを目標として制定する。
【0031】活用ルールの左側の変数のすべてが決定さ
れ、又は活用ルールが決定された(例えばOR関係にあ
る1つの変数が真のとき)変数に基づいて排除された場
合には、制御はステツプ48に入る。このステツプにお
いてルールの左側が実際に評価される。ブレークポイン
トは1つの変数の値がルールの左側を評価するために実
際に必要であるとすればこの時発生される。
【0032】ルールの前提がステツプ48で評価された
後に、その機能がステツプ49において未決定の変数に
対する基準としてチエツクされる。未決定のままの基準
があれば関連する変数はステツプ46において識別さ
れ、それら変数の1つがステツプ38において目標とし
て選択される。これらの変数が決定されると、ブレーク
ポイントはルールの左側が真であるか偽であるかにより
発生される。この点において、ルールの右側のアクシヨ
ンがステツプ50で実行される。この段階において選択
された変数値が変化したとき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つだけを示してある。
【0041】各推論イベント66、68は多数の実行ア
クシヨンからなる。実行アクシヨンは推論機構によりそ
の種々のアクテイビテイを行うために採られるアトミツ
クアクシヨンである。推論イベント66は実行アクシヨ
ン70及び72からなり、推論イベント68は実行アク
シヨン74及び76からなる。1つの推論イベントを行
うに必要な実行アクシヨンの数はイベントにより決ま
り、1つの実行アクシヨンから、特定の推論イベントを
特定するに必要な数まであり得る。
【0042】1つの実行アクシヨンが行われるたびに、
実行履歴列78に記録が加入される。推論イベントが完
了するたびに1つの記録が推論履歴列80に加えられ
る。履歴列78及び80に置かれた記録は各アクシヨン
及びイベントについてなされたアクシヨンの完全な記述
を含む。これら履歴列に置かれる各記録は除去可能であ
り、そしてその効果を取消し得る。システムを前の状態
にロールバツクするために実行履歴列78及び推論履歴
列80からラストインラストアウト方式で適正な数の記
録を除去するだけで良い。各記録が除去されると、その
効果は取り消され、かくしてシステムの実行履歴は中間
状態を通つて逆方向に進む。
【0043】システムには1組のデバツグ列82が保持
されている。各デバツグ列は各ルール及び各変数につい
て保持されている。1つの変数が使用され又は変更され
るたびに、そのようなイベントの識別子が対応するデバ
ツグ列に加入される。1つのルールが逆方向連鎖におけ
るソースとして選択され又は順方向連鎖のコンフリクト
セツトに加入されるたびに、当該イベントが生じた時及
び当該選択に対応する変数を識別するために適正なデバ
ツグ列に記録が加入される。1つのルールがフアイア処
理されるときには、そのルールを排除するものとして選
ぶために用いられた文節において参照されたすべての変
数についての値が、当該ルールについてのフアイア履歴
列に記録される。
【0044】図7はエキスパートシステムの状態をロー
ルバツクするために情報を保存できるようにする機構の
詳細を示す。推論機構12は状態マシン推論機構150
として好適な手段となる。これは極めて単純な実行サイ
クルを介して連続的なループを形成する状態マシンであ
る。各サイクル中に推論機構150は実行スタツク15
2から記録を引き出させて当該記録のコピーを実行履歴
列78に加入する。実行履歴列78に加入された記録は
実行サイクルが行われるたびにインクリメントされるカ
ウンタの現在値を含む。かくして実行履歴列78は実行
スタツク152の最初に発生した記録の履歴を表わす一
連の連番を有する記録を含むことになる。
【0045】実行スタツク152上の各記録は、推論機
構150の現在の状態を識別する情報を含む。推論機構
150はその状態に関連するアクテイビテイを行うのに
必要なコードを呼び出す。各実行状態についてのこのコ
ードは適切な情報の値を検査し、必要な変更を行い、次
に入るべき状態を計算する。そのとき次の実行状態につ
いての記録が実行スタツクに押し込まれ、かくしてその
サイクルが完了する。
【0046】推論機構150についての典型的な実行状
態は「ルール前提のチエツク」、「ルール結果のフアイ
ア処理」、「コンフリクトセツトへの加入」及び「コン
フリクトセツトからの除去」を含む。これら実行状態は
図6について述べたアトミツクアクシヨン70、72、
74、76に対応する。
【0047】順方向連鎖及び逆方向連鎖推論プロセスも
限定型状態マシンとして好適なようにモデル化されてい
る。各プロセスは推論状態サイクルからなり、各推論状
態は所定の順序で実行状態の処理を行うことにより実行
される。これらの推論状態は図6の状態66及び68に
対応する。典型的な推論状態は「突合せ」、「実行」、
「値の取得」及び「ルールのフアイア処理」を含む。単
一推論状態を実行するに必要な実行状態の数は推論状態
の処理をするのに必要なアクシヨンの複雑さにより決ま
る。例えば、順方向連鎖における「突合せ」の状態は多
数の「ルール前提のチエツク」及び「コンフリクトセツ
トへの加入」の実行状態からなる。実行中に必要な数は
特定のルールの左側の項目の数及び値により決まる。他
の例としては、順方向連鎖プロセスにおけるルールのフ
アイアリングは2つの実行状態、すなわち「コンフリク
トセツトからの除去」及び「ルール結果のフアイア処
理」を含む。逆方向連鎖プロセスでのルールのフアイア
リングも好適には2つの状態、すなわち「ルール前提の
チエツク」及び「ルール結果のフアイア処理」を含む。
【0048】推論アクテイビテイが生じると、推論状態
は推論スタツク154に押し込まれる。次の推論状態が
開始すると、この推論スタツクから記録が引き出され、
実行履歴列78に実行記録をコピーする場合と全く同様
にして推論履歴列80にコピーされる。推論履歴列80
にコピーされた各推論記録は実行履歴列78における実
行記録を記録する場合と同様にして現在の実行状態数を
示す時間スタンプを含む。
【0049】上述のように推論機構150がブレークポ
イントが生じ得る状態になれば、実際にブレークポイン
トに達したかどうかを決定するための呼び出しがブレー
クポイント手続きに対しなされる。そのような潜在的な
ブレークポイントになるたびにブレークポイント列15
6に記録される。この記録はブレークポイント列156
にそれが記録された時点での現在の実行状態番号を示
す。この記録はまた発生されつつあるブレークポイント
のタイプを示す。例えば、潜在的ルールのフアイアリン
グブレークポイントとなれば、これがブレークポイント
列156に記録された記録によつて識別される。
【0050】変数16についてなされたすべての変化の
完全な履歴が各変数に対応するバージヨン履歴列内に保
持される。この履歴は1つの変数が用いられる時、目標
に達した時等を示すデバツグ履歴列に加入される。変数
の値が変化するたびに、1つの記録が、新しい変数値及
び現在実行状態番号を含む対応するバージヨン履歴列に
加入される。このように実行状態番号は種々の変数が値
を変えた時点を示すための時間スタンプとして機能す
る。
【0051】ルール履歴列は各ルール14に関連する。
1つの実行状態において1つのルールが用いられるたび
に、対応する記録がそのルールについてのルール履歴列
に記録される。上述の場合と同様にして現在の実行状態
番号が時間スタンプとして用いられる。
【0052】1セツト以上の種々のカインドがこのエキ
スパートシステムの実行中にしばしば利用される。これ
らカインドセツトは時々刻々変更するエレメントの集合
である。推論機構150はそのようなセツト158をア
クセスし、このセツトが変更されるたびにセツト履歴列
160に記録を加入する。特定の実行要求があつたと
き、セツト履歴列160内の各記録は、変形されたセツ
ト158の完全なコピーを含み、又はセツト158に加
入されかつ削除されたエレメントのすべてのリストだけ
を含むことになる。
【0053】セツト158の一例は順方向連鎖に用いら
れるコンフリクトセツトである。ルールがコンフリクト
セツトに加入され又は除去されるとき、このアクテイビ
テイはセツト履歴列160に反映される。前述のケース
において生じたように、現在の実行状態番号はそのセツ
トについて行われるアクテイビテイの時間的な履歴を与
えるためにセツト履歴列160に加入される各記録につ
いての時間スタンプとして用いられる。
【0054】推論機構150を前の状態にロールバツク
するためにはすべてのスタツク及び履歴列をリセツトす
る必要がある。実行スタツク152は推論機構150を
逆方向に動かすことにより構成し直される。実行スタツ
ク152に対するすべてのスタツク動作は反転され、こ
れにより実行スタツク152を前方に押し込むことによ
り記録が引き出され、また前方に引き出されることによ
り実行履歴列78内の最終記録が実行スタツク152に
押し込まれる。この逆方向プロセスは、実行履歴列78
から各実行状態が引き出されてスタツク152に押し込
まれるたびに実行状態番号を減少させることにより、所
望の実行状態番号となるまで続行される。
【0055】同様のプロセスが推論スタツク154及び
各セツト158について行われる。この逆方向プロセス
中の実行状態番号が、推論履歴列80及びセツト履歴列
160それぞれにおける最終記録と共に記録された実行
履歴番号と等しくなつたとき、当該記録は履歴列から除
去される。推論履歴列80から除去される記録の場合に
は、これらの記録は推論スタツク154に置かれる。1
つの記録がセツト履歴列160から除去されるとき、対
応するセツト158はセツト履歴列に記録された値に従
つて更新される。
【0056】変数16のリセツトは、より単純に行うこ
とができる。各バージヨン履歴列は、ロールバツクが行
われている実行状態番号より小さいか又は等しい時間ス
タンプを有する最終バージヨンについて単に走査され
る。その後の時間スタンプを有するすべてのバージヨン
は同様に捨てられる。種々のルール14についての履歴
列は変数バージヨン履歴列と同様にロールバツクされ
る。
【0057】ブレークポイント列156も選択されたロ
ールバツク点以降のブレークポイント列のすべての記録
を単に捨てるだけでロールバツクし得る。しかしながら
ブレークポイント列156は他の目的について有効に使
用し得る。これは、推論機構150が順方向に実行して
いるときにブレークポイントが特定されると同じように
してロールバツク状態を特定するために使用できる。例
えば順方向連鎖において逆ブレークポイントは、ルール
がコンフリクトセツトに加入され又は除去される時点と
して特定される。このときブレークポイント列が終了ス
テツプから開始ステツプへと走査され、それぞれ考えら
れるブレークポイントにおいてチエツクがなされる。こ
の場合、セツト履歴列160は各関連するブレークポイ
ントにおいてコンフリクトセツトについてチエツクさ
れ、逆方向において実際に所望のブレークポイントに達
したときの決定を直ちに行うことができる。ブレークポ
イントが識別されると、対応する実行状態番号が識別さ
れてシステムの残りの部分が当該実行状態にロールバツ
クされる。
【0058】上述のようにデバツガはユーザがブレーク
ポイントにおいて変数値を変更できるようにする。これ
は、その変数の前の値が前の推論ステツプですでに用い
られている限り推論機構を不一致状態に置くことができ
る。多くの場合、ブレークポイントセツシヨン中になさ
れたすべての変化と一致する状態に推論機構をロールバ
ツクし、そこから実行を再スタートすることが望まし
い。このロールバツク機構は、前の一致状態が識別され
るとエキスパートシステムを前の状態にリセツトするた
めに使用される。一致状態へのロールバツクが必要とさ
れたとき、最後の一致状態を決定するための技術を次に
説明する。
【0059】次に前の一致状態を決定するために用いる
4つの「スマート」技術を述べる。よりスマートな技術
はロールバツク時間を短くするが、ロールバツクする際
に用いる適正な実行状態を決定するためにより計算機的
な動作源を必要とする。第1の方法は従来のエキスパー
トシステムのデバツガにおいて用いられるものと同様の
方法を用いる。この方法はデバツグセツシヨン中にルー
ル又は変数に変更が生じたときに最初からすべての診断
を再度開始する。多くの場合、値の変化が生じたブレー
クポイントの直前まで当該変化はエキスパートシステム
の実行に何の効果ももたないので、多量に冗長計算をす
る必要がある。
【0060】次の方法は変更された変数又はルールが用
いられる最も早い時点に戻る。好適なシステムでは、変
数に変化が生じたときの方法が用いられる。
【0061】変数に変更が生じたとき当該変数が用いら
れた最も早い時点に戻る必要がある。このことは、順方
向連鎖を実行する推論機構では、変数が1つの値を受け
た最も早い時点を決定することと等価である。この変数
が値を受けていなければ不一致は生じない。この変数が
値をもつていれば、値を受けた最も早い時点が、当該変
数に関連するバージヨン履歴列の第1番目のエントリを
検査することにより決定できる。そのようなエントリに
関連する時間スタンプは一致状態を保証するために推論
機構をどこまでロールバツクすべきかを示す。推論機構
は最後の一致実行状態である列内に見い出された値の直
前の実行状態番号にロールバツクする。
【0062】逆方向連鎖推論機構が用いられるときには
その変数が常に目標であつたかどうかを決定する必要が
ある。これは、ルールが目標として選択されたことを示
す記録を探しながらデバツグ列を変数について最初から
走査することにより決定することができる。この変数が
目標として選択されたとき、直前の実行状態が推論機構
を戻すべき最後の一致状態になる。
【0063】この方法はルールの変化が生じたとき、必
要に応じて、使用することができる。しかしながら好適
な実施例においては、ルールが実際に用いられる第1点
を決定するためにルールのシンタツクスを利用するより
複雑なテストが用いられる。逆方向連鎖についてはこの
テストは、変更されたルールが推理する任意の変数(す
なわち、当該ルールの右側の任意の値)が目標となる最
も早い時点を決定することにより行われる。これは当該
変数をデバツグ列内に探し任意のデバツグ列内の最も早
い実行状態番号を決定することにより決定できる。他の
技術は変数が目標として選択されるタイプのフラグが付
された潜在的なブレークポイントを探しながらブレーク
ポイント列156を最初から走査するものである。選択
された変数の識別が次に行われ、そしてそれが修正され
たルールの右側にあるものの1つである場合には、目標
としての当該選択直前の実行状態が最終一致状態として
決定される。
【0064】順方向連鎖が用いられている場合は、変更
されたルールが用いられた最も早い時点がコンフリクト
セツトに入ることができた最も早い点である。この点の
決定は好適には変更されたルールに対する最小フアイア
リングセツトの決定を含む。多くのルールについては、
左側のすべての変数についてそのルールがフアイア処理
される前に特定する必要はない。例えば(A AND
B)OR(C ANDD)のような形式の左側をもつル
ールでは、A及びBのみが特定され又はC及びDのみが
特定されるときそのルールをフアイア処理することがで
きる。このようにA及びBは共にそのルールについての
最小フアイアリングセツト内の1つのエレメントを、C
及びDが共にそうするように形成することができる。
【0065】そのようなルールがコンフリクトセツトに
入り得た最も早い点を見い出すためには、変数(この例
ではA、B、C、D)がはじめに値を受けるときを決定
するため最初からブレークポイント列156を順方向に
走査することができる。効果の点で有利な他の方法は、
A及びBが共に特定され又はC及びDが共に特定される
最も早い実行状態番号を決定するために、それぞれにつ
いてのバージヨン履歴列を検査するものである。そのよ
うな実行状態番号の直前の実行状態が最終の一致状態で
ある。
【0066】第4の方法はこれと同様であるが、左側の
変数の値を実際に見て当該変数値が実際に左側をコンフ
リクトセツトに入れさせるかどうかを決定することを含
む。そのような決定は、その後の演算において実行すべ
きロールバツクを少なくできる結果になるが、上述の決
定の仕方より著しく複雑になり、その結果効率の点で望
ましくない。あるシステムでは、種々の変数値及びルー
ル構造によつて複雑なテストを行うことにより著しいセ
ービングを実現し得る。そのようなシステムにおいて
は、ルールが変更された後の最終的な一致状態を決定す
るために変数値を用いることは正しいと考えられる。
【0067】種々の変数及びルールの履歴はこれを変数
に生ずる変化及びルールを用いたポイントを追跡するた
めに使用できる。これによりユーザがエラーの原因を決
定するために選択されたルール又は変数の履歴を1回に
1ステツプ戻るような方法を許容できる。
【0068】この実施例において好適に与えられるデバ
ツグツールはルール/変数ネツトワークのグラフイツク
表示である。図8にそのような表示の一例を示す。図8
は4つのルール84、86、88、90及び9個の変数
92〜106を有する知識ベースの図形表示である。ル
ールの条件に用いられる変数はルールボツクスの左側に
接続し、ルールのアクシヨンにおいて結論を出す変数は
このルールの左側に接続する。例えばルール84は変数
102についての結論を出すために変数94及び92を
用い、ルール88は変数96及び106の結論を出すた
めに変数98及び100を用いる。
【0069】図8のネツトワークは事前診断モード、診
断モード及び事後診断モードの各モードにおいて使用さ
れる。このネツトワークの使用はどのモードとなつてい
るかによつて少し変化する。図8に示す静的ルール/変
数ネツトワークは知識ベースにおける種々のルール及び
変数間の静的依存性を示すための事前診断モードで用い
られる。これは、種々の変数を変えることにより影響を
受けるルール及び種々のルールを変えることにより影響
を受ける変数を決定するためにユーザによつて利用され
る。
【0070】エキスパートシステム(診断モード)の実
行中、推論プロセス内のイベントの進行を可視表示する
ためにルール/変数ネツトワークに1つのアニメーシヨ
ンが与えられる。このため、種々の指標がエキスパート
システムにより行われる推論の信号を図形表示するため
に用いられる。色彩の変化又は濃淡がルール及び変数の
状態を示すため使用される。カラー表示の場合には色の
変化がルール及び変数をを表わすグラフイツク要素に与
えられる。白黒表示の場合は濃淡が用いられる。
【0071】図9b−9iは白黒グラフイツク表示にお
ける変化を表す好適な方法を示す。ルール/変数ネツト
ワーク内の各変数ノード162は対応するオフセツトし
た変数ノード164を有する。オフセツト変数ノード1
64はそれに重なる変数ノード162により部分的に不
明瞭となり、変数ノード162の状態変化を示す補助と
してのみ用いられる。各ルールノード166は同様にし
てオフセツトしたルールノード168を有し、これも同
じように機能する。図における単一方向のハツチングは
1つのノードが白黒表示で灰色となることを示し、クロ
スハツチングは1つのノードが黒となることを示す。
【0072】まず変数ノード162及びオフセツト変数
ノード164はこのネツトワーク内のすべての変数につ
いて黒であるとする。この状態を図9bに示す。逆方向
連鎖がこの推論機構で用いられると、オフセツト変数ノ
ード164はそれが表わす変数が目標として選択されれ
ば灰色となる。これを図9cに示す。1つの変数が値を
受けると、変数ノード162も図9dに示すように灰色
になる。この変数が導出されると、図9eに示すよう
に、変数ノード162は灰色のままになりかつオフセツ
ト変数ノード164が白となる。
【0073】ルールノード166及びオフセツトルール
ノード168は同様にして最初は、図9gに示すよう
に、黒である。ルールが活用されるソースになると、オ
フセツトルールノード168は図9hに示すように灰色
となるが、ルールノード166は黒のままになる。これ
らルールがフアイア処理されると、ルールノード166
も図9iに示すように灰色となる。同様のアニメーシヨ
ン技術は基本的な推論機構が順方向連鎖を行つていると
きに用いられる。変数は順方向連鎖では目標にならず、
従つてオフセツト変数ノードは使用されない。1つの変
数に値が割り当てられると、変数ノード169は黒から
灰色になり、図9fのような表示になる。順方向連鎖の
場合にはオフセツトルールノード168はルールがコン
フリクトセツトに入つたとき灰色となつて図9hによる
表示を与え、ルールノード166はそのルールが図9i
に示すようにフアイア処理されたとき灰色になる。
【0074】いくつかの変数はまた知識ベースに割り当
てられた値を有する。これら変数に対応するノードは、
値を受ける変数用に用いられるグラフイツク表示された
値を割り当てられる。このように、逆方向連鎖の推論機
構については、オフセツト変数ノード164は白であり
かつ変数ノード162は灰色である。順方向連鎖の推論
機構では最初オフセツト変数ノード164は黒でありか
つ変数ノード162は灰である。
【0075】この動的表示の使用又はルール及び変数に
ついての状態変化を表示する同様の技術を使用すること
により、ユーザに動作可視グラフイツク表示を与えるル
ール/変数ネツトワークが得られる。逆方向連鎖が用い
られるとき、オフセツト変数ノード164及びオフセツ
トルールノード168の灰色の右から左への流れが推論
プロセスにおける目標、ソース及び補助目標が連鎖的に
発生したことを示す。変数ノード162及びルールノー
ド166の灰色の左から右への流れはルールフアイアリ
ング及び変数値の伝播効果を示す。順方向連鎖の場合、
このネツトワークの同様な左から右への灰色の流れは推
論プロセスの可視表示を与える。
【0076】上記のようなアニメーシヨン化された表示
によれば、ユーザは各ステツプで生ずる多くのデイテー
ルにより混乱させられることなく、推論プロセスの流れ
を見ることができる。ユーザが正しくないものとして知
つている方向に推論プロセスが開始するとすれば、ユー
ザは非同期的に実行を中断させて問題の原因を検査する
ことができる。事後診断段階では、ルール/変数ネツト
ワークが知識ベース内のすべてのルール及び変数の最終
状態を静的に表示する。ユーザは目標としてどの変数が
用いられて値を受けたか、またどのルールがフアイア処
理されたかを図形的に見ることができる。
【0077】ある場合には変数が1サイクルに関係する
ことがある。逆方向推論機構においてこの状態は、1つ
の変数がその変数導出用の補助目標に用いられるルール
の左側にあるときに生ずる。サイクルは、例えば値VA
R4の変数98及び値VAR7の変数104のノード
が、実際に同一の変数を表わすとき図8において生ず
る。そのようなサイクルが生じたとき、図9jに示すよ
うに、通常は円形のノード162がルール/変数ネツト
ワークの右に置かれてこれが目標であることを示し、ま
た菱形記号がスプリツト変数ノード170を示すために
用いられる。推論中、円形の変数ノード169はオフセ
ツト変数ノード164と同様に灰色になり、菱形のスプ
リツト変数ノード170は変数ノード162と同様に灰
色になる。この表示技術は順方向連鎖の場合に用いられ
る。
【0078】ルール及びノードの図形表示を変更するた
めの手続きは前述のデバツガにより容易に行われる。図
4及び図5について述べたように、潜在的なブレークポ
イントに到達するたびに、デバツガに対して手続きコー
ルがなされて実際にブレークポイントに達したかどうか
を決定する。図形表示用のこの変化はそれぞれ潜在的な
ブレークポイントに対応する。例えば1つの変数を目標
とすれば図4のステツプ38で示されるように潜在的な
ブレークポイントになる。同様にルールのフアイアリン
グ処理は図4のステツプ50に対応する潜在的なブレー
クポイントを発生する。図形表示に変化を生じさせるよ
うなイベントが発生することによりブレークポイントデ
バツガが呼び出されると、手続きコールが表示マネージ
ヤに対して行われて表示の適正なノードの変更を行う。
ブレークポイントがそのとき実際に生じたかどうかには
無関係に表示が変更される。
【0079】図10はブレークポイントプロセサ34が
ブレークポイントにおいて呼び出されるときに生じ得る
種々のイベントを示す図である。まず、推論機構の実行
を停止させる条件がユーザの情報についてブロツク11
0において表示される。このときブレークポイントプロ
セサはブロツク112においてユーザからの入力を受
け、そしてユーザの選択により種々のアクシヨンの内の
1つを実行する。
【0080】ユーザはブロツク114において推論機構
の実行を停止させるブレークポイントを見て編集するこ
とができる。1回に多数のブレークポイントを加え、編
集し及び削除し得るようにユーザにメニユを与えること
ができる。ユーザはブロツク116において知識ベース
内のルールを見て編集するか、又はブロツク118で変
数を見て編集するかを選択することもできる。ユーザが
用いられたルール又は変数を編集する場合には、システ
ムにより一貫性の分析が自動的に行われる。好適な一貫
性のチエツク方法はすでに述べた。この変化がシステム
を非一貫性状態にするものである場合には、ユーザに知
らされる。ユーザは必要であれば実行を一貫性状態にロ
ールバツクする機会をもつ。
【0081】ユーザは特定のルールフアイアリングにつ
いての詳細情報を与える詳細ルールの追跡をブロツク1
20において行う。すなわち、参照されたすべての変数
の値と各前提条件についての真値が示される。このレベ
ルのデイテールは従来の説明機能では与えられないが、
デバツグには必要なものである。ユーザはブロツク12
2において変数値が必要な理由又はブロツク124にお
いてその値が得られた理由の表示を選ぶことができる。
ブロツク122における「WHY」質問は、制御手続き
(順方向又は逆方向連鎖)が特定の変数についての値を
必要とする理由又はいかにして変数値が種々のルール及
び変数の対話を通じてリツプルするかを表示する。ブロ
ツク124の「HOW」質問は、いかにして制御手続き
が特定の変数の値を決定しようとしているかを表示す
る。「WHY」質問は本来未来形の質問であり、「なぜ
この情報が必要か」を問うものである。「HOW」コマ
ンドは本来過去形の質問であり、「いかにしてこのよう
に事が生じたか」を問うものである。
【0082】診断段階において、「HOW」及び「WH
Y」質問がルール又は変数についての過去及び将来の使
用を決定するために用いられる。ブロツク122の「W
HY」質問はどこで変数が用いられたか(過去)、また
どこでそれが用いられるか(未来)を示す。デバツグ列
は過去情報を得るために用いられ、静的ルール/変数ネ
ツトワークは未来の事前診断段階で生ずるようなものに
ついて用いられる。ブロツク124の「HOW」質問は
変数が現在の値をどのように受けたか又はルールがどの
ような理由でフアイア処理されたかを示す過去情報を得
るためにデバツグ列を使用する。ブロツク124の「H
OW」質問は、ブロツク122の「WHY」質問と同様
にして未だ生じていないイベントに関する質問に答える
ために静的ルール/変数ネツトワークを用いる。
【0083】事前診断段階24において「HOW」及び
「WHY」質問は推論機構により採用されることがある
ステツプを見い出すためにのみ用いることができる。診
断段階26及び事後診断段階28においては過去、現在
及び未来のイベントについての情報も使用できる。
【0084】上述のようにユーザはいくつかの方法でブ
レークポイントプロセサ34を出ることができる。ユー
ザは推論機構の単一ステツプ実行ブロツク126を開始
し又は続行することができる。制御は1つの単一ステツ
プが完了した後にブレークポイントプロセサ34に戻
る。ユーザはブロツク128において診断段階を早めに
終了させて事後診断段階に直接移すことができる。また
ユーザはブロツク130においてブレークポイントプロ
セサから出て通常の実行に戻させることができ、又はブ
ロツク132においてシステムの実行を最初から再スタ
ートさせることができる。ブロツク134において実行
状態を選択された状態又はブレークポイントにより特定
されるものにロールバツクすることができる。これは、
ブロツク119の一貫性分析が変化により非一貫性が導
入されたことを示した後にしばしば行われるのであり、
最後の一貫性状態への直接のロールバツクのオプシヨン
がユーザに与えられる。
【0085】
【発明の効果】上述のルール型デバツガによればユーザ
はエキスパートシステムプログラムの進行についての詳
細な情報を得ることができる。ブレークポイントは動的
にセツトされそして変更することができ、システム全体
の実行動作についての効果を見るためにルール及び変数
値に対するそのような変化を与えることができる。この
デバツガは知識ベースについて順方向及び逆方向連鎖の
両方を支持するために使用でき、またユーザとの一貫性
のある対話がいずれの場合にも用いられる。実行動作の
履歴に関する詳細情報がいくつかの形でユーザに供され
るので、実行動作の状態を前の中間状態にロールバツク
させ得る。この機能により、推論を最初から再スタート
することなくルール及び変数に対して変更を行うことが
できることになる。
【0086】エキスパートシステムにおけるルールフア
イアリングと並列処理システムにおける同時的なプロセ
ス動作との間には相似性があることは当業者には明らか
である。理論的にはルールの相互独立性がないかぎり多
くのルールは同時に動作する。各ルールが並列システム
内の1つのプロセスに対しマツプされ、メツセージが変
化を通信するために用いられた変数を通し又は共用する
とすれば、相互独立性をもたないプロセスも同時に実行
し得る。
【0087】上記のデバツガはそのようなエキスパート
システムでも使用できる。これはイベントの順序が予め
知られていないとき有用なデバツグ情報を与えるように
設計されている。この状態は一般に並列処理システムに
おいて生じるから、前述のデバツガは適正な変更を加え
ることによりそのようなシステムにも使用できる。ブレ
ークポイントは各プロセスについて別々に特定すること
ができ、これによりデバツガはそれらが1つとなつたと
きに呼び出される。システム設計により、残りのプロセ
スも停止することができ、又は続行するようにすること
もできる。ルール/変数ネツトワークと等価なツールを
メツセージ又は共用変数を用いるプロセス間の関係を図
形表示するために用いることができる。種々のプロセス
の実行履歴を検査する能力はルール型システムのデバツ
グに有効なように並列システムのデバツグにも有効であ
る。
【図面の簡単な説明】
【図1】ルール型エキスパートシステムをデバツグする
ためのシステムのブロツク図である。
【図2】好適なデバツガにおける3つの段階をもつ高レ
ベルな制御の流れを示すブロツク図である。
【図3】図2の診断段階の詳細を示すブロツク図であ
る。
【図4】逆方向連鎖が用いられるときの推論中の潜在的
なブレークポイントを示すフローチヤートである。
【図5】順方向連鎖が用いられるときの推論中の潜在的
なブレークポイントを示すフローチヤートである。
【図6】好適な実施例によるデバツグを支持するために
推論機構により用いられるデータ構造を示す図である。
【図7】好適な実施例によるデバツグを支持するために
推論機構により用いられるデータ構造を示す図である。
【図8】好適なデバツガにより描くことができるルール
/変数ネツトワークの一例を示す系統図である。
【図9】図8の図形表示を示す略線図である。
【図10】ブレークポイントとなつたときユーザ入力に
応じて行われる種々のアクシヨンを示すフローチヤート
である。
【符号の説明】
10……エキスパートシステム、12……推論機構、1
4……ルール、16……変数、18……知識ベース、1
9……ユーザインターフエース、20……デバツガ、2
2……データべースアクセス。
フロントページの続き (72)発明者 ロ・シー アメリカ合衆国、カリフオルニア州94024、 ロス、アルトス、デイオダラ・ドライブ 1994番地

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】ブレークポイントを選択された条件として
    特定する段階と、 プログラム条件が状態を変更できる各処理ステツプの後
    に上記ブレークポイントを特定する条件が一致したかど
    うかを決定する段階と、 上記特定する条件が一致したときプログラムの実行を停
    止する段階とによつてルール型プログラムの実行をモニ
    タするデバツギング方法。
  2. 【請求項2】プログラムの実行が停止された後にプログ
    ラムの実行状態をユーザが検査し得るような情報をユー
    ザに対して表示する段階を含むことを特徴とする特許請
    求の範囲第1項に記載のデバツギング方法。
  3. 【請求項3】ユーザによりルール及び変数に対してなさ
    れる変更を受け入れる段階及びルール型プログラムの実
    行を再開する段階を含むことを特徴とする特許請求の範
    囲第2項に記載のデバツギング方法。
  4. 【請求項4】ルール型プログラムの再開前に、受け入れ
    た変更がプログラムの現在の状態に対して一貫性がない
    とき当該プログラムの実行状態を一貫性のある状態にロ
    ールバツクする段階を含むことを特徴とする特許請求の
    範囲第3項に記載のデバツギング方法。
  5. 【請求項5】プログラムの処理中に、プログラム条件が
    上記選択されたブレークポイント条件と一致するかどう
    かには無関係に実行を中断するための中断信号をユーザ
    から受ける段階と、 上記中断信号に対応するプログラムの実行を停止する段
    階とを含むことを特徴とする特許請求の範囲第1項に記
    載のデバツギング方法。
  6. 【請求項6】プログラムの実行が停止されているとき、
    ユーザにオプシヨンとしてアクシヨンのリストを与える
    段階と、 選択されたアクシヨンを示す入力をユーザから受ける段
    階と、 当該ユーザにより選択されたアクシヨンに対応するアク
    シヨンを行う段階とを含むことを特徴とする特許請求の
    範囲第1項に記載のデバツギング方法。
  7. 【請求項7】ユーザにより与えられる上記アクシヨンは
    実行回復、ルール表示、変数値及び新しいブレークポイ
    ントの特定を含むことを特徴とする特許請求の範囲第6
    項に記載のデバツギング方法。
  8. 【請求項8】ユーザに表示されるアクシヨンリストはプ
    ログラム内のルール及び変数間の関係を示すグラフの表
    示を含むことを特徴とする特許請求の範囲第7項に記載
    のデバツギング方法。
  9. 【請求項9】ユーザに与えられる上記アクシヨンリスト
    はルール又は変数の詳細な履歴の表示を含み、ユーザが
    選択された変数に値を割り当てるルールがどれかを決定
    し得るようにしたことを特徴とする特許請求の範囲第7
    項に記載のデバツギング方法。
  10. 【請求項10】ユーザに与えられた上記アクシヨンリス
    トは選択されたルール又は変数の更新を含むことを特徴
    とする特許請求の範囲第7項に記載のデバツギング方
    法。
  11. 【請求項11】ユーザに与えられた上記アクシヨンリス
    トはシステムの実行の前の状態へのロールバツクを含む
    ことを特徴とする特許請求の範囲第7項に記載のデバツ
    ギング方法。
  12. 【請求項12】プログラムの実行に用いられる上記処理
    段階は推論機構により行われることを特徴とする特許請
    求の範囲第1項に記載のデバツギング方法。
  13. 【請求項13】上記推論機構は順方向連鎖制御機構を用
    いることを特徴とする特許請求の範囲第12項に記載の
    デバツギング方法。
  14. 【請求項14】上記推論機構は逆方向連鎖制御機構を用
    いることを特徴とする特許請求の範囲第12項に記載の
    デバツギング方法。
  15. 【請求項15】実行前にエキスパートシステム内の変数
    及びルール間の関係をユーザに図形的に表示し、ユーザ
    が選択された条件の発生によりシステムの実行を停止さ
    せるためのブレークポイントを特定し得るようにする段
    階と、 エキスパートシステムを実行する段階と、 上記実行段階においてブレークポイントになつたとき実
    行を停止する段階と、 当該実行完了後にエキスパートシステム内のルール及び
    変数間の関係をユーザに対して図形として表示し、ユー
    ザがシステムの実行動作のうち選択された部分を元に戻
    して実行動作を中間状態から再開し得るようにする段階
    とによつてルール型エキスパートシステムを実行動作さ
    せることを特徴とするデバツギング方法。
  16. 【請求項16】システムの実行動作がブレークポイント
    において停止したときユーザに対してルール及び変数間
    の選択された関係を表示する段階とを含むことを特徴と
    する特許請求の範囲第15項に記載のデバツギング方
    法。
  17. 【請求項17】システムの実行動作がブレークポイント
    において停止したときユーザに当該実行動作の選択され
    た部分の履歴を追跡する表示を表示する段階を含むこと
    を特徴とする特許請求の範囲第15項に記載のデバツギ
    ング方法。
  18. 【請求項18】システムの実行が動作がブレークポイン
    トにおいて停止したときユーザが変数の値及びルールを
    変更し得るようにする段階を含むことを特徴とする特許
    請求の範囲第15項に記載のデバツギング方法。
  19. 【請求項19】変数又はルールが変化した後にエキスパ
    ートシステムをこれらの変化した値と一致する実行状態
    にロールバツクする段階を含むことを特徴とする特許請
    求の範囲第18項に記載のデバツギング方法。
  20. 【請求項20】上記実行段階は順方向連鎖を用いること
    を特徴とする特許請求の範囲第15項に記載のデバツギ
    ング方法。
  21. 【請求項21】上記実行段階は逆方向連鎖を用いること
    を特徴とする特許請求の範囲第15項に記載のデバツギ
    ング方法。
  22. 【請求項22】下記段階を含むルール型エキスパートシ
    ステム用デバツガルール及び変数を含む知識ベースと、 上記知識ベースを用いて推論を行う推論機構と、 ブレークポイントを特定する予め選択された条件が生じ
    たとき上記推論機構の実行を停止する上記推論機構によ
    つて呼び出すことができるデバツグ手続きとを具えるこ
    とを特徴とするデバツグ装置。
  23. 【請求項23】ユーザとの間のインターフエースとして
    機能すると共に、上記推論機構の実行が停止されたとき
    上記推論機構及び上記知識ベースの状態についての要求
    された情報を表示するためのブレークポイント処理手段
    を含むことを特徴とする特許請求の範囲第22項に記載
    のデバツグ装置。
  24. 【請求項24】上記推論機構の実行が停止されたときユ
    ーザが上記知識ベース内のルール及び変数値を変更する
    ことができることを特徴とする特許請求の範囲第23項
    に記載のデバツグ装置。
  25. 【請求項25】ルール又は変数が変更された後に上記推
    論機構がそのような変更と一致する最終状態にリセツト
    されることを特徴とする特許請求の範囲第24項に記載
    のデバツグ装置。
  26. 【請求項26】上記推論機構は順方向連鎖を用いて実行
    動作することを特徴とする特許請求の範囲第23項に記
    載のデバツグ装置。
  27. 【請求項27】上記推論機構は逆方向連鎖を用いて実行
    動作することを特徴とする特許請求の範囲第23項に記
    載のデバツグ装置。
  28. 【請求項28】上記推論機構はすべての実行されたアク
    シヨンの履歴を発生し、上記ブレークポイント処理手段
    はユーザがその履歴の所望の部分を見ることができるこ
    とを特徴とする特許請求の範囲第23項に記載のデバツ
    グ装置。
  29. 【請求項29】上記推論機構の実行を任意の時点で中断
    させる要求をユーザから要求されるようになされ、上記
    推論機構の実行動作が次に上記推論機構が上記デバツグ
    手続きの1つを呼び出すとき停止されることを特徴とす
    る特許請求の範囲第23項に記載のデバツグ装置。
JP2412971A 1990-01-26 1990-12-25 推論エンジンの実行監視方法及び装置 Expired - Lifetime JPH0782439B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US47093390A 1990-01-26 1990-01-26
US07/470933 1990-01-26

Publications (2)

Publication Number Publication Date
JPH05151025A true JPH05151025A (ja) 1993-06-18
JPH0782439B2 JPH0782439B2 (ja) 1995-09-06

Family

ID=23869649

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2412971A Expired - Lifetime JPH0782439B2 (ja) 1990-01-26 1990-12-25 推論エンジンの実行監視方法及び装置

Country Status (2)

Country Link
EP (1) EP0439343A3 (ja)
JP (1) JPH0782439B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005078309A (ja) * 2003-08-29 2005-03-24 Nec Corp データ処理システム
JP2007179567A (ja) * 2007-02-26 2007-07-12 Nec Corp データ処理システム
JP2016029582A (ja) * 2007-04-10 2016-03-03 アビニシオ テクノロジー エルエルシー ビジネスルールの編集およびコンパイルの、方法、コンピュータプログラム、およびシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2837815B2 (ja) * 1994-02-03 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション 対話型ルール・ベース・コンピュータ・システム
GB9519677D0 (en) * 1995-09-27 1995-11-29 Philips Electronics Nv Data processing apparatus event cause determination
US9710749B2 (en) * 2013-09-03 2017-07-18 Qualcomm Incorporated Methods and apparatus for implementing a breakpoint determination unit in an artificial nervous system
CN109086159A (zh) * 2018-09-04 2018-12-25 环胜电子(深圳)有限公司 死机检测模块及其方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01277941A (ja) * 1988-04-30 1989-11-08 Meidensha Corp 推論ステップ方式
JPH01277939A (ja) * 1988-04-30 1989-11-08 Meidensha Corp 推論トレース方式
JPH01307841A (ja) * 1988-06-06 1989-12-12 Nec Corp ルールの前向静的デバッガ
JPH0221339A (ja) * 1988-07-08 1990-01-24 Nec Corp ルールの後向静的デバッガ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01277941A (ja) * 1988-04-30 1989-11-08 Meidensha Corp 推論ステップ方式
JPH01277939A (ja) * 1988-04-30 1989-11-08 Meidensha Corp 推論トレース方式
JPH01307841A (ja) * 1988-06-06 1989-12-12 Nec Corp ルールの前向静的デバッガ
JPH0221339A (ja) * 1988-07-08 1990-01-24 Nec Corp ルールの後向静的デバッガ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005078309A (ja) * 2003-08-29 2005-03-24 Nec Corp データ処理システム
US7647485B2 (en) 2003-08-29 2010-01-12 Nec Corporation Data processing system for debugging utilizing halts in a parallel device
JP2007179567A (ja) * 2007-02-26 2007-07-12 Nec Corp データ処理システム
JP2016029582A (ja) * 2007-04-10 2016-03-03 アビニシオ テクノロジー エルエルシー ビジネスルールの編集およびコンパイルの、方法、コンピュータプログラム、およびシステム

Also Published As

Publication number Publication date
JPH0782439B2 (ja) 1995-09-06
EP0439343A2 (en) 1991-07-31
EP0439343A3 (en) 1993-05-19

Similar Documents

Publication Publication Date Title
US5140671A (en) Expert system debugger
US5170464A (en) Method for rolling back an expert system
Levesque et al. Cognitive robotics
US5167012A (en) Method for performing consistency checks
US7565642B2 (en) Rule engine
EP0413485B1 (en) Performance improvement tool for rule based expert systems
US7386521B2 (en) Automatic test program generation using extended conditional constraint satisfaction
US5598511A (en) Method and apparatus for interpreting data and accessing on-line documentation in a computer system
JP2814691B2 (ja) 推論方法に基づく故障診断方法
JPH05197556A (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
US5398304A (en) Control process for artificial intelligence software shell
Montanari et al. Contextual occurrence nets and concurrent constraint programming
JPH05151025A (ja) デバツギング方法及びデバツグ装置
Teitelman Automated programmering: the programmer's assistant
EP0449402A2 (en) Method for rolling back an expert system
JPH01298435A (ja) 自動プログラミング装置
US5390286A (en) Reticular discrimination network for specifying real-time conditions
EP0439342A2 (en) Method of operating an expert system and computer systems therefor
EP0439341A2 (en) Display for expert system
Hale et al. Towards a model of programmers' cognitive processes in software maintenance: A structural learning theory approach for debugging
Oquendo et al. A meta-CASE environment for software process-centred CASE environments
KR100241849B1 (ko) 블랙보드 기반의 혼합추론 전문가시스템
Chaghrouchni et al. Machine Learning in Predicting the Appropriate Model of Software Process Models Deviation