JPH03164937A - Processing system for execution of logical language program - Google Patents

Processing system for execution of logical language program

Info

Publication number
JPH03164937A
JPH03164937A JP30611289A JP30611289A JPH03164937A JP H03164937 A JPH03164937 A JP H03164937A JP 30611289 A JP30611289 A JP 30611289A JP 30611289 A JP30611289 A JP 30611289A JP H03164937 A JPH03164937 A JP H03164937A
Authority
JP
Japan
Prior art keywords
restart
goal
execution
pointer
value
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
JP30611289A
Other languages
Japanese (ja)
Inventor
Yasunori Kimura
康則 木村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP30611289A priority Critical patent/JPH03164937A/en
Publication of JPH03164937A publication Critical patent/JPH03164937A/en
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To restart the interrupted execution with high efficiency by providing a restart pointer for each goal. CONSTITUTION:A restart printer 13 is provided for each goal 12, and the prescribed initial value 14 is set to the pointer 13. An execution processing part 10 carries out a program 11 with the goal 12 connected to an executable goal queue. When the interruption conditions are detected, the value pointing a clause kept in a selective trial is defined as the restart address value and compared with the value held by the pointer 13. Then only when the restart address value is smaller than the value held by the pointer 13, the pointer 13 is updated with the restart address value. When the execution is restarted, the part 10 decides the clause to be carried out at first based on the address value held by the pointer 13. Then the part 10 starts the execution of the subsequent clauses only. Thus the restarted execution is carried on with high efficiency.

Description

【発明の詳細な説明】 〔概 要〕 論理型言語のプログラムの実行における、実行中断処理
に関し、 中断した実行を再開する場合に、再開後の実行を効率よ
く進めるこきができる論理型言語プログラム実行処理方
式を目的とし、 所定の論理型言語のクローズからなる所与のプログラム
を、所要のゴールについて、若番の該クローズから順次
実行し、所定の中断条件を検出することによって、該ゴ
ールについての実行を中断する場合に、該ゴールごとに
再開ポインタを設けて、再開アドレス値が、該ポインタ
に保持する値より小さい場合に、該再開アドレス値によ
って該ポインタを更新し、該再開アドレス値は、当該中
断時の実行対象の該クローズを指示するように定められ
、該再開ポインタは、予め所定の初期値に設定され、該
初期値は、最終の該クローズを指示するアドレス値より
小さくない値であり、該ゴールについて所定の再開条件
が満足された場合には、該再開ポインタの指示する該ク
ローズから実行を再開するように構成する。
[Detailed Description of the Invention] [Summary] Regarding execution interruption processing in executing a logic language program, a logic language program execution method that allows execution to proceed efficiently after restarting when the interrupted execution is resumed. For the purpose of processing method, a given program consisting of clauses of a predetermined logical language is executed sequentially for a required goal starting from the closing with the lowest number, and by detecting a predetermined interrupt condition, When suspending execution, a restart pointer is provided for each goal, and if the restart address value is smaller than the value held in the pointer, the pointer is updated with the restart address value, and the restart address value is The restart pointer is set in advance to a predetermined initial value, and the initial value is a value not smaller than the final address value instructing the closing. If a predetermined restart condition is satisfied for the goal, the execution is configured to restart from the close indicated by the restart pointer.

〔産業上の利用分野〕[Industrial application field]

本発明は、論理型言語のプログラムの実行における、実
行中断を処理するための論理型言語プログラム実行処理
方式に関する。
The present invention relates to a logic language program execution processing method for handling execution interruptions in the execution of logic language programs.

[従来の技術と発明が解決しようとする課題]公知のG
 HC(Guarded 1lorn C1auses
)等の、いわゆる論理型言語のプログラムは、例えば)
1i(X++・9.+X、l)ニー Gil+”’+G
11Ill Bil+”・+B、。
[Prior art and problems to be solved by the invention] Known G
HC (Guarded 1lorn C1uses
), so-called logical language programs such as )
1i (X++・9.+X, l) Knee Gil+”'+G
11Ill Bil+"・+B,.

のようなりローズと呼ばれる式の集合で表され、最初に
、   ?−H(y++・・・、yn)で与えられるゴ
ールo(y、、・・・、y4)で始まって、ゴールと、
プログラムの各クローズとのユニフィケーションを試み
ることによるプログラムの実行が行われる。
First, ? is represented by a set of expressions called roses, such as ? Starting with the goal o(y,...,y4) given by -H(y++...,yn), the goal and
Execution of the program occurs by attempting to unify with each close of the program.

こ−で前記クロースの、記号「ニー」の左辺をヘッド、
右辺の各G、Jをガードゴール、各Bi、をボディゴー
ルと呼ぶ。
Now, the left side of the symbol "knee" of the cloth is the head,
Each G and J on the right side is called a guard goal, and each Bi is called a body goal.

ユニフィケーションとは公知のようにゴールと一致する
述語I4のヘッドを持つ個々のクローズについて、ゴー
ルの引数yl+・・・、y、、と、クローズのヘッドの
引数XI+・・・lX11の対応する各引数が所定の関
係(例えばクロースの引数である変数に対応するゴール
の引数に値が与えられている場合、対応する画引数の値
が一致する場合等)を満足するとき、ゴールとクローズ
の引数を同じ値に置き換える操作である。
Unification is, as is well known, for each clause with a head of predicate I4 that matches the goal, the arguments yl+..., y, of the goal, and the corresponding arguments of the arguments XI+...lX11 of the clause head. When satisfies a predetermined relationship (for example, if a value is given to the goal argument that corresponds to the variable that is the argument of the clause, if the values of the corresponding stroke arguments match, etc.), then the goal and the argument of the clause are This is an operation to replace with the same value.

このユニフィケーシづンをプログラムの若番のクローズ
から順次試行し、最初にユニフィケーションに成功する
クローズを選択して、次にそのクローズの各ガードゴー
ルを新たなゴールとして同様の実行が試みられ、そのク
ローズのすべてのガードゴールの実行に成功すると、ボ
ディゴールの実行に進むというようにして、プログラム
の実行が進められる。
This unification is tried sequentially starting from the lowest numbered close in the program, and the close that succeeds in unification is selected first.Then, a similar execution is attempted with each guard goal of that close as a new goal, and the close If all guard goals are successfully executed, the program execution proceeds to the body goal execution, and so on.

前記GHC等では、このユニフィケーションの場合に、
ゴールの変数をヘッドの対応する引数の値で具体化する
置き換えは許されておらず、ユニフィケーションの試行
でそのような条件(中断条件とする)を検出すると、そ
のクローズの選択は失敗として、その変数をサスペンシ
ョンスタックに記憶し、別のクローズに進む。
In the GHC, etc., in the case of this unification,
Replacement that instantiates the goal variable with the value of the head's corresponding argument is not allowed, and if a unification attempt detects such a condition (which is considered an abort condition), the close selection is considered a failure and its Store the variables in the suspension stack and proceed to another close.

このようにして最終番のクローズまで処理したとき、サ
スペンションスタックを8周べて、もしサスペンション
スタックが空であれば、当該ゴールの実行は終了として
、所定の処置が行われる。他方、サスペンションスタッ
クに1個以上の変数が記憶されている場合には、それら
の変数の値が決まったとき実行を再開するために、その
ゴールを中断状態にし、例えは実行可能ゴールキューに
ある別のゴールについての実行を開始する。
When the final number close is processed in this manner, the suspension stack is rotated eight times and if the suspension stack is empty, the execution of the goal is terminated and a predetermined action is taken. On the other hand, if one or more variables are stored in the suspension stack, the goal can be suspended, e.g. in the executable goals queue, in order to resume execution when the values of those variables are determined. Start execution for another goal.

前記のようにして中断したゴールは、中断の原因となっ
たすべての変数の値が決まったとき実行可能にするため
に、例えば第4図に示すように、そのゴールの制御ブロ
ックを問題の変数にフックした構成で所要の条件の成立
を待つようにする。
In order to make the goal that has been interrupted as described above executable when the values of all the variables that caused the interruption have been determined, for example, as shown in Figure 4, the control block of the goal can be changed to the variable in question. The configuration hooked to waits for the required conditions to be met.

図において各フックポインタ1は、それぞれ変数に対応
して設L3られ、その変数にフックするゴールごとのサ
スペンションレコード2の各変数ごとのチエインを指示
する。
In the figure, each hook pointer 1 is set L3 corresponding to a variable, and indicates the chain for each variable of the suspension record 2 for each goal hooked to that variable.

各サスペンションレコード2は、一方のポインタでチエ
インを構成し、他方のポインタで所要のゴールに対応す
るサスペンションフラグレコード3を指示する。サスペ
ンションフラグレコード3は所要のゴールのゴール制御
ブロック4を指示すると共に、変数個数の欄に自身を指
示するサスペンションレコード2の個数、即ち当該ゴー
ルが値の決まるのを待っている変数の個数を表示してい
る。ゴール制御ブロック4には、そのゴールの実引数の
情報等実行に必要な情報を保持させる。
Each suspension record 2 forms a chain with one pointer, and the other pointer points to a suspension flag record 3 corresponding to a desired goal. The suspension flag record 3 instructs the goal control block 4 of the required goal, and also displays the number of suspension records 2 that instruct itself in the variable number column, that is, the number of variables whose values are waiting for the goal to be determined. are doing. The goal control block 4 is made to hold information necessary for execution, such as information on actual arguments of the goal.

従って図の例は、2個の変数X、Yの値が決まるのを待
って中断しているゴールの例であり、他のゴールについ
ての実行の結果それらの変数の値が決まると、値の決ま
った変数に対応するフックポインタ1が別途検索されて
、そのフックポインタ1にサスペンションレコード2及
びサスペンションフラグレコード3を経てつながるゴー
ル制御ブロック4に、当該変数の値が与えられると共に
、サスペンションフラグレコード3の変数個数欄の個数
カ月減じられ、このようにしてサスペンションフラグレ
コード3に示す変数個数が0になったゴール制御ブロッ
ク4は実行可能ゴールキューにつながれる。
Therefore, the example in the figure is an example of a goal that is suspended waiting for the values of two variables X and Y to be determined, and when the values of those variables are determined as a result of execution for other goals, the values are The hook pointer 1 corresponding to the determined variable is separately searched, and the value of the variable is given to the goal control block 4 connected to the hook pointer 1 via the suspension record 2 and the suspension flag record 3. The number of months in the variable number field is decreased, and the goal control block 4 whose number of variables shown in the suspension flag record 3 becomes 0 is connected to the executable goal queue.

このようにして実行可能になったゴールは、順次キュー
から取り出されて、プログラム先頭のクローズから前記
のように実行を再開する。
The goals that have become executable in this way are sequentially taken out of the queue, and execution resumes from the close of the beginning of the program as described above.

従って、再開後の実行においては、先に中断要因以外の
要因で選択に失敗し、今回も失敗することに決まってい
るクローズについても、前回と同様のユニフィケーショ
ンの試行が繰り返されることになり、実行時間が浪費さ
れる問題がある。
Therefore, in execution after restarting, the same unification attempt as the previous one will be repeated even for closes that have previously failed in selection due to factors other than the interruption factor and are determined to fail this time as well. There is a problem of wasted time.

本発明は、中断した実行を再開する場合に、再開後の実
行を効率よく進めることができる論理型言語プログラム
実行処理方式を目的とする。
An object of the present invention is to provide a logical language program execution processing method that can efficiently proceed with execution after restarting when interrupted execution is restarted.

〔課題を解決するだめの手段〕[Failure to solve the problem]

第1図は、本発明の構成を示すブロック図である。 FIG. 1 is a block diagram showing the configuration of the present invention.

図は論理型言語プログラム実行処理方式の構成であって
、実行処理部10は所定の論理型言語のりII−スから
なる所Jjのプロゲラ1.11を、所要のゴール12に
ついて、若番の該クローズから順次実行し、所定の中断
条件を検出することによって、該ゴール12についての
実行を中断する場合に、該ゴール12ごとに再開ポイン
タ13を設けて、再開アドレス値が、該ポインタに保持
する値より小さい場合に、該再開アドレス値によって再
開ポインタ13を更新し、該再開アドレス値は、当該中
断時の実行対象の該クローズを指示するように定められ
、再開ポインタ13は、予め所定の初期値14に設定さ
れ、初期値14は、最終の該クローズを指示するアドレ
ス埴より小さくない値であり、該ゴールI2について所
定の再開条件が満足された場合には、該再開ポインタ1
3の指示する該クローズから実行を再開する。
The figure shows the configuration of a logical language program execution processing method, in which the execution processing unit 10 executes a program program 1.11 at a location Jj consisting of a predetermined logical language When executing the goal 12 sequentially from close and detecting a predetermined interruption condition, a restart pointer 13 is provided for each goal 12, and the restart address value is held in the pointer. If the restart pointer 13 is smaller than the restart address value, the restart pointer 13 is updated with the restart address value, and the restart address value is determined to instruct the closing of the execution target at the time of the interruption, and the restart pointer 13 is set in advance to a predetermined initial value. The initial value 14 is set to a value of 14, which is a value that is not smaller than the address value that instructs the final closing of the goal, and when the predetermined restart condition is satisfied for the goal I2, the restart pointer 1
Execution is resumed from the close indicated by step 3.

〔作 用] この処理方式により、中断されたゴール12の再開ポイ
ンタ13には、そのゴールの中断の原因を含むクローズ
のうち、最も名い番号のクローズを指示する値が保持さ
れるので、実行再開II当に再開ポインタ13の指示す
るクローズから実行を開始することにより、それより前
のクローズに対する冗長なユニフィケーション試行を行
う必要が無い。
[Function] With this processing method, the restart pointer 13 of the interrupted goal 12 retains a value instructing the closing of the highest number among the closings that include the cause of the interruption of the goal, so that execution By starting execution from the close indicated by the restart pointer 13 at restart II, there is no need to perform redundant unification attempts for previous closes.

〔実施例〕〔Example〕

本発明により、第1図の実行処理部10は、例えば第2
図に示すように再開ポインタ13を設けたゴール制御ブ
ロック20をゴールごとに設け、再開ポインタ13には
第1図の初期値14を初期設定する。
According to the present invention, the execution processing section 10 of FIG.
As shown in the figure, a goal control block 20 provided with a restart pointer 13 is provided for each goal, and the restart pointer 13 is initially set to the initial value 14 shown in FIG.

ゴール制御ブロック20の、その他の内容は前記径来の
ゴール制御ブロック4と同一・である。初期値14の内
容は、実行するプログラム11の最終番のクローズを指
示するアドレス値又はそれより大きな値とする。
The other contents of the goal control block 20 are the same as the previous goal control block 4. The content of the initial value 14 is an address value instructing the closing of the last number of the program 11 to be executed or a value larger than that.

実行処理部10が従来のように、実行可能ゴールキュー
につながるゴールについてプログラム11を実行し、前
記と同様の中断条件を検出すると、その原因となった変
数、例えば変数Xについて、第2図に示すように、その
フックポインタ1からサスペンションレコード2、サス
ペンションフラグレコード3を経てゴール制御ブロック
20を従来のようにつなぎ、サスペンションフラグレコ
ード3の変数個数を増加する。
When the execution processing unit 10 executes the program 11 for the goals connected to the executable goal queue as in the past and detects the same interruption condition as described above, the variable that caused the interruption, for example, the variable X, is shown in FIG. As shown, the goal control block 20 is connected from the hook pointer 1 through the suspension record 2 and the suspension flag record 3 in the conventional manner, and the number of variables in the suspension flag record 3 is increased.

こ\で、そのとき選択試行中であったクローズを指示す
る値を再開アドレス(ffiとして、再開ポインタ13
の保持する値と比較し、再開アドレス値の方が小さい場
合のみ、その値で再開ポインタ13を更新する。
Here, the value instructing the close that was being attempted at that time is set as the restart address (ffi) in the restart pointer 13.
The restart pointer 13 is updated with the value only when the restart address value is smaller than the value held by the restart address value.

前記のように再開ポインタ13には最終番クローズを指
示するアドレス値より小さくない、十分大0 きな値を初期値として設定されているから、あるゴール
について最初に中断条件が発生するクローズのアドレス
は通常初期値より小さくなり、従って再開アドレス値が
再開ポインタ13に設定される。
As mentioned above, the initial value of the restart pointer 13 is set to a sufficiently large value that is not smaller than the address value that instructs the final close, so the address of the close where the interruption condition first occurs for a certain goal is set as the initial value. is usually smaller than the initial value, so the restart address value is set in the restart pointer 13.

しかし同じゴールについて引き続く実行で他の中断条件
が発生した場合には、生成される再開アドレス値は、前
の再開アドレス値より小さいことは無いので、再開ポイ
ンタ13には最初に設定された再開アドレス値が保存さ
れる。
However, if another interrupt condition occurs in subsequent executions of the same goal, the generated restart address value will not be smaller than the previous restart address value, so the restart pointer 13 will be set to the restart address that was initially set. The value is saved.

このようにして、従来と同様に中断状態になったゴール
が、フックしている変数の値が決まって従来のように実
行可能ゴールキューにつながり実行を再開する場合に、
実行処理部10はそのゴールのゴール制御ブロック20
にある再開ポインタ13の保持するアドレス値によって
、最初に実行するクローズを決定し、それ以降のクロー
ズのみの実行を開始する。
In this way, when a goal that is in a suspended state is connected to the executable goal queue and resumes execution as before when the value of the hooked variable is determined,
The execution processing unit 10 executes the goal control block 20 of the goal.
The first close to be executed is determined based on the address value held by the restart pointer 13 located at , and execution of only subsequent closes is started.

第3図は、実行処理部10の中断処理の流れの一例を示
し、中断条件を検出すると、処理ステップ30で原因の
変数のフックポインタ1に、サスペンシゴンレコード2
をつなぎ、そのサスペンションレコード2からサスペン
ションフラグレコード3を経てゴール制御ブロック20
を指示するようにポインタを設定し、サスペンションフ
ラグレコード3の変数個数を+1する。
FIG. 3 shows an example of the flow of the suspension process of the execution processing unit 10. When a suspension condition is detected, in processing step 30, the hook pointer 1 of the cause variable is set to the suspension record 2.
from the suspension record 2 to the goal control block 20 via the suspension flag record 3.
The pointer is set to point to , and the number of variables in suspension flag record 3 is incremented by 1.

処理ステップ31で、現に処理中であったクローズを指
すように再開アドレス値を生成し、処理ステップ32で
再開ポインタ13の値と比較し、再開アドレス値が再開
ポインタ13の値より小さい場合のみ、処理ステップ3
3で再開アドレス値を設定して再開ポインタ13を更新
し、そうでない場合は再開ポインタ13の+’+ilの
値をそ・のま\保存する。
In processing step 31, a restart address value is generated to point to the close that is currently being processed, and in processing step 32, it is compared with the value of restart pointer 13, and only if the restart address value is smaller than the value of restart pointer 13, Processing step 3
3, the restart address value is set and the restart pointer 13 is updated, and if not, the value of +'+il of the restart pointer 13 is saved as is.

〔発明の効果] 以上の説明から明らかなように本発明によれば、論理型
言語のプログラムの実行中断処理において、中断した実
行を再開する場合に、再開後の実行を効率よく進めるこ
とができるという著しい効果がある。
[Effects of the Invention] As is clear from the above description, according to the present invention, when restarting the interrupted execution in the execution interruption process of a logical language program, the execution after restarting can proceed efficiently. This has a significant effect.

【図面の簡単な説明】[Brief explanation of the drawing]

第1図は本発明の構成を示すブロック図、第2図は本発
明のゴールの中断状態を示す図、第3図は本発明の処理
の流れ図、 第4図は従来のゴールの中断状態を示す図である。 図において、 1はフックポインタ、 2はサスペンションレコード、 3はサスペンションフラグレコード、 4.20はゴール制御ブロック、 10は実行処理部、   11はプログラム、12はゴ
ール、      13は再開ポインタ、14は初期値
、     30〜33は処理ステップ勧 理 歩 す さ\ □□□
FIG. 1 is a block diagram showing the configuration of the present invention, FIG. 2 is a diagram showing a goal suspension state of the present invention, FIG. 3 is a flowchart of the processing of the present invention, and FIG. 4 is a diagram showing a conventional goal suspension state. FIG. In the figure, 1 is a hook pointer, 2 is a suspension record, 3 is a suspension flag record, 4.20 is a goal control block, 10 is an execution processing unit, 11 is a program, 12 is a goal, 13 is a restart pointer, and 14 is an initial value , 30 to 33 are the processing steps \ □□□

Claims (1)

【特許請求の範囲】 所定の論理型言語のクローズからなる所与のプログラム
(11)を、所要のゴール(12)について、若番の該
クローズから順次実行し、 所定の中断条件を検出することによって、該ゴールにつ
いての実行を中断する場合に、 該ゴール(12)ごとに再開ポインタ(13)を設けて
、再開アドレス値が、該ポインタに保持する値より小さ
い場合に、該再開アドレス値によって該再開ポインタを
更新し、 該再開アドレス値は、当該中断時の実行対象の該クロー
ズを指示するように定められ、 該再開ポインタ(13)は、予め所定の初期値(14)
に設定され、 該初期値(14)は、最終の該クローズを指示するアド
レス値より小さくない値であり、該ゴール(12)につ
いて所定の再開条件が満足された場合には、該再開ポイ
ンタの指示する該クローズから実行を再開する(10)
ように構成されていることを特徴とする論理型言語プロ
グラム実行処理方式。
[Claims] A given program (11) consisting of clauses of a predetermined logical language is executed sequentially for a required goal (12) starting from the closing with the lowest number, and a predetermined interruption condition is detected. , when the execution of the goal is interrupted, a restart pointer (13) is provided for each goal (12), and if the restart address value is smaller than the value held in the pointer, the restart address value is used. The restart pointer is updated, the restart address value is determined to instruct the closing of the execution target at the time of the interruption, and the restart pointer (13) is set to a predetermined initial value (14).
The initial value (14) is a value that is not smaller than the address value that instructs the final closing, and when the predetermined restart condition is satisfied for the goal (12), the restart pointer is set to Resume execution from the specified close (10)
A logical language program execution processing method characterized by being configured as follows.
JP30611289A 1989-11-24 1989-11-24 Processing system for execution of logical language program Pending JPH03164937A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30611289A JPH03164937A (en) 1989-11-24 1989-11-24 Processing system for execution of logical language program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30611289A JPH03164937A (en) 1989-11-24 1989-11-24 Processing system for execution of logical language program

Publications (1)

Publication Number Publication Date
JPH03164937A true JPH03164937A (en) 1991-07-16

Family

ID=17953188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30611289A Pending JPH03164937A (en) 1989-11-24 1989-11-24 Processing system for execution of logical language program

Country Status (1)

Country Link
JP (1) JPH03164937A (en)

Similar Documents

Publication Publication Date Title
JPH0437927A (en) Processor processing method
JPH03164937A (en) Processing system for execution of logical language program
JPS59114602A (en) Programmable controller
JP2727023B2 (en) Information processing device
JP3085371B2 (en) Associative memory search circuit
KR100302566B1 (en) Apparatus for interpreting SFC in a control system
JPS6356728A (en) Execution system for program correction
JPS6258339A (en) Instruction fetching controller
JP2887488B2 (en) Multi-process processing equipment
JPH07160352A (en) Program execution system
JP2958470B2 (en) Sequence controller
JPS6210740A (en) Interruption processing control system
JPS6249502A (en) Programmable controller
JPH0962500A (en) Dynamic patching method and dynamic patching system
JPS62113238A (en) Correction system for program of electronic computer system
JPS61156339A (en) Trace processing system
JPH05204631A (en) Register restoring system
JPH02127732A (en) Job control system
JPH07121226A (en) Robot controller
JPH02284206A (en) Programmable controller
JPS60122419A (en) Processing system of conditional start
JPS58142451A (en) Interruption control system
JPH0358277A (en) Design execution controller
JPH04195527A (en) Computer system
JPH03228135A (en) Proposed inference method