JPS6249546A - 論理型言語処理装置 - Google Patents

論理型言語処理装置

Info

Publication number
JPS6249546A
JPS6249546A JP60188535A JP18853585A JPS6249546A JP S6249546 A JPS6249546 A JP S6249546A JP 60188535 A JP60188535 A JP 60188535A JP 18853585 A JP18853585 A JP 18853585A JP S6249546 A JPS6249546 A JP S6249546A
Authority
JP
Japan
Prior art keywords
frame
identifier
goal
predicate
selection
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.)
Pending
Application number
JP60188535A
Other languages
English (en)
Inventor
Akihiko Konagaya
明彦 小長谷
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP60188535A priority Critical patent/JPS6249546A/ja
Publication of JPS6249546A publication Critical patent/JPS6249546A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
〔産業上の利用分野〕 本発明は、プロログ(Prolog)等の論理型言語を
用いて知識処理、推論処理を行なうのに適した論理型言
語処理装置に関する。 〔従来技術とその問題点〕 論理型言語プロログは非決定的なプログラムが容易に記
述できることで知られている。例えば、よく知られたプ
ロログ記法(rPrologプログラミング」中村克彦
訳(マイクロソフトウェア))によれば、「信康は家康
の息子である」と「秀忠は家康の息子である」という2
つの事実は次の2つの節で表わすことができる。 また、「家康は将軍である」、「秀忠は将軍である」と
いう2つの事実は次の2つの節で表わすことができる。 さらに、「家康の息子で将軍になった人物Xは誰か」と
いう質問は下記の質問節で表わすことができる。 ?−息子(家産、X)、将軍(X)。 プロログの処理装置は、上記の如き質問節が与えられる
と次のように動作する。この場合、処理装置は上記節(
1)、  (2>を格納しているものとする。先ず、質
問節における各ゴール「息子(家産、X)Jと「将軍(
X)」について左から右の順序で述語呼出しを行なう。 最初にゴール「息子(家産、XHについて述語呼出しが
行われる。その結果、同一の述語名を有する節のうち先
ず上位にある節「息子(家産、信康)。」が呼ばれ、こ
の節の先頭のゴール(以下頭ゴールと呼ぶ)と呼出し側
のゴールとの単一化が試みられる。ここで単一化とは、
与えられた2つのゴールを同一のものにする操作をいう
。この場合には、「息子(家産、X)Jの変数Xを信康
に置換えることによって、2つのゴールを同一のものに
できるので2つのゴールは単一化されることになる。 呼出し側のゴールと呼ばれた側の節の頭ゴールとの間で
単一化が成功すると、呼ばれた側の節が他のゴールを含
んでいるときには残りの他のゴールを左から右に実行す
る。しかし、上記の場合には、呼ばれた側の節は頭ゴー
ルしか含まないので、呼出し側のゴールと呼ばれた側の
頭ゴールが単一化した段階で述語呼出しが終了すること
になる。 次にはゴール「将軍(X)」について述語呼出しが行な
われる。このとき前記述語呼出しによって変数Xには「
信康」が代入されているので、呼出し側のゴールは「将
軍(信康)」として扱われる。「将軍(信康)」で呼出
しが実行されると、最初に節「将軍(家産)。」が呼ば
れる。この節の頭ゴールと呼出し側のゴールは同一のゴ
ールにできないので、単一化は失敗する。次にその次の
節「将軍(秀忠)。」が呼ばれることになるが、この場
合も単一化が失敗する。 上記の如くゴール「将軍(信康)」について呼出したす
べての節について単一化を失敗すると、呼出し側のゴー
ル「将軍(信康)」が失敗となり、バックトラックが引
き起こされる。バックトラックが生じると変数Xは再び
未定義状態に戻され、その後前のゴール「息子(家産、
X)Jがもう一度実行される。今後は節「息子(家産、
秀忠)。」が選ばれ、変数Xに「秀忠」が代入され、ゴ
ール「将軍(秀忠)」として実行される。このゴールに
対しては節「将軍(秀忠)。」があるので述語呼出しは
成功する。そして、質問節のすべてのゴールが成功して
プログラムの実行は終了する。 以上のような非決定的な処理は、知識処理のように確定
したアルゴリズムがない問題を記述するときに便利であ
る。しかしながら、従来から知られているバックトラッ
クの実現手法は、最も最近に実行された述語から代替解
を求めるものであり、エラー処理などのときに発生する
特定の時点の実行環境に直接戻すような処理はできない
。例えば、以下のようなプログラムを考える。 p+−repeat、read(X)、q(X)。 h (X) 。 q(Y)ニーQQ (Y)。 q(a)。 h  (a)ニーerror。 h  (Z)ニーhh  (Z)。 ニーp、r  (b)。 ここで、述語pが起動され、repeat、read(
X)、Q(X)を実行して、ゴールh(X)を呼出した
とき、Xがaのときはエラーにして、readの直前の
状態までバックトラックしたいとしても、述語qが代替
節をもっているため、従来型のバックトラック制御方式
ではr eadの直前の状態に直接バックトラックさせ
ることはできない。すなわち、従来方式ではバックトラ
ックしたとき制御の戻り場所を指定することができない
という問題を有していた。 〔発明の目的〕 本発明の目的は、上記従来方式の問題点を解決し、指定
されたゴールの実行環境まで直接バックトラックするバ
ックトラック制御機構を備えた論理型言語処理装置を提
供することにある。 〔発明の構成〕 本発明は、バックトラックに必要なパックトラツク情報
をポインタで結んで管理する実行制御スタックを有し、
述語呼出しが失敗したときに前記実行制御スタックに格
納されたバックトラック情報を用いてバックトラックし
て述語呼出しの別の解を求める実行制御機構を有する論
理型言語処理装置において、バックトラック情報に識別
子を付加して該バックトラック情報を前記実行制御スタ
ックにセーブする第1の命令実行手段と、前記実行制御
スタックにおいて与えられた識別子と同一の識別子を持
つバックトラック情報を検出し該バックトラック情報を
用いてバックトラックを行なう第2の命令実行手段を含
むことを特徴としている。 〔実施例〕 以下に、図面を用いて本発明の詳細な説明する。 本発明に係る論理型言語処理装置ではcatch命令と
throw命令という2つの命令実行手段を備えている
。ここでcatch命令及びthrow命令は下記の如
き作用を有する。 ■catch (ラベル) ラベルで指定される識別子をバックトラック情報に付加
し、このバックトラック情報を実行制御スタックにセー
ブする。この命令を実行した後に上記ラベルと同一のラ
ベルを持つthrow命令が実行されるcatch命令
に制御が戻され、実行環境がcatch命令を実行した
直後の状態に戻された後、次のゴールが起動される。 ■throw (ラベル) ラベルで指定される識別子を有するバックトラック情報
を実行制御スタックより検出し、実行環境を当該バック
トラック情報をセーブした時点に戻す。 かかるCatCh命令及びthrow命令を用いて、制
御の戻るゴールを名前で指定すれば、バックトラックし
たとき制御の戻り場所を任意に指定することが可能とな
る。 次に具体的構成に基づいて本発明の論理型言語処理装置
を説明する。第1図は本発明の一実施例による論理型言
語処理装置のブロック図である。 この論理型言語処理装置は、プログラム実行に必要な情
報を格納するレジスタファイル50と、プログラムのコ
ード及びデータを格納するメモリ100と、レジスタフ
ァイル50に格納されている情報及び第1図に図示され
ていないその他の制御情報を用いて、メモリ100の内
容及びレジスタファイル50の内容を更新する処理ユニ
ット60とを含んで構成される。本実施例のメモリ10
0は、述語呼出しの実行環境及びバックトラック情報を
格納する実行制御スタック10と、単一化の過程で生成
されたデータ構造を格納するデータスタック20と、単
一化の過程で結合された変数の位置を格納するトレール
スタック30と、実行するプログラムを格納するコード
領域40から構成される。また、レジスタファイル50
には、現在実行中の述語の引数(以降引数の順にA [
0〕、 A [:1] 、・・・・・・、 A (31
)と記す)51と、現在実行中の命令を指すプログラム
・カウンタ(以降PCと記す)52と、現在実行中のゴ
ールが成功したときに実行すべき命令を指すコンティニ
ニエイション・カウンタ(以降CPと記す)53と、現
在実行中の述語の実行環境を格納する環境フレームを指
すポインタ(以降LEと記す)54と、現在実行中のゴ
ールが失敗した時のバックトラック情報を格納する選択
フレーム又は識別子付き選択フレームを指すポインタ(
以降LCと記す)55と、実行制御スタック10の未使
用領域の先頭を指すポインタ(以降CTOPと記す)5
6と、トレールスタック20の未使用領域の先頭を指す
ポインタ(以降TTOPと記す)57と、データスタッ
ク20の未使用領域の先頭を指すポインタ(以降DTO
Pと記す)58と、現在実行中のゴールが失敗したとき
のデータスタック20の未使用領域の先頭を指すポイン
タ(以降BDTOPと記す)59が格納されている。 第2図は、述語が呼出された際に実行環境として実行制
御スタック10中に生成される環境フレームの構成を示
す概念図である。本実施例では述語が呼出されると、そ
の時点でのLE54及びCP53の値LE、CPをセー
ブし、さらに、実行する筒中に含まれる変数の値領域Y
。、Y8.・・・・・・、Y、。 が確保される。そして、LE54が新たに生成された環
境フレームのCPを格納したアドレスを指すようにLE
54を変更し、またCTOP56が新たに生成した環境
フレームの直下の未使用領域の先頭を指すようにCTO
P56を変更する。 第3図は、呼出された述語が2つ以上の節から構成され
ているときに、代替解を求めるためのバックトラック情
報として実行制御スタック10中に生成される選択フレ
ームの構成を示す概念図である。本実施例では代替解を
持つ述語を呼出すと、これから実行する節が失敗したと
きに実行する代替節の飛び先アドレスと、その時点での
CP53゜LE54.LC55,TTOP57.DTO
P58.BGTOP59の各内容と呼出された述語の引
数個数ならびに対応する引数A [0〕、 A 〔1,
l 、・・・・・・。 A [n)を選択フレーム中に格納し、LC55が新た
に生成した選択フレームの引数個数を格納したアドレス
を指すようにLC55を変更し、CTOP56が新たに
生成した選択フレームの直下の未使用領域を指すように
CTOP56を変更する。 第4図は、catch命令が実行されたときに識別子付
きのバックトラック情報として実行制御スタック10中
に生成される識別子付き選択フレームの構成を示す概念
図である。catch命令が実行されると、本実施例で
は、その時点でのPC52、CP53. LE54. 
LC55,TTOP57. DTOP58.BDTOP
59の各内容と、識別子付き選択フレームを表わすフレ
ーム識別子(−1)と、catch命令に引数として与
えられた識別子を格納し、LC55が新たに生成した識
別子付き選択フレームのフレーム識別子を指すようにL
C55を変更し、また、CTOP56が識別子付き選択
フレームの直下の未使用領域を指すようにCTOP56
を変更する。 次に、下記のプログラムを実行した際の上記処理装置の
動作について詳述する。 pニーcatch (error)、read (X)
。 q (X) 、 h (X) 。 q (Y)ニーqq (Y)。 q(a)。 h  (a)ニーthrow (error)。 h  (z)ニーhh  (Z)。 ニーp、r  (b)。 第5図は上記プログラムを実行した際の実行制御スタッ
ク10の内容を示す概念図である。質問節において、ゴ
ールpが起動されると処理ユニット60は以下のように
動ず乍する。 はじめに、CP53が次のゴールr (b)を指し、P
C52が述言吾pのエントリを指すよう1こセットされ
、述語pを実行する準備が行なわれる。述語pは代替節
を持たないので選択フレームは生成されない。また、述
語pは引数を持たないので単一化の処理も行なわれない
。ただし、本体部のゴールが2つ以上あるので環境フレ
ーム210が生成され、その時点でのCP53とLE5
4の内容がセーブされる。この時点ではCP53はゴー
ルr (b)を、またLE54は図示されていない上位
の環境フレームをそれぞれ指している。また、環境フレ
ーム210には変数Xのための値領域が用意される。環
境フレームが生成されるとPC52は本体部のゴールを
指すようにセットされ、CatCh命令の引数erro
rがA〔0]51にセットされた後にcatch命令が
起動される。 catch命令ではP C52が次のゴールrea(1
(X>を指すようにセットされた後、PC52゜CP5
3.LE54.LC55,TTOP57.DTOP58
の内容と、フレーム識別子(−1)及びA
〔0〕51の
内容がセーブされる。 次にread命令ではPC52が次のゴールq(X)を
指すようにセットされ、入力装置から読み込まれた項が
変数Xに単一化される。ここで、読み込まれた項がaと
すると環境フレーム210の変数Xの値格納領域にaが
格納される。次に、ゴールq (X)が起動されるが、
Xの値はすてにaとなっているため、ACO)51には
aが格納される。そして、CP53が次のゴールh (
X)を指すようにセットされたのちPC52が述語qの
エントリを指すようにセットされ、述Xfqが実行され
る。 述語qは2つの節から構成されるため選択フレームが生
成され代替節Q(a)、への飛び先アドレスとこの時点
でのCP53. LE54. LC55,TT○P57
.GTOP58.BGTOP59の内容および引数個数
(1)とACO)51の内容がセーブされる。そして、
LC55が生成された選択フレーム230の引数個数を
指すように変更され、CTOP56が選択フレーム23
0の直下の未定義領域の先頭を指すように変更される。 述語qの第−節は本体部のゴールが1つしかないので本
実施例では環境フレームを生成せず、変数Yの値領域は
レジスタファイル50のうえに確保する。この場合はA
I:0)51に変数Yの値がすでに格納されているので
そのまま述語qqが起動される。ゴールqq(Y)が成
功すると、このときのCP53の値、すなわち、ゴール
h (X)へのポインタがP C52にセットされ、述
Hhが起動される。同様にして、述語qqの選択フレー
ムが生成され、述語qqの第−節との単一化が行なわれ
る。 呼出し側の引数がaなのでこの単一化は成功し、次に、
throw命令が起動される。このとき、実行制御スタ
ック10は第5図に示す通りになっており、A〔O]5
1にはerrorが格納されている。 thrOW命令が起動されると、処理ユニット60はL
C55の指す選択フレーム240から親の選択フレーム
を指すポインタ250を辿って識別子付き選択フレーム
を検出する。本実施例では選択フレームと識別子付き選
択フレームの違いは引数個数が“−1′か否かで判断さ
れる。そして、識別子付き選択フレームが見つかると次
にACO)51の内容と識別子付き選択フレームに格納
されている識別子が一致するか否かをチェックし、一致
しない場合には次の識別子付き選択フレームを探しにゆ
く。一致した場合にはPC52,CP53. LE54
゜TTOP57.GTOP58.BGTOP59を該識
別子付き選択フレームにセーブされた内容でリセットし
、さらに、CTOP56が該識別付き選択フレームの直
下のアドレスを指し、LC55が該識別子付き選択フレ
ームのフレーム識別子を指すようにセットする。以上の
動作により、本プログラム例では、実行環境はゴールc
atch (abort)を実行した直後の状態に戻さ
れ、次にゴールq(X)が起動される。 〔発明の効果〕 以上説明した通り本発明によれば、論理型言語処理装置
のバックトラック制御機構において、バックトラック情
報に識別子を付加して実行制御スタックにセーブする命
令実行手段と、上記識別子で指定されたゴールの実行環
境まで直接にバックトラックする命令実行手段とを備え
るようにしたため、バックトラックしたとき制御の戻り
場所を特定の時点の実行環境に指定することができ、エ
ラー処理のような高度なプロログプログラムの実行制御
が実現できるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例に係る論理型言語処理装置の
ブロック図、 第2図は環境フレームの概念図、 第3図は選択フレームの概念図、 第4図は識別子付きの選択フレームの概念図、第5図は
実行制御スタックの一構成例を示す概念図である。 10  ・・・・・・ 実行制御スタック50  ・・
・・・・ レジスタファイル51  ・・・・・・ 述
語の引数 52  ・・・・・・ プログラム・カウンタ53  
・・・・・・ コンティニュエイジョン・カウンタ54
  ・・・・・・ 現在実行中の述語の環境フレームを
指すポインタ 55  ・・・・・・ 現在実行中の述語の選択フレー
ム又は識別子付き選択フレームを指すポイン タ 56  ・・・・・・ 実行制御スタック10の未使用
領域の先頭を指すポインタ 57  ・・・・・・ トレールスタックの未使用領域
の先頭を指すポインタ 58  ・・・・・・ データスタックの未使用領域の
先頭を指すポインタ 59  ・・・・・・ 現在実行中のゴールが失敗した
ときのデータスタックの未使用領域の先頭を 示すポインタ 60  ・・・・・・ 処理ユニット 100・・・・・・ メモリ 代理人 弁理士  岩 佐 義 幸 第1図 第2図 第4図

Claims (1)

    【特許請求の範囲】
  1. (1)バックトラックに必要なバックトラック情報をポ
    インタで結んで管理する実行制御スタックを有し、述語
    呼出しが失敗したときに前記実行制御スタックに格納さ
    れたバックトラック情報を用いてバックトラックして述
    語呼出しの別の解を求める実行制御機構を有する論理型
    言語処理装置において、バックトラック情報に識別子を
    付加して該バックトラック情報を前記実行制御スタック
    にセーブする第1の命令実行手段と、前記実行制御スタ
    ックにおいて与えられた識別子と同一の識別子を持つバ
    ックトラック情報を検出し該バックトラック情報を用い
    てバックトラックを行なう第2の命令実行手段を含むこ
    とを特徴とした論理型言語処理装置。
JP60188535A 1985-08-29 1985-08-29 論理型言語処理装置 Pending JPS6249546A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP60188535A JPS6249546A (ja) 1985-08-29 1985-08-29 論理型言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60188535A JPS6249546A (ja) 1985-08-29 1985-08-29 論理型言語処理装置

Publications (1)

Publication Number Publication Date
JPS6249546A true JPS6249546A (ja) 1987-03-04

Family

ID=16225402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60188535A Pending JPS6249546A (ja) 1985-08-29 1985-08-29 論理型言語処理装置

Country Status (1)

Country Link
JP (1) JPS6249546A (ja)

Similar Documents

Publication Publication Date Title
US5535389A (en) Business process objects with associated attributes such as version identifier
US5748963A (en) Adaptive binding
US4849905A (en) Method for optimized RETE pattern matching in pattern-directed, rule-based artificial intelligence production systems
US6094528A (en) Method and apparatus for system building with a transactional interpreter
US4410940A (en) Transfer of control method and means among hierarchical cooperating sequential processes
Andrews et al. Zing: Exploiting program structure for model checking concurrent software
EP1425662A1 (en) Method to add new software features without modifying existing code
EP0784264B1 (en) A computer-implemented process for determining a minimum code set for an executable application in a data processing system
JP2752094B2 (ja) 論理型言語におけるバックトラック処理方式
CA2167306C (en) Multiple entry point method dispatch
JPS6249546A (ja) 論理型言語処理装置
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JPS6227822A (ja) バツクトラツク制御方式
Francez et al. An environment for logic programming
JP2590126B2 (ja) Prolog処理方法
Marti Compilation techniques for a control-flow concurrent LISP system
Rieger et al. Artificial intelligence programming languages for computer aided manufacturing
JPH0247728A (ja) フォルト処理管理方式
JPH03132824A (ja) 論理型プログラム処理方式
JPS61139840A (ja) 情報処理装置
JPS62293434A (ja) 分岐先予測制御方式
JPH05181712A (ja) スタック履歴作成方式
JPH03196335A (ja) 論理型プログラム処理方式
JPS62144237A (ja) バックトラック方式
JPS61139838A (ja) 情報処理装置