近年,帰納論理プログラミングと呼ばれる分野が注目を集めている。これは,機械学習と論理プログラミングを結ぶ研究であり,論理プログラムの形式で記述された例と背景知識から,目標とする概念を定義する述語を導くという枠組を用いる。この分野では,従来の論理プログラミングや帰納推論の研究の様々な成果を受け継ぎながら,理論的基礎から応用まで幅広く研究が行われている. 本稿では論理プログラミングと帰納推論に関する初歩的知識を前提として,帰納論理プログラミングについて,特に論理プログラムの帰納的一般化に関する研究を中心に紹介する.
近年,ガーベッジコレクション機能を持ち,高可搬性を持たせるために中間言語としてC言語を採用した言語が多く開発されている.中間言語のコンパイラの最適化の利点を失わず,しかも,中間言語との相互呼び出しを容易に行うためには,中間言語のスタックやレジスタ上のポインタの管理方法に依存しないガーベッジコレクション手法を必要とする.すなわち,スタックやレジスタ上の値の中からポインタとおぼしきものを見つけ出し,それらをあいまいなルートとして領域の回収を行う必要がある. 本論文では,あいまいなルートを持つジェネレーションスキャベンジング手法について述べる.本手法は,オブジェクトテーブルを導入し,スタックやレジスタ上のポインタの管理方法に依存せず,ジェネレーションスキャベンジングを行うものである.実行効率がよく中断時間が短いというジェネレーションスキャベンジングの特徴を受け継いでいる.オブジェクトテーブルを導入することにより,(1)領域のコンパクションが可能である,(2)ポインタをオブジェクト単位で高速に見つけ出すことができる,という利点を持つ.逆に,(1)オブジェクトテーブルを回収する必要がある,(2)実行時に間接参照のオーバヘッドがある,という欠点を持つ.本手法では,オブジェクトテーブルを2つの世代に分けることにより,前者の欠点を解消している. 我々は,SPiCEと呼ぶSmalltalkコードをCコードに変換するシステムに本手法を組み込み,その性能を計測した.間接参照のオーバヘッドを含む本手法のオーバヘッドは9%以内であった.
構造化分析手法では,データフロー図(DFD)を段階的に詳細化して要求分析する.我々は,これまでに,データストアと内部データフローを考慮したプロセス分解代数を提案し,これを用いてDFDの段階的詳細化作業を定式化している.このプロセス分解代数は,DFDの入出力記号の依存関係から,「抽象化バランスが均等なDFD」を得るための文の変換系である.本稿では,このプロセス分解代数により得られるDFDに対して形式的定義を与え,その性質について理論的考察を加える.特に,(1)提案したプロセス分解代数におけるオペレータを用いると,必ず正規文と呼ぶ「抽象化バランスが均等なDFD」を表現する文が得られる,(2)得られる可能性のある正規文の集合において,一意に定まる代表元が存在し,この正規文の集合の要素から代表元に変換する手続きが与えらる,ことを証明して,変換結果の一意性,すなわち,プロセス分解代数によりDFDが一意に定められることを示す.また,任意の正規文から代表元を求める効率的な計算方法について議論する.さらに,2つの変換結果の合成が可能であり,既存の変換結果を再利用できることを示す.
私は初めて海外の学会に参加した際,親切な先輩から,入国審査のときに入国目的は"business"ではなく"sight seeing"と答えた方がよいと教わった.学生風の格好で"business"と答えると,あれこれ聞かれるから,というのが理由である。そういうわけで今回カナダのバンクーバーで開催された1992年度のOOPSLAに参加した際も,私はバンクーバーの入国審査で"sight seeing"と答えた.すると入国審査官はじろりと私を見て,「00PSLAじゃないの?」と言ってきた.仕方がないので,そうだ,と答えると,その女性の審査官はぴしゃりと「OOPSLAはbusinessよ」と言ってスタンプを押してくれた.