特開2019-20966(P2019-20966A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人 東京大学の特許一覧
<>
  • 特開2019020966-自動証明装置、及びプログラム 図000014
  • 特開2019020966-自動証明装置、及びプログラム 図000015
  • 特開2019020966-自動証明装置、及びプログラム 図000016
  • 特開2019020966-自動証明装置、及びプログラム 図000017
  • 特開2019020966-自動証明装置、及びプログラム 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-20966(P2019-20966A)
(43)【公開日】2019年2月7日
(54)【発明の名称】自動証明装置、及びプログラム
(51)【国際特許分類】
   G06F 17/17 20060101AFI20190111BHJP
【FI】
   G06F17/17
【審査請求】未請求
【請求項の数】5
【出願形態】OL
【全頁数】15
(21)【出願番号】特願2017-137949(P2017-137949)
(22)【出願日】2017年7月14日
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成27年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業「函数論に基づく間接計測の数理基盤構築」委託研究、産業技術力強化法第19条の適用を受ける特許出願/平成28年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業「蓮尾メタ数理システムデザイン」協働研究、産業技術力強化法第19条の適用を受ける特許出願/平成27年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業「社会的課題の解決に向けた数学と諸分野の協働」委託研究、産業技術力強化法第19条の適用を受ける特許出願
(71)【出願人】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
【住所又は居所】東京都文京区本郷七丁目3番1号
(71)【出願人】
【識別番号】504132272
【氏名又は名称】国立大学法人京都大学
【住所又は居所】京都府京都市左京区吉田本町36番地1
(74)【代理人】
【識別番号】100122275
【弁理士】
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】蓮尾 一郎
(72)【発明者】
【氏名】奥殿 貴仁
(72)【発明者】
【氏名】木戸 肩吾
(72)【発明者】
【氏名】末永 幸平
(72)【発明者】
【氏名】小島 健介
(72)【発明者】
【氏名】西田 雄気
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB52
(57)【要約】
【課題】得られた補間に対応する現実の証明対象の解釈を容易化できる自動証明装置及びプログラムを提供する。
【解決手段】与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーからの入力を受け入れる、当該項式に含まれる係数の比を、整数の比であり、各係数に対応する値がより小さい値となるよう近似した近似係数を求め、当該求められた近似係数のうちから、予め定めた方法で決定された順に、近似係数を選択して、受け入れた多項式の係数を当該選択した近似係数に置き換えた試行多項式を生成し、当該試行多項式が、前記クレイグ補間を表す多項式として成立するかを検証する自動証明装置である。
【選択図】図1
【特許請求の範囲】
【請求項1】
与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーからの入力を受け入れる手段と、
前記受け入れた多項式に含まれる係数の比が、整数の比となり、かつ各係数に対応する値がより小さい値となるよう近似した近似係数を、複数求める係数演算手段と、
前記複数求められた近似係数のうちから、予め定めた方法で決定された順に近似係数を選択し、前記受け入れた多項式の係数を当該選択した近似係数に置き換えた試行多項式を生成し、当該試行多項式が、前記クレイグ補間を表す多項式として成立するかを検証する検証手段と、
前記検証により、前記求めたいずれかの近似係数に基づく前記試行多項式が、前記クレイグ補間を表す多項式として成立すると、前記検証手段により判断されたときに、当該近似係数を、解として生成する生成手段と、
を含み、
前記生成手段は、前記求めたいずれかの近似係数に基づく前記試行多項式が、いずれも前記クレイグ補間を表す多項式として成立しないとして前記検証手段により判断されたときには、エラーが発生したものとして所定の処理を実行する、
自動証明装置。
【請求項2】
請求項1記載の自動証明装置であって、
前記ソルバーは、前記証明対象に係る制約が、
任意の変数値に対して
0以上である多項式f、
0より大である多項式g、
0に等しい多項式h
のいずれかを少なくとも一つ含んで設定され、
一対の制約T,T′のクレイグ補間を表す多項式を生成して出力するソルバーである自動証明装置。
【請求項3】
請求項1または2に記載の自動証明装置であって、
前記出力される解が、プログラム検証または定理証明の処理に供される自動証明装置。
【請求項4】
請求項1に記載の自動証明装置であって、
前記ソルバーは、前記証明対象に係る制約が、
任意の変数値に対して
0以上である多項式f、
0に等しくない多項式g、
0に等しい多項式h
のいずれかを少なくとも一つ含んで設定され、
一対の制約T,T′のクレイグ補間を表す多項式を生成して出力するソルバーである自動証明装置。
【請求項5】
コンピュータを、
与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーからの入力を受け入れる手段と、
前記受け入れた多項式に含まれる係数の比が、整数の比となり、かつ各係数に対応する値がより小さい値となるよう近似した近似係数を、複数求める係数演算手段と、
前記複数求められた近似係数のうちから、予め定めた方法で決定された順に近似係数を選択し、前記受け入れた多項式の係数を当該選択した近似係数に置き換えた試行多項式を生成し、当該試行多項式が、前記クレイグ補間を表す多項式として成立するかを検証する検証手段と、
前記検証により、前記求めたいずれかの近似係数に基づく前記試行多項式が、前記クレイグ補間を表す多項式として成立すると、前記検証手段により判断されたときに、当該近似係数を解として生成し、前記求めたいずれかの近似係数に基づく前記試行多項式が、いずれも前記クレイグ補間を表す多項式として成立しないとして前記検証手段により判断されたときには、エラーが発生したものとして所定の処理を実行する生成手段と、
として機能させるプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動証明装置、及びプログラムに関する。
【背景技術】
【0002】
近年、大規模集積回路(LSI)等の、ハードウェアの設計や検証、ソフトウェアプログラムの検証等において、人為的介入なしに自動で推論を行う自動証明装置の利用が検討されている。例えば、非特許文献2には、ハードウェア設計を、クレイグ補間を用いた方法で検証を行うことで、検証可能な対象を広げることができることが開示されている。
【0003】
こうした研究を受けて、与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーが開発されている(例えば非特許文献1)。このようなソルバーにおいては、多項式の係数が、数値解析により得られているので、一般に簡潔な整数比としては表現されない。また、当該係数には数値誤差を含む。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Dai, L., et. al., Generating non-linear interpolants by semidefinite programming. In: Sharygina, N., Veith H.(eds.) Computer Aided Verification - 25th International Conference, CAV 2013, Saint Petersburg, Russia, July 13-19, 2013. Proceedings. Lecture Notes in Computer Science, vol. 8044, pp.364-380, Springer(2013) (http://dx.doi.org/10.1007/978-3-642-39799-8_25)
【非特許文献2】McMillan, K. L., Interpolation and SAT-Based Model Checking, in Proc. of 15th Conf. on Computer Aided Verification (CAV 2003), LNCS, Vol.2725, pp. 1-13, Springer (2003)
【発明の概要】
【発明が解決しようとする課題】
【0005】
このように従来の技術では、多項式の係数が、一般に簡潔な整数比としては表現されないうえ、数値誤差を含むため、得られた補間に対応する現実のハードウェア設計やプログラムの動作等の証明対象がどのようなものであるか、例えばプログラムの動作検証であれば、どのようなプログラムの動作状態を表すものであるかを解釈することが容易でなく、また、動作検証等の自動化処理の際に障害となり得るという問題点があった。
【0006】
本発明は上記実情に鑑みて為されたもので、得られた補間に対応する現実の証明対象の解釈を容易化できる自動証明装置及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【0007】
上記従来例の問題点を解決するための本発明は、自動証明装置であって、与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーからの入力を受け入れる手段と、前記受け入れた多項式に含まれる係数の比が、整数の比となり、かつ各係数に対応する値がより小さい値となるよう近似した近似係数を、複数求める係数演算手段と、前記複数求められた近似係数のうちから、予め定めた方法で決定された順に近似係数を選択し、前記受け入れた多項式の係数を当該選択した近似係数に置き換えた試行多項式を生成し、当該試行多項式が、前記クレイグ補間を表す多項式として成立するかを検証する検証手段と、前記検証により、前記求めたいずれかの近似係数に基づく前記試行多項式が、前記クレイグ補間を表す多項式として成立すると、前記検証手段により判断されたときに、当該近似係数を、解として生成する生成手段と、を含み、前記生成手段は、前記求めたいずれかの近似係数に基づく前記試行多項式が、いずれも前記クレイグ補間を表す多項式として成立しないとして前記検証手段により判断されたときには、エラーが発生したものとして所定の処理を実行することとしたものである。
【発明の効果】
【0008】
本発明によると、得られた補間に対応する現実の証明対象の解釈を容易化できる。
【図面の簡単な説明】
【0009】
図1】本発明の実施の形態の一例に係る自動証明装置の構成ブロック図である。
図2】本発明の実施の形態の一例に係る自動証明装置の機能ブロック図である。
図3】本発明の実施の形態の一例に係る自動証明装置のソルバー部の動作例を表すフローチャート図である。
図4】本発明の実施の形態の一例に係る自動証明装置の処理例を表すフローチャート図である。
図5】本発明の実施の形態の一例に係る自動証明装置が処理する制約の設定例を表す説明図である。
【発明を実施するための形態】
【0010】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る自動証明装置1は、図1に例示するように、制御部11と、記憶部12と、操作部13と、表示部14とを含んで構成されている。
【0011】
ここで制御部11はCPU等のプログラム制御デバイスであり、記憶部12に格納されたプログラムに従って動作する。本実施の形態の一例では、この制御部11は、与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーからの入力を受け入れ、当該受け入れた多項式に含まれる係数の比が、整数の比となり、かつ、各係数に対応する値がより小さい値となるように、各係数の値を近似した近似係数の組を、複数求める。
【0012】
なお、ここで補間は、論理式における補間をいい、
XかつYが充足不能な式であるときに、
XならばZが恒真式であり、
ZかつYが充足不能な式であり、かつ、
Zに現れる変数がX,Yの双方に現れる、という場合のZが「XならばY」のクレイグ補間と呼ばれるものである。
【0013】
またこの制御部11は、当該複数求められた近似係数の組のうちから、予め定めた方法で決定された順に近似係数の組を選択する。一例として、当該近似係数の絶対値の和が小さいものから順に選択することとすればよい(1ノルムが最小のものからの順)。また別の例では、各係数の二乗和が最小のものから順(2ノルムが最小のものからの順)、あるいは、係数の絶対値の最大値が最小のものから順(無限大ノルムが最小のものからの順)に選択することとしてもよい。
【0014】
制御部11は、受け入れた多項式の係数のそれぞれを、当該選択した近似係数の組に含まれる対応する値に置き換えた試行多項式を生成し、当該試行多項式が、クレイグ補間を表す多項式として成立するかを検証する。制御部11は、この検証の処理により、求めたいずれかの近似係数に基づく試行多項式が、クレイグ補間を表す多項式として成立していると判断すると、当該近似係数を、解として所定の処理に供する。
【0015】
また制御部11は、上記求めたいずれかの近似係数に基づく試行多項式のいずれもがクレイグ補間を表す多項式として成立しないと判断したときには、エラーが発生したものとして所定の処理を実行する。この制御部11の詳しい動作については後に述べる。
【0016】
記憶部12は、メモリデバイス等であり、制御部11によって実行されるプログラムを保持する。このプログラムは、コンピュータ可読かつ、非一時的な記憶媒体に格納されて提供され、この記憶部12に複写されたものであってもよい。本実施の形態において、この記憶部12は、また、制御部11のワークメモリとしても動作する。
【0017】
操作部13は、キーボードやマウス等であり、ユーザの指示入力を受け入れて、当該指示入力の内容を制御部11に出力する。表示部14は、ディスプレイ等であり、制御部11から入力される指示に従い、情報を表示出力する。
【0018】
ここで制御部11の動作について説明する。本実施の形態では、この制御部11は、記憶部12に格納されたプログラムを実行することにより、機能的に、図2に例示するように、ソルバー出力受入部21と、係数演算部22と、検証処理部23と、解生成部24と、出力部25とを含んで構成される。また本実施の形態では、図2に示すように、この制御部11が、与えられた証明対象に係るクレイグ補間を表す多項式を生成して出力するソルバーとしても動作し、ソルバー部31をさらに含んでもよい。もっとも、このソルバー部31は、他のコンピュータによって実現されてもよく、その場合は、後に説明するソルバー出力受入部21は、当該ソルバーとして機能する他のコンピュータから、ソルバーの出力を受け入れることとなる。
【0019】
本実施の形態の一例に係るソルバー部31は、証明対象として与えられた一対の制約T,T′のクレイグ補間を生成する問題を、半正定値計画問題へ変換する。
【0020】
すなわち、ソルバー部31は、証明対象に係る制約T,T′のそれぞれを、任意の変数値に対して
0以上である少なくとも一つの多項式f、
0より大である少なくとも一つの多項式g、
0に等しい少なくとも一つの多項式h
のいずれかを少なくとも一つ含む表現
【数1】
に変換する。
【0021】
なお、個々の多項式f,f,…f,g,g…,g,h,h…h,f′,f′…,f′s′,g′,g′…,g′t′,h′,h′…h′u′は予め、制約T,T′に共通に現れる変数Xの多項式として任意に定めておく。
【0022】
このように、証明対象に係る制約T,T′のそれぞれを、任意の変数値に対して
0以上である少なくとも一つの多項式f、
0より大である少なくとも一つの多項式g、
0に等しい少なくとも一つの多項式h
のいずれかを少なくとも一つ含む表現で表しておき、ソルバーにて数値解を演算することで、非特許文献1に開示された技術のように、証明対象に係る制約を、0に等しくない多項式を含む多項式の集合で記述する場合に比べ、補間を得やすくなる。
【0023】
具体的にこのソルバー部31は、図3に例示するように、不等式を用いた半代数系(SAS:Semialgebraic System with inequalities)にて表現された制約T,T′及び、最大次数(degree)を表す自然数bを受け入れる(S1)。
【0024】
そしてソルバー部31は、次の数式を満足する、ベクトルα,α′,β,β′,γの数値解を見いだす(S2)。すなわち、
【数2】
とし、i,jをそれぞれ
【数3】
(すなわち、iをsビットの2進数値、jをtビットの2進数値…など)として、ベクトルα,α′,β,β′,γが
【数4】
との条件を満足するものとする。
【0025】
またここで、ベクトルα,α′,β,β′,γ間には、次の制約が規定されているものとする。
【数5】
【0026】
このベクトルα,α′,β,β′,γを得る処理は、記号的解法(例えば量化子除去(quantifier elimination)など)を用いてもよいが、ここでは半正定値計画問題として緩和でき、この場合は広く知られた半正定値計画問題ソルバーを用いることができる。
【0027】
ここでC(0)≦bは、次数b以下のSOS(Sum of Squares:複数の多項式p,p…pの二乗和、つまりp+p+…+p)を意味する。また、σ(b)は総和がb+1以下であるような、t個の自然数の組Ntの集合{(k,k,…k)∈Nt|k+k+…+k≦b+1}を意味する。
【0028】
ソルバー部31は、解(数値解)であるベクトルα,α′,β,β′,γが求められたか否かを調べ(S3)、解が見いだせない場合(S3:No)は、ソルバー部31はエラーとして処理を停止する(S4)。この場合は、後に説明するソルバー出力受入部21は、何らの入力を受け入れないこととなる。
【0029】
また処理S3において解が見いだせたとき(S3:Yes)は、ソルバー部31は、
【数6】
として、多項式f,g,hを定める(S5)。
【0030】
そして不等式
【数7】
を解として出力する。
【0031】
またソルバー出力受入部21は、ソルバー部31など、ソルバーが出力する解の入力を受け入れる。
【0032】
係数演算部22は、ソルバー出力受入部21が受け入れた解に含まれる変数Xの係数の整数比を少なくとも一つ(好適には複数)求める。本実施の形態の一例では、この係数演算部22は、連分数展開の方法を用いて、この整数比を得る。すなわち係数演算部22は、ソルバー出力受入部21が受け入れた解に含まれる変数Xのすべての係数が自然数となるよう、受け入れた解を10倍する。ここでのnは、すべての係数が自然数となる最小の正の整数とする。
【0033】
係数演算部22は、こうして得られた各係数x,x…x(いずれも自然数であって、少なくとも1つは0でない)について、次の処理(連分数展開(CFE)処理と呼ぶ)を実行する。
【0034】
図4に示すように、まず、係数演算部22は、深さd(dは正の整数)の指定を受け入れる(S11)。なお、深さdが指定されていないときはd=1とする。また係数演算部22は、係数x,x…xのうち最小の係数をxとして、係数x,x…xのそれぞれを、このxで除した数を超えない最大の整数の組
【数8】
を求める(S12)。
【0035】
係数演算部22は、dが「1」であるか否かを調べ(S13)、dが「1」ならば(S13:Yes)、上記組aの最大公約数を求めて、aの各成分の値をこの最大公約数gcd(a)で除した値の組を求める(S14):
【数9】
【0036】
係数演算部22は、ここで求めたy(各成分の値の比が、求める整数比となる)を返り値として記憶部12に格納して(S15)、リターンする(再帰的に呼び出されている場合は呼び出し元の処理に戻り、最初に呼び出されていた場合は処理を終了する)。
【0037】
また、処理S13でdが「1」でなければ、係数を
−a,…,xp−1,ap−1,x,xp+1−ap+1p+1,…,x−a
とし、深さdを(d−1)として(S16)、CFE処理を再帰的に(処理S11から)実行し、その返り値をr′とする(S17)。
【0038】
また係数演算部22は、
【数10】
にてyを求め(S18)、yの各成分を、これらの最大公約数gcd(y)で除した結果を返り値として記憶部12に格納し(S19)、リターンする。
【0039】
なお、ここまでの例によって得られる近似係数は、各係数に対応する値が整数となるが、当該整数として求められた近似係数を、さらに共通の整数dで除した有理数としてもよい。すなわち、近似係数は整数であることに限られない。
【0040】
検証処理部23は、ソルバー出力受入部21が受け入れた解である多項式の係数を、係数演算部22が記憶部12に格納した各整数比の各値を係数(近似係数)で置き換えた試行多項式を生成する。そして検証処理部23は、生成した試行多項式のうち、クレイグ補間を表す多項式として成立するか否かを検証する。この検証では、T′に対応する多項式の値域と、試行多項式を、ソルバー出力受入部21が受け入れた解の多項式で置き換えたときの値域とを比較し、重なり合わない場合に、クレイグ補間を表す多項式として成立していると判断することとなる。
【0041】
検証処理部23は、クレイグ補間を表す多項式として成立している試行多項式であって、係数となっている整数が最も小さいもの(いずれかの変数に着目し、当該変数の係数が最小であるもの、あるいはすべての係数の和が最小である試行多項式)を解生成部24に出力する。
【0042】
なお、この検証処理部23は、係数演算部22が記憶部12に格納した各整数比を用いて生成した試行多項式のいずれもがクレイグ補間を表す多項式として成立していないと判断すると、係数演算部22が、現在の整数比を得るために利用した深さdの値をインクリメント(「1」ないしそれ以上の整数値だけインクリメント)して、係数演算部22に対して、当該インクリメントした後の深さdを出力し、再度、整数比を生成させることとしてもよい。なお、インクリメント後のdの値が予め定めたしきい値を超えたとき、またはインクリメントした後のdの値によっても、dのインクリメント前に得られた整数比と同じ整数比が得られた場合(収束してしまった場合)には、エラーが発生したものとして予め定めた処理を実行する。
【0043】
一例として検証処理部23は、上述のようにエラーが発生したと判断したときには、予め定めた処理としてソルバー出力受入部21が受け入れた解をそのまま出力するよう、出力部25に指示してもよい。
【0044】
解生成部24は、ソルバー出力受入部21が受け入れた解である多項式を、検証処理部23が出力した試行多項式に置き換えて、出力対象となる解を生成する。
【0045】
出力部25は、解生成部24が生成した出力対象となる解(または検証処理部23から入力される指示によりソルバー出力受入部21が受け入れた解そのもの)を、解として表示部14に表示出力する。
【0046】
なお、この出力部25は、解を表示部14に表示出力するほか、図示しないプリンタに出力して印刷させてもよいし、他のプログラムの入力となるようデータとして出力して、他のプログラムの処理に供してもよい。
【0047】
[動作]
本発明の実施の形態は、以上の構成を備えており、次のように動作する。すなわち本実施の形態の一例では、証明対象に係る制約T,T′のそれぞれが、任意の変数値に対して
0以上である少なくとも一つの多項式f、
0より大である少なくとも一つの多項式g、
0に等しい少なくとも一つの多項式h
のいずれかを少なくとも一つ含む表現
【数1】
に変換されて、その数値解である多項式と、当該多項式が満足する不等式あるいは等式が解として得られる。
【0048】
一例として、制約T,T′が、
T:=(y≧x+1)
T′:=(y≦−x−1)
であるとする(図5を参照)と、これらの制約T,T′は同時には満足されない、つまり、T∧T′は矛盾しているから、これらT,T′に共通する変数のみを含む論理式εであって、Tならばε、かつε∧T′が矛盾するεが存在する(クレイグの補間定理)。そしてこのεがクレイグ補間となる。
【0049】
ソルバーは、この制約T,T′からクレイグ補間εを数値解として得る。具体的に、数値解の一つは、
871.465y+348.560>0
として得られる。
【0050】
本実施の形態の自動証明装置1は、この係数871.465,348.560を連分数展開の方法によって丸め処理して近似係数を求める。ここでの例では、この丸め処理の結果として、
5,2
11,4
…といった係数が整数の比となるような、近似係数の組が得られる。
【0051】
自動証明装置1は、これらの得られた近似係数の組のうち、最小の近似係数(含まれる各係数の絶対値の総和が最小のもの、すなわち1ノルムが最小のもの)から順に、もとの多項式における対応する係数に置き換えた試行多項式が、制約T,T′のクレイグ補間εとなっているか否かを調べる。
【0052】
ここでは、自動証明装置1は、係数871.465を、対応する整数の値5に置き換え、係数348.560を、対応する整数の値2に置き換えた、試行多項式を用いた不等式
5y+2>0
が制約T,T′
T:=(y≧x+1)
T′:=(y≦−x−1)
に対するクレイグ補間εとなっているか否かを調べる。
【0053】
ここでの例では、制約Tの表す値域y≧x+1が、試行多項式を用いた不等式5y+2>0の値域に含まれるので、
「制約Tであれば、εである」
が成立する。
【0054】
また、試行多項式を用いた不等式5y+2>0の値域は、制約T′の表す値域y≦−x−1と重なり合わないので、
「εと、制約T′とは矛盾する」
も成立する。
【0055】
すなわち、この試行多項式を用いた不等式5y+2>0は、上記制約T,T′のクレイグ補間となっていると判断できる。
【0056】
自動証明装置1は、このように、各不等式(または等式)の値域を比較することで、試行多項式がクレイグ補間となっているか否かを調べて判断する。ここでの例では、上述のように、最初に調べた試行多項式を用いた不等式5y+2>0が与えられた制約T,T′のクレイグ補間となっていると判断できるので、自動証明装置1は、この試行多項式を用いた不等式5y+2>0を解として表示部14に表示出力する。
【0057】
この自動証明装置1によると、数値的に得られた解に比べ、簡略にされた不等式により解が示されるので、対応する現実の条件として解釈しやすい解が得られることとなる。
【0058】
またこの自動証明装置1が出力した解を、プログラム検証または定理証明の処理システムに入力することで、プログラム検証または定理証明の処理に対して、本実施の形態の自動証明装置1の出力を供することができる。
【0059】
[変形例(Daiの方法を採用する例)]
本実施の形態の以上の例では、ソルバー(ソルバー部31等)が、証明対象に係る制約として、任意の変数値に対して
0以上である多項式f、
0より大である多項式g、
0に等しい多項式h
のいずれかを少なくとも一つ含んで設定されるものとしたが、クレイグ補間を表す、多項式を用いた不等式あるいは等式が数値解として得られるのであれば、本実施の形態の自動証明装置1は、このソルバーを用いる例に限られず、他のソルバーを用いてもよい。
【0060】
例えば本実施の形態において、数値解を求めるためのソルバーは、非特許文献1に示された方法を採用してもよい。この場合は、証明対象に係る制約が、任意の変数値に対して
0以上である多項式f、
0に等しくない多項式g、
0に等しい多項式h
のいずれかを少なくとも一つ含んで設定されることとなる。
【0061】
[実施形態の効果]
本実施の形態によると、数値解析された多項式を、比較的簡潔な整数比の係数で表現しなおす。これにより数値解として得られた補間に対応する現実のプログラムの動作等の証明対象への対応付けを簡易にさせることができ、利用者にとっての理解が容易になるだけでなく、自動検証にも有用となる。
【0062】
さらに、この処理に用いるソルバーとして、「0に等しくない」との制約の記述を、「0より大である」に置き換えたソルバーを用いることで、比較的多くの制約について補間を得ることができる。
【産業上の利用可能性】
【0063】
本発明では、種々の証明問題に対して比較的簡潔なクレイグ補間の多項式表現を出力できるので、大規模集積回路(LSI)等の、ハードウェアの設計や検証、ソフトウェアプログラムの検証等に、クレイグ補間を用いた方法を採用し、これを自動化する場合に有用である。
【符号の説明】
【0064】
1 自動証明装置、11 制御部、12 記憶部、13 操作部、14 表示部、21 ソルバー出力受入部、22 係数演算部、23 検証処理部、24 解生成部、25 出力部、31 ソルバー部。

図1
図2
図3
図4
図5