JPH046984B2 - - Google Patents

Info

Publication number
JPH046984B2
JPH046984B2 JP10867983A JP10867983A JPH046984B2 JP H046984 B2 JPH046984 B2 JP H046984B2 JP 10867983 A JP10867983 A JP 10867983A JP 10867983 A JP10867983 A JP 10867983A JP H046984 B2 JPH046984 B2 JP H046984B2
Authority
JP
Japan
Prior art keywords
clause
predicate
match
selection circuit
buffer
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
Application number
JP10867983A
Other languages
English (en)
Other versions
JPS60540A (ja
Inventor
Yoshinari Nakasaki
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
Nippon Electric Co Ltd
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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP10867983A priority Critical patent/JPS60540A/ja
Publication of JPS60540A publication Critical patent/JPS60540A/ja
Publication of JPH046984B2 publication Critical patent/JPH046984B2/ja
Granted legal-status Critical Current

Links

Description

【発明の詳細な説明】 〔発明の属する技術分野〕 本発明は述語論理型言語処理装置に関する。
〔技術環境〕 述語論理型言語処理装置とは述語名とその引数
よりなる述語の連なりから成る節の集合として書
き下す述語論理型言語を処理する装置であるが、
以下プログラミング言語であるプロログ言語を例
にとり説明する。
プロログにおいては表現すべき事象を述語名と
その引数の結合から成る「述語」によつて表現
し、更に述語間の関係を記述する。例えば「太郎
は果物を好む」という事象は下記のように記述で
きる。
好む(太郎、*物)←果物(*物) 本例で「好む」と「果物」を述語名、「太郎」
「*物」を引数と称し、*印はその引数が変数で
あることを表わす。即ち、上例は「太郎」は「果
物」という述語名で表記された述語の引数として
書かれている事物を「好む」ことを表現してい
る。
従つて 「果物(いちご)」という文が他に書かれてい
れば、三段論法の推論によつて、「太郎はいちご
を好む」という結論が得られる。
前記のプロログは述語論理型言語としてその利
用領域が拡大している。しかし、更に利用領域を
拡大するためには、プログラムの処理効率を高め
る必要がある。
〔従来技術〕
従来、このプロログの処理は汎用計算機で実現
されている。しかしながら、汎用計算機のハード
ウエア構成による制約を受け高速にプロログプロ
グラムを処理することができなかつた。
プロログプログラムの実行は述語間の一致を比
較する処理が基本になつている。例えば、前記の 「……←果物(*物。」と「果物(いちご)。」 とを比較して両述語間の一致を調べる処理が基
本である。この処理を高速に実現するためには双
方の述語を同時に読み出して述語名およびそれに
続く引数の一致を順次調べる必要がある。
しかしながら、従来の計算機では記憶装置から
の読出しは一時には一語あるいは一つのまとまつ
た領域からのみ可能であり、別個の領域から同時
に読み出すことはできなかつた。この状況は従来
の計算機で高速バツフア機能を実現しているキヤ
ツシユメモリでも同様で、処理装置側からのキヤ
ツシユメモリへの参照は一語あるいは一つの領域
からのみ可能である。このハードウエア構成が従
来の計算機でプロログプログラムを高速に処理す
る際の制約となつている。
〔発明の目的〕
本発明はプロログに代表される述語論理型言語
のための処理装置として、同時に読出し可能な複
数のバツフアメモリを備えることにより、前記述
語と述語を高速に比較できるようにした装置を提
供するものである。
〔発明の構成〕
本発明によると、述語名とその引数より成る述
語の連らなりから成る節の集合として書き下す述
語論理型言語を処理する装置において、前記装置
内での前記節の内部表現を格納する記憶装置と、
前記記憶装置から読み出された節の内部表現を一
時的に格納する複数のバツフアメモリと、前記複
数のバツフアメモリの各出力のうち1つを選択し
て出力とする第1の選択回路と、前記複数のバツ
フアメモリの各出力のうち1つを選択して出力と
する第2の選択回路と、前記述語間の関係を次々
にたどる道筋を保持するためのスタツク機構およ
び内部レジスタおよびバツフアメモリの管理機能
および前記2つの選択回路での選択指定機能およ
び前記述語の一致を調べるための比較機能を含む
制御装置とを備え、前記制御装置の制御に下に、
前記複数のバツフアメモリの各出力のうち1つを
前記第1の選択回路で選択し前記複数のバツフア
メモリの各出力のうちの他の1つを前記第2の選
択回路で選択して前記2つの選択回路で選択され
たデータを前記制御装置に送り前記2つの選択回
路で選択されたバツフアメモリからの読出しを同
時に行うことにより互いの述語間の一致を検出で
きるようにしたことを特徴とする述語論理型言語
処理装置が得られる。
〔実施例の説明〕
以下本発明の一実施例を図面を用いて詳細に説
明する。
本実施例では、プロログの述語を次の形式で表
現する。
述語名(引数1、引数2、……) 引数は定数または変数であり、変数引数の先頭
には*印を付けて区別する。プロログの一文を節
と呼び、一般形式は以下のとおりである。
述語1←述語2、述語3、……、述語n ←印は論理記号であり、その左側に存在し得る
述語は高々一箇である。これをヘツド部と呼び、
←印の右側をボデイ部と呼ぶが、ボデイ側の述語
を区切る“,”印は述語間の論理積を表わす。上
記の一般形式は述語2、述語3、……、述語nの
論理積が成立するとき、述語1が成立することを
表現しており、この形式を規則節と呼ぶ。
一般形式の特殊形として、ヘツド部のみから成
る節を宣言節、ボデイ部のみから成る節を問合わ
せ節と呼ぶ。
プロログのプログラム実行は以下のステツプで
行われる。
(1) 節のボデイ部に現われる述語と同一の述語を
ヘツド部に持つ節を見出す。ここで双方の述語
の引数同士をその並び順に比較し、一致を調べ
る操作を行う。ここですべての引数が一致する
とステツプ2に移る。すべての引数が一致して
いなければステツプ1の処理を繰り返す。
引数同士の比較において、一方が変数、他方
が定数であれば変数に定数の値がバインドされ
る。また双方共に変数であれば同一値を採るべ
く、一方が他方へのポインタに書き換えられ
る。この二通りの処理も一致条件を満たすもの
である。
(2) ステツプ1で比較の結果述語同士の一致が確
認された節のボデイ部の処理へと制御が移り、
ステツプ1へ戻る。もしその節が宣言節であれ
ば、ステツプ1の最初に参照された節のボデイ
部の引き続く述語の処理へ移る。もし引続く述
語が無ければ全処理を終了する。
第1図はプロログのプログラム例を示す。図中
“P1”,“P2”は述語名、“A”,“B,“C”,“D
”,
“E”は定数引数“*x”,“*y”,“*z”は変
数引数である。節1は規則説であり、節2、節3
は宣言節、節4は問合わせ節である。
以下、このプログラムの処理の流れを説明す
る。プログラムの実行は問合わせ節から始まる。
第1図の例では節4の最初の述語“P1(*x,*
y)”の処理から始まり、ステツプ1によつて節
1が見出され、すべての引数が一致することから
ステツプ2へ進む。ここで変数“*x”には節1
の定数値“A”がバインドされ、変数“*y”に
は変数“*z”がバインドされて“*y”と“*
z”の値が等しいことが示される。
ステツプ2では節1のボデイ部“P2(B,C,
*z)”の処理へ進み、ステツプ1へ戻つて述語
名“P2”をヘツド部として持つ節2との一致を
調べ不一致であることから、次に述語名“P2”
をヘツド部として持つ節3との一致を調べる。節
1のボデイ部と節3のヘツド部とは一致して、ス
テツプ2の処理へと進む。ここで変数“*z”に
は節3の定数値“A”がバインドされる。前記処
理の結果、変数“*y”と変数“*z”の値が等
しい関係にあることから変数“*y”の値も定数
値“A”になる。
前記ステツプ2において節3が宣言節であるこ
とから、節1の処理へ制御が戻る。節1のボデイ
部には述語“P2(B,C,*z)”に続く述語は
ないので、節1の処理は終了し、節1の処理に制
御を渡した節4の処理へ制御が戻る。ここまでの
処理結果として、節4の変数“*x”には定数値
“A”がバインドされ、変数“*y”にも同じく
定数値“A”がバインドされる。
次に、節4の2番目の述語“P1(*x,*x)”
が処理対象となり、ステツプ1によつて節1が見
出され、引数を比較した結果述語の一致が認めら
れる。この引数の一致検査において、変数“*
x”の値は前記処理により得られた定数値“A”
である。また、節1の変数“*z”値も変数“*
x”と同一の値になることから定数値“A”とな
る。変数“*z”は節4の1番目の述語“P1(*
x,*y)”の処理では定数値“A”にバインド
されたが、節4の2番目の述語“P1(*x,*
x)”の処理では、節1は新たな処理対象である。
このときには変数“*z”は特定の値がバインド
されていない変数であり、前記ステツプ1の処理
で初めて変数“*x”の値“A”にバインドされ
る。
以下、ステツプ2で節1のボデイ部を処理し、
ステツプ1の処理を進める。節1のボデイ部と節
2は不一致となるが、節3とは一致する。次にス
テツプ2により、節4の2番目の述語の処理とし
て一致したことを節4に返し、すべての処理を終
了する。
本実施例の装置においては、プロログの節の内
部表現として、第2図の例に示す形式を用いる。
第2図は第1図に示したプロログプログラムの節
1に対応する内部表現を示す例である。本実施例
の装置では節毎に第2図に示すようなひとまとま
りの領域で記述される内部表現を持つ。この節毎
の内部表現を「コード」と呼ぶ。第2図の各行を
語と呼び1語はタグフイールドと値フイールドか
ら構成される。タグフイールドにはその語の属性
情報が保持され、値フイールドにはタグで示され
る属性に対応する値が保持されている。
コードの先頭の語「ヘツダ」はコード全体に係
る情報を保持する。すなわち規則節、宣言節、問
合わせ節のいずれに対応するコードであるかを示
す情報、節の中にあるユニークな変数の数に係る
情報などを保持する。
コードの第2語である「ポインタ」はそのコー
ドと同一の述語名をヘッド部として持つ節へのリ
ンク情報を保持する。
第3語は、節1の述語名“P1”に対応して、
述語名を値として持つことを示すタグフィールド
と、その述語名は具体的に“P1”であることを
示す値フィールドを持つ。第4語では述語“P1
(A,*z)”の第1引数“A”の属性がアトムで
あることをタグフイールドで示し、その値が
“A”であることを値フイールドで示す。第5語
では述語“P1(A,*z)”の第2引数である変
数“*z”の属性が変数であることをタグフイー
ルドで示し、その変数が節1の中に現われる最初
の変数であることを示す番号0を値フイールドの
値として持つ。
以下、節1のボデイ部の述語名“P2”、引数
“B,“C”,“*z”にそれぞれ第2図の第6語〜
第9語が対応する。ここで、第9語の変数“*
z”と第5語の変数“*z”とが同一の変数であ
ることはこれらの語の値フイールドが同一変数番
号0であることで示される。
第3図は以上説明した内部表現によつて第1図
のプログラム例を表現した図である、図中値フイ
ールド中のnullはメモリリンクの終端であること
を示す。節1,2,3,4に対応して4つのコー
ドが表現されている。
ボデイ部の述語の述語名と同一の述語名をヘツ
ドとして持つ述語との一致を調べるときに比較対
象となる節を指定するために、ボデイ部の述語名
にはヘツド部に同一述語名を持つ節に対応する内
部表現のアドレスが格納されている。これらの関
係は図中の破線で示す。
同一の述語名をヘツド部に持つ節はコードの第
2語であるポインタによつてリンクされる。例え
ば、節2と節3とは同一の述語名をヘツド部に有
する節であるので、節2から節3にリンクされ
る。
第4図は本発明の装置の一実施例を示すブロツ
ク図である。図中100は第3図の説明で述べた
内部表現をそのままの形で格納する記憶装置10
1は記憶装置100に格納されているコードを読
出すためのアドレスレジスタ、102,104,
106,108は記憶装置100から読出された
コードを一時的に格納するバツフアメモリA,バ
ツフアメモリB、バツフアメモリC、バツフアメ
モリD、103,105,107,109は夫々
バツフアメモリ102,104,106,108
の語を示すためのバツフアポインタA、バツフア
ポインタB、バツフアポインタC、バツフアポイ
ンタD,110は前記の4箇のバツフアメモリ1
02,104,106,108の出力の中の1つ
の出力を選択する第1の選択回路A,111は前
記の4箇のバツフアメモリ102,104,10
6,108の出力の中の1つの出力を選択する第
2の選択回路B,112は選択回路A110と選
択回路B111によつて選択された語の一致を比
較して一致を検出するための比較器である。比較
器112は入力される2語のビツトパターンが一
致していることを検出するだけでなく、変数を示
す語と定数を示す語との比較において一致を検出
する。113はスタツク機構および内部レジスタ
および各バツフアメモリ102,104,10
6,108および記憶装置100の管理を含み比
較器112からの一致検出信号に基づいて他の構
成要素の動きを制御する制御部である。制御部1
13は従来型のプロセツサと同様の構成で実現で
きるので、その内部機構については特に述べな
い。
第4図で、アドレスレジスタ101で指定する
アドレスがアドレス線201を介して記憶装置1
00に送られると、出力がバス202を介して各
バツフアメモリ102,104,106,108
に送られる。バス202のデータは前記4箇のバ
ツフアメモリ102,104,106,108の
いずれかに格納される。この格納先の選定は制御
部113によつて行われる。バツフアメモリA1
02,B104,C106,D108からの出力
はそれぞれデータ線203,204,205,2
06を介して選択回路A110および選択回路B
111に送られる。選択回路A110および選択
回路B111では前記のデータ線203,20
4,205,206の信号中の1つを出力として
選択し、それぞれデータ線207,208に出力
する。データ線207,208の信号は共に比較
器112および制御部113への入力となる。比
較器112で比較された結果である一致信号は信
号線209を介して制御部113に送られる。
制御部113では信号線209の一致信号及び
データ線207,208の信号を入力して、制御
部113の中に備えるスタツク機構およびレジス
タを操作する。更に制御部113は、信号線21
2を介して記憶装置100への参照を制御するた
めにアドレスレジスタ101の内容を更新する信
号、記憶装置100から読み出されたデータを格
納する先として4箇のバツフアメモリA102,
B104,C106,D108の1つを選択する
信号、これらのバツフアメモリ参照を制御するた
めにバツフアポインタA103、バツフアポイン
タB105、バツフアポインタC107、バツフ
アポインタD109を更新する信号を送出し、且
つ、バツフアメモリ102,104,106,1
08の中に記憶装置100から転送が必要なデー
タが既に格納されているか否かをチエツクしてデ
ータ転送の要/不要を判定し、選択回路A110
および選択回路B111で選択するデータ線20
3,204,205,206の指定などを行う。
以下、第3図、第4図、第5図および第6図を
用いて第1図に示した例題プログラムの本実施例
における実行動作を説明する。
記憶装置100には第3図に示す形式で第1図
に示すプロログプログラムが格納されている。記
憶装置100のデータはプログラムの実行に伴つ
て各バツフアメモリ102,104,106,1
08に格納される。第5図a,b,c,dには、
第1図のプロログプログラムの処理が終了した時
の各バツフアメモリ102,104,106,1
08の記憶状態を示す。
第6図a,bは第1図に示したプログラムの実
行ステツプを説明するための図を示す。第6図
a,bは実行時のステツプ番号、選択回路A11
0が選択するバツフアメモリおよび選択されたバ
ツフアメモリの中で参照されている語のアドレ
ス、選択回路B111が選択するバツフアメモリ
および選択されたバツフアメモリの中で参照され
ている語のアドレス、選択回路A110の出力、
選択回路B111の出力、制御部113の内部レ
ジスタ情報およびスタツク情報、その実行ステツ
プでの動作の順に示してある。
第1図において、節4はプロログにおける問合
わせの命令を表わしている。すなわち、節4の如
くボデイ部のみから成る問合わせ節によつて実行
が始まる。
節4の内部表現は第3図に示す形式で記憶装置
100のアドレスCL4番地から順次格納されてい
る。制御部113はアドレスレジスタ101に
CL4番地を格納し、その内容を読出すことによつ
て実行を開始する。初期状態では、各バツフアメ
モリ102,104,106,108は空であ
り、節4のコードは格納されていない。このた
め、バツフアメモリA102に節4に対応するコ
ードを格納する。この結果、第5図に示すように
バツフアメモリA102の20番地から27番地まで
に節4に対応する内部表現8語が格納される。
制御部113はバツフアポインタA103に節
4のコードの先頭番地20を格納して節4の「ヘツ
ダ」、「ポインタ」を順次読出し、次に1番目の述
語に対応する語を読出す。この語は同じ述語名を
ヘツダ部に持つ節1へのアドレスを値として持
ち、記憶装置100から節1に対応するコードを
読出す。節1のコードは制御部113の指示によ
つて、バツフアメモリB104に格納される。以
下第6図に示すステツプ1の処理を開始する。
ステツプ1では、バツフアポインタA103に
は節4の1番目の述語“P1(*x,*y)”に対
応するコードの格納先を指示するアドレス22が
格納され、バツフアポインタB105には節1の
「ヘツダ」語の格納先番地を示す120が格納さ
れている。それぞれのアドレスに対応してバツフ
アメモリA102からは節4の述語名“P1”を
データ線203に出力し、バツフアメモリB10
4からは節1の「ヘツダ」をデータ線204に出
力する。選択回路A110は制御部113の選択
指示信号210でバツフアメモリA102の出力
を選択するように指示される。この結果、データ
線207には節4の述語名“P1”が出力される。
選択回路B111は制御部113の選択指示信号
211でバツフアメモリB104の出力を選択す
るように指示される。この結果、データ線208
には節1の「ヘツダ」が出力される。このヘツダ
に含まれる情報はコードの属性に係るものであ
り、それ自体が実行制御に影響を及ぼすものでは
なく、バツフアポインタB105を歩進して、次
の実行ステツプ状態となる。
第6図のステツプ2ではバツフアポインタ B105は節1の「ヘツダ」に続く「ポインタ」
を指示し、そは結果バツフアメモリB104はデ
ータ線204に「ポインタ」の値を出力する。こ
の「ポインタ」はヘツド部に同一の述語名を持つ
節へのリンク情報であるが、リンクの最終である
ときにはその値は“nu11”となつている。節4
のような問合わせ節では常に「ポインタ」は
“nu11”である。バツフアポインタB105は引
き続き歩進する。
ステツプ3ではバツフアポインタB105はバ
ツフアメモリB104の122番地を指示し、バツ
フアメモリB104の出力として節1の述語名
“P1”をデータ線204に出力する。ここで、バ
ツフアメモリA102の出力は節4の最初の述語
名であり、バツフアメモリB104の出力と同様
に“P1”である。選択回路A110ではデータ
線203のデータを選択するので、節4の述語名
“P1”がデータ線207に出力される。選択回路
B111ではデータ線204のデータを選択する
ので、節1の述語名“P1”がデータ線208に
出力される。前記2つの選択回路110,111
の出力が比較器112への入力となつて、入力さ
れたデータが双方共に述語名“P1”であること
から、一致信号を信号線209を介して制御部1
13に送る。制御部113ではこの比較結果によ
り、節4と節1の現在比較対象になつている語に
続く語を次ステツプにおける比較対象にするた
め、バツフアポインタA103、バツフアポイン
タB105をそれぞれ歩進する。
ステツプ4では、バツフアメモリA102の出
力は節4の第1の述語名“P1”に続く第1の引
数である“*x”となり、この“*x”が選択回
路A110の出力となる。バツフアメモリB10
4の出力は節1の述語名“P1”に続く第1の引
数の値“A”となり、この“A”が選択回路B1
11の出力となる。
各々の出力はデータ線207,208を介して
比較器112に送られる。変数“*x”と“A”
とは一致条件を満たしており、比較器112は信
号線209を介して一致信号を制御部113に送
る。制御部113ではスタツクの先頭0番目に変
数“*x”の語を確保して、その値を“A”にす
る。この処理により、変数“*x”に“A”がバ
インドされる。バツフアポインタA103および
バツフアポインタB105はそれぞれ歩進する。
ステツプ5では節4の変数“*x”に続く第2
の引数である変数“*y”がバツフアメモリA1
02の出力となり選択回路A110の出力とな
る。また節4の“A”に続く第2の引数である変
数“*z”がバツフアメモリB104の出力とな
り、選択回路B111の出力となる。比較器11
2では、変数“*y”と変数“*z”は一致条件
を満足しており、制御部113に信号線209を
介して一致信号を出力する。制御部113では、
スタツクの1番目の語を変数“*y”の語とし、
2番目の語を変数“*z”の語として格納する。
変数“*y”と変数“*z”が等しい値を持つべ
きことを示すために変数“*z”の語には変数
“*y”へのポインタ値を格納して、変数“*z”
を参照するときには、変数“*y”の値を参照す
ることにする。そしてバツフアポインタA10
3、バツフアポインタB105を歩進させる。
前記の述語名及び述語内のすべての引数の一致
を検出した処理により、節4の第1述語と節1の
ヘツダ部の述語とは一致することが判明する。こ
れによつて制御は節1のボデイ部と、そのボデイ
部の述語名と同一の述語名をヘツド部に持つ節と
の一致検出に進む。
ステツプ6では節1のボデイ部の述語名はバツ
フアメモリB104の出力“P2”であり、制御
部113は“P2”をヘツド部に持つ節2へのア
ドレスを得る。
制御を述語名“P2”の一致検出に移す前に、
節4の2番目の述語名“P1”を指示するアドレ
スを制御部113のNEXTレジスタに格納する。
これは以降での述語“P2(B,C,*z)”の比
較処理で述語の一致を検出したとき制御を節4の
第2述語“P1(*x,*x)”の一致検出処理に
進めるためのものである。また、同時に、節1の
ボデイ部の述語名“P2”を示すアドレスを制御
部113のRETRYレジスタに格納する。これ
は、節1のボデイ部の述語“P2(B,C,*z)”
と一致検査対象の述語“P2(B,D,E)”をヘ
ツド部に持つ節との一致検査結果が不一致のとき
に、述語“P2(B,C,A)”をヘツド部に持つ
節3との比較を改めて述語“P2(B,C,*z)”
から開始するためのものである。この不一致の処
理はステツプ7以後に示す。
ここで、NEXTレジスタ、RETRYレジスタ
に格納されるアドレスはそれぞれ記憶装置100
に格納されている前記述語名“P1”、前記述語名
“P2”に対応するアドレス25,125である。
各バツフアメモリ102,104,106,10
8のアドレスと記憶装置100のアドレスとの対
応づけは制御部113のバツフアメモリ管理機能
を利用して実現する。
ステツプ7では節2のコードの先頭にあるヘツ
ダーを参照する。節2はバツフアメモリに格納さ
れていないので記憶装置100からバツフアメモ
リC106に読込む。バツフアメモリC106に
格納した後バツフアポインタC107の値は節2
のヘツダーを指示する150番地となる。
ステツプ8では節2のポインタを参照する。こ
のポインタの値は制御部113の内部レジスタで
あるLINKレジスタに保存する。これは、以下の
述語名“P2”に係る一致検査が不一致になつた
時にヘツド部に述語“P2(B,C,A)”を持つ
節3との一致検査を開始するために、この節3へ
のアドレス情報を制御部113の中に退避するた
めのものであり、このステツプ8にLINKレジス
タを含んだ操作を示す。
ステツプ9では述語名“P2”の一致を検出す
る。続いて、バツフアポインタC107、バツフ
アポインタB105を歩進する。
ステツプ10では述語名“P2”の第1引数が
両方共に“B”であることから一致が検出され
る。続くステツプ11では節2の引数が“D”、
節1の引数が“C”であることから不一致とな
る。この結果は信号線209を介して比較器11
2から制御部113に送られる。
制御部113ではヘツド部の述語名が“P2”
である他の節すなわち節3との比較を開始するた
め、ステツプ12では節1の述語“P2(B,C,
*z)”に関する一致を改めて調べるために、以
前に対比しておいたRETRYレジスタの節1の述
語名“P2”へのアドレスに対応するバツフアメ
モリB104内のアドレスの値125をバツフア
ポインタB105に格納する。また、以前に退避
しておいたLINKレジスタの内容は節3へのアド
レスであり、節3は節1の述語“P2(B,C,*
z)”との比較対象となる。節3はどのバツフア
メモリにも格納されていないので節3のコードが
記憶装置100からバス202を介してバツフア
メモリD108に格納される。
ステツプ12からステツプ17までにおいて節
1の述語“P2(B,C,*z)”と節3の述語
“P2(B,C,A)”との一致が検出される。ステ
ツプ17では変数“*z”に“A”がバインドさ
れる。この結果、スタツク中の変数“*z”の領
域からポイントされている変数“*y”の領域に
“A”が格納される。
以上の処理により、節4の第1述語“P1(*
x,*y)”に関する処理が終了して、次に節4
の第2述語である“P1(*x,*x)”の処理に
進む。第2述語の述語名は第1述語の述語名と同
様“P1”であるので節1との一致を調べる。節
1は既にバツフアメモリB104に格納されてい
るので記憶装置100からの読出しは行う必要は
ない。ステツプ18からステツプ23までにおい
て、節1の述語“P1(A,*z)”との一致が検
出される。
以後の処理では節1の述語“P2(B,C,*
z)”と節2の一致を調べ、不一致であることか
ら節3との一致を調べ、結果が一致することで、
節4の第2述語の処理が終了する。節4には続く
述語がないので、節4の処理全体が終了する。
比較器112は制御部113への制御信号を出
力する。この比較器112の機能は制御部113
の一部とも考えられる。第4図に示す実施例の説
明では、比較器112は選択回路A110および
選択回路B111からの出力を同時に参照して比
較できることを説明するために制御部113とは
別に示してある。
〔発明の効果〕
以上の説明で明らかなように、本発明により、
プロログに代表される述語論理型言語の処理を高
速に実行することができる。
【図面の簡単な説明】
第1図はプロログのプログラム例を示す図、第
2図はこの例における内部形式を示す図、第3図
は第1図のプログラム例を内部形式に変換したと
きの記憶装置イメージを示す図、第4図は本発明
の装置の一実施例を示すブロツク図、第5図a,
b,c,dは第1図のプログラム例を処理するた
めに記憶装置からバツフアメモリに格納された内
部表現のイメージを示す図、第6図は第1図のプ
ログラム例を第4図に示した実施例によつて実行
するときの実行ステツプを示す図である。 100……記憶装置、101……アドレスレジ
スタ、102……バツフアメモリA、103……
バツフアポインタA、104……バツフアメモリ
B、105……バツフアポインタB、106……
バツフアメモリC、107……バツフアポインタ
C、108……バツフアメモリD、109……バ
ツフアポインタD、110……選択回路A、11
1……選択回路B、112……比較器、113…
…制御部。

Claims (1)

    【特許請求の範囲】
  1. 1 述語名とその引数より成る述語の連らなりか
    ら成る節の集合として書き下す述語論理型言語を
    処理する装置において、前記節の内部表現を格納
    する記憶装置と、前記記憶装置から読み出された
    節の内部表現を一時的に格納する複数のバツフア
    メモリと、前記複数のバツフアメモリの各出力の
    うち1つを選択して出力とする第1の選択回路
    と、前記複数のバツフアメモリの各出力のうち1
    つを選択して出力とする第2の選択回路と、前記
    述語間の関係を次々にたどる道筋を保持するため
    のスタツク機構および内部レジスタおよびバツフ
    アメモリの管理機能および前記2つの選択回路で
    の選択指定機能および前記述語の一致を調べるた
    めの比較機能を含む制御装置とを備え、前記制御
    装置の制御の下に前記複数のバツフアメモリの各
    出力のうち1つを前記第1の選択回路で選択し前
    記複数のバツフアメモリの各出力のうちの他の1
    つを前記第2の選択回路で選択して前記2つの選
    択回路で選択されたデータを前記制御装置に送り
    前記の2つの選択回路で選択された2つのバツフ
    アメモリから読出しを同時に行うことにより互い
    の述語間の一致を検出できるようにしたことを特
    徴とする述語論理型言語処理装置。
JP10867983A 1983-06-17 1983-06-17 述語論理型言語処理装置 Granted JPS60540A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10867983A JPS60540A (ja) 1983-06-17 1983-06-17 述語論理型言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10867983A JPS60540A (ja) 1983-06-17 1983-06-17 述語論理型言語処理装置

Publications (2)

Publication Number Publication Date
JPS60540A JPS60540A (ja) 1985-01-05
JPH046984B2 true JPH046984B2 (ja) 1992-02-07

Family

ID=14490920

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10867983A Granted JPS60540A (ja) 1983-06-17 1983-06-17 述語論理型言語処理装置

Country Status (1)

Country Link
JP (1) JPS60540A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4573616A (en) * 1982-05-24 1986-03-04 Flo-Con Systems, Inc. Valve, clamp, refractory and method
JPS6437631A (en) * 1987-08-03 1989-02-08 Agency Ind Science Techn Close selecting system

Also Published As

Publication number Publication date
JPS60540A (ja) 1985-01-05

Similar Documents

Publication Publication Date Title
US5175696A (en) Rule structure in a procedure for synthesis of logic circuits
US5267175A (en) Data base access mechanism for rules utilized by a synthesis procedure for logic circuit design
US7457799B2 (en) Apparatus and method for searching data of structured document
JPH1078959A (ja) エッジデータ構造を統一する方法
US5452226A (en) Rule structure for insertion of new elements in a circuit design synthesis procedure
US4517640A (en) Stack machine with improved cache memory for variables
Nepomniaschy et al. Towards verification of C programs. C-light language and its formal semantics
JPS5941064A (ja) プロログ処理装置
Bancilhon et al. Design of a backend processor for a data base machine
Oliveira et al. Efficient search techniques for the inference of minimum size finite automata
JPH046984B2 (ja)
JPS63500547A (ja) 循環コンテクストアドレス指定可能メモリ
US5628012A (en) Method and apparatus for querying a database containing disjunctive information
JPS607539A (ja) 述語論理型言語処理装置
Barros et al. From non-autonomous Petri net models to executable state machines
London et al. Abstraction and verification in Alphard: a symbol table example
JPH0784797A (ja) ロードモジュールへのソースコード行番号登録方法および装置
JPS6155736A (ja) プロロ−グマシン
JPH05119960A (ja) バイトオーダ依存コーデイング検出方法
JPS6074040A (ja) 述語論理型言語処理装置
JPS62113240A (ja) プロログ処理装置
JPS61148536A (ja) 情報処理システム
JP3018579B2 (ja) 名前検索処理装置
JPH10240627A (ja) セクタ管理方法及び装置
JP2702356B2 (ja) デバッグ情報アクセス方式