JPH03132824A - 論理型プログラム処理方式 - Google Patents
論理型プログラム処理方式Info
- Publication number
- JPH03132824A JPH03132824A JP27024089A JP27024089A JPH03132824A JP H03132824 A JPH03132824 A JP H03132824A JP 27024089 A JP27024089 A JP 27024089A JP 27024089 A JP27024089 A JP 27024089A JP H03132824 A JPH03132824 A JP H03132824A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- argument
- unifiable
- registers
- processing
- 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
Links
- 238000000034 method Methods 0.000 abstract description 8
- 238000012217 deletion Methods 0.000 abstract 2
- 230000037430 deletion Effects 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 7
- 238000003672 processing method Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[産業上の利用分野]
この発明は、プロログ(Prolog)のように推論を
行う述語で記述された論理型プログラムの処理方式に関
するものである。
行う述語で記述された論理型プログラムの処理方式に関
するものである。
[従来の技術]
これまでのノイマン型コンピュータに替り、三段論法に
代表される推論処理を行う推論コンピュータが近年開発
されている。推論コンピュータで実行される論理型プロ
グラミング言語の代表的なものとしては、prolog
が知られている。
代表される推論処理を行う推論コンピュータが近年開発
されている。推論コンピュータで実行される論理型プロ
グラミング言語の代表的なものとしては、prolog
が知られている。
第1図は、WAM (Warren Abstract
Machine)として知られている。 Prolo
gで記述されたプログラムの処理方式を実現するための
装置の一例を示すブロック図である。
Machine)として知られている。 Prolo
gで記述されたプログラムの処理方式を実現するための
装置の一例を示すブロック図である。
図において、1は演算処理装置、2は論理型言語Pro
logで記述されたプログラムをコンパイルして得られ
た命令列を保持する命令コード記憶装置、3はバックト
ラックの際に復帰すべき情報と節の実行環境とを保持す
るローカルスタック、4は入城変数及び複合項を保持す
るグローバルスタック、5はバックトラックの際に無効
化すべき変数のアドレスを保持するトレイルスタック、
6は述語呼び出しの実引数、すなわちゴール引数や一時
変数を保持する引数レジスタ群、7は上記命令コード記
憶装置2及び各スタック3〜5のアドレスなどを保持す
る制御レジスタ群である。なお、同図において、命令コ
ード記憶装置2と各スタック3〜5及び各レジスタ群6
,7は、別々の記憶装置に割り当てるように記述してい
るが、それらの一部または全てを同一の記憶装置に割り
当てても構わない。
logで記述されたプログラムをコンパイルして得られ
た命令列を保持する命令コード記憶装置、3はバックト
ラックの際に復帰すべき情報と節の実行環境とを保持す
るローカルスタック、4は入城変数及び複合項を保持す
るグローバルスタック、5はバックトラックの際に無効
化すべき変数のアドレスを保持するトレイルスタック、
6は述語呼び出しの実引数、すなわちゴール引数や一時
変数を保持する引数レジスタ群、7は上記命令コード記
憶装置2及び各スタック3〜5のアドレスなどを保持す
る制御レジスタ群である。なお、同図において、命令コ
ード記憶装置2と各スタック3〜5及び各レジスタ群6
,7は、別々の記憶装置に割り当てるように記述してい
るが、それらの一部または全てを同一の記憶装置に割り
当てても構わない。
第2図は、論理型言語Prologで記述したプログラ
ムの一例である。
ムの一例である。
第6図は、第2図に示したプログラムを従来方式でコン
パイルした結果として得られる命令列である。同図にお
いて、節の選択に関する命令は以下のように説明される
。
パイルした結果として得られる命令列である。同図にお
いて、節の選択に関する命令は以下のように説明される
。
try−me−else Label
は、バックトラックの際にLabelに対応する節。
すなわち第2図に示したプログラム中の述語pの第2番
目の節を実行することができるように。
目の節を実行することができるように。
ローカルスタック3へ情報を保存することを指示する命
令である。
令である。
5w1tcJon term var=Lvar、co
nst=Lconst。
nst=Lconst。
1ist−Llist、5truct=Lstruct
は、第1引数内に格納されたデータの型により分岐を行
う命令である。すなわち、データが未定義変数である場
合にはLvarに対応する命令に、アトムまたは数であ
る場合にはLconstに対応する命令゛に、リストで
ある場合にはLlistに対応する命令に、複合項であ
る場合にはLstructに対応する命令に分岐を行う
命令である。
は、第1引数内に格納されたデータの型により分岐を行
う命令である。すなわち、データが未定義変数である場
合にはLvarに対応する命令に、アトムまたは数であ
る場合にはLconstに対応する命令゛に、リストで
ある場合にはLlistに対応する命令に、複合項であ
る場合にはLstructに対応する命令に分岐を行う
命令である。
swjtch−on constant 1:L2
. 2:L3. else:L4は、第1引数内に格
納されたデータの値により分岐を行う命令である。例え
ば、上記のようなパラメータが指定されると、データが
1である場合にはL2に対応する命令に、2である場合
にはL3に対応する命令に、それ以外の場合にはL4に
対応する命令に分岐を行う命令である。
. 2:L3. else:L4は、第1引数内に格
納されたデータの値により分岐を行う命令である。例え
ば、上記のようなパラメータが指定されると、データが
1である場合にはL2に対応する命令に、2である場合
にはL3に対応する命令に、それ以外の場合にはL4に
対応する命令に分岐を行う命令である。
try Label
は、swi tcJon−termまたは5w1tch
on constant命令で分岐された後も更に複
数の選択肢が残された場合に用いられる命令で、Lab
elに対応する節が失敗してバックトラックする際2次
命令を実行する命令である。すなわち、第2図に示した
プログラム中の述語qの第2番目の節を実行することが
できるように、ローカルスタック3へ情報を保存するこ
とを指示する命令である。
on constant命令で分岐された後も更に複
数の選択肢が残された場合に用いられる命令で、Lab
elに対応する節が失敗してバックトラックする際2次
命令を実行する命令である。すなわち、第2図に示した
プログラム中の述語qの第2番目の節を実行することが
できるように、ローカルスタック3へ情報を保存するこ
とを指示する命令である。
更に、小長谷明彦による″論理型言語処理装置” (特
開昭61−194538号、昭和61年8月28日)で
は、引数レジスタの特定の1つを第1オペランドで指定
し、該引数レジスタ内に格納されたデータまたは該引数
レジスタからの参照先データが構造体のときに該構造体
のファンフタにエンコードされた建値を第2オペランド
として与えられたマスク値によりマスクして得られた値
に応じて分岐を行う命令処理手段を提案している。すな
わち、第1引数以外の任意の引数も建値として選択する
ことができる。更に、多重インデクシングを用いて2つ
以上の引数のデータの型、あるいは値により分岐するこ
とを可能とする。その結果、第6図の述語qのコードの
うちtry命令を省略することができる。
開昭61−194538号、昭和61年8月28日)で
は、引数レジスタの特定の1つを第1オペランドで指定
し、該引数レジスタ内に格納されたデータまたは該引数
レジスタからの参照先データが構造体のときに該構造体
のファンフタにエンコードされた建値を第2オペランド
として与えられたマスク値によりマスクして得られた値
に応じて分岐を行う命令処理手段を提案している。すな
わち、第1引数以外の任意の引数も建値として選択する
ことができる。更に、多重インデクシングを用いて2つ
以上の引数のデータの型、あるいは値により分岐するこ
とを可能とする。その結果、第6図の述語qのコードの
うちtry命令を省略することができる。
[発明が解決しようとする課ME
以上説明したように、従来方式においては第2図に示し
た述語pのような節集合に対しては、レジスタごとの型
、値の情報のみでは分岐することができず、バックトラ
ックのためにローカルスタックに各種情報を保存するこ
とが必要となる。
た述語pのような節集合に対しては、レジスタごとの型
、値の情報のみでは分岐することができず、バックトラ
ックのためにローカルスタックに各種情報を保存するこ
とが必要となる。
これらの情報の保存及び除去の処理、すなわち選択肢フ
レームの生成及び除去の処理のコストは一般に高く、選
択肢に関する処理の速度を低下させるという問題点があ
った。
レームの生成及び除去の処理のコストは一般に高く、選
択肢に関する処理の速度を低下させるという問題点があ
った。
この発明は上記のような問題点を解消するためになされ
たもので、選択肢に関する処理を高速に実行することが
できる論理型プログラム処理方式を得ることを目的とす
る。
たもので、選択肢に関する処理を高速に実行することが
できる論理型プログラム処理方式を得ることを目的とす
る。
[課題を解決するための手段]
この発明に係る論理型プログラム処理方式は、複数の引
数レジスタの関係に基づき対応する節の命令に分岐を行
う命令を新たに備えたものである。
数レジスタの関係に基づき対応する節の命令に分岐を行
う命令を新たに備えたものである。
[作用]
この発明における論理型プログラム処理方式は、前記の
ような複数の引数レジスタの関係により対応する節の命
令に分岐を行う命令を用いて、該当する筒のみを選択す
ることにより、選択肢フレームの生成及び除去の処理を
不要とし、選択肢に関する処理を高速に実行する。
ような複数の引数レジスタの関係により対応する節の命
令に分岐を行う命令を用いて、該当する筒のみを選択す
ることにより、選択肢フレームの生成及び除去の処理を
不要とし、選択肢に関する処理を高速に実行する。
[実施例コ
以下、この発明の一実施例を図について説明する。
第3図は複数の引数レジスタの関係により対応する節の
命令に分岐を行う命令の一例である。図において、5w
1tch on unifiableは、もし、与えら
れた2つの引数がユニファイ(単一化、統合化)可能な
らば次命令に進み、そうでないならばLabelに対応
する命令を実行する。ここでは、複数レジスタの関係と
してユニファイの可能性を例としたが、大小関係、型や
組込み述語の等優性などが他の例として挙げることがで
きる。
命令に分岐を行う命令の一例である。図において、5w
1tch on unifiableは、もし、与えら
れた2つの引数がユニファイ(単一化、統合化)可能な
らば次命令に進み、そうでないならばLabelに対応
する命令を実行する。ここでは、複数レジスタの関係と
してユニファイの可能性を例としたが、大小関係、型や
組込み述語の等優性などが他の例として挙げることがで
きる。
第4図は、第2図に示したプログラムのうち。
述語Pを本方式を用いてコンパイルした結果として得ら
れる命令列である。同図において本方式の命令は次のよ
うに説明される。
れる命令列である。同図において本方式の命令は次のよ
うに説明される。
5w1tch on−unifiable Al、
A2. Labelは、引数レジスタAIとA2のユニ
ファイ可能性を調べ、もし、ユニファイ可能ならば次命
令に進み、そうでないならばLabelに対応する命令
を実行する。すなわち、ユニファイ可能でないならば、
ローカルスタック3にバックトラックのための情報を保
存することなく、2番目の節に進む。
A2. Labelは、引数レジスタAIとA2のユニ
ファイ可能性を調べ、もし、ユニファイ可能ならば次命
令に進み、そうでないならばLabelに対応する命令
を実行する。すなわち、ユニファイ可能でないならば、
ローカルスタック3にバックトラックのための情報を保
存することなく、2番目の節に進む。
次に、この命令を用いた処理の流れを説明する。第5図
はこれらの命令を含む述語qの処理を本発明に従って処
理した際のフローチャートである。ここで、述語qは、 p(2,1) のゴールによって呼び出されたものとする。レジスタA
Iには2が、レジスタA2には1が格納されており、ユ
ニファイ可能ではないのでLabelに進み(ステップ
S1→S2)、引き算命令が実行された後、再びpが呼
び出される。このとき、レジスタA1には1が、レジス
タA2には1が格納されており、ユニファイ可能である
ので、実際のユニフィケーションがなされた後、終了す
る(ステップS1→S3)。このように、レジスタAI
とA2がユニファイ可能でないならば、選択肢フレーム
を生成しないで即座に2番目の節が選択される。
はこれらの命令を含む述語qの処理を本発明に従って処
理した際のフローチャートである。ここで、述語qは、 p(2,1) のゴールによって呼び出されたものとする。レジスタA
Iには2が、レジスタA2には1が格納されており、ユ
ニファイ可能ではないのでLabelに進み(ステップ
S1→S2)、引き算命令が実行された後、再びpが呼
び出される。このとき、レジスタA1には1が、レジス
タA2には1が格納されており、ユニファイ可能である
ので、実際のユニフィケーションがなされた後、終了す
る(ステップS1→S3)。このように、レジスタAI
とA2がユニファイ可能でないならば、選択肢フレーム
を生成しないで即座に2番目の節が選択される。
[発明の効果]
以上のように、この発明によれば、簡単な機能追加を行
うことにより実現可能な、複数の引数レジスタの関係に
より対応する節の命令に分岐を行う命令により、選択肢
フレームの生成及び除去の処理を省略することができ1
節の選択を高速に行うことができる効果がある。
うことにより実現可能な、複数の引数レジスタの関係に
より対応する節の命令に分岐を行う命令により、選択肢
フレームの生成及び除去の処理を省略することができ1
節の選択を高速に行うことができる効果がある。
第1図は本発明の一実施例による処理方式を実現するた
めの装置のブロック図、第2図は論理型言語Prolo
gのプログラム例を示す図、第3図は本発明の一実施例
による処理方式を実現するために用いられる。複数の引
数レジスタの関係により対応する節の命令に分岐を行う
命令を示す図、第4図は本発明に従って第2図のプログ
ラムをコンパイルした結果として得られる命令列を示す
図、第5図は第4図の命令列を本発明に従って実行した
処理の流れを示すフローチャート、第6図は第2図のプ
ログラムを従来方式でコンパイルした結果として得られ
る命令列を示す図である。 1は演算処理装置、2は命令コード記憶装置、3はロー
カルスタック、4はグローバルスタック、5はトレイル
スタック、6は引数レジスタ群、7は制御レジスタ群。
めの装置のブロック図、第2図は論理型言語Prolo
gのプログラム例を示す図、第3図は本発明の一実施例
による処理方式を実現するために用いられる。複数の引
数レジスタの関係により対応する節の命令に分岐を行う
命令を示す図、第4図は本発明に従って第2図のプログ
ラムをコンパイルした結果として得られる命令列を示す
図、第5図は第4図の命令列を本発明に従って実行した
処理の流れを示すフローチャート、第6図は第2図のプ
ログラムを従来方式でコンパイルした結果として得られ
る命令列を示す図である。 1は演算処理装置、2は命令コード記憶装置、3はロー
カルスタック、4はグローバルスタック、5はトレイル
スタック、6は引数レジスタ群、7は制御レジスタ群。
Claims (1)
- 【特許請求の範囲】 述語呼び出しの実引数を格納する引数レジスタ群を備え
、推論を行う述語で記述された論理型プログラムの処理
に際して上記引数レジスタ群を用いて選択肢に関する処
理を行う論理型プログラム処理方式において、 複数の引数レジスタの関係に基づき対応する節の命令に
分岐を行う命令を備えたことを特徴とする論理型プログ
ラム処理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27024089A JPH03132824A (ja) | 1989-10-19 | 1989-10-19 | 論理型プログラム処理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27024089A JPH03132824A (ja) | 1989-10-19 | 1989-10-19 | 論理型プログラム処理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH03132824A true JPH03132824A (ja) | 1991-06-06 |
Family
ID=17483508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27024089A Pending JPH03132824A (ja) | 1989-10-19 | 1989-10-19 | 論理型プログラム処理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH03132824A (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6341933A (ja) * | 1986-08-08 | 1988-02-23 | Agency Of Ind Science & Technol | 推論計算機 |
JPS6450128A (en) * | 1987-08-20 | 1989-02-27 | Agency Ind Science Techn | Logical program processing system |
-
1989
- 1989-10-19 JP JP27024089A patent/JPH03132824A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6341933A (ja) * | 1986-08-08 | 1988-02-23 | Agency Of Ind Science & Technol | 推論計算機 |
JPS6450128A (en) * | 1987-08-20 | 1989-02-27 | Agency Ind Science Techn | Logical program processing system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8201140B2 (en) | System and method for creating and using graphical object instances in a statechart environment | |
EP0469756B1 (en) | Modular expert system and method for modularizing a set of rules used by an expert system | |
Barbacci et al. | Programming at the processor-memory-switch level | |
Fauth et al. | Automated generation of DSP program development tools using a machine description formalism | |
US4780820A (en) | Control flow computer using mode and node driving registers for dynamically switching between parallel processing and emulation of von neuman processors | |
JPH06250837A (ja) | スケジューリング処理方式 | |
JP2752094B2 (ja) | 論理型言語におけるバックトラック処理方式 | |
JPH03132824A (ja) | 論理型プログラム処理方式 | |
Busch | First-order automation for higher-order-logic theorem proving | |
JPH03196335A (ja) | 論理型プログラム処理方式 | |
Sadolewski et al. | Exception Handling in Programmable Controllers with Denotational Model | |
JPS6227822A (ja) | バツクトラツク制御方式 | |
Yu et al. | Efficient scheduling and instruction selection for programmable digital signal processors | |
Marti | Compilation techniques for a control-flow concurrent LISP system | |
JPS61139840A (ja) | 情報処理装置 | |
JPS6249546A (ja) | 論理型言語処理装置 | |
Palumbo et al. | Considerations in the development of a knowledge-based control systems design associate | |
JPS61139838A (ja) | 情報処理装置 | |
JPS623341A (ja) | 条件付制御方法 | |
JPH0460719A (ja) | 電子計算機、プログラマブル論理回路及びプログラム処理方法 | |
JPH1195995A (ja) | データフロー解析装置、データフロー解析方法及びそのためのコンピュータプログラムを記録した記録媒体 | |
JPS62202264A (ja) | ベクトル演算処理方式 | |
Fiddian | Meta‐assembly: A fresh assessment | |
Aygun | Environments for monitoring and dynamic analysis of execution | |
JP2002140198A (ja) | インライン展開方法 |