平成8年度 委託研究ソフトウェアの 成果ソフトウェア

(3) KL1 プログラム開発支援ツール

研究代表者:上田和紀 教授
      早稲田大学理工学部情報学科


kima - Analyzer of Ill-moded KL1 Programs

Version 1.0
April 1997

上田 和紀、長 健太
早稲田大学理工学部情報学科
ueda@ueda.info.waseda.ac.jp

Copyright (C) 1997 上田 和紀、長 健太

概要:

kimaは、モードづけできない(ill-modedな)プログラムの、モード誤り(mode error)を、文献[4]の方法で解析するツールである。kimaを用いてモード誤り を特定することで、KL1プログラムの通信プロトコルの誤りを、静的に検出す ることができる。

kimaは、モード誤りを、モード制約の矛盾する極小部分集合として特定する。 モード誤りに対応する極小部分集合、およびそれに含まれる各制約がプログラ ム中のどのシンボルからどの規則によって得られたものであるかを表示するこ とで、プログラマのバグ発見を速くかつ容易にする。

可能な場合は、さらに、極小部分集合中のもっとも“疑わしい”制約と、モー ド矛盾を解消するようなプログラムの修正案を提示する。

kimaは、モード宣言などの、解析対象のKL1プログラム以外の入力は必要とし ない。

kimaは2つのプログラムで構成されている。一つはモード制約生成系 (klint101)でもう一つはモード制約解析系(kima2)である。モード制約生成系 は、KL1プログラムが構文的に課するモード制約を生成する。モード制約解析 系は、モード制約が全体として矛盾する場合、その矛盾する極小部分集合を見 つけ、さらに可能な場合、その中から誤りの真の原因と思われるモード制約と それを課した記号に対する修正案を提示する。

kimaが依拠している並行論理/制約プログラミングの強モード体系については 文献[1]を参照してほしい。モード解析の概要は文献[2]に述べられている。

インストール:

klint101およびkima2は完全にKL1で書かれ、KLICでコンパイルできる。これら を作成するにはMakefileを使用すればよい。kimaはシェルスクリプトとして定 義してある。

ファイル:

未サポート機能:

  1. マクロ展開機能。将来、klic処理系が、Cコンパイラの -E オプションに 対応する機能を提供した段階でサポートしたい。
  2. 'inline' 機能。
  3. 組込述語のいくつか。
バグ:

  1. 組込述語と名前が一致している述語の呼出しは、その述語のモジュール名 が明記してあっても、すべて組込述語の呼出しと見なされてしまう。改訂版で は修正の予定。
  2. 'arg', 'setarg', 'vector_element', 'set_vector_element' は、構造体 全体とその要素とのモードの整合性を検査していない。これも改訂版で修正の 予定。
  3. 3回以上出現する変数にかかわるモード制約で、単純な制約に簡約化でき なかったものの充足可能性は検査していない。
参考文献:

[1] Ueda, K. and Morita, M., Moded Flat GHC and Its Message-Oriented Implementation Technique. New Generation Computing, Vol.13, No.1 (1994), pp.3-43.
[2] Ueda, K., I/O Mode Analysis in Concurrent Logic Programming. In Theory and Practice of Parallel Programming, LNCS 907, Springer, 1995, pp.356-368.
[3] Ueda, K., Experiences with Strong Moding in Concurrent Logic/Constraint Programming. In Proc. Int. Workshop on Parallel Symbolic Languages and Systems (PSLS'95), T. Ito, R.H. Halstead, Jr., and C. Queinnec (eds.), LNCS 1068, Springer, 1996, pp.134-153.
[4] Cho, K. and Ueda, K., Diagnosing Non-Well-Moded Concurrent Logic Programs. In Proc. 1996 Joint International Conference and Symposium on Logic Programming (JICSLP'96), M. Maher (ed.), The MIT Press, 1996, pp.215-229.

[FTP]


www-admin@icot.or.jp