JPH06348485A - 論理型プログラム比較装置 - Google Patents

論理型プログラム比較装置

Info

Publication number
JPH06348485A
JPH06348485A JP7356394A JP7356394A JPH06348485A JP H06348485 A JPH06348485 A JP H06348485A JP 7356394 A JP7356394 A JP 7356394A JP 7356394 A JP7356394 A JP 7356394A JP H06348485 A JPH06348485 A JP H06348485A
Authority
JP
Japan
Prior art keywords
program
comparison
input
procedure
logical
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.)
Granted
Application number
JP7356394A
Other languages
English (en)
Other versions
JP3582849B2 (ja
Inventor
Gabori Pieeru
ピエール・ガボリ
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP07356394A priority Critical patent/JP3582849B2/ja
Publication of JPH06348485A publication Critical patent/JPH06348485A/ja
Application granted granted Critical
Publication of JP3582849B2 publication Critical patent/JP3582849B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 パラメータによる表示を含む論理型プログラ
ムについても比較による妥当性検証が可能で、しかも、
このような検証を効率的に実現する、優れた論理型プロ
グラム比較装置を提供する。 【構成】 キーボード1及び入力部4から2つの論理型
プログラムを入力する。変換部5が、前記各論理型プロ
グラムを有限状態機械に基づいた第1及び第2の記述に
変換する。比較部6が、前記各記述間における各状態・
各入力値・各出力値の所定の等価関係に基づいて、全て
の等価な前記状態における全ての等価な前記入力に対し
て、前記各記述が等価な前記出力を生ずるか否かを比較
する。出力部7及び表示装置2を通じて、前記比較の結
果を出力する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、双方が論理型プログラ
ムの形式で表現された、システム仕様及びその仕様を具
体化した実システムについて、両者を比較することによ
って、実システムの妥当性を検証する装置に関するもの
である。
【0002】
【従来の技術】コンピュータ・システムなど、ハードウ
ェアやソフトウェアを含む各種システムは、一般に、ま
ずその仕様が決定され、この仕様が実システムとして具
体化される。ここで、「仕様」とは、システム設計者が
具体化の際に満足すべきと考える条件を記述したもので
あり、一般に、曖昧さを残さずに記述されるが読みやす
い。一方、この仕様の内容がソフトウェアやハードウェ
ア上に具体化されたものが実システムであり、実システ
ムの設計は、ソフトウェア的構成単位やハードウェア的
構成単位による問題解決の手法が、その詳細に至るまで
完全に表現できるような形式によって行われる。
【0003】そして、このようなシステム設計において
「検証」とは、実システムを分析し、仕様の全ての部分
が実システムによって満足されているか否かを決定する
ことを意味する。そして、検証は、設計者の意図する所
期の効果を奏するシステムを誤りなく実現する上で、不
可欠な作業である。
【0004】そして、システムをハードウェア的に又は
ソフトウェア的に具体化する開発過程においても、開発
されつつある実システムが、仕様の全ての部分を充足す
るか否かをできるかぎり確認することが望ましい。この
ような開発過程における検証は、システムの信頼性を向
上させ、作業工程の後戻りを最小限にするために、極め
て効果的である。
【0005】仕様で記述された要件を全て満足している
実システムは、仕様を満足していると言われ、近年のシ
ステムの大規模・複雑化という現況において、仕様の満
足を確保することは、システム開発での極めて重要な課
題に位置付けられている。
【0006】このような仕様の記述形式としては各種の
ものが知られており、検証の対象となる要件の種類に応
じて、様々な形式の仕様が設計者によって用いられてい
る。例えば、通信プロトコルのような非同期式システム
については、各イベントのタイミングに基づいて条件を
表現する仕様が適しており、このような目的に対応した
仕様記述言語を用いることが適している。このような言
語の代表的なものは、例えば時相論理である。また、多
くのハードウェアが属する同期式システムについては、
ハードウェア的又はソフトウェア的構成要素を単位と考
え、これら構成要素の入出力の関連に基づいて条件を表
現する仕様が適している。本発明は、入出力に基づいて
システムの妥当性を検証するものであり、後者が主な適
用対象である。
【0007】ある実システムにおけるこのような出力の
妥当性を、所定の仕様に基づいて検証する手法の一つと
しては、次のようなものが知られている。すなわち、実
システムの内容とその仕様の双方を、有限状態機械(fin
ite state machine(FSM)) に基づいた表現形式(以下、
単に「FSM」という。)に翻訳し、その上でこれら2
つのFSMを比較する手法である。FSMに翻訳すれ
ば、仕様と実システムとの間に生じ得る文法上の相違、
例えば、変数名などの相違が除去されるので、仕様と実
システムの意味内容が共通の表現として提供される結果
となり、両者の比較が容易なものとなる。
【0008】このFSMは、それ自体、ブール式を用い
て表現することが可能であるが、FSMはしばしば非常
に大規模化する。このため、ブール式による表現は、さ
らに、二分岐決定ダイヤグラム(binary decision diagr
ams(BDDs))によって表される場合もある。この二分岐決
定ダイヤグラムは、FSMの内容を表すのみならず、組
織化されたアルゴリズムの集合を提供するもので、この
アルゴリズムは、大規模なブール式についても高速な処
理を実現できるという利点を有する。
【0009】そして、2つのFSMを比較するために
は、FSMが基礎としている2つの有限状態機械が、同
数の状態を有すると仮定することが一般的である。さら
に、2つのFSMの比較を有意義なものとするために、
2つの有限状態機械が受け付ける入力の範囲も同一と仮
定される。
【0010】2つのFSMモデルの比較では、具体的に
は、有限状態機械の各状態において、2つの有限状態機
械が、同一の入力に対して同一の出力を生成するか否か
を検証する必要がある。この場合、2つの機械はそれぞ
れの初期状態からスタートすることになる。すなわち、
2つの機械のあるカレント(現在の)状態が初期状態と
され、まず、このカレント状態について、2つの機械の
相互に対応する出力が、あり得る全ての入力に対して同
一か否かがチェックされる。この手順は、カレント状態
から直接間接に到達可能な全ての状態に対して繰り返し
実行され、全ての到達可能な状態がチェックされ尽くせ
ば、2つのFSM全体の同一性を判定することができ
る。
【0011】
【発明が解決しようとする課題】ところで、上記のよう
なBDDに基づいたFSMモデル同士の比較は、コンピ
ュータ上で非常に迅速に実行することができる。しかし
ながら、この手法で用いられるBDD自体の表現力は必
ずしも豊かなものではなく、また、BDDによる表現
は、各状態によって構成される状態空間内のパターンを
直接利用して作成することができなかった。このため、
いかに緻密なBDD表現を用いることができるか否か
は、ブール式中のパターンを発見するユーザの能力に左
右されざるを得なかった。さらに、BDD表現の効率
は、ブール式中で生じる変数の順序に大きく影響される
が、変数の理想的な順序を決定することも極めて困難で
あった。このため、FSMを用いた従来の手法では、効
率的な妥当性の確認が困難であった。
【0012】また、従来のFSMモデルに基づいた検証
手法には、厳密に限定されている(finite: 有限な)状
態機械(state machines)の比較しか行えないという欠点
が存在していた。すなわち、実際のシステムの妥当性検
証では、パラメータで表示された仕様や実システムを取
り扱うことが望まれる場合も多い。しかし、そのような
場合は、システムの構成の一部が不特定な変数として残
されているため、従来の手法による検証は困難であっ
た。例えば、スタックを用いる実システムをスタックを
用いる仕様と比較する場合には、スタックの内容の詳細
は不特定なパラメータとして残されていることが考えら
れる。従来の手法では、このような場合の妥当性検証は
困難であった。
【0013】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、パラ
メータによる表示を含む論理型プログラムについても比
較による妥当性検証が可能な論理型プログラム比較装置
を提供することである。
【0014】また、本発明の他の目的は、検証に適した
規則性にしたがって構成された規範的なFSMを得るこ
とができる論理型プログラム比較装置を提供することで
ある。また、本発明の他の目的は、プログラムに基づい
て各データ型を決定する煩雑な手数を省くことができる
論理型プログラム比較装置を提供することである。ま
た、本発明の他の目的は、より多様な装置の比較が可能
で、また、比較全体を迅速・効率的に行う論理型プログ
ラム比較装置を提供することである。また、本発明の他
の目的は、状態の内部表現が相違する有限状態機械同士
を比較することができる論理型プログラム比較装置を提
供することである。また、本発明の他の目的は、従来の
手法と比べてより高度の抽象が可能な論理型プログラム
比較装置を提供することである。また、本発明の目的
は、検証を効率的に実現する論理型プログラム比較装置
を提供することである。
【0015】
【課題を解決するための手段】上記の目的を達するた
め、請求項1の論理型プログラム比較装置は、2つの論
理型プログラムを入力する入力手段と、前記各論理型プ
ログラムを有限状態機械に基づいた第1及び第2の記述
に変換する変換手段と、前記各記述間における各状態・
各入力値・各出力値の所定の等価関係に基づいて、全て
の等価な前記状態における全ての等価な前記入力に対し
て、前記各記述が等価な前記出力を生ずるか否かを比較
する比較手段と、前記比較の結果を出力する出力手段
と、を有することを特徴とする。
【0016】また、請求項2の発明は、請求項1記載の
論理型プログラム比較装置において、前記変換手段は、
前記各プログラムにそれぞれ含まれるデータ型を獲得
し、前記各プログラムを完備形式に変換し、各プログラ
ム中の手続呼出を手続ボディに展開し、これら手続ボデ
ィを一定の変数順序にしたがって順列させ、プログラム
中の各表現を固有のコードによって置き換える事によっ
て前記変換を行うように構成されたことを特徴とする。
【0017】また、請求項3の発明は、請求項2記載の
論理型プログラム比較装置において、前記変換手段は、
前記各プログラムに静的解析を適用することによって前
記データ型を獲得するように構成されたことを特徴とす
る。
【0018】また、請求項4の発明は、請求項2記載の
論理型プログラム比較装置において、前記変換手段は、
再帰的手続に係る前記手続ボディを、反復的表現に対す
る再帰的呼出を除いて、有限状態機械に基づいた前記記
述にマッピングするように構成されたことを特徴とす
る。
【0019】また、請求項5の発明は、請求項1記載の
論理型プログラム比較装置において、前記入力手段は、
前記変換の内容を制限する汎化質問をプログラムの一部
として入力するように構成され、前記変換手段は、前記
汎化質問に基づいて前記変換を行うように構成されたこ
とを特徴とする。
【0020】また、請求項6の発明は、前記変換手段
は、各プログラム中の手続呼出を前記のように手続ボデ
ィに展開した後、再帰的手続の手続ボディを、反復的表
現に対する再帰的呼出を除いてFSMにマッピングする
ように構成されたことを特徴とするまた、請求項5の発
明は、請求項1記載の論理型プログラム比較装置におい
て、前記比較手段は、制約解決器を用いて前記比較を行
うように構成され、この制約解決器は、前記各記述にお
いて入力・出力・状態の表す各項に固有の制約変数を割
り当て、相互に対応する前記制約変数間に非等価関係の
連言(論理積)を設定し、一方の前記記述の項の制約変
数における選言(論理和)を並べ換えた各再配列が、他
方の前記記述の前記項に対応する対応項の制約変数に対
して等価のときに、前記再配列及び前記対応項の対応す
る同一位置において生じる各制約変数間に等価関係を設
定し、前記非等価関係の連言及び前記等価関係の連言の
選言を制約として等価性を確認するように構成されたこ
とを特徴とする。
【0021】、制約解決器を用いて前記比較を行うよう
に構成されたことを特徴とする。
【0022】また、請求項7の発明は、請求項1記載の
論理型プログラム比較装置において、前記各論理型プロ
グラムは、確定節を組み合わせて記述され、各確定節
は、質問、ルール、事実のいずれかであることを特徴と
する。
【0023】
【作用】上記のような構成を有する本発明は、次のよう
な作用を有する。すなわち、請求項1の発明では、入力
手段から入力された2つの論理型プログラムが、変換手
段によって有限状態機械に基づいた第1及び第2の記述
に変換される。そして、比較手段が、前記各記述間にお
ける各状態・各入力値・各出力値の所定の等価関係に基
づいて、全ての等価な前記状態における全ての等価な前
記入力に対して、前記各記述が等価な前記出力を生ずる
か否かを比較し、出力手段が前記比較の結果を出力す
る。このように請求項1の発明によれば、等価関係は、
厳密な等価関係である必要はなく、所定の関係であれば
足りるので、パラメータによる表示を含む論理型プログ
ラムの比較による妥当性検証が可能になる。
【0024】また、請求項2の発明では、前記変換手段
は、前記各プログラムにそれぞれ含まれるデータ型を獲
得し、前記各プログラムを完備形式に変換し、各プログ
ラム中の手続呼出を手続ボディに展開し、これら手続ボ
ディを一定の変数順序にしたがって順列させ、プログラ
ム中の各表現を固有のコードによって置き換える。この
ように、請求項2の発明によれば、検証に適した規則性
にしたがって構成された規範的なFSMを得ることがで
きるので、FSM同士の比較が容易になる。
【0025】また、請求項3の発明では、前記変換手段
は、各プログラムに静的解析を適用することによって前
記各データ型を獲得するので、ユーザは、プログラムに
基づいて各データ型を決定する煩雑な手数を省くことが
できる。
【0026】また、請求項4の発明では、状態空間に存
在するパターンを活用できるので、より多様な装置の比
較が可能になり、また、比較全体の速度が向上する。
【0027】また、請求項5の発明では、汎化質問によ
って比較の対象となる変換内容が制限されるので、比較
を効率的に行うことができる。
【0028】また、請求項6の発明では、前記比較手段
は、前記各記述において入力・出力・状態の表す各項に
固有の制約変数を割り当て、相互に対応する前記制約変
数間に非等価関係の連言を設定し、一方の前記記述の項
の制約変数における選言を並べ換えた各再配列が、他方
の前記記述の前記項に対応する対応項の制約変数に対し
て等価のときに、前記再配列及び前記対応項の対応する
同一位置において生じる各制約変数間に等価関係を設定
し、前記非等価関係の連言及び前記等価関係の連言の選
言を制約として等価性を確認する制約解決器を用いて前
記比較を行う。したがって、請求項6の発明では、状態
の内部表現が相違する有限状態機械同士を比較すること
ができる。
【0029】また、請求項7の発明では、仕様言語によ
って多相性を直接表現できるので、従来の手法と比べ
て、より高度の抽象が可能である。
【0030】
【実施例】次に、本発明の実施例である論理型プログラ
ム比較装置(以下「本装置」という)について、図面に
従って具体的に説明する。
【0031】本実施例の目的は、本発明は、上記のよう
な従来技術の問題点を解決するために提案されたもの
で、その目的は、パラメータによる表示を含む論理型プ
ログラムについても比較による妥当性検証が可能な論理
型プログラム比較装置を提供することである。
【0032】また、本実施例の他の目的は、検証に適し
た規則性にしたがって構成された規範的なFSMを得る
ことができる論理型プログラム比較装置を提供すること
である。また、本実施例の他の目的は、プログラムに基
づいて各データ型を決定する煩雑な手数を省くことがで
きる論理型プログラム比較装置を提供することである。
また、本実施例の他の目的は、より多様な装置の比較が
可能で、また、比較全体を迅速・効率的に行う論理型プ
ログラム比較装置を提供することである。また、本実施
例の他の目的は、状態の内部表現が相違する有限状態機
械同士を比較することができる論理型プログラム比較装
置を提供することである。また、本実施例の他の目的
は、従来の手法と比べてより高度の抽象が可能な論理型
プログラム比較装置を提供することである。また、本実
施例の目的は、検証を効率的に実現する論理型プログラ
ム比較装置を提供することである。
【0033】そして、本装置はコンピュータ上に実現さ
れるもので、本装置の各機能は、プログラムとして格納
された所定の手順で前記コンピュータを動作させること
によって実現されている。したがって、以下、本装置の
各機能を有する仮想的回路ブロック(手段)を想定して
本装置を説明する。
【0034】なお、前記コンピュータは、一般には、C
PU(中央演算処理装置)と、RAM(随時書込読出型
記憶素子)からなる主記憶装置とを有する。また、前記
コンピュータの規模は自由であり、マイクロコンピュー
タ・パーソナルコンピュータ・スモールコンピュータ・
ワークステーション・メインフレームなど、いかなる規
模のものを用いてもよい。
【0035】また、前記コンピュータのハードウェア
は、典型的には、キーボードやマウスなどの入力装置
と、ハードディスク装置などの外部記憶装置と、CRT
表示装置やプリンタ印字装置などの出力装置と、必要な
入出力制御回路を含む。
【0036】但し、前記コンピュータのハードウェア構
成は自由であり、本発明が実施できる限り、上記の構成
要素の一部を追加・変更・除外してもよい。例えば、本
装置は、複数のコンピュータを接続したコンピュータネ
ットワーク上に実現してもよい。また、CPUの種類は
自由であり、CPUを複数同時に用いたり、単一のCP
Uをタイムシェアリング(時分割)で使用し、複数の処
理を同時平行的に行ってもよい。また、入力装置とし
て、他の装置、例えば、タッチパネル・ライトペン・ト
ラックボールなどのポインティングデバイスや、デジタ
イザ・イメージ読取装置やビデオカメラなどの画像入力
装置・音声識別装置・各種センサを用いてもよい。ま
た、外部記憶装置として、他の装置、例えば、フロッピ
ーディスク装置・RAMカード装置・磁気テープ装置・
光学ディスク装置・光磁気ディスク装置・バブルメモリ
装置・フラッシュメモリなどを用いてもよい。また、出
力装置として、他の装置、例えば、液晶表示装置・プラ
ズマディスプレイ装置・ビデオプロジェクター・LED
表示装置・音響発生回路・音声合成回路を用いてもよ
い。
【0037】また、前記コンピュータにおいて本装置を
実現するためのソフトウェアの構成としては、典型的に
は、本装置の各機能を実現するためのアプリケーション
プログラムが、OS(オペレーティングシステム)上で
実行される態様が考えられる。また、本装置を実現する
ためのプログラムの態様としては、典型的には、高級言
語やアセンブラからコンパイル(翻訳)された機械語が
考えられる。但し、前記コンピュータのソフトウェア構
成も自由であり、本発明が実施できる限り、ソフトウェ
ア構成を変更してもよい。例えば、必ずしもOSを用い
る必要はなく、また、プログラムの表現形式も自由であ
り、BASICのようなインタプリタ(逐次解釈実行
型)言語を用いてもよい。
【0038】また、プログラムの格納態様も自由であ
り、ROM(読出し専用メモリ)に格納しておいてもよ
く、また、ハードディスク装置のような外部記憶装置に
格納しておき、コンピュータの起動時や処理の開始時に
主メモリ上にロード(読み込み)してもよい。また、プ
ログラムを複数の部分に分割して外部記憶装置に格納し
ておき、処理内容に応じて必要なモジュールのみを随時
主メモリ上にロード(読み込み)してもよい。さらに、
プログラムの部分ごとに異なった態様で格納してもよ
い。
【0039】なお、本明細書における各「手段」は、本
装置の各機能に対応する概念的なもので、必ずしも特定
のハードウェアやソフトウェア・ルーチンとの1対1対
応関係を意味しない。例えば、同一のハードウェア要素
が、場合によって異なった手段を構成する。また、一つ
の手段が、わずか1命令によって実現される場合もあれ
ば、多数の命令によって実現される場合もある。
【0040】また、本実施例における各手順の各ステッ
プは、その性質に反しない限り、実行順序を変更し、複
数同時に実行し、また、実行ごとに異なった順序で実行
してもよい。このような順序の変更は、例えば、ユーザ
が実行可能な処理を選択するなどメニュー形式のインタ
ーフェース手法によって実現することができる。
【0041】また、本明細書において「入力」というと
きは、本来の情報の入力のみならず、情報の入力と密接
に関連する他の処理を含む。このような処理は、例え
ば、入力内容を確認のため出力装置へ出力(エコーバッ
ク)したり、入力内容の修正・編集である。また、本明
細書における「出力」は、本来の情報の出力のみなら
ず、情報の出力と密接に関連する他の処理を含む。この
ような処理は、例えば、出力すべき範囲の入力や、画面
スクロールの指示である。なお、対話型インタフェース
を用いて入力と出力を一体的操作によって実現してもよ
く、また、このような一体的操作によって「選択」、
「指定」、「特定」など、何らかの出力情報に基づいた
処理に適用し得る。
【0042】また、本明細書におけるデータ(情報)
は、やデータの格納手段は前記コンピュータ上において
いかなる態様で存在してもよい。例えば、データのハー
ドウェア上の所在部分は、主記憶装置・外部記憶装置・
CPUのレジスタやキャッシュメモリなどいかなる部分
でもよい。また、データの保持態様も自由である。例え
ば、データは、ファイル形式で保持されるのみならず、
メモリやディスクなどの記憶装置を物理的アドレスで直
接アクセスすることによって実現してもよい。また、デ
ータの表現形式も自由である。例えば、文字列は、文字
単位のコードで格納しても単語単位のコードで格納して
もよい。また、データは必要とされる一定時間だけ保持
されれば十分で、その後消滅してもよく、保持時間の長
短は自由である。また、辞書データのように当面変更さ
れない情報は、ROMに格納してもよい。
【0043】また、本明細書において、特定の情報への
言及は確認的で、言及されない情報の存在を否定するも
のではない。すなわち、本発明の動作では、動作に必要
な一般的な情報、例えば、各種ポインタ、カウンタ、フ
ラグ、パラメータ、バッファなどが適宜用いられる。
【0044】本装置の各部分が処理に要する情報は、特
に記載がない場合、当該情報を保持している他の部分か
ら獲得される。このような情報の獲得は、例えば、当該
情報を格納している変数やメモリをアクセスすることに
よって実現することができる。なお、情報の消去・抹消
は、当該情報の内容自体を必ずしも記憶領域から現実に
削除せず、消去を表すフラグを設定するなど、情報の意
味付けの変更によって行うことができる。
【0045】また、本装置はコンピュータ上に実現され
ているが、本装置の機能の全部又は一部は専用の電子回
路上に実現してもよい。
【0046】1.実施例の構成…図1 本装置は、図1(本装置のブロック図)に示すように、
キーボード1と、表示装置2と、I/O制御回路3と、
キーボード1を通じての論理型プログラムの入力動作を
制御する入力部4とを有する。また、本装置は、各論理
型プログラムをFSMに変換する変換部5(前記変換手
段に相当するもの)と、2つのFSMを比較する比較部
6(前記比較手段に相当するもの)と、表示装置2を通
じての前記比較結果の出力動作を制御する出力部7とを
有する。なお、キーボード1、I/O制御回路3及び入
力部4は前記入力手段を構成し、出力部7、I/O制御
回路3及び表示装置2は前記出力手段を構成している。
【0047】2.実施例の作用…図2〜図17 上記のような構成を有する本装置における論理型プログ
ラムの比較は、次のように行われる。
【0048】2-1.論理型プログラムの入力 まず、ユーザは、キーボード1から、システムの仕様及
び実システムの内容を、論理型プログラムの形式で本装
置に入力する。なお、論理型プログラムは、一般に、論
理プログラミング言語によって記述され、この論理プロ
グラミング言語は、述語論理などの論理言語体系に基づ
いて構成される。本実施例における論理プログラミング
言語は、次のような述語論理を基礎とするものである。
【0049】2-1-1.述語論理 すなわち、ここでいう述語論理は、項の全体集合によっ
て定義されるものである。例えば、全体集合における項
tは、変数Vともなり得るし、また、0に関する(0項
の、即ち項目の数が0個の)関数記号f(以下、「定
数」という。)ともなり得るし、さらに、再帰的に構成
される項“f(t,・・・,t)”(但しn>0)
ともなり得る。この場合、fはnに関する(n項の、即
ち項目の数がn個の)関数記号であり、t,・・・,
は全体集合に含まれている項である。
【0050】なお、このような項は、語義どおりの存在
を意味するのに用いられる。例えば、定数“0”は、整
数のゼロの意味に用いることができる。また、二分岐関
数記号“node”は、二分岐ツリーにおいて、左に分
岐すればt、右に分岐すればtに到達するような、
ノード(t,t)を意味するのに用いることができ
る。
【0051】このような項の全体集合において要素間の
関係を表すには、原子論理式を用いる。すなわち、一つ
の原子論理式はnに関する述語記号pであり、n個の引
数をとる。但し、n=0の場合、その原子論理式は命題
と呼ばれ、単に“p”のように記述される。n=0でな
い場合、原子論理式は、t,・・・,tを項とすれ
ば、“p(t,・・・,t)”のように記述され
る。また、述語論理では、原子論理式A、又は、原子論
理式Aの否定
【数1】 のいずれともなり得るものとして、リテラルが定義され
る。
【0052】なお、述語論理における論理式は、次のよ
うな接続子を用いて構成される。
【数2】 ここで、上記接続子は、左から順にそれぞれ、否定、連
言、選言、含意、限定、一般的量化を表す。例えば、A
がリテラル、Vが変数、F及びFが論理式とした場
合、次のようなものも論理式となる。
【数3】 また、論理式のうち、一定の、そして通常は単純な書式
が「節」と呼ばれる。述語論理で用いられるセンテンス
(一連の文)は、このような節の集合として定義され、
これら節の結合として解釈される。
【0053】2-1-2.論理プログラミング言語 本実施例における論理プログラミング言語は、プロログ
(Prolog)の変形であり、上記のような論理言語の部分集
合である。すなわち、この部分集合は、上記述語論理の
うち、この部分集合によって記述されるような問題につ
いて、効率的な解決手順が存在するものである。このよ
うな述語論理の部分集合は、「確定節」として知られて
おり、確定節は、次の3つの書式の一つに限定された論
理式である。
【数4】 ここで、Hは原子論理式、Bは(空でない)リテラルの
連言、□は真の述語(すなわち、恒真である関係)、V
,・・・,Vは、HやBにおいて生じる変数であ
る。上記数式4における第1の書式は「質問」と呼ば
れ、第2の書式は「ルール」と呼ばれ、第3の書式3は
「事実」と称されている。
【0054】本実施例における論理型プログラムは、上
記のような確定節の集合によって構成されたセンテンス
である。そして、論理型プログラムでは、上記の「質
問」がそのプログラムによって解決されるべき課題を表
す。このような課題は、例えば、
【数5】 が偽であることの証明によって構成される。この例にお
ける証明は、すなわち、「Bが真」というような変数B
への代入の存在の証明を意味する。
【0055】以下の説明では、上記の論理プログラミン
グ言語を前提とし、プロログ文法に近い表記法によって
論理型プログラムを表す。すなわち、連言接続子はカン
マと共に(カンマを使用して)記述し、選言及び一般的
量化の記号は省略し、節の終りはピリオドで表す。ま
た、変数名は大文字から開始し、述語記号及び関数記号
は小文字又は数字から開始する。さらに、リストに関す
る便宜的表記法として、
【数6】[] は空のリストを、[t|t]は、最初の要素が項t
、最後の要素が項tであるようなリストを表し、ま
た、[t,・・・,t]は項のリストt,・・
・,tを表す。
【0056】ここで、上記「質問」と、スタックの操作
を定義する単純な論理型プログラムの一例を図2に示
す。この図では、1行目が「質問」になっており、2行
目から5行目は述語記号“stack”によって表され
る関係を定義している。この定義は再帰的であり、引数
1から5で与えられた複数の値のリストについて、各リ
ストが全て終了するまで所定の操作を繰り返す動作を表
している。なお、各リストにおける繰り返しは、ハード
ウェア・クロックの1サイクルを表し、また、述語記号
“stack”の6つ目の引数は値のスタックを表す。
【0057】また、図2において、6〜9行目は、述語
記号“stackBody”を定義する「事実」であ
り、述語記号“stack”の最初の5つの引数は、ス
タックに転送され又はスタックから転送される一連の値
を示すのに用いられるリストである。そして、述語記号
“stackBody”によって表現される関係は、ス
タック操作を表している。また、定数“nop”はアイ
ドリング・サイクルを意味し、“exec”は実行サイ
クルを意味する。さらに、定数“push”及び“po
p”は、それぞれ、スタックへの要素の積み上げ(プッ
シュ)又はスタックからの要素の取り出し(ポップ)を
起動する命令を表している。
【0058】また、定数“ok”及び“error”は
操作が有効であったか無効であったかを知らせる信号と
して用いられる。さらに、述語記号“stackBod
y”の3番目の引数は、プッシュ操作(7行目)におい
てスタックにプッシュされる要素を意味し、4番目の引
数は、正常なポップ操作(8行目)においてスタックか
らポップされる要素を意味する。また、6番目の引数は
操作前のスタックを意味し、7番目の引数は操作実行の
結果であるスタックを意味する。
【0059】このような論理型プログラムの「質問」
(1行目)は、当該論理型プログラムが解決しようとす
る問題の論述を表し、具体的には、当該質問における原
子論理式が真になるような出力信号“O”及びエラー信
号“E”の値を決定することを意味している。この例で
は、質問に対して無数の解の候補が存在する。すなわ
ち、t,t及びtが任意の項とした場合、“O”
は値[t,t,a,t]を取ることができ、ま
た、“E”は値[ok,ok,ok,error]を取
ることができる。
【0060】2-1-3.質問の解決 なお、このような質問の解は、接続子“←”の右辺の原
子論理式を手続呼出と考えることで得ることができる。
この場合、接続子“←”の左辺に位置し、前記手続呼出
と同じ述語記号及び(多ソート代数にいう)アリティを
有する節の集合が手続定義に相当する。このような質問
の解決では、最初の質問Qから、原子論理式A(但しA
≠□)が選択されて除去され、Q´が残る。その後、手
続呼出とみなされる原子論理式Aは、対応するものが発
見されるまで、手続の連言の節における左辺の原子論理
式と比較される。この比較において、2つの原子論理式
は、両原子論理式中の変数について、両者が等しくなる
ような置換候補が存在するとき、適合するとされる。こ
のような適合対象を求める手続をマッチングという。
【0061】例えば、変数の置換候補の集合θによって
がAに適合するような節“A←B”を仮定した場
合、
【数7】 に置換候補θを適用した結果が新たな「質問」として扱
われ、この質問に上記のようなマッチング処理が再帰的
に適用されれば、質問Qを解決することができる。この
処理は、上記のように新たに発生した中間的質問が、□
のみによって構成された状態に到達したときに終了す
る。質問に対する解は、最初の質問Qに、上記のような
全ての置換候補を適用することによって導かれる。
【0062】なお、上記のように発生する中間的質問の
解決中に、選択されたある質問に適合する節が存在せ
ず、解決に「行き詰まった」場合、バックトラッキング
(後戻り)が開始される。バックトラッキングによれ
ば、「質問」の解決のために、上記のような「適合」の
条件を満たす他の節を探索することができる。なお、こ
の場合、他の節の探索に先立って、上記のような行き詰
まりに至るまでに生成された変数の置換候補は、全て消
去される。
【0063】論理型プログラムにおいては、上記のよう
に、最初の質問が、特定の質問に対する論理型プログラ
ム解決システムの答えを求めることを意味している(例
えば、図2における質問は、出力信号O及びエラー信号
Eについて、質問の記述内容を満たすような値を要求し
ている。)。そして、本実施例における検証手続の目的
は、2つの論理型プログラム(すなわち仕様及び実シス
テム)が、あり得る全ての質問に対して同一の動作を提
供するか否かを決定することである。
【0064】ここで、論理プログラムとしては多様な質
問がありうるが、仕様記述として意味があるのはその一
部である。例えば、図2に示したようなハードウェアス
タックの記述について、たとえば、出力値およびエラー
信号を与えて、入力信号や制御、モードを逆算するよう
なことは論理型プログラムとしては計算可能だが、仕様
記述としては必要はない。
【0065】本実施例の仕様言語によれば、多相性を直
接表現できるので、従来の手法と比べて、より高度の抽
象が可能である。
【0066】2-1-4.汎化質問 そして、このように現実の動作において考えられる、よ
り少ない質問の集合についてのみ2つの論理型プログラ
ムを比較すれば、検証所要時間は大幅に短縮することが
できる。そこで、このような少ない質問の集合を、「汎
化質問」という概念によって表現することとする。この
汎化質問は、プログラムの一部として入力され、環境宣
言部及びインターフェイスという2つの部分から構成さ
れる。このうちインターフェイスは、検証対象となる構
成要素における対外入出力ポートを定義する。この場
合、妥当性の検証は、インターフェイスに現れる振る舞
いに関して行われ、当該構成要素における内部構造の詳
細は重要でないものとして無視することができる。ま
た、環境宣言部は、検証対象となる構成要素において、
通常の動作において現れる得る入力値の集合を特定する
役割を果たす。
【0067】図3は、汎化質問(1行目)を、環境定義
の補助に必要ないくつかの追加的な節と共に示してい
る。最初の4つのアトム(記述単位)は、汎化質問の環
境宣言部を構成している。これらのアトムは、プログラ
ム実行中にスタックへの入力が持ち得る値のデータ型を
定義している。また、汎化質問の5番目のアトムは、イ
ンターフェイスを定義しており、この例におけるインタ
ーフェイスは、スタックへのインターフェイスによって
構成されている。
【0068】2-2.論理型プログラムのFSMへの変換 2-2-1.静的解析によるデータ型の獲得 入力された論理型プログラムは変換部5に転送され、静
的解析によって、論理型プログラム実行中における変数
のデータ型が決定される(参考文献:MauriceBruynoogh
e and Gerda Janssens. An instance of abstract inte
rpretation integrating type and mode inferencing.
In The MIT Press, editor, Logic Programming: Fifth
International Conference and Symposium, pp. 669-6
83. IEEE, August 1988.)。すなわち、静的解析によれ
ば、各種最適化に有用な情報を提供できるので、本実施
例では、ユーザに必要な情報を問い合わせることなく、
静的解析を用いている。
【0069】ここで、論理型プログラムにおいて、デー
タ型は、論理型プログラムで用いられる変数がプログラ
ム実行中に値として取り得る項の集合を表現したもので
ある。すなわち、データ型は、“τ→{u,・・・,
}”のような書式規則の集合によって定義される。
ここで、τはデータ型を意味するデータ型変数であり、
,・・・,uはデータ型の項である。データ型の
項は、原則的には通常の論理項と同様に構成されるが、
変数としては、通常の論理変数の代りにデータ型変数が
用いられる。また、あり得る全ての項を表す特殊なデー
タ型は“Φ”と表され、この場合、どのデータ型τにつ
いても次の関係が成立する。
【0070】
【数8】
【0071】図3に示す汎化質問に静的解析を適用する
と、その結果として図4に示すようなデータ型規則集合
が得られる。また、実行中の変数のデータ型は図5及び
6に示すような内容となる。このうち図5は手続の入口
(エントリ)におけるデータ型であり、図6は手続の出
口におけるデータ型である。なお、汎化質問の環境宣言
部におけるこれら呼出の型は、静的解析に続く以下の手
順においては無視され、参照されることはない。これら
の解析結果は、論理型プログラムのFSMへの変換にお
いて用いられる。
【0072】2-2-2.FSM 続いて、各論理型プログラムは、比較のために(比較の
基準となる)規範的FSMに変換される。ここで、図7
は、FSMの基礎となる有限状態機械の全体構成を示す
概念図であり、入力ポートI、出力ポートO、遷移関数
f及び状態レジスタRを示している。すなわち、FSM
では、遷移関数fが、現在の状態S及び現在における入
力ポートIからの入力を取得し、出力ポートOからの出
力及び次の状態NSを演算する。そして、状態レジスタ
Rは、現在のサイクル実行中は次の状態NSを格納し、
この次の状態NSは次のサイクルにおける状態として用
いられる。
【0073】上記のような次状態への遷移関数を規範的
表現において用いることによって、2つのFSMの比較
における問題が単純化なものとなる。すなわち、f
びfをそれぞれ仕様及び実システムに対応する遷移関
数とし、f及びfが共に規範的(FSM)形式で表
されているとする。このとき、あり得る全ての入力I及
び現在の状態Sに対してf(I,S)=f(I,
S)ならば、fの規範的形式はfの規範的形式と同
一と考えることができる。
【0074】論理型プログラムをこのような規範的FS
M形式に変換するには、論理型プログラムの表記法に内
在する構造を除去するため、いくつかのステップが必要
である。最初のステップでは、論理型プログラムにおけ
る「節」という構造の一部を除去するため、手続を定義
する複数の節を、完備形式として知られる単一の節に合
成する。ここで、n項のある述語記号pに関する手続定
義がm個の節:
【数9】 から構成されている場合、pの完備形式を構成するに
は、まず、新たな変数V(但しi=1・・・n)が生
成される。これらの変数と項tji(但しi=1・・・
n,j=1・・・m)を用いて、新たな原理論理式V
=tjiが各i=1・・・n,j=1・・・mについて
生成される。なお、ここで、tjiは前記m個の節のn
パラメータであり、また、“=”は等価関係を表す項
で、「tとtが一致するとき、およびそのときにか
ぎり原子論理式“t=t”は真である。」というこ
とを表す。前記の各節のうち、これらの原子論理式とボ
ディB(但しj=1・・m)を用いて、pの完備形式
が次のような形式となる。
【数10】 この手順は、全ての手続定義が完備形式となるまで繰り
返される。図8は、図2のスタックプログラムに基づい
た完備形式である。
【0075】2-2-3.手続呼出階層の平坦化 次のステップは、手続呼出階層の平坦化によって構成さ
れ、このステップによって、呼出は手続ボディによって
置き換えられる。この置換えは、「展開」として知ら
れ、この展開では、手続ボディ内の変数は呼出引数によ
って置き換えられ、また、手続に対してローカルな変数
に対しては、識別性が保たれるように適当な名称変更が
施される。
【0076】平坦化手続においては、再帰的呼出の処理
が一つの問題となる。すなわち、再帰的手続は、実行
中、呼出結果を最終的にその再帰的手続自体に戻すよう
な呼出を含む手続である。例えば、図2の手続“sta
ck”はその5行目に呼出を有しているが、この呼出
は、この呼出自身が含まれている手続自体に対する(直
接の)再帰的呼出である。
【0077】呼出を非再帰的手続に展開し続けると、プ
ログラムは最終的に、非再帰的手続への呼出がもはや残
らないものになる。そして、再帰的手続呼出の処理に際
して、どの再帰的呼出を手続ボディによって連続的に展
開した場合に、処理終結が導かれるかを決定するには、
次のような手法が用いられる(参考文献:M.Bruynooghe
et Danny De Schreye and Bern Martens. A general c
riterion for avoiding infinite unfolding during pa
rtial evaluation. New Generation Computing, pp. 47
-79, November 1992.)。すなわち、ここでは、どの再帰
的呼出が数量的にある程度“小さい”二次的再帰的呼出
を常に生じるかが検出され、それによって、最終的に
は、サイズがゼロの呼出、換言すれば、再帰的手続への
他の呼出を生じない呼出を、結果的に得ることができ
る。
【0078】ところで、図9は、スタックプログラムの
他の一例であり、ここでは、スタックにプッシュされ得
る要素の数が3つに制限されている。期待される実行モ
ードでは、関係“len”は、最初の引数で与えられた
リストの長さを算出し、それを2番目の引数に戻すこと
を意味している。ここでは、挿入辞的に(インフィック
ス記法/中置表記法で)表記される“<”や“is”が
意味する関係は、システムに組み込みのものと想定す
る。なお、“<”が意味する関係は、2つの引数が整数
であり、かつ、最初のものが2番目のものよりも厳密な
意味で小さいときに真となる関係である。また、期待さ
れる実行モードでは、関係“is”はその右側の式の値
を求め、その結果を述語記号“is”の左側の変数に代
入するものとして働く。
【0079】そして、図10は、図9の(スタックに要
素が3つ入っている)スタックプログラムの完備形式を
示しており、図11は、当該プログラムの平坦化された
ものである。なお、再帰的手続“len”に対する呼出
は拡張されているが、これは、その2番目の引数が、常
に3という上限を有するからである。
【0080】2-2-4.FSMへのマッピング 以上のように平坦化された後のプログラムには、再帰的
手続の呼出のみが残ることとなる。再帰的手続のマッピ
ングは、再帰的手続の手続ボディを、次のような反復的
表現に対する再帰的呼出を除いてFSMにマッピングす
ることによって行われる。
【数11】for I=0..n R = f(I,S) O = l(R) Si+1 = r(R) ここで、Rは状態レジスタ、関数l及びrはそれぞれ、
一組の引数の左側及び右側の要素を返す関数である。数
式11に示したような繰り返し形式(fsm)は、次の
ような初期状態に加え、一連の入力値から一連の出力値
を生成する再帰的手続と等価である。
【0081】
【数12】 ここで、遷移関数は述語表記で書かれ、左右選択関数l
及びrはマッチングを通じて実現されている。
【0082】ところで、FSMの述語表記では、入力リ
スト及び出力リストは、遅延評価と同様の手法で一時的
な変数領域で処理される変数の順序を示す。このため、
リスト全体を格納するためにメモリを要することはな
い。しかし、前記fsmの3番目の引数は、入力リスト
及び出力リストにおけるリストの位置が前進したり、現
在状態Rが次の状態Ri+1 によって上書きされるとき
における空回り状態を回避するために、ストレージ・レ
ジスタを包含する(表している)。
【0083】平坦化されたプログラムにおける再帰的呼
出は、上記手続fsmと構造が同一のパターンを発見す
るために解析される。すなわち、再帰的呼出のエントリ
型(入口の型)及び出口型(出口の型)の解析によっ
て、つまり、呼出しの入口点と出口点の型を解析するこ
とで、どの引数が、一時的変数領域で処理され得る列型
を意味するかが決定される。この列型は次のような書式
となる。
【数13】 ここで、τは列型を意味するいずれかの型変数、τ
リストの要素型を意味する型変数、fは任意の定数、
は任意の2引数の関数記号である。例えば、リスト
表記
【数14】 はしばしば列型として用いられる。
【0084】再帰的手続の引数はさらに入力リストと出
力リストとに区分される。ここで、呼出の引数のエント
リ型(例えば図5)がΦ型を含まない列型(すなわち基
底型)の場合、引数は入力リストである。エントリ型
が、Φ型と等しい場合も、要素型τがΦ型である列型
と等しい場合も、引数は出力リストである。また、入力
リスト又は出力リストのいずれでもない引数は、状態レ
ジスタに区分される。そして、1つ以上の入力リスト及
び1つ以上の出力リストを有する再帰的手続は、上記再
帰的手続fsmで説明したようなFSM形式に直接対応
する。
【0085】なお、本実施例では、論理型プログラムを
FSM形式に変換するプロセスが必要なため、いくつか
の制限が存在する。すなわち、fsmで説明したFSM
形式にマッピングできないような再帰的手続を含むプロ
グラムは、取り扱うことができない。また、機械は有限
状態でなければならず、さらに、状態の表現は有限でな
ければならないため、さらなる制約が状態レジスタの表
現に適用される。なお、任意の論理型プログラムを比較
する場合の問題は予測不能であるため、その内容に応じ
ていくつかの制約が生じ得る。
【0086】上記のような制約を満たす論理型プログラ
ムは、1以上のFSMの連携から構成される。因みに、
図10の完備形式は、fsmで説明した書式に直接マッ
プされるので、このような制約を満足することとなる。
また、小さなFSMの連鎖によって構成されるプログラ
ムでは、小さなFSMの状態表現の全てを連鎖させるこ
とによって全体の状態表現を構成し、大きな単一のFS
Mが構築することができる。このような場合、全体とし
ての遷移関数も、小さなFSMの遷移関数の連鎖として
構成される。以上の結果、入力リスト引数(すなわち
I)、出力リスト引数(すなわちO)及び単一の状態レ
ジスタ引数(すなわちR)を有する単一の再帰節が得ら
れる。
【0087】遷移関数は、このような単一の再帰節から
導かれた“H←B”という形式の新たな手続である。こ
の遷移関数のボディBは、単一の再帰節のボディから、
リスト関連処理と同様に再帰的呼出を除去した結果得ら
れる表現である。Hの引数は、再帰節の列型から状態及
び次状態変数と組み合わせて抽出された個々の入出力要
素である。すなわち、Hの引数は、列型から選択された
入出力要素に対応するものと、状態及び次状態変数と、
を含む。
【0088】なお、入出力の引数における位置は、要素
選択の対象となるリスト上の位置に対応するように、注
意深く整えられる。すなわち、状態及び次状態の引数
は、常に、遷移関数の最後から2つの引数位置に配置さ
れる。完備形式は、遷移関数を表す手続が、原子論理式
中において接続子“←”の左側にのみ変数を有すること
が確実となるように適用される。
【0089】なお、図12は、図10から抽出された遷
移関数を示す図である。ここでは、関数が仕様FSMの
遷移関数であることを表示するのに、述語記号“spe
c”が用いられている。
【0090】2-2-5.ボディの並べ換え そして、次のような手順によって遷移関数のボディを並
べ変えると、規範に近い決定木と呼ばれる記述が得られ
る。
【0091】2-2-5-1.Vが入力、出力又は次の状態変数
とした場合、各原子論理式“t=V”を原子論理式“V
=t”に並べ変える。
【0092】2-2-5-2.Vは連言において以外に生じ
ず、また、Vinを入力変数とした場合、“Vin=V
”のような形式の原子論理式を除去する。このステッ
プによって、無意味な比較を回避することができる。
【0093】2-2-5-3.原子論理式を比較と代入とに区分
する。ここで、比較は、Vinが入力変数又は現在状態
変数で、tが任意の項の場合において、“Vin=t”
という形式の原子論理式である。また、代入は、Vのエ
ントリ型がΦの場合において、“V=t”という形式の
原子論理式である。
【0094】2-2-5-4.変数V,V,・・・,V
l−1を、遷移関数への引数として現れる順序の入力変
数とし、また、Vを現在状態変数とする。また、{V
=ti1,・・・,V=tin}をVにおける一
般的な比較の集合とする。このとき、遷移関数の手続ボ
ディは、図13に示すような形式に再構築される。この
図13において、ノードは入力及び状態変数V(但し
i=1・・l)を表し、項ti1,・・・,tinがラ
ベルとなっているノードVからのエッジは、選言の接
続子V(OR)で接続されているように、二者択一の比
較V=tij(但しj=1・・n)を表している。こ
のツリーにおける(いわば)葉は、出力変数への代入が
順列し及び冒頭に配置されるように配置換えされた入力
及び状態変数、との比較を必要としない表現である。こ
の表現には、次状態変数に値を代入する表現が続く。
【0095】なお、前記変数の順序V1,V,・・
・,Vl−1は、一定で、この変数順序によれば、前記
比較の集合{V=ti1,・・・,V=tin}を
並べ換えることによって、表現は規範的表現に近いもの
となる。なぜならば、いかなる等価な有限状態機械も、
同一の入力を与えられた場合、同様な順序の比較を有す
るからである。図14は、このようにボディを決定木に
並べ換えた後の遷移関数を示す図である。
【0096】なお、ここで、Vを現在状態変数とした
場合、tが状態型における複数の項に適合する場合にお
ける“V=t”という形式の比較は、節の平坦化に類
似した処理を用いることによって平坦化され、遷移関数
で生じる全ての項が独特の項を生じることとなる。図1
5は、このようなスタック状態の平坦化の結果を示す図
である。
【0097】2-2-6.状態の符号化 さらに、FSMの状態の検出は、まず、遷移関数中で生
じる状態の各項tをペアi:<V,・・・,V>に
変換することによって実現される。なお、ここで、iは
固有の整数であり、<V,・・・,V>は、多相変
数のベクトルである。この場合、変数V,・・・,V
を含み、これら各変数がそれぞれエントリ型及び出口
型Φを有する項tについては、変数V,・・・,V
はFSMの多相パラメータを表す。また、ベクトル<V
,・・・,V>は、tの変数のリストによって構築
され、このリストによる構築は、あらかじめ定められた
順列規則(典型的には深さ優先で、左から右向きの順
列)にしたがって行われる。これらベクトルは、全ての
ベクトルが等しい長さになるように、固有の変数と共に
右詰めで配置される。整数iのペアに代入される内容
は、多相変数の改名によって、状態型の項を検出し、各
項に固有の整数を代入することによって決定される。な
お、図16は前記スタックの例における遷移関数の最終
的な規範的形式を示す。
【0098】なお、以上のような変換に失敗した場合は
失敗がユーザに報知される。
【0099】2-3.FSMの比較 以上のように変換された第1及び第2のFSMは比較部
6に転送され、比較部6が両FSMの等価性を検証す
る。2つのFSMが等価であることを検証するには、ま
ず、各機械の入力、出力及び状態の表現を符号化したも
のの間で、各遷移関数が等しいという等価関係が確認さ
れなければならない。
【0100】まず、ここで、E,E及びEを、そ
れぞれ、両機械間における入力、出力及び状態の表現の
等価関係とする。この場合、例えば、等価関係Eは、
ペア(t,t)の集合であり、この場合におけるt
は、第1のFSMにおける入力型の要素たる項であ
る。また、tは、第2のFSMにおける入力型の要素
たる項である。等価関係E及びEにおいても同様で
ある。
【0101】本実施例において、等価関係E及びE
はいずれも、実行時間短縮のためユーザが入力してもよ
いし、また、等価関係Esと共に算出されてもよい。
【0102】そして、f及びfを、ぞれぞれ、第1
のFSM及び第2のFSMにおける遷移関数とし、f´
を、fの各入力、出力及び状態の項をそれぞれ、E
、E及びEに含まれるペアの該当要素で置き換え
た関数とすると、2つの有限状態機械はf=f´
とき等価である。
【0103】2-3-1.制約解決器 このようなf1=f´2を満足するような等価関係
、E及びEを求めるには、制約解決器が用いら
れる。ここで、制約とは、型のとり得る値に対してその
部分集合を規定する条件である。そして、この場合の制
約は、非等価関係の連言のみならず、制約変数における
等価関係の連言の選言から構成される。
【0104】ここでは、具体的には、各FSMにおける
各入力、出力及び状態の項に対して、固有の制約変数が
生成される。なお、非等価関係は、ある一つの機械にお
いて、2つの等しい入力項の不存在、2つの等しい出力
項の不存在、及び、等しい2つの状態値の不存在を、条
件として指定する。これは、次のように表される。
【数15】 ここで、各i1j(但しj=0・・p)、o1k(但し
k=0・・・q)及びs1l(但しl=0・・r)は、
第1のFSMに基づいた制約変数であり、それぞれ、入
力型、出力型及び状態型を表している。同様のルール
は、FSM2のi 、o2k、s2lについても生成
される。
【0105】残る等価関係の連言の選言(すなわち積の
合計(和))は、全ての可能なfの再配列f ,f
,・・・,f を得ることによって生成される。
このようなfの再配列は、選言における表現を変換す
ることによって得られる。すなわち、
【数16】 は、
【数17】 と変換される。
【0106】ここで、各ペアf 及びfは同時に検
討され、それによって、両者が構造的に同一か(すなわ
ち、両者の決定木が構造的に同一か)否かが決定され
る。両者が構造的に同一の場合、連言が等価“V=V
”の間に配列される。ここで、Vは項tの制約変
数、Vはtの制約変数であり、また、tは第1の
FSMの一つの入力(、出力、状態)項であって、前記
検討中に第2のFSMの項tに適合したものである。
選言は、構造的に同一のペアの各連言に基づいて形成さ
れる。
【0107】このように生成された制約に基づいて第1
及び第2のFSMの間における等価性が判定され、その
判定結果が出力部7を通じ、表示装置2に表示される。
なお、図17は、以上の論理型プログラム比較手順の大
まかな流れを示すフローチャートである。
【0108】3.実施例の効果 以上のように、本実施例によれば、比較の基礎となる等
価関係は、厳密な等価関係である必要はなく、所定の関
係であれば足りるので、パラメータによる表示を含む論
理型プログラムの比較による妥当性検証が可能になる。
また、本実施例では、検証に適した規則性にしたがって
構成された規範的なFSMを得ることができるので、F
SM同士の比較が容易になる。また、本実施例では、汎
化質問によって比較内容が制限されるので、比較を効率
的に行うことができる。また、本実施例では、変換部5
が、各プログラムに静的解析を適用することによって前
記データ型を獲得するので、ユーザは、プログラムに基
づいてデータ型を決定する煩雑な手数を省くことができ
る。
【0109】また、本実施例では、比較部6が、制約解
決器を用いて前記比較を行うので、状態の内部表現が相
違する有限状態機械同士を比較することができる。この
ため、本実施例によれば、ユーザは、比較対象となる各
有限状態機械の各状態表現から対応関係を発見する煩雑
な手順から解放される。さらに、本実施例は、パラメト
リック多相変数を用いて表現された状態を有する有限状
態機械(すなわち、パラメトリックに(パラメータを用
いて)表現された状態を含む有限状態機械)同士の比較
が可能になるという利点を有する。
【0110】また、本実施例では、状態空間に存在する
パターンを活用できるので、より多様な装置の比較が可
能になり、また、比較全体の速度が向上する。また、本
実施例では、多相性が、汎化された機械を比較できる有
力な機構を提供したが、これは、多相性の各事例(要
素)を、状態空間における単一のパターンとして取り扱
うことによって実現されたものである。
【0111】4.他の実施例 なお、本発明は上記実施例に限定されるものではなく、
次のような他の実施例をも包含するものである。例え
ば、上記実施例では、データ型に関する情報は静的解析
によって得られるが、このような情報は、他の解析手法
や手入力など静的解析以外の手段によって獲得してもよ
い。また、汎化質問に示される情報についても手入力に
よって獲得するか、又はなんらかの解析手法によって獲
得するかは自由である。
【0112】
【発明の効果】以上のように、本発明によれば、パラメ
ータによる表示を含む論理型プログラムについても比較
による妥当性検証が可能で、しかも、このような検証を
効率的に実現する、優れた論理型プログラム比較装置を
提供することができる。
【図面の簡単な説明】
【図1】本発明の実施例の論理型プログラム比較装置の
ブロック図。
【図2】本発明の実施例における、スタック操作を表す
論理型プログラムの一例の内容を示す図。
【図3】同実施例における汎化質問の内容を示す図。
【図4】図3に示した操作環境において、図2に示した
プログラムに由来する型規則の集合を示す図。
【図5】図2のプログラムに基づく、手続呼出エントリ
における変数型の内容を示す図。
【図6】図2のプログラムに基づく、手続呼出出口にお
ける変数型の内容を示す図。
【図7】有限状態機械の要部のブロックダイヤグラム。
【図8】図2のプログラムの各節に基づいた完備形式の
内容を示す図。
【図9】本発明の実施例におけるスタック操作プログラ
ムの他の一例であって、スタックの深さが3に制限され
ているもの。
【図10】図9に示した各節に基づいた完備形式の内容
を示す図。
【図11】図10の完備形式に平坦化を施した結果の内
容を示す図。
【図12】図11の平坦化されたプログラムから抽出さ
れた遷移関数の内容を示す図。
【図13】決定木の一般的構造を示す図。
【図14】図12の遷移関数を並べ変えたものの内容を
示す図。
【図15】図14の遷移関数において、状態空間が平坦
化されたものの内容を示す図。
【図16】図15の遷移関数において、状態空間が定数
及び変数のペアに変換されたものの内容を示す図。
【図17】本発明の実施例における論理型プログラム比
較手順の大まかな流れを示すフローチャート。
【符号の説明】
1:キーボード 2:表示装置 3:I/O制御回路 4:入力部 5:変換部 6:比較部 7:出力部

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 2つの論理型プログラムを入力する入力
    手段と、 前記各論理型プログラムを有限状態機械に基づいた第1
    及び第2の記述に変換する変換手段と、 前記各記述間における各状態・各入力値・各出力値の所
    定の等価関係に基づいて、全ての等価な前記状態におけ
    る全ての等価な前記入力に対して、前記各記述が等価な
    前記出力を生ずるか否かを比較する比較手段と、 前記比較の結果を出力する出力手段と、を有することを
    特徴とする論理型プログラム比較装置。
  2. 【請求項2】 前記変換手段は、 前記各プログラムにそれぞれ含まれるデータ型を獲得
    し、 前記各プログラムを完備形式に変換し、 各プログラム中の手続呼出を手続ボディに展開し、 これら手続ボディを一定の変数順序にしたがって順列さ
    せ、 プログラム中の各表現を固有のコードによって置き換え
    ることによって前記変換を行うように構成されたことを
    特徴とする請求項1記載の論理型プログラム比較装置。
  3. 【請求項3】 前記変換手段は、前記各プログラムに静
    的解析を適用することによって前記データ型を獲得する
    ように構成されたことを特徴とする請求項2記載の論理
    型プログラム比較装置。
  4. 【請求項4】 前記変換手段は、再帰的手続に係る前記
    手続ボディを、反復的表現に対する再帰的呼出を除い
    て、有限状態機械に基づいた前記記述にマッピングする
    ように構成されたことを特徴とする請求項2記載の論理
    型プログラム比較装置。
  5. 【請求項5】 前記入力手段は、前記変換の内容を制限
    する汎化質問をプログラムの一部として入力するように
    構成され、 前記変換手段は、前記汎化質問に基づいて前記変換を行
    うように構成されたことを特徴とする請求項1記載の論
    理型プログラム比較装置。
  6. 【請求項6】 前記比較手段は、制約解決器を用いて前
    記比較を行うように構成され、 この制約解決器は、 前記各記述において入力・出力・状態の表す各項に固有
    の制約変数を割り当て、 相互に対応する前記制約変数間に非等価関係の連言を設
    定し、 一方の前記記述の項の制約変数における選言を並べ換え
    た各再配列が、他方の前記記述の前記項に対応する対応
    項の制約変数に対して等価のときに、前記再配列及び前
    記対応項の対応する同一位置において生じる各制約変数
    間に等価関係を設定し、 前記非等価関係の連言及び前記等価関係の連言の選言を
    制約として等価性を確認するように構成されたことを特
    徴とする請求項1記載の論理型プログラム比較装置。
  7. 【請求項7】 前記各論理型プログラムは、確定節を組
    み合わせて記述され、各確定節は、質問、ルール、事実
    のいずれかであることを特徴とする請求項1記載の論理
    型プログラム比較装置。
JP07356394A 1993-04-12 1994-04-12 論理型プログラム検証方法 Expired - Fee Related JP3582849B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP07356394A JP3582849B2 (ja) 1993-04-12 1994-04-12 論理型プログラム検証方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP5-84450 1993-04-12
JP8445093 1993-04-12
JP07356394A JP3582849B2 (ja) 1993-04-12 1994-04-12 論理型プログラム検証方法

Publications (2)

Publication Number Publication Date
JPH06348485A true JPH06348485A (ja) 1994-12-22
JP3582849B2 JP3582849B2 (ja) 2004-10-27

Family

ID=26414707

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07356394A Expired - Fee Related JP3582849B2 (ja) 1993-04-12 1994-04-12 論理型プログラム検証方法

Country Status (1)

Country Link
JP (1) JP3582849B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008070294A (ja) * 2006-09-15 2008-03-27 Yokogawa Electric Corp Icテスタ用デバッグ支援方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008070294A (ja) * 2006-09-15 2008-03-27 Yokogawa Electric Corp Icテスタ用デバッグ支援方法

Also Published As

Publication number Publication date
JP3582849B2 (ja) 2004-10-27

Similar Documents

Publication Publication Date Title
US5481717A (en) Logic program comparison method for verifying a computer program in relation to a system specification
Burns Performance analysis and optimization of asynchronous circuits
Barbacci Instruction set processor specifications (ISPS): The notation and its applications
Sudkamp Languages and machines: an introduction to the theory of computer science
Boulton et al. Experience with embedding hardware description languages in HOL.
US7653520B2 (en) Method for combining decision procedures with satisfiability solvers
Bloem et al. Efficient decision procedures for model checking of linear time logic properties
JPH11219378A (ja) 分解及び分割によるハードウェアの検証並びに表現方法
Spies et al. Transfinite Iris: resolving an existential dilemma of step-indexed separation logic
Huang et al. AQUILA: An equivalence checking system for large sequential designs
US6920583B1 (en) System and method for compiling temporal expressions
JPH10105551A (ja) プロセッサを用いて第1グラフの単一化の一部として第1節と第2節を結合する方法
Ganesh Decision procedures for bit-vectors, arrays and integers
KR20220017993A (ko) 플랫 넷리스트로부터 동작 디자인 복구
JP3582849B2 (ja) 論理型プログラム検証方法
Van Tassel An operational semantics for a subset of VHDL
US11507719B1 (en) Accelerating formal property verification across design versions using sequential equivalence checking
Mishchenko et al. New functionalities of the system for processing natural language specifications and its operating environment
Bogdanov et al. X-machine specification and refinement of digital devices
Umamageswaran et al. Formal semantics and proof techniques for optimizing VHDL models
Read Formal Methods for VLSI Design
JP2990882B2 (ja) 機能シミュレーション装置
Harris et al. Generation of Verification Artifacts from Natural Language Descriptions
Cubert et al. Modeling the simulation execution process with digital objects
Cyre et al. A rapid modeling tool for virtual prototypes

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Effective date: 20040406

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Effective date: 20040528

Free format text: JAPANESE INTERMEDIATE CODE: A523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040720

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040727

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 3

Free format text: PAYMENT UNTIL: 20070806

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 4

Free format text: PAYMENT UNTIL: 20080806

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 5

Free format text: PAYMENT UNTIL: 20090806

LAPS Cancellation because of no payment of annual fees