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

論理型言語処理装置

Info

Publication number
JPS62216043A
JPS62216043A JP61058071A JP5807186A JPS62216043A JP S62216043 A JPS62216043 A JP S62216043A JP 61058071 A JP61058071 A JP 61058071A JP 5807186 A JP5807186 A JP 5807186A JP S62216043 A JPS62216043 A JP S62216043A
Authority
JP
Japan
Prior art keywords
predicate
frame
identifier
selection point
point frame
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
JP61058071A
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 JP61058071A priority Critical patent/JPS62216043A/ja
Publication of JPS62216043A publication Critical patent/JPS62216043A/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つの知識は次の2つの節で表すことができる。
将軍(宝庫)。
将軍(秀忠)。
さらに、“宝庫の息子で将軍となった人物Xは誰か”と
いう問題は下記の質問節で表すことができる。
?−息子(宝庫、X)、将軍(X)。
プロログの処理形は質問節が与えられると以下のように
動作する。質問節の角ゴール“息子(宝庫、X)”、“
将軍(X)  ”について左から右に述語呼び出しを行
う。ゴール“息子(宝庫、X)”の述語呼び出しが行わ
れると同一の述語名を持つ節のうち、先ず上位にある節
“息子(宝庫、信服)、”が選ばれ、節の先頭のゴール
(以下頭ゴールと呼ぶ)と呼び出し側のゴールとのユニ
フィケーションが試みられる。ユニフィケーションは与
えられた2つのゴールを同一のものにする操作で、この
場合は変数Xを信服に置き換えることにより達成される
。2つのゴールが同一のものにできたとき2つのゴール
はユニフィケーションしたという。呼び出し側のゴール
と呼ばれた側の節の頭ゴールとのユニフィケーションが
成功すると、呼ばれた側の節が他のゴールを含んでいれ
ば残りのゴールを左から右に実行する。この場合は呼ば
れた側の節が頭ゴールしか含まないので、呼び出し側の
ゴールと頭ゴールがユニフィケーションした段階で述語
呼び出しを終了する。そして、次に呼び出し側の次のゴ
ール“将軍(X)  ”の述語呼び出しが開始される。
このとき、変数Xには前の述語呼び出しで“信服”が代
入されているので、呼び出し側のゴールは“将軍(信服
)”として扱われる。“将軍(信服)”が実行されると
同様にして、始めに節“将軍(宝庫)、′が選ばれる。
この節の頭ゴールと呼び出し側のゴールとは同一のゴー
ルにできないのでユニフィケーションは失敗する。ユニ
フィケーションに失敗すると次の節“将軍(秀忠)、”
が選ばれるがこれも同様に失敗する。そして全ての節が
失敗すると呼び出し側のゴール“将軍(信服)”が失敗
となり、バックトランクが引き起こされる。バックトラ
ックが生じると変数Xは再び未定義状態に戻された後、
前のゴール“息子(宝庫、X)”がもう一度実行され、
今度は節“息子(宝庫、秀忠)、”が選ばれる。そして
、同様にしてXに“秀忠”が代入され、今度はゴール“
将軍(秀忠)”として実行される。
このゴールに対しては、節“将軍(秀忠)、”があるの
で述語呼び出しは成功する。そして、質問節の全てのゴ
ールが成功してプログラムの実行は終了する。
バックトラックはこのように非決定的な処理を実現する
のに有効である。しかしながら、実用的な問題は常に非
決定的な処理を必要とする訳ではな(、唯一つの解のみ
を求めれば良い問題もある。
例えば、要素が与えられたリストの中に含まれているか
否かをチェックする述語memb e rはProlo
gで次のように書ける。
member (X、  (X I Y) ) 。
member (X、  [Y I Z) )  : 
−n+ember (X、  Z) 。
ここで、ゴールmember (a、  (a、b、c
〕)を実行すると最初のクローズによりこのゴールは成
功するが、第2クローズが代替解として残っているので
バックトラックが生じると、次に残りのリストの中にa
があるかどうかをチェックしようとする。しかしながら
、与えられたリストの中にaが入っていたことはすでに
1度チェックしているので、残りのリストの中にaが含
まれていることをチェックするのはこの場合明らかに冗
長である。
prologではこのような冗長なバックトラツクを除
去するためにカットオペレータ(!で示す)が導入され
ている。カットオペレータは実行されると、その述語の
残りの選択点を除去する働きをする。例えば、memb
 e rの例はカットオペレータを用いて以下のように
記述すれば、冗長なバックトラックをしないように定義
できる。
member (X、  (X IY) )  :  
l。
member (X、  (Y I Z) )  : 
−member (X、  Z) 。
しかしながら、上記に示したようなカットオペレーショ
ンはその有効範囲が手続きの中に限られるため、プログ
ラム変換でクローズの一部を展開したりする操作が行い
にくいという問題点がある。
例えば、カットがなければ次のように、本体部にORゴ
ールにで示される)を含むクローズはORゴールを含ま
ないクローズ群に展開してもプログラムの意味は変わら
ない。
(PL)ORゴールを持つクローズ p: Q、 (r;s、t)。
pニーu、w。
(P2)ORゴールを持たない(Pl)の展開形pニー
q+d。
pニーu、w。
dニーr。
dニーs、t。
しかしながら、以下の(P3)のように展開されるゴー
ル群の中にカットオペレータが含まれている場合は以下
の(P4)のように展開するとプログラムの意味が変わ
ってしまう。
(P3)ORゴール内にカットを持つクローズ1): 
 Q、  (r、!;s、t)。
pニーu、w。
(P4)ORゴールを持たない(P3)の展開形pニー
q、d。
pニーu、w。
dニーr、!。
dニーs、t。
すなわち、(P3)のプログラムではq+  rが成功
するとpの選択点がカットされるが、(P4)ではq、
rが成功してもdの選択点しかカットされず、pの選択
点は残ってしまう。
この問題は選択点をカットしたい範囲が述語名で指定可
能なラベル付カットオペレータを用いることにより解決
される。例えば、(P3)の例では、以下の(P5)の
ように、述語pの選択点までをカットすることをcut
(plo)で明示的に示せば、以下の(P6)のように
ORゴールを持たないクローズに展開してもプログラム
の意味は変わらない。
(P5)ラベル付カットオペレータをORゴール内に持
つクローズ pニーq、 (rl cut (plo);sl t)
pニーu、w。
(P6)ORゴールを持たない(P5)の展開形pニー
q、d。
pニーu、 w。
d ニーr、  c u t (plo) 。
dニーs、t。
上記で述べたようなラベル付カットオペレータを実現す
るためには、述語を呼び出した際に生成される選択点フ
レームに述語識別子を持たせ、述語識別子を鍵として選
択点フレームをカットする選択点フレームカット手段を
用意すれば良い。第2図(1)、  (2)はラベル付
カットオペレータを実現する従来技術を説明するtit
図である。例として、(Pl)のプログラムの実行を考
える。
(Pl) p:  −q、r・ pニーs。
qニーt、u。
q・ t ニーcut  (q/1)。
t。
’i’−p、y。
始めに、述語pが呼び出されると、制御スタック50上
に述語pの選択点フレーム10が生成され、同様にして
、述語q、tの選択点フレーム20および30が生成さ
れる(第2図(1))。ここでcut  (q/1)が
実行されるとtの選択点フレーム30だけでなく、qの
選択点フレーム20もカットされ、制御スタック50上
にqの述語識別子フレーム40が生成される(第2図(
2))。
〔発明が解決しようとする問題点〕
上記方式ではラベル付カットを実現するために述語が呼
び出された際には常に選択点フレームが生成される。例
えば、以下の(P8)のプログラム (P8) p :   q+r。
p : 〜 S。
qニーt、u。
t  ニーcut  (q/1)。
t。
’i’−p、y。
において、cut(q/1)を正常に動作させるために
は、qの呼び出しにおいても選択点フレームが定義され
ていなければならない。しかしながら、上記qのように
1つのクローズからなる述語の場合は選択点フレームを
生成しなくても良いようにできれば冗長なバックトラッ
クを減らすことができ、より高速な処理が可能となる。
同様な問題は引数の定数を鍵として、ユニフィケーショ
ン可能なりローズをあらかじめ選択するクローズインデ
クシングを通用した際にも生じる。
例えば、以下の例において、 p (a)ニーq。
p  (b)ニーr。
p (c)ニーs。
呼び出しゴールがp (b)のように定数を含んでいる
場合には、bを引数に持つクローズのみを実行すれば良
いので、選択点フレームを生成しなければより高速な処
理が可能となる。
〔問題点を解決するための手段〕
本発明は、代替解を求めるためのバックトラック情報と
このバックトラック情報を生成した述語の識別子を保持
する選択点フレームと述語の識別子を格納する述語識別
子フレームをリンクで結んで管理する制御スタックと、
前記選択フレームを生成して前記制御スタックのリンク
の最後に付け加える選択点フレーム生成手段と、述語識
別子を鍵として選択点フレームおよび述語識別子フレー
ムを検索し、選択点フレームが先に検索されたときはこ
の選択点フレームを同一の述語識別子を持つ述語識別子
フレームに置き換え、この述語識別子フレームをリンク
の最後のフレームとし、述語識別子フレームが先に検索
されたときはこの述語識別子フレームをリンクの最後と
する選択点フレームカット手段と、述語呼び出しが失敗
したときに前記制御スタックのリンクの最後のフレーム
からたどって最初の選択点フレームのバックトラック情
報を用いてバックトラックするバックトラック実行手段
を備えた論理型言語処理装置において、代替解を持たな
い述語が呼ばれた際に前記述語識別子フレームを生成し
て前記制御スタックのリンクの最後に付け加える述語識
別子フレーム生成手段を備え、代替解を持たない述語を
呼び出した際に選択点フレームを生成せずに述語識別子
でカットする選択点の範囲が指定できることを特徴とし
ている。
〔作用〕
従来のラベル付カットオペレータの実現法の問題点は、
代替解を持たない述語を呼び出した際にもこの述語が呼
び出されたことを保証するために、選択点フレームを生
成しなければならない点にある。この問題は代替解を持
たない述語か呼び出された際には、選択フレームの代わ
りに述語識別子フレームを生成することにより解決され
る。例えば、以下の(P9)のプログラム (P9) pニーq、r。
pニーs 。
qニーt、u。
t ニーcu t (q/1) 。
t。
?−p、■。
において、述語qが呼ばれた際に、述語識別子フレーム
を生成しておけば、cut(q/1)が実行されたとき
にCutする範囲が見つからな(なるということはない
。また、ダミーの選択点フレームを生成しないため、冗
長なバックトランクをしなくて済み、より効率のよい実
行が可能となる。
〔実施例〕
以下、本発明の実施例を図面を用いて詳述する。
第1図は本発明の一実施例である論理型言語処理装置の
機能ブロック図である。第1図に図示された論理型言語
処理装置は選択点フレーム、述語識別子フレームを保持
する制御スタック100と、代替解を持つ述語を呼び出
した際に選択点フレームを制御スタック100上に生成
する選択点フレーム生成手段110と、述語識別子を用
いて選択点フレームをカットしこの選択点フレームラ述
語識別子に置換える選択点フレームカット手段120と
、制御スタック100上の最後の選択点フレームを用い
てバックトランク処理を行うバックトラック実行手段1
30と、代替解を持たない述語を呼び出した際に制御ス
タック100上に述語識別子フレームを生成する述語識
別子フレーム生成手段140と、図示されていない他の
スタックや入出力装置を用いてpro 1 ogプログ
ラムの実行に必要なユニフィケーション処理、入出力処
理ならびに算術演算等の処理を行う処理ユニット150
と、制御スタック1001選択点フレーム生成手段11
09選択点フレームカット手段120゜バックトラック
実行手段130.述語識別子フレーム生成手段140.
処理ユニフ)150を結ぶ内部バス160と、制御スタ
ック100に格納された選択点フレーム、述語識別子フ
レームのリンクの最後を保持するリンクレジスタ170
より構成される。
第3図(1)、  (2)は本実施例において、以下の
(P 10)のプログラムを実行したときの制御スタッ
ク100およびリンクレジスタ170の変化を示す概念
図である。
CPIO) pニーq、乙 pニーs。
qニーt、u。
t ニーcut  (qlo)、w。
t。
?−p。
始めに、質問節により述語pが呼ばれると述語pは代替
解を持つので選択点プログラム生成手段110により述
語識別子p10 (oは引数の個数を表す)を持つ選択
点フレーム210が生成され、次に、述語qが呼ばれる
と述語qは代替解を持たないので述語識別子フレーム生
成手段140により述語識別子q10を持つ述語識別子
フレーム220が生成され、次に述語tが呼ばれ、同様
にして選択点フレーム230が生成される(第3図(1
))。
このとき、リンクレジスタ170は選択点フレーム23
0を指しており、次にcut(qlo)が呼ばれると選
択点フレームカット手段120によりリンクレジスタ1
70よりリンクをたどって述語識別子q10を持つフレ
ームとして述語識別子フレーム220か探され、このフ
レームを指すポインタがリンクレジスタ170にセット
される(第3図(2))。
そして、この状態でゴールWが失敗するとバックトラッ
ク実行手段130によりリンクレジスタ170からたど
った最後の選択点フレーム210に格納されたバックト
ラック情報を用いてバンクトランクし、次にpの代替解
が求められる。以上の動作より代替解を持たない述語q
を呼び出した際に選択点フレームを生成せずに述語qま
での選択点をカットするラベル付カットオペレータが実
現される。
〔発明の効果〕
本発明によれば、ラベル付カットオペレータを実現する
にあたって、代替解を持たない述語を呼び出した際に、
選択点フレームの代わりに述語識別フレームを生成する
ことにより、冗長なバックトラックの発生を抑え、より
高速な処理を実現し、メモリ消費が減らせるという効果
がある。
【図面の簡単な説明】
第1図は本発明の一実施例を示す機能ブロック図、 第2図は従来技術を説明するための例を示す概念図、 第3図は第1図の実施例の動作を説明するための例を示
す概念図である。 100  ・・・・・制御スタック 110  ・・・・・選択点フレーム生成手段120 
 ・・・・・選択点フレームカット手段130 ・・・
・・バックトラック実行手段140  ・・・・・述語
識別子フレーム生成手段150  ・・・・・処理ユニ
ット 160  ・・・・・内部バス

Claims (1)

    【特許請求の範囲】
  1. (1)代替解を求めるためのバックトラック情報とこの
    バックトラック情報を生成した述語の識別子を保持する
    選択点フレームと述語の識別子を格納する述語識別子フ
    レームをリンクで結んで管理する制御スタックと、前記
    選択フレームを生成して前記制御スタックのリンクの最
    後に付け加える選択点フレーム生成手段と、述語識別子
    を鍵として選択点フレームおよび述語識別子フレームを
    検索し、選択点フレームが先に検索されたときはこの選
    択点フレームを同一の述語識別子を持つ述語識別子フレ
    ームに置き換え、この述語識別子フレームをリンクの最
    後のフレームとし、述語識別子フレームが先に検索され
    たときはこの述語識別子フレームをリンクの最後とする
    選択点フレームカット手段と、述語呼び出しが失敗した
    ときに前記制御スタックのリンクの最後のフレームから
    たどって最初の選択点フレームのバックトラック情報を
    用いてバックトラックするバックトラック実行手段を備
    えた論理型言語処理装置において、代替解を持たない述
    語が呼ばれた際に前記述語識別子フレームを生成して前
    記制御スタックのリンクの最後に付け加える述語識別子
    フレーム生成手段を備え、代替解を持たない述語を呼び
    出した際に選択点フレームを生成せずに述語識別子でカ
    ットする選択点の範囲が指定できることを特徴とする論
    理型言語処理装置。
JP61058071A 1986-03-18 1986-03-18 論理型言語処理装置 Pending JPS62216043A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61058071A JPS62216043A (ja) 1986-03-18 1986-03-18 論理型言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61058071A JPS62216043A (ja) 1986-03-18 1986-03-18 論理型言語処理装置

Publications (1)

Publication Number Publication Date
JPS62216043A true JPS62216043A (ja) 1987-09-22

Family

ID=13073675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61058071A Pending JPS62216043A (ja) 1986-03-18 1986-03-18 論理型言語処理装置

Country Status (1)

Country Link
JP (1) JPS62216043A (ja)

Similar Documents

Publication Publication Date Title
Newell et al. Report on a general problem solving program
Wise Aspects of applicative programming for parallel processing
US7024417B1 (en) Data mining framework using a signature associated with an algorithm
Simon Experiments with a heuristic compiler
JPH0432416B2 (ja)
Busi et al. Coordination models: A guided tour
van der Werf et al. Data and process resonance: identifier soundness for models of information systems
Kim et al. Towards a model of cognitive process in logical design: comparing object-oriented and traditional functional decomposition software methodologies
de Boer et al. From concurrent logic programming to concurrent constraint programming
JPS62216043A (ja) 論理型言語処理装置
Balbontín Noval et al. A MzScheme implementation of transition P systems
Miller Reciprocal influences between proof theory and logic programming
Perlin Topologically traversing the Rete network
Moon Implementation of subset logic languages
Jayaraman et al. Implementation of Subset Logic Programs
Pedersen et al. Verifying channel communication correctness for a multi-core cooperatively scheduled runtime using CSP
Loia et al. High‐level management of computation history for the design and implementation of a prolog system
JPS62214432A (ja) 論理型言語処理装置
Reddy Global state considered unnecessary: Semantics of interference-free imperative programming
Mikloško et al. Formal models of parallel computations
Britton et al. Procedure referencing environments in SL5
Zuenko et al. Joint Application of Constraint Propagation and Structural Decomposition Methods for A Priori Analysis of SPARQL Queries
Lochbaum Plan recognition in collaborative discourse
Viroli et al. Process-algebraic approaches for multi-agent systems: an overview
Heinlein Advanced thread synchronization in Java using interaction expressions