(57)【要約】【課題】非線形演算および等式を含むパス条件（制約）を満たす入力データを現実的な時間内に算出する。【解決手段】非線形演算および等式集合を含むパス条件（制約）中の等式集合に出現する変数から、説明変数を用いて説明できる特定の変数の組み合わせ（被説明変数）を特定し（Ｓ１００〜Ｓ１１０）、被説明変数についての連立方程式として等式集合を解き、被説明変数それぞれについて説明変数で説明する式（連立解）を作成し（Ｓ１１２）、作成した式（連立解）に基づいて入力データを算出する（Ｓ１１８〜Ｓ１２６）、処理を情報処理装置のＣＰＵが実行する。【選択図】図４
2016091236.tif 000002
【特許請求の範囲】
【請求項１】
非線形演算および等式集合を含むプログラムのパス条件を満足する入力データを算出する入力データ算出方法であって、
前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定し、
前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成し、
作成した前記式に基づいて前記入力データを算出する、処理をコンピュータが実行する入力データ算出方法。
【請求項２】
前記作成する処理を実行した結果、前記特定の変数それぞれについて前記他の変数で説明する式を作成できなかった場合に、
前記他の変数を用いて説明できる特定の変数の組み合わせを特定し直し、前記作成する処理を再度実行する、ことを特徴とする請求項１に記載の入力データ算出方法。
【請求項３】
前記パス条件が不等式を含む場合には、
前記算出する処理では、作成した前記式を前記不等式に代入して得られる該不等式を充足する充足解と、該充足解を前記式に代入して得られる代入解と、を前記入力データとすることを特徴とする請求項１又は２に記載の入力データ算出方法。
【請求項４】
前記特定する処理では、前記等式集合に含まれる各等式において他の等式には存在しない固有の変数を特定し、特定した前記固有の変数を前記特定の変数の組み合わせに優先的に含めることを特徴とする請求項１〜３のいずれか一項に記載の入力データ算出方法。
【請求項５】
前記算出する処理では、入力データとして実数解を得るために必要な制約を追加することを特徴とする請求項１〜４のいずれか一項に記載の入力データ算出方法。
【請求項６】
非線形演算および等式集合を含むプログラムのパス条件を満足する入力データをコンピュータに算出させる入力データ算出プログラムであって、
前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定し、
前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成し、
作成した前記式に基づいて前記入力データを算出する、処理を前記コンピュータに実行させる入力データ算出プログラム。
【請求項７】
非線形演算および等式集合を含むプログラムのパス条件を満足する入力データを算出する入力データ算出装置であって、
前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定する特定部と、
前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成する作成部と、
作成した前記式に基づいて前記入力データを算出する算出部と、を備える入力データ算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データ算出方法、入力データ算出プログラム及び入力データ算出装置に関する。
【背景技術】
【０００２】
プログラムのテストを行う際には、プログラムの内部構造を網羅的に実行できるようにテストデータやシナリオを設計する必要がある。プログラムでは、処理の流れ（処理パス）を、条件分岐（条件の真偽）により変更することができる。このためプログラムには、複数の処理パスが存在する。
【０００３】
一般にプログラムのテストを行うとき、テスト実施者は、全ての処理パスを網羅的に実行できるよう、テストデータやシナリオを決定する。また、業務システムに対するテストデータの自動生成においては、特定の経路を実行するテストデータを作る技術として、入力データが満たすべき制約（パス条件）をＳＭＴ（Satisfiability Modulo Theories）ソルバに解かせる方法がある。
【０００４】
パス条件を得る手段としては、例えば、シンボリック実行（Symbolic Execution）という技術が知られている。シンボリック実行とは、各変数の初期値を実数値ではなく不定の値（シンボル値）とし、プログラムの内部構造を網羅するよう、擬似的にプログラムを実行する技術である。これを応用した技術としては、特許文献１、非特許文献１等が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２５４４１２号公報
【特許文献２】特開平９−８１３８７号公報
【非特許文献】
【０００６】
【非特許文献１】前田芳晴，佐々木裕介，松尾昭彦，木村茂樹，殿岡弘範．ＣＯＢＯＬプログラムのためのＳＭＴソルバによるテストデータ生成．ソフトウェアエンジニアリングシンポジウム２０１２.
【非特許文献２】Coral - CORAL - Randomized Constraint Solvers．(http://pan.cin.ufpe.br/coral/index.html)．２０１４年５月２６日検索
【発明の概要】
【発明が解決しようとする課題】
【０００７】
パス条件を解き、パス条件を満たす入力データを得る手段として、シンプレックス法をはじめとする線形論理式を対象とした手法が存在する。しかし、これらの手法は適用対象が線形論理式に限定されており、非線形演算を含む制約を解くことはできない。
【０００８】
一方、非線形演算を含む制約を解くことができる既存の制約ソルバとしては、多目的最適化アルゴリズムを応用したCoralがある（例えば、非特許文献２参照）。Coralは、入力として制約を与えると、制約を満たす変数の組み合わせを１つ探し出し、出力するが、制約に等式の論理式が混じっていると、制約を解くのに多くの時間を要する。等式が混じると解空間（解として選択できる値域）が狭くなり、局所解に陥りやすくなるためである。
【０００９】
また、代入法を用いて、満たすべき制約集合から等式を取り除いてから、最適化アルゴリズムを用いて制約を充足する解を取得する技術が提案されている（例えば、特許文献２等参照）。しかしながら、この方法を用いても、５次以上の方程式を含む制約など、非線形演算を含む制約を解くことができない場合がある。
【００１０】
１つの側面では、本発明は、非線形演算および等式を含むパス条件を満たす入力データを現実的な時間内に算出する入力データ算出方法、入力データ算出プログラム及び入力データ算出装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
一つの態様では、入力データ算出方法は、非線形演算および等式集合を含むプログラムのパス条件を満足する入力データを算出する入力データ算出方法であって、前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定し、前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成し、作成した前記式に基づいて前記入力データを算出する、処理をコンピュータが実行する入力データ算出方法である。
【発明の効果】
【００１２】
非線形演算および等式を含むパス条件を満たす入力データを現実的な時間内に算出することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態に係る情報処理装置のハードウェア構成を概略的に示す図である。
【図２】第１の実施形態におけるプログラムの制約（パス条件）を示す図である。
【図３】情報処理装置の機能ブロック図である。
【図４】情報処理装置の処理を示すフローチャートである。
【図５】第１の実施形態における固有変数説明等式探索部の処理（Ｓ１００）を説明するための図である。
【図６】第１の実施形態における被説明変数候補抽出部の処理（Ｓ１０１）を説明するための図である。
【図７】第１の実施形態における説明変数候補抽出部の処理（Ｓ１０２）を説明するための図である。
【図８】第１の実施形態における説明変数候補抽出部の処理（Ｓ１０４）を説明するための図である。
【図９】第１の実施形態における固有変数選択部の処理（Ｓ１０６）を説明するための図である。
【図１０】図１０（ａ）は、第１の実施形態における被説明変数候補初期化部の処理（Ｓ１０８:１回目）を説明するための図であり、図１０（ｂ）は、被説明変数判定部の処理（Ｓ１１０:１回目）を説明するための図である。
【図１１】図１１（ａ）は、第１の実施形態における説明式生成部の処理（Ｓ１１２:１回目）を説明するための図であり、図１１（ｂ）は、説明変数候補循環部の処理（Ｓ１１４:１回目）を説明するための図である。
【図１２】図１２（ａ）は、第１の実施形態における被説明変数候補初期化部の処理（Ｓ１０８:２回目）を説明するための図であり、図１２（ｂ）は、被説明変数判定部の処理（Ｓ１１０:２回目）を説明するための図である。
【図１３】第１の実施形態における説明式生成部の処理（Ｓ１１２:２回目）を説明するための図である。
【図１４】第１の実施形態における説明式生成部の処理（Ｓ１１２:５回目）を説明するための図である。
【図１５】第１の実施形態における不等式変形部の処理（Ｓ１１８）を説明するための図である。
【図１６】第１の実施形態における制約追加部の処理（Ｓ１２０）を説明するための図である。
【図１７】第１の実施形態における不等式求解部の処理（Ｓ１２４）を説明するための図（その１）である。
【図１８】第１の実施形態における不等式求解部の処理（Ｓ１２４）を説明するための図（その２）である。
【図１９】第１の実施形態における等式求解部の処理（Ｓ１２６）を説明するための図である。
【図２０】第１の実施形態における充足解出力部の処理（Ｓ１２８）を説明するための図である。
【図２１】比較例１を説明するための図である。
【図２２】第２の実施形態におけるプログラムの制約（パス条件）を示す図である。
【図２３】第２の実施形態における固有変数説明等式探索部の処理（Ｓ１００）を説明するための図である。
【図２４】第２の実施形態における被説明変数候補抽出部の処理（Ｓ１０１）を説明するための図である。
【図２５】第２の実施形態における説明変数候補抽出部の処理（Ｓ１０２）を説明するための図である。
【図２６】第２の実施形態における説明変数候補抽出部の処理（Ｓ１０４）を説明するための図である。
【図２７】第２の実施形態における固有変数選択部の処理（Ｓ１０６）を説明するための図である。
【図２８】図２８（ａ）は、第２の実施形態における被説明変数候補初期化部の処理（Ｓ１０８:１回目）を説明するための図であり、図２８（ｂ）は、被説明変数判定部の処理（Ｓ１１０:１回目）を説明するための図である。
【図２９】第２の実施形態における説明式生成部の処理（Ｓ１１２:１回目）を説明するための図である。
【図３０】図３０（ａ）、図３０（ｂ）は、第２の実施形態における不等式求解部の処理（Ｓ１２４）を説明するための図である。
【図３１】第２の実施形態における充足解出力部の処理（Ｓ１２８）を説明するための図である。
【発明を実施するための形態】
【００１４】
《第１の実施形態》
以下、情報処理装置の第１の実施形態について、図１〜図２０に基づいて詳細に説明する。図１には、本実施形態の入力データ算出装置としての情報処理装置１０のハードウェア構成が示されている。本実施形態の情報処理装置１０は、例えば、給与計算、金融業務、科学計算など、非線形演算の混じる計算処理の多いシステムのプログラムをテストする際に必要な、プログラムの全ての処理パスを網羅的に実行するための入力データを算出するための装置である。具体的には、情報処理装置１０は、人手又は所定の技術（例えば、特開２０１１−１９１９８５に記載の技術など）によりプログラムから抽出したパス条件（非線形演算および等式を含む）の全てを満足する入力データを計算する。本実施形態においては、一例として、パス条件（制約ともいう）が、図２に示すような６つの式であり、情報処理装置１０は、６つの式すべてを満足する（図２の太線矢印に沿った処理が可能な）入力データａ，ｂ，ｃ，ｄ，ｆ，ｇ，ｘ，ｙを求める。なお、本明細書及び図面において、「α**β」という表記は、αのβ乗を意味するものとする。
【００１５】
情報処理装置１０は、図１に示すように、ＣＰＵ（Central Processing Unit）９０、ＲＯＭ（Read Only Memory）９２、ＲＡＭ（Random Access Memory）９４、記憶部（ここではＨＤＤ（Hard Disk Drive））９６、ネットワークインタフェース９７、表示部９３、入力部９５及び可搬型記憶媒体用ドライブ９９等を備えている。これら情報処理装置１０の構成各部は、バス９８に接続されている。表示部９３は液晶ディスプレイ等を含み、入力部９５は、キーボードやマウス、タッチパネル等を含む。情報処理装置１０では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（入力データ算出プログラムを含む）、或いは可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み取ったプログラム（入力データ算出プログラムを含む）をＣＰＵ９０が実行することにより、図３に示す、各部の機能が実現される。なお、図３には、ＨＤＤ９６等に格納されている入力データ格納領域３１、等式処理データ格納領域３２、及び不等式処理データ格納領域３３も図示されている。
【００１６】
図３に示すように、情報処理装置１０においては、ＣＰＵ９０がプログラムを実行することにより、パス条件入力部１１、固有変数説明等式探索部１２、被説明変数候補抽出部１３、説明変数候補抽出部１４、固有変数選択部１５、被説明変数候補初期化部１６、被説明変数判定部１７、作成部としての説明式生成部１８、変形制御部１９、説明変数候補循環部２０、不等式変形部２１、制約追加部２２、不等式簡約部２３、不等式求解部２４、等式求解部２５、充足解出力部２６、としての機能が実現されている。なお、本実施形態では、特定部の一例として、固有変数説明等式探索部１２、被説明変数候補抽出部１３、説明変数候補抽出部１４、固有変数選択部１５、被説明変数候補初期化部１６、被説明変数判定部１７が挙げられ、算出部の一例として、不等式変形部２１、制約追加部２２、不等式簡約部２３、不等式求解部２４、等式求解部２５が挙げられる。
【００１７】
以下、図３の各部の機能及び処理について、図４のフローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。なお、図４の処理の前提として、図２の６つの式（制約）が外部から情報処理装置１０に対して入力されているものとする。この場合、パス条件入力部１１は、パス条件（例えば、図２の６つの式）の入力を受け付け、入力データ格納領域３１に格納する。なお、入力データ格納領域３１は、図５の上図に示すようなデータ構造を有する。具体的には、入力データ格納領域３１は、「領域名」と「格納値」の各フィールドを有し、「領域名」のフィールドには、等式又は不等式のいずれかが入力され、「格納値」のフィールドには、具体的な式（制約）が格納される。
【００１８】
図４の処理においては、まず、ステップＳ１００において、固有変数説明等式探索部１２が、図２の６つの式に含まれる等式から固有変数をもつ等式を探し出す。そして、固有変数説明等式探索部１２は、固有変数を抽出する。なお、固有変数は、ある論理式の集合において、特定の論理式にのみ登場し、他の論理式には登場しない変数である。図５の上図においては、固有変数をもつ等式として、上から１つ目の式が探し出され、固有変数としてｆ、ｇが抽出される。なお、ステップＳ１００〜Ｓ１１６の処理においては、図５の下図に示すような等式処理データ格納領域３２を利用するものとする。等式処理データ格納領域３２には、「固有変数」、「被説明変数候補」、「説明変数候補」、「被説明変数リスト」、「解あり」、「連立解」を格納できるようになっている。ステップＳ１００において抽出された固有変数「ｆ，ｇ」は、等式処理データ格納領域３２の「固有変数」の欄に格納される。
【００１９】
次いで、ステップＳ１０１では、被説明変数候補抽出部１３が、６つの式に含まれる等式から被説明変数候補を抽出する。この場合、被説明変数候補抽出部１３は、被説明変数候補として、等式に含まれる全ての変数を抽出する。具体的には、図６の下図の太線枠内に示すように、被説明変数候補として「ａ、ｘ、ｙ、ｆ、ｇ、ｂ、ｃ、ｄ」が抽出される。
【００２０】
次いで、ステップＳ１０２では、説明変数候補抽出部１４が、不等式から説明変数候補を抽出する。この場合、説明変数候補抽出部１４は、説明変数候補として、不等式に含まれる全ての変数を抽出する。具体的には、図７の下図の太線枠内に示すように、説明変数候補として「ａ，ｂ，ｃ，ｄ」が抽出される。
【００２１】
次いで、ステップＳ１０４では、説明変数候補抽出部１４が、等式から説明変数候補を抽出する。この場合、説明変数候補抽出部１４は、説明変数候補として、等式に含まれる変数のうち固有変数以外の変数を抽出する。具体的には、図８の下図の太線枠内に示すように、説明変数候補として、ステップＳ１０２において抽出された説明変数候補に加えて、「ｘ，ｙ」が抽出される。
【００２２】
次いで、ステップＳ１０６では、固有変数選択部１５が、固有変数を含む等式を探して被説明変数候補を絞る。この場合、固有変数選択部１５は、固有変数となっている変数を優先的に被説明変数候補として扱う。ここで、固有変数選択部は、固有変数を含む１つの等式（図９の上から１つ目の式）においては、被説明変数にできる変数（被説明変数候補）として１つの変数のみを選択できる。このため、固有変数選択部１５は、図９の下図に示すように、被説明変数候補として「ｆ」を選択し、選択されなかった変数「ｇ」を説明変数候補とする。なお、本処理では、固有変数を被説明変数候補に優先的に含めているといえる。
【００２３】
次いで、ステップＳ１０８では、被説明変数候補初期化部１６が、被説明変数リストを被説明変数候補で初期化する。具体的には、被説明変数候補初期化部１６は、図１０（ａ）の太線枠内に示すように、被説明変数リストに被説明変数候補「ａ，ｘ，ｙ，ｆ，ｂ，ｃ，ｄ」を入力する。
【００２４】
次いで、ステップＳ１１０では、被説明変数判定部１７が、“等式の数＝被説明変数の数”となるまで説明変数候補を前から順に探索し、被説明変数リストから説明変数候補に一致する変数を捨てる（削除する）。ここで、等式の数は、「４」であるので、被説明変数の数が「４」となるまで、被説明変数リスト「ａ，ｘ，ｙ，ｆ，ｂ，ｃ，ｄ」から、説明変数候補「ａ，ｂ，ｃ，ｄ，ｘ，ｙ，ｇ」と一致する変数を削除する。具体的には、被説明変数リスト「ａ，ｘ，ｙ，ｆ，ｂ，ｃ，ｄ」から、説明変数候補の１つ目の変数「ａ」、２つ目の変数「ｂ」、３つ目の変数「ｃ」を削除し、図１０（ｂ）の太線枠内に示すように、被説明変数リストを「ｘ、ｙ、ｆ、ｄ」とする。なお、被説明変数から変数を削除する方法は、上記方法に限られるものではない。
【００２５】
次いで、ステップＳ１１２では、説明式生成部１８が、被説明変数リストに残った被説明変数について、等式集合を連立方程式として解き、被説明変数を不等式を解いた結果だけで説明できるように変形する。この場合、説明式生成部１８は、数式処理システムを呼び出して、等式集合を連立方程式として解くこととしてもよい。数式処理システムは、(1)有理式を特定の変数群について解くことができる、(2)有理式を評価できる、という機能を有するシステムであるものとする。なお、ここでは、連立解（実数解）がないため、図１１（ａ）の太線枠内に示すように、「解あり」の欄に「false」が格納される。
【００２６】
次いで、ステップＳ１１４では、変形制御部１９が、ステップＳ１１２の結果、連立解（実数解）があったかどうかを判定し、なければ（「解あり」の欄が「false」であれば）、説明変数候補循環部２０が、説明変数候補の順番を変更する。例えば、図１１（ｂ）に示すように、説明変数候補「ａ，ｂ，ｃ，ｄ，ｘ，ｙ，ｇ」の１つ目の変数「ａ」を最後尾に移動し、説明変数候補を「ｂ，ｃ，ｄ，ｘ，ｙ，ｇ，ａ」とする。
【００２７】
次いで、ステップＳ１１６では、ステップＳ１１４において、変形制御部１９が、連立解（実数解）が得られなかったと判定した場合（Ｓ１１６：否定）には、ステップＳ１０８に戻り、得られたと判定した場合には、ステップＳ１１８に移行する。なお、図１１（ｂ）では、解が得られなかったため、ステップＳ１０８に戻る。
【００２８】
ステップＳ１０８に戻ると、被説明変数候補初期化部１６が、被説明変数リストを被説明変数候補で初期化する（２回目）。具体的には、被説明変数候補初期化部１６は、図１２（ａ）の太線枠内に示すように、被説明変数リストに被説明変数候補「ａ，ｘ，ｙ，ｆ，ｂ，ｃ，ｄ」を入力する。
【００２９】
次いで、ステップＳ１１０では、被説明変数判定部１７が、“等式の数＝被説明変数の数”となるまで説明変数候補を前から順に探索し、被説明変数リストから説明変数候補に一致する変数を削除する（２回目）。ここで、等式の数は、「４」であるので、被説明変数の数が「４」となるまで、被説明変数リスト「ａ，ｘ，ｙ，ｆ，ｂ，ｃ，ｄ」から、説明変数候補「ｂ，ｃ，ｄ，ｘ，ｙ，ｇ，ａ」と一致する変数を削除する。具体的には、被説明変数リスト「ａ，ｘ，ｙ，ｆ，ｂ，ｃ，ｄ」から、説明変数候補の１つ目の変数「ｂ」、２つ目の変数「ｃ」、３つ目の変数「ｄ」を削除し、図１２（ｂ）の太線枠内に示すように、被説明変数リストを「ａ，ｘ，ｙ，ｆ」とする。
【００３０】
次いで、ステップＳ１１２では、説明式生成部１８が、被説明変数リストに残った被説明変数について、等式集合を連立方程式として解き、被説明変数を不等式を解いた結果だけで説明できるように変形する（２回目）。なお、この場合においても、連立解（実数解）がないため、図１３の太線枠内に示すように、「解あり」の欄に「false」が格納（上書き）される。
【００３１】
次いで、ステップＳ１１４では、変形制御部１９が、ステップＳ１１２の結果、連立解（実数解）があったかどうかを判定し、なければ（「解あり」の欄が「false」であれば）、説明変数候補循環部２０が、説明変数候補の順番を変更する。例えば、説明変数候補「ｂ，ｃ，ｄ，ｘ，ｙ，ｇ，ａ」の１つ目の変数「ｂ」を最後尾に移動し、説明変数候補を「ｃ，ｄ，ｘ，ｙ，ｇ，ａ，ｂ」とする。
【００３２】
次いで、ステップＳ１１６では、ステップＳ１１４において、変形制御部１９が、連立解（実数解）が得られなかったと判定した場合には、ステップＳ１０８に戻り、得られたと判定した場合には、ステップＳ１１８に移行する。なお、図１３では、解が得られなかったため、ステップＳ１０８に戻る。
【００３３】
ステップＳ１０８に戻った後は、上述したのと同様に、ステップＳ１０８〜Ｓ１１６の処理を判断を、ステップＳ１１６の判断が肯定されるまで繰り返す。本実施形態においては、５回目のステップＳ１１２の処理において、図１４に示すように、連立解（実数解）が得られることになる。この場合、等式処理データ格納領域３２の「解あり」の欄には「true」が入力され、「連立解」の欄には、被説明変数を説明変数候補で表した式が格納される。
【００３４】
上記のように、連立解（実数解）が得られると、ステップＳ１１６の判断が肯定されて、ステップＳ１１８に移行する。
【００３５】
ステップＳ１１８では、不等式変形部２１が、不等式へ連立方程式の解（被説明変数を説明する等式）を代入する。なお、ステップＳ１１８以降の処理では、不等式処理データ格納領域３３が利用される。不等式処理データ格納領域３３には、図１５に示すように、「連立不等式」、「追加制約」、「不等式解」、「代入解」の各欄が用意されているものとする。したがって、ステップＳ１１８では、不等式変形部２１は、制約（パス条件）の２つの不等式に連立解を代入した結果を、図１５に示すように、不等式処理データ格納領域３３の「連立不等式」の欄に格納する。
【００３６】
次いで、ステップＳ１２０では、制約追加部２２が、連立方程式の解（連立解）もしくは不等式にＮ乗根（Ｎは任意の整数）の被演算子があれば、実数解を得るために、“Ｎ乗根の被演算子＞０”とする制約を追加する。また、制約追加部２２は、連立解もしくは不等式に除数が存在する場合には、“除数！＝０”とする制約を追加する。本実施形態では、図１６の上図の下線部に示すように、ａが２乗根の被演算子であるので、図１６の下図の太線枠内に示すように、「ａ＞０」が、不等式処理データ格納領域３３の「追加制約」の欄に格納される。
【００３７】
次いで、ステップＳ１２２では、不等式簡約部２３が、数式処理システムを呼び出して不等式を簡約化する。
【００３８】
次いで、ステップＳ１２４では、不等式求解部２４が、外部の制約ソルバへ不等式を入力し、不等式を解き、充足解を得る。そして、不等式求解部２４は、不等式に登場するそれぞれの変数について充足値を記録する。本実施形態では、図１７の太線枠内に示すように、不等式求解部２４は、充足解（不等式解）として、ａ＝４３、ｙ＝９５、ｘ＝６０を不等式処理データ格納領域３３に記録する。なお、ステップＳ１２４では、不等式求解部２４は、以下の変数について適当な解を設定する。
(1)説明変数（説明変数候補の中で被説明変数リストに含まれない変数）であり、かつ、
(2)連立不等式及び追加制約に登場しない
【００３９】
本実施形態では、上記(1)、(2)の条件を満たす変数が「ｇ」であるので、不等式求解部２４は、図１８の太線枠内に示すように、ｇとして適当な解「１」を設定する。なお、適当な解は、「１」以外の値であってもよい。
【００４０】
次いで、ステップＳ１２６では、等式求解部２５が、不等式を解いて得た充足解（不等式解）を連立方程式の解へ代入し、代入解を得る。この場合、図１９に示すように、代入解として、ｆ、ｄ、ｂ、ｃの具体的な値を得ることができる。
【００４１】
そして、ステップＳ１２８では、充足解出力部２６が、図２０に示すように、不等式解及び代入解を入力データとして出力する。この入力データをプログラムのテストに用いることで、図２のプログラムの全ての処理パスを網羅的に実行することが可能となる。
【００４２】
以上、詳細に説明したように、本第１の実施形態によると、非線形演算および等式集合を含むパス条件（制約）中の等式集合に出現する変数から、他の変数（説明変数）を用いて説明できる特定の変数の組み合わせ（被説明変数）を特定し（Ｓ１００〜Ｓ１１０）、特定の変数（被説明変数）についての連立方程式として等式集合を解き、特定の変数（被説明変数）それぞれについて他の変数（説明変数）で説明する式（連立解）を作成し（Ｓ１１２）、作成した式（連立解）に基づいて入力データを算出する（Ｓ１１８〜Ｓ１２６）、処理を情報処理装置１０のＣＰＵ９０が実行する。このように、等式集合から被説明変数と説明変数を特定して、連立解を得て、該連立解から入力データを算出することにより、非線形演算および等式を含むパス条件（制約）を満たす入力データを現実的な時間内に算出することができる。
【００４３】
また、本第１の実施形態では、ステップＳ１１２を実行した結果、特定の変数（被説明変数）それぞれについて他の変数（説明変数）で説明する式を作成できなかった場合（ステップＳ１１６：否定）に、他の変数（説明変数）を用いて説明できる特定の変数（被説明変数）の組み合わせを特定し直し、ステップＳ１１２の処理を再度実行する。これにより、連立解を求めることができるまで、被説明変数と説明変数を変更しつつ、ステップＳ１１２を繰り返すことで、非線形演算および等式を含むパス条件（制約）を満たす入力データを確実に算出することが可能となる。
【００４４】
また、本第１の実施形態では、パス条件（制約）が不等式を含む場合には、作成した式（連立解）を不等式に代入して得られる該不等式を充足する充足解（Ｓ１２４）と、該充足解を式（連立解）に代入して得られる代入解（Ｓ１２６）と、を入力データとする。これにより、制約として不等式を含んでいても、適切な入力データを算出することができる。
【００４５】
また、本第１の実施形態では、ステップＳ１００において、固有変数説明等式探索部１２が各等式において他の等式には存在しない変数（固有変数）を特定し、ステップＳ１０６では、特定した固有変数を特定の変数（被説明変数）の組み合わせに優先的に含める。これにより、非線形演算および等式を含むパス条件（制約）を満たす入力データをより現実的な時間内に算出することができる。
【００４６】
また、本第１の実施形態では、ステップＳ１２０において、入力データとして実数解を得るために必要な制約を追加する。これにより、非線形演算および等式を含むパス条件（制約）を満たす入力データを正確に算出することができる。
【００４７】
（比較例１）
ここで、比較例１について説明する。比較例１においては、Coralを単体で用いることとした。この場合、図２の制約を解くため、図２１のCoralの制約式へ変換する。本比較例１では、実際の業務システムのテストにおいて、充足解を得るためにかけることが可能な最大時間を２４時間と設定したが、Coralでは２４時間では、充足解を得ることができなかった。なお、本比較例１では、試行環境として3.50GHzのＣＰＵ、16GBのメモリを搭載したマシンを用いた。
【００４８】
（比較例２）
次に、比較例２について説明する。比較例２においては、上記特許文献２の手段を用いることとした。比較例２では、制約展開部において、例えば変数ｘ，ｙ，ｆ，ｄについて図２中の連立する等式制約式を解き、実数解を得ることは適わなかった。なお、等式制約式を解く手段としては、数式処理システムReduceを利用した（REDUCE Computer Algebra System (http://reduce-algebra.com/）検索日2014年5月26日）。
【００４９】
これに対し、本実施形態では、図４の処理を開始してから（制約が入力されてから）およそ３秒以内に入力データを得ることができた。なお、試行環境としては、比較例１と同様、3.50GHzのＣＰＵ、16GBのメモリを搭載したマシンを用いた。
【００５０】
《第２の実施形態》
次に、第２の実施形態について説明する。第２の実施形態においては、制約として不等式を含まない場合について説明する。なお、本第２の実施形態では、情報処理装置１０の装置構成（図１）、機能ブロック（図２）、実行する処理（図４）は、同様となっている。
【００５１】
本第２の実施形態では、プログラムから抽出したパス条件（制約）が、図２２に示すような４つの等式であり、情報処理装置１０は、４つの式すべてを満足する（図２２の太線矢印に沿った処理が可能な）データａ，ｂ，ｃ，ｄ，ｆ，ｇ，ｘ，ｙを求めるものとする。
【００５２】
図４のステップＳ１００では、固有変数説明等式探索部１２が、図２３の上図の４つの等式から固有変数をもつ等式を探し出す。そして、固有変数説明等式探索部１２は、固有変数を抽出する。図２３の上図においては、固有変数をもつ等式として、上から１つ目、３つ目、４つ目の式が探し出され、各式から固有変数として「ａ，ｆ，ｇ」、「ｃ」、「ｄ」が抽出される。ステップＳ１００において抽出された固有変数「ｆ，ｇ，ｄ，ｃ，ａ」は、図２３の下図の太線枠内に示すように、等式処理データ格納領域３２の「固有変数」の欄に格納される。
【００５３】
次いで、ステップＳ１０１では、被説明変数候補抽出部１３が、４つの等式から被説明変数候補を抽出する。この場合、被説明変数候補抽出部１３は、被説明変数候補として、等式に含まれる全ての変数を抽出する。具体的には、図２４の下図の太線枠内に示すように、被説明変数候補として「ａ，ｘ，ｙ，ｆ，ｇ，ｂ，ｃ，ｄ」が抽出される。
【００５４】
次いで、ステップＳ１０２では、説明変数候補抽出部１４が、不等式から説明変数候補を抽出する。ただし、ここでは、制約の中に不等式が含まれていないので、特に何も処理を行うことなく（図２５参照）、次のステップＳ１０４に移行する。
【００５５】
ステップＳ１０４に移行すると、説明変数候補抽出部１４が、等式から説明変数候補を抽出する。この場合、説明変数候補抽出部１４は、説明変数候補として、等式に含まれる変数のうち固有変数以外の変数を抽出する。具体的には、図２６の下図の太線枠内に示すように、説明変数候補として、「ｘ，ｙ，ｂ」が抽出される。
【００５６】
次いで、ステップＳ１０６では、固有変数選択部１５が、固有変数を含む等式を探して被説明変数候補を絞る。この場合、固有変数選択部１５は、固有変数となっている変数を優先的に被説明変数候補として扱う。ここで、固有変数選択部は、固有変数を含む１つの等式においては、被説明変数にできる変数（被説明変数候補）として１つの変数のみを選択できる。このため、固有変数選択部１５は、一例として、図２７の上図の上から１つ目の式の固有変数「ａ，ｆ，ｇ」のうち、「ａ」を被説明変数候補として選択し、選択されなかった「ｆ，ｇ」を説明変数候補とする（図２７の下図の太線枠内参照）。なお、図２７の上図の上から３つ目、４つ目の式の固有変数は１つなので、固有変数選択部１５は何もしない。
【００５７】
次いで、ステップＳ１０８では、被説明変数候補初期化部１６が、被説明変数リストを被説明変数候補で初期化する。具体的には、被説明変数候補初期化部１６は、図２８（ａ）の太線枠内に示すように、被説明変数リストに被説明変数候補「ａ，ｘ，ｙ，ｂ，ｃ，ｄ」を入力する。
【００５８】
次いで、ステップＳ１１０では、被説明変数判定部１７が、“等式の数＝被説明変数の数”となるまで説明変数候補を前から順に探索し、被説明変数リストから説明変数候補に一致する変数を捨てる（削除する）。ここで、等式の数は、「４」であるので、被説明変数の数が「４」となるまで、被説明変数リスト「ａ，ｘ，ｙ，ｂ，ｃ，ｄ」から、説明変数候補「ｘ，ｙ，ｂ，ｆ，ｇ」と一致する変数を削除する。具体的には、被説明変数リスト「ａ，ｘ，ｙ，ｂ，ｃ，ｄ」から、説明変数候補の１つ目の変数「ｘ」、２つ目の変数「ｙ」を削除し、図２８（ｂ）の太線枠内に示すように、被説明変数リストを「ａ，ｂ，ｃ，ｄ」とする。
【００５９】
次いで、ステップＳ１１２では、説明式生成部１８が、被説明変数リストに残った被説明変数について、等式集合を連立方程式として解く。この場合、説明式生成部１８は、外部の数式処理システムを呼び出して、等式集合を連立方程式として解くこととしてもよい。なお、ここでは、連立解（実数解）があったため、図２９に示すように、「解あり」の欄に「true」が格納され、「連立解」の欄に、連立解ａ，ｂ，ｃ，ｄが格納される。
【００６０】
次いで、ステップＳ１１４では、変形制御部１９が、ステップＳ１１２の結果、連立解（実数解）があったかどうかを判定し、なければ（「解あり」の欄が「false」であれば）、説明変数候補循環部２０が、説明変数候補の順番を変更する。そして、ステップＳ１１６では、ステップＳ１１４において、変形制御部１９が、連立解（実数解）が得られなかったと判定した場合（ステップＳ１１６：否定）には、ステップＳ１０８に戻り、ステップＳ１０８〜Ｓ１１６の処理・判断を繰り返す。一方、図２９のように連立解が得られ、ステップＳ１１６の判断が肯定された場合には、ステップＳ１１８に移行する。
【００６１】
ステップＳ１１８に移行すると、不等式変形部２１が、不等式へ連立方程式の解（被説明変数を説明する等式）を代入する。なお、本第２の実施形態では、制約に不等式が含まれていないので、何も処理を行うことなく、次のステップＳ１２０に移行する。
【００６２】
ステップＳ１２０に移行すると、制約追加部２２が、連立方程式の解（連立解）もしくは不等式にＮ乗根（Ｎは任意の整数）の被演算子があれば、実数解を得るために、“Ｎ乗根の被演算子＞０”とする制約を追加する。また、制約追加部２２は、連立解もしくは不等式に除数が存在する場合には、“除数！＝０”とする制約を追加する。本第２の実施形態では、追加する制約がないので、次のステップＳ１２２に移行する。
【００６３】
ステップＳ１２２に移行すると、不等式簡約部２３が、数式処理システムを呼び出して不等式を簡約化する。次いで、ステップＳ１２４では、不等式求解部２４が、外部の制約ソルバへ不等式を入力し、不等式を解き、充足解を得る。ただし、本第２の実施形態では、制約に不等式が含まれていないので、上記処理を行わず、不等式求解部２４は、以下の変数について適当な解（不等式解）を設定する。
(1)説明変数（説明変数候補の中で被説明変数リストに含まれない変数）であり、かつ、
(2)追加制約に登場しない
【００６４】
本実施形態では、上記(1)、(2)の条件を満たす変数が「ｘ，ｙ，ｆ，ｇ」であるので、不等式求解部２４は、図３０（ａ）に示すように、「ｘ，ｙ，ｆ，ｇ」それぞれに対し、適当な解（不等式解）「１」を設定する。
【００６５】
次いで、ステップＳ１２６では、等式求解部２５が、ステップＳ１２４で得た解を連立方程式の解へ代入し、代入解を得る。この場合、図３０（ｂ）に示すように、代入解として、ａ＝９、ｂ＝−１０、ｃ＝１、ｄ＝５という具体的な値を得ることができる。
【００６６】
そして、ステップＳ１２８では、充足解出力部２６が、図３１に示すように、解（不等式解及び代入解）を出力する。この入力データをプログラムのテストに用いることで、図２２のプログラムの全ての処理パスを網羅的に実行することが可能となる。
【００６７】
以上、詳細に説明したように、本第２の実施形態によると、パス条件（制約）が不等式を含まず、等式のみを含む場合であっても、上記第１の実施形態と同様、非線形演算および等式を含むパス条件（制約）を満たす入力データを現実的な時間内に算出することができる。
【００６８】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録しておくことができる。
【００６９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００７０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００７１】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【００７２】
なお、以上の第１、第２の実施形態の説明に関して、更に以下の付記を開示する。
（付記１）  非線形演算および等式集合を含むプログラムのパス条件を満足する入力データを算出する入力データ算出方法であって、
前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定し、
前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成し、
作成した前記式に基づいて前記入力データを算出する、処理をコンピュータが実行する入力データ算出方法。
（付記２）  前記作成する処理を実行した結果、前記特定の変数それぞれについて前記他の変数で説明する式を作成できなかった場合に、
前記他の変数を用いて説明できる特定の変数の組み合わせを特定し直し、前記作成する処理を再度実行する、ことを特徴とする付記１に記載の入力データ算出方法。
（付記３）  前記パス条件が不等式を含む場合には、
前記算出する処理では、作成した前記式を前記不等式に代入して得られる該不等式を充足する充足解と、該充足解を前記式に代入して得られる代入解と、を前記入力データとすることを特徴とする付記１又は２に記載の入力データ算出方法。
（付記４）  前記特定する処理では、前記等式集合に含まれる各等式において他の等式には存在しない固有の変数を特定し、特定した前記固有の変数を前記特定の変数の組み合わせに優先的に含めることを特徴とする付記１〜３のいずれかに記載の入力データ算出方法。
（付記５）  前記算出する処理では、入力データとして実数解を得るために必要な制約を追加することを特徴とする付記１〜４のいずれかに記載の入力データ算出方法。
（付記６）  非線形演算および等式集合を含むプログラムのパス条件を満足する入力データをコンピュータに算出させる入力データ算出プログラムであって、
前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定し、
前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成し、
作成した前記式に基づいて前記入力データを算出する、処理を前記コンピュータに実行させる入力データ算出プログラム。
（付記７）  前記作成する処理を実行した結果、前記特定の変数それぞれについて前記他の変数で説明する式を作成できなかった場合に、
前記他の変数を用いて説明できる特定の変数の組み合わせを特定し直し、前記作成する処理を再度実行する、ことを特徴とする付記６に記載の入力データ算出プログラム。
（付記８）  前記パス条件が不等式を含む場合には、
前記算出する処理では、作成した前記式を前記不等式に代入して得られる該不等式を充足する充足解と、該充足解を前記式に代入して得られる代入解と、を前記入力データとすることを特徴とする付記６又は７に記載の入力データ算出プログラム。
（付記９）  前記特定する処理では、前記等式集合に含まれる各等式において他の等式には存在しない固有の変数を特定し、特定した前記固有の変数を前記特定の変数の組み合わせに優先的に含めることを特徴とする付記６〜８のいずれかに記載の入力データ算出プログラム。
（付記１０）  前記算出する処理では、入力データとして実数解を得るために必要な制約を追加することを特徴とする付記６〜９のいずれかに記載の入力データ算出プログラム。
（付記１１）  非線形演算および等式集合を含むプログラムのパス条件を満足する入力データを算出する入力データ算出装置であって、
前記パス条件中の等式集合に出現する変数から、他の変数を用いて説明できる特定の変数の組み合わせを特定する特定部と、
前記特定の変数についての連立方程式として前記等式集合を解き、前記特定の変数それぞれについて前記他の変数で説明する式を作成する作成部と、
作成した前記式に基づいて前記入力データを算出する算出部と、を備える入力データ算出装置。
（付記１２）  前記作成部の処理の結果、前記特定の変数それぞれについて前記他の変数で説明する式を作成できなかった場合に、
前記特定部が処理を再度実行する、ことを特徴とする付記１１に記載の入力データ算出装置。
（付記１３）  前記パス条件が不等式を含む場合には、
前記算出部は、作成した前記式を前記不等式に代入して得られる該不等式を充足する充足解と、該充足解を前記式に代入して得られる代入解と、を前記入力データとすることを特徴とする付記１１又は１２に記載の入力データ算出装置。
（付記１４）  前記特定部は、前記等式集合に含まれる各等式において他の等式には存在しない固有の変数を特定し、特定した前記固有の変数を前記特定の変数の組み合わせに優先的に含めることを特徴とする付記１１〜１３のいずれかに記載の入力データ算出装置。
（付記１５）  前記算出部は、入力データとして実数解を得るために必要な制約を追加することを特徴とする付記１１〜１４のいずれかに記載の入力データ算出装置。
【符号の説明】
【００７３】
１０  情報処理装置（入力データ算出装置）
１２  固有変数説明等式探索部（特定部の一部）
１３  被説明変数候補抽出部（特定部の一部）
１４  説明変数候補抽出部（特定部の一部）
１５  固有変数選択部（特定部の一部）
１６  被説明変数候補初期化部（特定部の一部）
１７  被説明変数判定部（特定部の一部）
１８  説明式生成部（作成部）
２１  不等式変形部（算出部の一部）
２２  制約追加部（算出部の一部）
２３  不等式簡約部（算出部の一部）
２４  不等式求解部（算出部の一部）
２５  等式求解部（算出部の一部）
【図１】
2016091236.tif 000003
【図２】
2016091236.tif 000004
【図３】
2016091236.tif 000005
【図４】
2016091236.tif 000006
【図５】
2016091236.tif 000007
【図６】
2016091236.tif 000008
【図７】
2016091236.tif 000009
【図８】
2016091236.tif 000010
【図９】
2016091236.tif 000011
【図１０】
2016091236.tif 000012
【図１１】
2016091236.tif 000013
【図１２】
2016091236.tif 000014
【図１３】
2016091236.tif 000015
【図１４】
2016091236.tif 000016
【図１５】
2016091236.tif 000017
【図１６】
2016091236.tif 000018
【図１７】
2016091236.tif 000019
【図１８】
2016091236.tif 000020
【図１９】
2016091236.tif 000021
【図２０】
2016091236.tif 000022
【図２１】
2016091236.tif 000023
【図２２】
2016091236.tif 000024
【図２３】
2016091236.tif 000025
【図２４】
2016091236.tif 000026
【図２５】
2016091236.tif 000027
【図２６】
2016091236.tif 000028
【図２７】
2016091236.tif 000029
【図２８】
2016091236.tif 000030
【図２９】
2016091236.tif 000031
【図３０】
2016091236.tif 000032
【図３１】
2016091236.tif 000033