JPS6227822A - バツクトラツク制御方式 - Google Patents

バツクトラツク制御方式

Info

Publication number
JPS6227822A
JPS6227822A JP60168219A JP16821985A JPS6227822A JP S6227822 A JPS6227822 A JP S6227822A JP 60168219 A JP60168219 A JP 60168219A JP 16821985 A JP16821985 A JP 16821985A JP S6227822 A JPS6227822 A JP S6227822A
Authority
JP
Japan
Prior art keywords
identifier
backtrack
predicate
goal
selection point
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
JP60168219A
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 JP60168219A priority Critical patent/JPS6227822A/ja
Publication of JPS6227822A publication Critical patent/JPS6227822A/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)等の論理言語を用
いて知識処理、推論処理を行なうのに適したバックトラ
ック制御方式に関する。
(従来の技術) 論理型言語プロログは非決定的なプログラムが容易に記
述できることで知られている。例えば、よく知られたプ
ロログ記法(r Prologプログラミング」中村克
彦訳(マイクロソフトウェア))によれば、′信康は家
産の息子である′と゛芳志は家産の息子である′という
2つの事実は次の2つの節で表わすことができる。
息子(家産、信康)。
息子(家産、芳志)。
また、”家産は将軍である′、”芳志は将軍である9と
いう2つの事実は次の2つの節で表わすことができる。
将軍(家産)。
将軍(芳志)。
さらに、゛家産の息子で将軍となった人物Xは誰が′と
いう質問は下記の質問節で表わすこきとができる。
?−息子(家産、X)、将軍(X)。
プロログの処理系は質問節が与えられると以下のように
動作する。質問節の各ゴール′思子(家産、X)′、′
将軍(X)′について左がら右に述語呼び出しを行なう
。ゴール′息子(家産、X)′の述語呼び出しが行われ
ると同一の述語名を持つ節のうち、先ず上位にある節′
息子(家産、信康)。”が選ばれ、節の先頭のゴール(
以下類ゴールと呼ぶ)と呼び出し側のゴールとの単一化
が試みられる。東−化は与えられた2つのゴールを同一
のものにする操作で、この場合は変数Xを信康に置き換
えることにより達成される。2つのゴールが同一のもの
にできたとき2つのゴールは単一化したという。呼び出
し側のゴールと呼ばれた側の節の頭ゴールとの単一化が
成功すると、呼ばれた側の節が他のゴールを含んでぃれ
ば残りのゴールを左から右に実行する。この場合は呼ば
れた側の節が頭ゴールしか含まないので、呼び出し側の
ゴールと頭ゴールが単一化した段階で述語呼び出しを終
了する。そして、次に呼び出し側の次のゴール′将軍(
X)′の述語呼び出しが開始される。このとき、変数X
には前の述語呼び出しで′信康′が代入゛されているの
で、呼び出し側のゴールは′将軍(信康)゛として扱わ
れる。“将軍(信康)゛が実行されると同様にして、始
めに節”将軍(家産)。′が選ばれる。この節の頭のゴ
ールと呼び出し側のゴールとは同一のゴールにできない
ので単一化は失敗する。単一化に失敗すると次の節゛将
軍(芳志)。′が選ばれるがこれも同様に失敗する。そ
して全ての節が失敗すると呼び出し側のゴール′将軍(
信康)′が失敗となり、バックトラックが引き起こされ
る。
バックトラックが生じると変数Xは再び未定義状態に戻
されたのち、前のゴール′息子(家産、X)′がもう一
度実行され、今度は節′息子(家産、芳志)。′が選ば
れる。そして、同様にしてXに”芳志”が代入され、今
度はゴール′将軍(芳志)′として実行される。
このゴールに対しては、節′将軍(芳志)。′があるの
で述語呼び出しは成功する。そして、質問節の全てのゴ
ールが成功してプログラムの実行は終了する。
(発明が解決しようとする問題点) 上記に示したような、非決定的な処理は知識処理のよう
に確定したアルゴリズムがない問題を記述するときに便
利である。しかしながら、従来から知られているバック
トラックの実現手法は、最も最近に実行された述語から
順次的に代替解を求めるものであり、特定の述語呼び出
しに直接バックトラックするような処理はできない。例
えば、以下のようなプログラムを考える。
P  ニー(1(X)、h(X)。
p  ニーdisplay(’programabor
ted’)。
q(Y): −pp(Y)。
q(b)。
h(a) ニー error。
h(Z) : −hh(Z)。
: −p、 r(b)。
ここで、述語pが起動され、ゴールq(X)の呼び出し
が成功し、次にゴールh(x)を呼び出したとき、Xが
aのときはプログラムの実行を中断して述語pの代替節
のアボートメツセージを出力したいとしても、述語qが
代替節をもっているため、従来型のバックトラック制御
方式では述語qの代替節を実行した後でなければ述語p
の代替節を実行することはできない。
本発明の目的は上記従来方式の問題点を解決し、指定さ
れたゴールの実行環境まで直接バックトラックするバッ
クトラック制御方式を提供することにある。
(問題点を解決するための手段) 本発明は、バックトラックに必要なバックトラック情報
を格納した選択点フレームをポインタで結んで管理する
実行制御スタックを有し、述語呼び出しが失敗したとき
に前記実行制御スタックに格納された選択点フレームの
バックトラック情報を用いてバックトラックして述語呼
び出しの別の解を求める実行制御機溝を有する論理型言
語処埋装置において、バックトラック情報とともに該バ
ックトラック情報を識別するための識別子を格納した識
別子付き選択点フレームを前記実行制御スタックにセー
ブし、識別子が与えられたときに識別子と単一化可能な
識別子を持つ識別子付き選択点フレームを前記実行制御
スタックにおいて検出し該識別子付き選択点フレームに
格納されたバックトラック情報を用いてバックトラック
処理を行なうバックトラック制御方式により達成される
(作用) 従来のバックトラック制御方式の問題点は、バックトラ
ックしたときの制御の戻り場所を指定することができな
い点に起因している。この問題は、以下に述べる識別子
を持つ選択点を生成するcatch命令および特定の識
別子を持つ選択点までバックトラックして代替ゴールを
実行するthrow命令を設けることにより解決される
(1)catch(ラベル、ゴール1.ゴール2)ゴー
ル2を代替ゴールとするバックトラック情報とラベルと
して与えられた項を識別子として格納する識別子付き選
択点フレーム実行制御スタックにセーブした後、ゴール
1を実行する。
(2)throw(ラベル) ラベルとして与えられた項と単一化可能な識別子を持つ
識別子付き選択点フレームを実行制御スタックより検出
し、該識別子付き選択点フレームに格納されたバックト
ラック情報を用いてバックトラックした後、代替ゴール
を実行する。
上記プログラムはこれらの命令を用いて以下のように変
更することにより述語りの引数がaのときに述語qの代
替節を無視してアボートメツセージを出力することが可
能となる。
p  ニーcatch(abort、q(X)、pi)
、h(X)。
pi  ニーdisplay(’programabo
rted’)。
q(Y) ニー (1(1(Y)。
q(b)。
h(a) ;−throw(abort)。
h(Z) ニーhh(Z)。
すなわち、上記プログラムにおいて述語りの引数がaの
ときはthrow命令を実行することにより、述語qの
代替節を実行せずに直接catchゴールまでバックト
ラックし、q(X)の代替ゴールであるplを起動する
ことができる。
(実施rJA) 以下、本発明の実施例を図面を用いて詳述する。
第1図は本発明の一実施例である論理型言語処理装置の
ブロック図である。第1図の論理型言語処理装置はプロ
グラム実行に必要な情報を格納するレジスタファイル5
0と、プログラムのコードおよびデータを格納するメモ
リ100と、レジスタファイル50に格納されている情
報および第1図に図示されていないその他の制御情報を
用いてメモリ100の内容およびレジスタファイル50
の内容を更新する処理ユニット60とを含んで構成され
る。本実施例ではメモリ100は述語呼び出しの実行環
境を格納する環境フレームおよびバックトラック情報を
格納する選択点フレームをポインタで結んで管理する実
行制御スタック10と、単一化の過程で生成されたデー
タ構造を格納するデータスタック20と、単一化の過程
で結合された変数の位置を格納するトレールスタック3
0と、実行するプログラムを格納するコード領域40よ
り構成される。また、レジスタファイル50は、現在実
行中の述語の引数を格納する引数レジスタ(以降引数の
順にA[O]、 A[1]、、、、。
A[31]と記す)と、現在実行中の命令を指すプログ
ラム・カウンタ52(以降PCと記す)と、現在実行中
のゴールが成功したときに実行すべき次の命令を指すレ
ジスタ53(以降CPと記す)と、現在実行中の述語の
実行環境を格納する環境フレームを指すレジスタ54(
以降LEと記す)と、現在実行中のゴールが失敗した時
のバックトラック情報を格納する選択点フレームまたは
識別子付き選択点フレームを指すレジスタ55(以降L
Cと記す)と、実行制御スタック10の未使用領域の先
頭を指すレジスタ56(以降CTOPと記す)と、トレ
ールスタック30の未使用領域の先頭を指すレジスタ5
7(以降TTOPと記す)と、データスタック20の未
使用領域の先頭を指すレジスタ58(以降DTOPと記
す)と、現在実行中のゴールが失敗したときのデータス
タック20の未使用領域の先頭を指すレジスタ59(以
降BDTOPと記す)から構成される。
具体的なプログラムの動作を説明する前に、環境フレー
ム、選択フレームおよび識別子付き選択フレームについ
て述べておく。
第2図は述語が呼び出された際の実行環境を格納する環
境フレームの構成を示す概念図である。本実施例では述
語が呼び出されると、その時点でのLP01およびCP
53の値が環境フレームにセーブされ、さらに、実行す
る節中に含まれる変数の値領域が環境フレーム中に確保
される。環境フレームが実行制御スタック10中に生成
されるとLP01は新たに生成された環境フレームのC
Pを格納したアドレスを指すように更新され、CTOP
56は新たに生成した環境フレームの直下の未使用領域
の先頭を指すように更新される。
第3図は呼び出された述語が2つ以上の節から構成され
ているときに、代替解を求めるためのバックトラック情
報を格納する選択点フレームの構成を示す概念図である
。本実施例では代替解を持つ述語を呼び出すと、代替節
の飛び先アドレスと、その時点でのCP53. LP0
1. LC55,TTOP57. DTOP58゜BG
TOP59と呼び出された述語の引数個数ならびに対応
する引数がバックトラック情報として選択点フレーム中
に格納される。選択点フレームが実行制御スタック10
中に生成されると、LC55が新たに生成した選択点フ
レームの引数個数を格納したアドレスを指すように更新
され、CTOP56が新たに生成した選択点フレームの
直下の未使用領域を指すように更新される。
第4図はcatch命令が実行されたときに識別子付き
のバックトラック情報を格納する識別子付き選択点フレ
ームの構成を示す概念図である。catch命令が実行
されると本実施例ではその時点でのPC52゜CP53
. LP01. LC55,TTOP57. DTOP
58. BDTOP59 ノ各内容と、識別子付き選択
点フレームを表わすフレーム識別子(−1)とcatc
h命令に引数として与えらた識別子が識別子付きバック
トラック情報とじて識別子付き選択点フレームに格納さ
れる。識別子付き選択点フレームが実行制御スタック中
に生成されるとLC55が新たに生成した識別子付き選
択点フレームのフレーム識別子を指すように更新され、
また、CTOPが識別子付き選択点フレームの直下の未
使用領域を指すように更新される。
次に、下記のプログラムを実行した際の本実施例の動作
について詳述する。
p  ニーcatch(abort、q(X)、pi)
、h(X)。
pi  ニーdisplay(’programabo
rted’)。
q(Y) ニー (1(1(Y)。
q(b)。
h(a) ニー throw(abort)。
h(Z) ニーhh(Z)。
: −p、 r(b)。
第5図(1)〜(6)は上記プログラムを実行した際の
実行制御スタック10の内容の変化を示す概念図である
。質問節において、ゴールpが起動されると実行制御ス
タック10は以下のように変化する。はじめに、述語p
が呼ばれると述語pは代替節を持たないので、pの環境
フレーム210のみが生成される。そしてLP01は環
境フレーム210を、CTOP56は環境フレーム21
0の直下を指す。また、LC55は図示されていない上
位の選択点フレームを指している。次にcatch命令
が実行されると代替ゴールp1と識別子abortを持
つ識別子付き選択点フレーム220が生成され、LC5
5は識別子付き選択フレーム220をCTOP56はそ
の直下を指すように変更される。そして、ゴールq(X
)が起動されると、述語qは代替節を持つのでq(b)
を代替ゴールとする選択点フレーム230が生成され同
様にしてLCおよびCTOPが更新される。このとき、
qの選択点フレーム230は識別子付き選択フレーム2
20を指している。そして、ゴールqq(Y)が起動さ
れると以下同様にして環境フレームおよび選択点フレー
ムが生成される。ゴールqq(X)の呼び出しが成功し
、Yにaが単一化されたとすると、ゴールq(X)とゴ
ールq(Y)の単一化でXとYが単一化されているので
、Xにもaが単一化される。そして、Xとしてaが単一
化された状態でゴールh(x)が呼び出されると述語り
の第1節が選ばれhの選択点フレーム240と、hの環
境フレーム250がその下に生成される。
次に、throw命令が起動されると処理ユニット60
はLC55の指す選択点フレーム240から親の選択点
フレームを指すポインタを辿って識別子付き選択点フレ
ームを検出する。本実施例では選択点フレームと識別子
付き選択点フレームの違いは引数個数が−1′か否かで
判断される。そして、識別子付き選択点フレームが見つ
かると次にA[0]51の内容と識別子付き選択点フレ
ームに格納されている識別子が単一化するか否かをチェ
ックし、単一化が成功しない場合にはその単一化処理を
元に戻して次の識別子付き選択点フレームを探しにゆく
。単一化が成功した場合にはPC52,CP53. L
E54゜TTOP57. GTOP58. BGTOP
59を該識別子付き選択点フレームにセーブされた値で
更新し、さらに、CTOP56を該識別子付き選択点フ
レームの直下のアドレスを指すように、LC55を該識
別子付き選択点フレームのフレーム識別子を指すように
更新する。以上の動作により、本プログラム例ではca
tch命令で指定された代替ゴールp1を次に起動する
ことが可能となる。
(発明の効果) 本発明には識別子付きの選択点を用意し、与えられた識
別子と単一化可能な識別子を持つ選択点まで直接バック
トラックさせることにより、従来手法では困難であった
高度なプロログプログラムの実行制御が実現できるとい
う効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例を示すブロック図、第2図は
第1図で使用する環境フレームの概念図、第3図は第1
図で使用する選択点フレームの概念図、第4図は第1図
で使用する識別子付き選択点フレームの概念図、第5図
(1)〜(6)は第1図で使用する実行制御スタックの
一例を示す概念図である。 10・・・・・・実行制御スタック、20・・・・・・
データスタック20、30・・・・・・トレールスタッ
ク30.40・・・・・・コート領域40.50・・・
・・・レジスタファイル、51・・・・・・述語のF−
引数、52・・・・・・プログラム・カウンタ、53・
・・・・・コンティニュエイジョン・カウンタ、54・
・・・・・現在実行中の述語の環境フレームを指すポイ
ンタ、55・・・・・・現在実行中の述語の選択点フレ
ームまたは識別子付き選択点フレームを指すポインタ、
56・・・・・・実行制御スタック10の未使用領域の
先頭を指すポインタ、57・・・・・・トレールスタッ
ク30の未使用領域の先頭を指すポインタ、58・・・
・・・データスタック20の未使用領域の先頭を指すポ
インタ58.59・・・・・・現在実行中のゴールが失
敗したときのデータスタック20の未使用領域の先頭を
指すポインタ、60・・・・・・処理ユニット、100
・曲・メモリ、210・・・・・・述語pの環境フレー
ム、220・・・・・・識別子付き選択点フレーム、2
30・・・・・・述語qの選択点フレーム、240・・
・・・・述語りの選択点フレーム、250・・・・・・
述語りの環境フレーム。 代理人弁理士 内 原  ・晋  ゛。 オ 1 図 72 図 7t’3  図 第4図 ′;Ir s図 オ 5 口 オ 50

Claims (1)

    【特許請求の範囲】
  1. バックトラックに必要なバックトラック情報を格納した
    選択点フレームをポインタで結んで管理する実行制御ス
    タックを有し、述語呼び出しが失敗したときに前記実行
    制御スタックに格納された選択点フレームのバックトラ
    ック情報を用いてバックトラックして述語呼び出しの別
    の解を求める実行制御機構を有する論理型言語処理装置
    におけるバックトラック制御方式において、バックトラ
    ック情報とともに該バックトラック情報を識別するため
    の識別子を格納した識別子付き選択点フレームを前記実
    行制御スタックにセーブし、識別子が与えられたときに
    該識別子と単一化可能な識別子を持つ識別子付き選択点
    フレームを前記実行制御スタックにおいて検出し該識別
    子付き選択点フレームに格納されたバックトラック情報
    を用いてバックトラック処理を行なうことを特徴とした
    バックトラック制御方式。
JP60168219A 1985-07-29 1985-07-29 バツクトラツク制御方式 Pending JPS6227822A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP60168219A JPS6227822A (ja) 1985-07-29 1985-07-29 バツクトラツク制御方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60168219A JPS6227822A (ja) 1985-07-29 1985-07-29 バツクトラツク制御方式

Publications (1)

Publication Number Publication Date
JPS6227822A true JPS6227822A (ja) 1987-02-05

Family

ID=15863995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60168219A Pending JPS6227822A (ja) 1985-07-29 1985-07-29 バツクトラツク制御方式

Country Status (1)

Country Link
JP (1) JPS6227822A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01129333A (ja) * 1987-11-16 1989-05-22 Hitachi Vlsi Eng Corp 半導体記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01129333A (ja) * 1987-11-16 1989-05-22 Hitachi Vlsi Eng Corp 半導体記憶装置

Similar Documents

Publication Publication Date Title
US5535389A (en) Business process objects with associated attributes such as version identifier
US6094528A (en) Method and apparatus for system building with a transactional interpreter
US20230004368A1 (en) Multi-chip compatible compiling method and device
US5167012A (en) Method for performing consistency checks
US7877629B2 (en) Facilitating handling of exceptions in a program implementing a M-on-N threading model
Hanson Event associations in SNOBOL4 for program debugging
JPS6227822A (ja) バツクトラツク制御方式
JPH03127122A (ja) データ処理装置における演算処理方式
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JPH0581069A (ja) プログラムのデバツグ方法
Tamir et al. A visual debugger for pure Prolog
JPS6249546A (ja) 論理型言語処理装置
JPH0772866B2 (ja) エキスパート・システムの状態を巻戻す方法及びシステム
JPH09288595A (ja) 演算処理装置
US20040098240A1 (en) State machine modelling
JP3139393B2 (ja) デバッグ装置
JPH03132824A (ja) 論理型プログラム処理方式
JPH06259209A (ja) プロセス実行状況表示装置
JPH0695868A (ja) ソフトウェア管理方式
JPS623341A (ja) 条件付制御方法
JPS61139840A (ja) 情報処理装置
JPH0667887A (ja) 情報処理装置
JPH02187831A (ja) 仮想計算機システムにおける例外処理方式
JP2004021658A (ja) プログラム自動実行システム
JPH1011320A (ja) 計算機等の処理装置におけるromプログラムモニタ装置