\chapter{PigNoseシステムの概要}
\label{sec:system-overall}
PigNoseの目的は，CafeOBJ言語で記述された仕様に対して
resolutionベースの検証エンジンとそれを用いたさまざまな
検証用コマンドを提供する事である．
特に次の２点についてはそれぞれに特化された機能が
提供されている：
\begin{itemize}
\item[(1)] ある仕様$M$が別の仕様$M'$と整合的であること($M'$ の全て
  の公理が仕様$M$でも成立すること)を判定する.

\item[(2)] ある仕様によって表されたシステムがある事前条件を満足してい
  るならば, 決して不整合な状態になったり予期しない振舞をすることがない,
  という安全性(safety)の検査を行うこと.
\end{itemize}
本書では(1)を\textbf{詳細化検証}, (2)を\textbf{安全性モデル検査
  }と呼ぶ. 

これらを実現するため, PigNoseは次のような拡張をCafeOBJ処理系に対し
て施した：
\begin{itemize}
\item[(a)] 多ソートの一階述語論理文による公理の記述を可能とし, 
\item[(b)] その上での自動定理証明機構を提供する.
\end{itemize}
(a)項はCafeOBJ言語に対する拡張と見る事も出来るがPigNoseの本来的な意図
はそこには無い．利用者の便を図ってより表現能力の高い枠組みを提供する
ものである．
% 従来のCafeOBJ言語で書かれた等式仕様に対して, なんら
% 変更を施す事無くPigNoseシステムの機能を利用することができる. 
% PigNoseはCafeOBJインタプリタに新たに導入された検証用ツールである．

(b)項の自動定理証明機構は, 等号を含む多ソート一階述語論理系を対象とし, 
resolution 原理\cite{chang-lee}をベースとした反駁エンジンとして実現さ
れている. 
反駁エンジンは独立した定理証明システムとして利用する事が可能である.
これを用いる事によって, 利用者はCafeOBJで記述された仕様に対し
てさまざまな検査を簡便に実行することが出来る. 
反駁エンジン自体は, 既に良く知られた自動定理証明器
\textsc{Otter}~\cite{otter}を参考にしてその機能が設計された.
エンジンの中核部分の機能は基本的に\textsc{Otter} のサブセットと
なっており，従来のCafeOBJの枠組みで記述された仕様に対して何の変更も加
えることなしに定理証明が行えるように実現されている.

% 以上述べた事柄を反映し, PigNose は次の3つのサブシステムから構成されてい
% る：
% \begin{enumerate}
% \item 反駁エンジン
% \item 詳細化検証システム
% \item モデル検査システム
% \end{enumerate}
% 詳細化検証/モデル検査各システムを使用する際, 反駁エンジンに関しての理解
% が必要である. 
以下では最初に反駁エンジンについて説明し，
ついで詳細化検証およびモデル検査といった目的に特化された
各システムの使用方法を説明する.

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
