<戻る>

---This is prolog2.doc---

処理系(=CPROLOG/CMIS)に於て受付可能なコマンドの概略は既にprolog1.docに紹介済
みであるが、ここでは個別に、より詳細な説明を記述する。
MIS関係はCMISの版でのみ使用可能であり、CMISではピュアPrologのみ受付可能。

:pure-------------prolog実行モードをpureモードに設定。実行結果にゴール節中の
          変数に求まった値(=答)についてでなく、質問に対する真偽を
          yes/noの形で表示するモード゙。

:ans--------------prolog実行モードをansモードに設定。実行結果にゴール節中の
          変数の答について最初に求まった1組を表示するモード゙。

:quer-------------prolog実行モードをqueryモードに設定。実行結果にゴール節中
          の変数の答の全組を求め、これを表示するモード゙。

:trac-------------prolog実行中、unification対(ゴール節とホーン節)の追跡表
          示をすべき旨、処理系に知らせる。

:dupl-------------prolog実行により求まったゴール節中の変数の値、つまり答えを
          同一値を含めそのまま求まった順に表示すべき旨、処理系に知ら
          せる。
          nodupの場合、duplicate機能を取消す。つまり同一値は一つに
          まとめて、異なり分を表示すべき旨、処理系に知らせる。

:orde-------------ゴール節中のアトムunify順を、左から右(最左戦略)とすべき
          旨、処理系に知らせる。
          noorderの場合、ゴール節中のアトムunify順を、変数を含まな
          いアトムから先にすべき旨、処理系に知らせる。

:cond-------------MIS実行中、精密化後の重複仮説のコンデンスを行うよう、
          処理系に指示する。
          0:nocond =コンデンスを行なわない。
          1:clauseck=全ての偽なる仮説の精密化後にコンデンスを行なう。
          2:atomsck=各偽なる仮説の精密化毎にコンデンスを行なう。

:log -------------MIS実行中のStrueCHECK後毎にcptohn(.HN)のログ及び精密
          化毎にLrm(k)(.LC)ログをとるよう、処理系に指示する。

:mult-------------精密化を制御する、アトム・関数の節内個数制限をアーギュメ
          ント数に乗ずる数で指定する。
          変数・関数の数制限はアトム数1のヘッドのみの節に関係する。

:subfy------------MISの精密化タイプ3として変数を言語Lの関数で置き換える
          精密化があるがこれを仮説の頭部のみに施すか、節全体に施すか
          かを指定する。

:bind-------------MISの精密化の一つとして、節の体部追加に自由変項アトムを
          使用するか、さらに節が閉論理式になる体部を生成し追加する。
          n:addbody=自由変項アトムを使用する。(Default)
          y:bindbody=閉論理式になる体部を生成し追加する。
               addbodyに加えて機能する。

:samep------------精密化を制御するため、同一述語名を持つアトムを追加可能か否
          かを指定する。(ただし体部のアトムについてのみ関係する)

:gen--------------MIS実行中、言語Lからの定文型節(再帰節,迂回節)の自動
          生成を行い仮説に加えるよう、処理系に指示する。
          (fidの指定がないとき)
          fidがあると:loadfid.llと:langを実行後、自動生成試験。

:goda------------MISのSfalseck実行中、偽事例を真と導いてしまった場合、
          導出に用いられたホーン節の頭部を神託に例示して真偽を問う。
          但し例示に変数が残れば真偽質問前に値を入力してもらう(最初
          のみ神託に聞くこと)
          a=t:常に真を返す,f:常に偽を返す,n:神託に問う。

:szcomp-----------MIS実行中、サイズを計算するポイントを指示する。
          r:精密化中で計算する。
          c:コンデンス中で計算する。

:tatm-------------2つの仮説のアトム重複チェックを行うか否かを指定する。

:hexu-------------偽でない仮説と事例とのユニファイチェックと強弱評価を行うか
          否かを指定する。(仮説をホーン節に読み込む前で評価)

:cls -------------表示画面の消去

:listx,n---------xについて画面に表示。
          xは脚注参照、指定無しはx=h
          nは行番号、指定無しはn=1
          LRM.CPファイルはMISのVMモードでなければ:mode0,1とし
          てから、:listcとする。

:file-------------ディレクトリ表示。PFXを指定すれば選択表示可。

:newx------------xについて現在するものを各メモリー上で消去。
          xは脚注参照、指定無しはx=h

:load file--------fileで指定のファイルデータ(通常はホーン節)をディスクから
          実行メモリー上に読み込む。
          fileは拡張子無指定の場合、.PROとみなす。
          拡張子の指定は次のようにする。
          ホーン節------------->.PRO
          MISの言語L------->.LL
          MISの事実--------->.EX
          DCG記法によるものは.PROで良いが、そのままでは実行できな
          いので:dcgコマンドでprolog節に変換する必要がある。
          CPROLOGの版では一時変数の取り扱いは可能。
          中置記法によるものは.PROで良いが、そのままでは実行できない
          のでこのコマンド実行中に自動的にprolog節に変換される。
          CMIS(MISの版)ではDCG記法や中置記法は不可。

:save fid---------現在実行メモリー中にあるデータをfidで指定のファイルIDで
          ディスクに書き出す。

:maxd n-----------nでprolog実行のdepthつまり探索深度を指定する。

:mode s,v---------現在の処理系に設定されている各種の状態を表示する。
          smode,VM,lmode,nmode,file-id,pure/ans/query,trace/notrace,
          duplicate/noduplicate,order/noorder,step/nostep,
          current&maxdepth
          MIS->(log/nolog,gen/nogen,god ans t/f/ask to god,szcomp r/c,
             addbody only/+bind body)

:stat-------------処理系実行中の各種進捗状況を表示する。
          smode=0:h0,h1,g1,gn,g2
          smode=1:finec,infc,exn,sizek,lrmRN,useb,usecp,usec,
              cpct,cfct

:help-------------コマンドリストの表示。

:sys--------------処理系の作動中:sysとキーインするとDOSに戻る。
          ESCキーを押すことによりその実行を一時中断してコマンド等の
          処理後中断状態から脱出し本処理に戻る際にも使用する。
          どの時点に於ても結局:sysキーインは再帰的に呼出元に戻る。

:dvcd------------入力方法の選択・リスト表示レベルの設定。
          in 0:getch()..ESCusable,1:getc(stdin)..ESC disable
            cmis-d<stdin filenameの形で起動時に指定する。
          out 0:listout,1:listnop,2:dsnap

:step--------------hitanykey/escに続いてどれかのキーで次のステップに進む。
          ここでESCキーを押すことによりその実行を一時中断することが
          できる。
          ESCキーが押されると処理系はcont? y/n/:と表示し操作員
          yとキーインすると一時中断をやめ実行を再開する。
          nとキーインすると中断中のコマンドを現時で強制終了させる。
          :とキーインするとコマンドの実行を受付可能状態にする。
          (?-ゴールと:rmis/:vmisコマンドは不可)
          ここでもし:sysとキーインすると受付可能状態から抜け出す。
          ここで再び別のまたは同じコマンドをキーインすると後のコマン
          ドの実行後、処理系は再度cont?y/n/:と表示し操作員からの
          選択キーインを待つところに戻る。

:copy f,t,d,a/b---実行メモリー中のデータ(ソース形)の編集コマンド群。
:move f,t,d,a/b  ここでは説明省略。prolog1.docの概略記述の方を参照のこと。
:delf,t

:lang-------------MISに与える言語Lを実行メモリーから言語Lメモリーに移す
          このときメモリー節約の為、若干の変形を施す。

:ex---------------MISに与える事実のうち予め与える分を実行メモリーから事実
          メモリーに移す。
          このときメモリー節約の為、若干の変形を施す。
          MISの実行中、MIS自身の機能として予め与えた分の事実を
          適用し終えた時点で更に新しい事実を与えることが出来るように
          なっている。

:rmis fid---------MISの駆動。
:vmis fid     当然、この前に言語Lや予めの分の事実を各メモリーに設定して
          おく必要あり。(fidの指定がないとき)
          但しfidがあれば:load fid.llと:lang及び:load fid.exと:exを
          事前自動実行。

:hexck------------各ホーン節と事例とのユニファイチェックと強弱評価。
          特定のホーン節番号を指定すればその節のみを評価。

:texu-------------真事例の導出に使われた仮説Lrm(k)の履歴表示。

:back-------------MISの矛盾点追跡アルゴリズムのみを駆動。
          但し、あるprologを実行しておく必要あり。
          なぜならば実行で得られるゴールヒストリを扱うものである。

:fine-------------指定されたホーン節でMISの精密化アルゴリズムのみを駆動。
          当然、この前に言語Lを言語Lメモリーに設定しておく必要あり。
          (:load ??.llと:lang <-??は言語L名を指定)

:szck-------------指定されたホーン節のサイズを計算する。
          また、USAGEチェックを行いその結果も表示する。
          事前に言語Lを言語Lメモリーに設定しておけば、言語Lによる
          USAGEチェックも行う。(:load ??.llと:lang)

:tack-------------指定された2つのホーン節のアトム重複チェックを行う。

:bltp xx,w/s------xxに指定したビルトイン述語(理論名辞)のアトムへの適用をwakeup
          またはsleepさせる為に処理系にwかsで指示する。

:dcg--------------DCG記法をprolog記法に変換する操作を実行メモリー上で行う

上記のうち:listや:newでxとあるのはh/l/e/cのいずれか一つを指定する。
ここでh/l/e/c各々の意味は次の通り。
          h------->ホーン節
          l------->MISの言語L
          e------->MISの事実
          c------->MISの仮説を含むLローm(k)

                               以   上