(57)【特許請求の範囲】
【請求項１】
コンピュータに、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析ステップと、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択ステップと、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成ステップと、を実行させ、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択ステップは、前記条件式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析ステップは、前記階層構造のうちの第１の階層に含まれる第１の演算子による演算結果の真偽値に影響しない、かつ、前記第１の演算子によって演算の対象となる第１の条件式の真偽値を共通の値にする、かつ、前記第１の階層直下の第２の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、
テストケース生成プログラム。
【請求項２】
コンピュータに、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析ステップと、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択ステップと、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成ステップと、を実行させ、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択ステップは、前記条件式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析ステップは、前記階層構造のうちの第１の階層に含まれる第１の演算子による演算結果の真偽値に影響し、前記第１の演算子によって演算の対象となる第１の条件式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、
テストケース生成プログラム。
【請求項３】
前記階層構造中の最上位の階層の演算子を取得する取得ステップと、
前記所定関係を満たす条件式の真偽値を用いて前記階層構造中の最上位の階層の演算子で結合される条件式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
をさらに実行させる請求項１または請求項２に記載のテストケース生成プログラム。
【請求項４】
前記解析ステップは、前記第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の条件式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第１の階層直下の第２の条件式中の真偽値の組合せを選択するステップを含む、請求項１から請求項３の何れか一項に記載のテストケース生成プログラム。
【請求項５】
前記解析ステップは、前記第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の条件式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第１の階層直下の第２の条件式中の真偽値の組合せを選択するステップを含む、請求項１から請求項３の何れか一項に記載のテストケース生成プログラム。
【請求項６】
前記第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の条件式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる条件式を選択可能な条件式として選択演算子で結合する、請求項４に記載のテストケース生成プログラム。
【請求項７】
前記第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の条件式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が
偽となる条件式を選択可能な条件式として選択演算子で結合する、請求項５に記載のテストケース生成プログラム。
【請求項８】
コンピュータを用いてテストケースを生成する方法であって、
前記コンピュータの有するプロセッサが、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求め、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択し、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成し、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記条件式を選択する処理は、前記条件式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定しする処理を含み、
前記真偽値を求める処理は、前記階層構造のうちの第１の階層に含まれる第１の演算子による演算結果の真偽値に影響しない、かつ、前記第１の演算子によって演算の対象となる第１の条件式の真偽値を共通の値にする、かつ、前記第１の階層直下の第２の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、
テストケース生成方法。
【請求項９】
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析手段と、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択手段と、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成手段と、を備え、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条
件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択手段は、前記条件式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析手段は、前記階層構造のうちの第１の階層に含まれる第１の演算子による演算結果の真偽値に影響しない、かつ、前記第１の演算子によって演算の対象となる第１の条件式の真偽値を共通の値にする、かつ、前記第１の階層直下の第２の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、
テストケース生成装置。
【請求項１０】
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析手段と、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択手段と、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成手段と、を備え、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択手段は、前記条件式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析手段は、前記階層構造中の第１の階層に含まれる第１の演算子による演算結果の真偽値に影響し、前記第１の演算子によって演算の対象となる第１の条件式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、
テストケース生成装置。
【請求項１１】
コンピュータを用いてテストケースを生成する方法であって、
前記コンピュータの有するプロセッサが、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求め、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択し、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成し、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記条件式を選択する処理は、前記条件式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定しする処理を含み、
前記真偽値を求める処理は、前記階層構造中の第１の階層に含まれる第１の演算子による演算結果の真偽値に影響し、前記第１の演算子によって演算の対象となる第１の条件式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、
テストケース生成方法。
【請求項１２】
コンピュータに、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成する形成ステップと、
前記階層構造のうちの第１の階層に含まれる第１の演算子によって演算の対象となる条件式それぞれに対して真偽値として真を適用し、前記真が適用された条件式それぞれと前記真とを組み合わせた第１の条件式マップを生成し、前記第１の演算子によって演算の対象となる条件式それぞれに対して真偽値として偽を適用し、前記偽が適用された条件式それぞれと前記偽とを組み合わせた第２の条件式マップを生成する第１生成ステップと、
前記第１の条件式マップと前記第２の条件式マップとを含む第１の条件式マップ集合を生成する第２生成ステップと、
演算子の種別毎にテストを行う候補として抽出する条件式のルールを記憶した記憶部を参照して、前記第１の条件式マップ集合からテストを行う候補とする条件式を含む条件式マップを抽出し、抽出した前記条件式マップを含む第２の条件式マップ集合を生成する第３生成ステップと、
前記第２の条件式マップ集合に含まれる条件式それぞれについて充足可能性を判定し、充足可能と判定された条件式を選択する選択ステップと、を実行させる、
テストケース生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストケース生成プログラム、テストケース生成方法及びテストケース生成装置に関する。
【背景技術】
【０００２】
ソフトウェアのテストの品質基準を定義する指標の一つとして、ＭＣ／ＤＣ（Modified
Condition/Decision Coverage）によるテスト網羅度が知られている。ＭＣ／ＤＣは、テスト対象となるソフトウェアのプログラムコード（内部ロジック）に対して実行されたテストの網羅度を示すコードカバレッジの一種であり、航空機ソフトウェアのテスト時に使用されるカバレッジとして米国の航空機産業団体によって開発された。なお、他のコードカバレッジとして、例えば、テスト対象となるソフトウェアのプログラムコード内の全ての条件判定、判定結果としての分岐を全て確認可能なＣ／ＤＣ（Condition/Decision Coverage）が例示できる。また、テスト対象となるソフトウェアのプログラムコードの判定
に含まれる条件値の全組合せを２のｎ乗個（ｎは条件数）のテストケースで確認可能なＭＣＣ（Multiple Condition Coverage）等が例示できる。
【０００３】
ＭＣ／ＤＣは、例えば、Ｃ／ＤＣにおいて検出不能な、判定式内の“and”と“or”の
誤記を検出可能とし、ｎ個の条件数に対してｎ＋１個以上のテストケースでプログラムコードの判定に含まれる条件値の全組合せを確認可能なコードカバレッジである。なお、本明細書においては、“真”、“偽”を得る式を条件と呼び、プログラムの判定文の判定対象の式を判定、或いは、判定式と呼ぶことにする。判定式は、“and”、“or”等の論理
演算子によって複数の条件を組合せることができる。ＭＣ／ＤＣによるテスト網羅度は、以下の網羅規則を満たす。
・網羅規則１：プログラムの全入り口/出口は少なくとも一回はテストすること。
・網羅規則２：プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること。
・網羅規則３：プログラムの全判定は可能な値を少なくとも一回はテストすること。
・網羅規則４：プログラムの判定の全条件は、判定の出力に独立に影響することを示すこと。
【０００４】
なお、本明細書で説明する技術に関連する技術が記載されている先行技術文献としては、以下の特許文献が存在している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１９８０３４号公報
【特許文献２】特開２０１３−１４３０６７号公報
【特許文献３】特開２００９−１８１２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
網羅規則１−４のテスト網羅度を満たす、ＭＣ／ＤＣのテストケースは、次の（１）−（４）の手順に沿って求めることができる。
（１）テスト対象のプログラム中の各判定式において、各条件の真偽値の全組合せを生成する。
（２）各真偽値の組合せに対応する判定式の真偽値を求める。
（３）各条件について、他方の条件を固定して、一方の条件の真偽値を変更した時、判定式の真偽値も変更するようなテストケースの組を求める。
（４）各条件の組の（最小となるような）和集合がＭＣ／ＤＣのテスト網羅度の網羅規則を満たすテストケースとなる。
【０００７】
しかしながら、（１）−（４）の手順に沿ってテストケースを生成する場合、（１）の各条件の真偽値の全組合せを生成する際に、２のｎ乗個の組合せ（ｎは条件数）が生ずる。このため、条件数ｎが増加すると真偽値の組合せについて組合せ爆発を起こす虞が生ずることとなる。
【０００８】
また、（３）の手順では、各条件の真偽値の組合せによっては、真偽値を反映させた条件の間に矛盾が生じる虞がある。矛盾が含まれる場合、真偽値を反映した各条件の組合せでは、ＭＣ／ＤＣのテスト網羅度を充足するテストケースを求めることが困難となる。
【０００９】
１つの側面では、本発明は、充足可能性を向上させた、冗長性を排除可能なＭＣ／ＤＣテスト網羅度の網羅規則を満たすテストケースを生成する技術を提供する。
【課題を解決するための手段】
【００１０】
上記技術は、次のテストケース生成プログラムの構成によって例示できる。すなわち、テストケース生成プログラムは、コンピュータに、演算子による演算結果の真偽値と演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、演算対象式の真偽値を求める解析ステップと、所定関係にある複数の演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択ステップと、を実行させる。
【発明の効果】
【００１１】
上記のテストケース生成プログラムによれば、充足可能性を向上させた、冗長性を排除可能な、ＭＣ／ＤＣのテスト網羅度の網羅規則を満たすテストケースを生成する技術が提供できる。
【図面の簡単な説明】
【００１２】
【図１Ａ】比較例の、ＭＣ／ＤＣのテスト網羅度を満たすテストケースの生成についての説明図である。
【図１Ｂ】比較例の、ＭＣ／ＤＣのテスト網羅度を満たすテストケースの生成についての説明図である。
【図２Ａ】論理積、論理和についての真偽値関係を説明する説明図である。
【図２Ｂ】論理積、論理和についてのＭＣ／ＤＣのテスト網羅度を満たす３通りの真偽値関係を説明する説明図である。
【図２Ｃ】組合せルールの適用を説明する説明図である。
【図３】矛盾が生じる場合の、各条件式についての真偽値の組合せを説明する説明図である。
【図４】実施例２の下位の処理プロセスからの各条件の真偽値の組合せの抽出処理を説明する説明図である。
【図５】本実施形態の情報処理装置のハードウェア構成例を示す図である。
【図６】本実施形態の情報処理装置の処理ブロック構成を説明する図である。
【図７Ａ】二分木変換処理を説明する説明図である。
【図７Ｂ】木構造についての条件式マップ、条件式マップ集合の生成処理を説明する説明図である。
【図７Ｃ】ノードの処理プロセスについての真偽値を反映した条件式マップ集合の生成処理を説明する説明図である。
【図７Ｄ】第２の真偽値ルール適用処理に係る、木構造についての条件式マップ、条件式マップ集合の生成処理を説明する説明図である。
【図７Ｅ】ノードの処理プロセスについての真偽値を反映した条件式マップ集合の生成処理を説明する説明図である。
【図７Ｆ】第３の真偽値ルール適用処理に係る、木構造についての条件式マップ、条件式マップ集合の生成処理を説明する説明図である。
【図７Ｇ】第４の真偽値ルール適用処理に係る、木構造についての条件式マップ、条件式マップ集合の生成処理を説明する説明図である。
【図７Ｈ】ノードの処理プロセスについての真偽値を反映した条件式マップ集合の生成処理を説明する説明図である。
【図８Ａ】テストケース条件式テーブル例を示す図である。
【図８Ｂ】選択分析処理を説明する説明図である。
【図８Ｃ】更新前後のテストケース条件式テーブル例を示す図である。
【図８Ｄ】テストケース生成処理を説明する説明図である。
【図９Ａ】テストケース生成処理の全体処理を例示するフローチャートである。
【図９Ｂ】テストケース生成処理の全体処理を例示するフローチャートである。
【図９Ｃ】図９Ａに例示のＳ２の真偽値ルール適用処理を例示するフローチャートである。
【図９Ｄ】図９Ｃに例示のＳ２３のＡＮＤ演算子処理を例示するフローチャートである。
【図９Ｅ】図９Ｃに例示のＳ２３のＡＮＤ演算子処理を例示するフローチャートである。
【図９Ｆ】図９Ｃに例示のＳ２４のＯＲ演算子処理を例示するフローチャートである。
【図９Ｇ】図９Ｃに例示のＳ２４のＯＲ演算子処理を例示するフローチャートである。
【図９Ｈ】図９Ｂに例示のＳ７のテストケース選択処理を例示するフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、一実施形態に係るテストケース生成プログラムが実行される情報処理装置について説明する。以下の実施形態の構成は例示であり、情報処理装置は実施形態の構成には限定されない。
【００１４】
以下、図１から図９の図面に基づいて、テストケース生成プログラムが実行される情報処理装置を説明する。
＜比較例＞
図１Ａ、１Ｂに、比較例としての、ＭＣ／ＤＣのテスト網羅度を満たすテストケースの生成についての説明図を例示する。図１Ａは、複数の処理プロセスが記述されたテスト対象となるプログラムの例である。
【００１５】
図１ＡのブロックＰ１に示すプログラム例では、第1ステップには、“if (x>2) and (y==5) then return”との、変数ｘ，ｙのそれぞれについての条件成立の可否を“and”と
の論理演算子で結合した論理積による処理が記述されている。第２ステップには、“if (x==3) or (y>2) then z=2 * Z”との、変数ｘ，ｙのそれぞれに対する条件成立の可否を
“or”との論理演算子で結合して変数ｚを導出する論理和による処理が記述されている。
【００１６】
ＭＣ／ＤＣのテスト網羅度を満たすテストケースは、例えば、図１Ａの各ステップのプログラムに対し、以下の網羅規則１−４を満たすよう生成される。
・網羅規則１：プログラムの全入り口/出口は少なくとも一回はテストすること。
・網羅規則２：プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること。
・網羅規則３：プログラムの全判定は可能な値を少なくとも一回はテストすること。
・網羅規則４：プログラムの判定の全条件は、判定の出力に独立に影響することを示すこと。（他方の条件の値を固定し、一方の条件の値を変更することで、判定の真偽値の出力値を変更すること）
【００１７】
図１ＡのブロックＰ１のプログラムでは、ブロックＰ２に示すように、網羅規則１の“プログラムの入り口”とは、例えば、第１ステップを指し、網羅規則１の“プログラムの出口”とは、第１ステップ、第２ステップを指す。また、網羅規則２−４の“判定（判定式とも称す）”とは、例えば、第１ステップの“(x>2) and (y==5)”、第２ステップの“(x==3) or (y>2)”を指し、“条件”とは、第１ステップの“(x>2)”，“(y==5)”、第２ステップの“(x==3)”，“(y>2)”を指す。
【００１８】
なお、図１Ａに例示のプログラムに対し、ＭＣ／ＤＣのテスト網羅度を満たすテストケースとは、例えば、第１、２ステップの処理プロセスを判定する、“（x=3,y=3）”、“
（x=0,y=3）”といった変数ｘ，ｙについての数値の組合せが例示できる。なお、以下の
説明では、図１ＡのブロックＰ１に例示の第２ステップのプログラムを対象例として、ＭＣ／ＤＣのテスト網羅度を満たすテストケースを説明する。
【００１９】
第２ステップの判定式は、ブロックＰ４に示すように、変数ｘについての条件“(x==3)”と変数ｙについての条件“(y>2)”の条件成立の可否を論理和演算子“or”で結合した
、“(x==3) or (y>2)”である。このため、各条件に含まれる変数ｘ，ｙについての変数
値の組合せ（ｘ，ｙ）は、網羅規則１を満たすテストケースとなる。
【００２０】
例えば、変数ｘについての条件“(x==3)”を成立させる変数値は“３”であり、変数値“３”を除く他の変数値は、条件“(x==3)”を不成立させる変数値となる。また、変数ｙについての条件“(y>2)”を成立させる変数値は“２”を超える範囲の変数値であり、変
数値“２”以下の範囲の変数値は、条件“(y>2)”を不成立させる変数値となる。
【００２１】
従って、条件“(x==3)”を成立させる変数値“３”、及び、条件“(x==3)”を不成立させる変数値、例えば、“１”を用いたテストは、第２ステップの判定式に含まれる変数ｘについての条件“(x==3)”の可能な値を少なくとも一回はテストすることとなる。このため、変数ｘに対する変数値“１”，“３”は、ＭＣ／ＤＣの網羅規則２を満たすテストケースに含まれる。
【００２２】
変数ｙについても同様にして、条件“(y>2)”を成立させる変数値、例えば、“３”、
及び、条件“(y>2)”を不成立させる変数値、例えば、“１” を用いたテストは、第２ステップの判定式に含まれる変数ｙについての条件“(y>2)”の可能な値を少なくとも一回
はテストすることとなる。このため、変数ｙに対する変数値“１”，“３”は、ＭＣ／ＤＣの網羅規則２を満たすテストケースに含まれる。
【００２３】
第２ステップの判定式の条件“(x==3)”，“(y>2)”に対し、変数ｘ，ｙについての変
数値の組合せであるテストケース（x=1,y=1）、（x=1,y=3）、（x=3,y=1）は、ＭＣ／Ｄ
Ｃの網羅規則２を満たすこととなる。
【００２４】
なお、変数ｘ、ｙについての（x=3,y=3）との組合せも、ＭＣ／ＤＣの網羅規則２を満
たすテストケースとして存在し得る。しかしながら、第２ステップの判定式に含まれる“(x==3)”との条件についての条件成立テストは、（x=3,y=1）により少なくとも１回は実
行され、同様に、“(y>2)”との条件について条件成立テストは、（x=1,y=3）により少なくとも１回は実行される。ＭＣ／ＤＣの網羅規則２では、条件“(x==3)”、“(y>2)”に
ついて、可能な変数値を少なくとも１回、テストすればよいので、（x=3,y=3）との組合
せは、他のテストケースによる条件成立の可否と重複するため、余剰なテストケースとなる。
【００２５】
ＭＣ／ＤＣの網羅規則２を満たすテストケース（x=1,y=1）、（x=1,y=3）、（x=3,y=1
）において、（x=1,y=1）との組合せは、第２ステップの判定式“(x==3) or (y>2)”を不成立させるテストケースである。また、（x=1,y=3）との組合せは、第２ステップの判定
式“(X==3) or (y>2)”を成立させるテストケースである。このため、例えば、ＭＣ／Ｄ
Ｃの網羅規則２を満たすテストケースにおいて、変数ｘ，ｙについての（x=1,y=1）、（x=1,y=3）の組合せは、第２ステップのプログラムの判定式の可能な値を少なくとも１回はテストするテストケースとなる。変数ｘ，ｙについての（x=1,y=1）、（x=1,y=3）の組合せによるテストケースは、ＭＣ／ＤＣの網羅規則３を満たすこととなる。
【００２６】
ここで、第２ステップのプログラムの判定式に含まれる条件“(x==3)”について、該条件を成立させる変数ｘの値“３”は“真（true）”の変数値と言え、該条件を不成立させる値“１”は“偽（false）”の変数値と言うことができる。同様にして、条件“(y>2)”について、該条件を成立させる変数ｙの値“３”は“真（true）”の変数値と言え、該条件を不成立させる値“１”は“偽（false）”の変数値と言うことができる。
【００２７】
例えば、変数ｘ，ｙについての（x=1,y=1）の組合せは、条件“(x==3)”について“偽
（false）”、条件“(y>2)”について“偽（false）”とし、プログラムの判定式“(x==3) or (y>2)”を不成立（偽（false））させるテストケースである。また、例えば、変数
ｘ，ｙについての（x=3,y=1）は、条件“(x==3)”について“真（true）”、条件“(y>2)”について“偽（false）”とし、プログラムの判定式“(x==3) or (y>2)”を成立（真（true））させるテストケースである。
【００２８】
テストケース（x=1,y=1）と（x=3,y=1）との関係は、条件“(y>2)”に対する真偽値を
“偽（false）”に固定し、条件“(x==3)”に対する真偽値を変更する関係にあり、プロ
グラムの判定式“(x==3) or (y>2)”の真偽値を変更する関係にある。つまり、テストケ
ース（x=1,y=1）と（x=3,y=1）との関係は、第２ステップのプログラムの判定式“(x==3)
or (y>2)”の真偽値の出力に独立に影響することとなる。
【００２９】
また、例えば、変数ｘ，ｙについての（x=1,y=3）の組合せは、条件“(x==3)”につい
て“偽（false）”、条件“(y>2)”について“真（true）”とし、プログラムの判定式“(x==3) or (y>2)”を成立（真（true））させるテストケースである。従って、テストケ
ース（x=1,y=1）と（x=1,y=3）との関係は、条件“(x==3)”に対する真偽値を“偽（false）”に固定し、条件“(y>2)”に対する真偽値を変更する関係にあり、プログラムの判定式“(x==3) or (y>2)”の真偽値を変更する関係にある。テストケース（x=1,y=1）と（x=1,y=3）との関係は、第２ステップのプログラムの判定式“(x==3) or (y>2)”の真偽値の出力に独立に影響することとなる。
【００３０】
第２ステップのプログラムに対しては、（x=1,y=1）と（x=3,y=1）とのテストケースの組合せ、及び、（x=1,y=1）と（x=1,y=3）のテストケースの組合せが、ＭＣ／ＤＣの網羅規則４を満たすテストケースの和集合となる。従って、判定式に含まれる条件数が２個の第２ステップのプログラムでは、ＭＣ／ＤＣの網羅規則１−４を満たす、３個のテストケース“（x=1,y=1）、（x=1,y=3）、（x=3,y=1）”が生成されることとなる。テスト対象
となるプログラムの判定式に係る条件数がｎ個の場合、ｎ＋１個を最小としてｎ＋１通り以上の、ＭＣ／ＤＣのテスト網羅度を満たすテストケースが生成される。
【００３１】
なお、ＭＣ／ＤＣのテスト網羅度を満たすテストケースは、テスト対象となるプログラムの判定式に係る各条件の真偽値がテストできるものであり、且つ、プログラムの判定式の真偽値をテストできるものであればよい。例えば、第２ステップのプログラムに対しては、変数ｘ、ｙの変数値の組合せとして、“（x=2,y=2）、（x=2,y=4）、（x=3,y=2）”
といったテストケースであってもよい。
【００３２】
次に、網羅規則１−４のテスト網羅度を満たすＭＣ／ＤＣのテストケースの求め方（手順）について、図１Ｂを参照し説明する。図１Ｂは、網羅規則１−４のテスト網羅度を満たすＭＣ／ＤＣのテストケースの求め方（手順）を説明する説明図である。但し、説明例としてのプログラムは、“if (A or B) and C then z=2 * Z”とする。以下の説明では、“(A or B) and C”が判定式となり、“A”、“B”、“C”が判定に係る条件となる。判
定に係る各条件には、それぞれに真偽値が存在し、条件毎の真偽値の組合せにより、プログラムとしての判定式の真偽値が決定される。
【００３３】
“if (A or B) and C then z=2 * Z”をテスト対象とした、ＭＣ／ＤＣのテスト網羅度を満たすテストケースは、以下の（１）−（４）の手順に沿って求めることができる。
【００３４】
（１）各条件の真偽値の全組合せを生成する。
図１Ｂの、破線で囲まれた領域Ｚ１に例示のように、判定に係る条件“A”、“B”、“C”について、それぞれの真偽値の全組合せを生成する。図１Ｂの例では、判定に係る条
件数が３個であるため、２の３乗個である８通りの真偽値の組合せ（識別番号１−８）が生成される。
【００３５】
（２）各真偽値の組合せに対応する判定式の真偽値を求める。
図１Ｂの、破線で囲まれた領域Ｚ２に例示するように、判定に係る条件“A”、“B”、“C”について生成された真偽値の全組合せに対する、判定式の真偽値を生成する。ここ
で、プログラムの判定式は“(A or B) and C”である。
【００３６】
論理積（and）で結ばれた判定式の左項(A or B)は、条件“A”、“B”の論理和である
ため、少なくとも一方の条件が“真（true）”であれば、左項(A or B)は“真”となる。条件“A”、“B”の真偽値の組合せとして（A,B）＝（真、真）、（真、偽）、（偽、真
）の３通りが、論理和（or）で結ばれた左項(A or B)を“真”とする。
【００３７】
そして、論理積で結ばれた判定式(A or B) and C”では、左項“(A or B)”と右項“C
”とが“真”である場合に、判定式としての真偽値が“真”となる。従って、条件“A”
、“B”、“C”の真偽値の組合せとして（A,B,C）＝（真、真、真）、（真、偽、真）、
（偽、真、真）の３通りが、判定式“(A or B) and C”を“真”とする（他の組合せでは、判定式は“偽”となる）。図１Ｂの例では、識別番号１，３，５の各条件の組合せが、判定式“(A or B) and C”を“真”とする。
【００３８】
（３）各条件について、他方の条件を固定して、一方の条件の真偽値を変更した時、判定式の真偽値も変更するようなテストケースの組を求める。
図１Ｂの、破線で囲まれた領域Ｚ３に例示するように、判定に係る条件“A”、“B”、“C”のそれぞれについて、ＭＣ／ＤＣの網羅規則４を満たすための真偽値の組合せを求
める。例えば、条件“A”の場合では、条件“B”、“C”の真偽値を固定し、条件“A”の真偽値を“真（true）”、“偽（false）”と変更した場合に、領域Ｚ２の真偽値が変更
になる組合せを求める。同様にして、条件“B”の場合では、条件“A”、“C”の真偽値
を固定し、条件“B”の真偽値を“真（true）”、“偽（false）”と変更した場合に、領域Ｚ２の真偽値が変更になる組合せを求める。条件“C”の場合では、条件“A”、“B”
の真偽値を固定し、条件“C”の真偽値を“真（true）”、“偽（false）”と変更した場合に、領域Ｚ２の真偽値が変更になる組合せを求める。
【００３９】
図１Ｂにおいて、条件“A”については、識別番号１、５の条件“B”、“C”を（真（true）、真（true））に固定した場合、識別番号２、６の（真（true）、偽（false））に固定した場合では、条件“A”の真偽値の変更に関らず、判定式の真偽値は変わらない。
また、条件“B”、“C”を（偽（false）、偽（false））に固定した識別番号４、８の場合でも条件“A”の真偽値の変更に関らず、判定式の真偽値は変わらない。
【００４０】
一方、条件“A”について、識別番号３、７の条件“B”、“C”を（偽（false）、真（true））に固定した場合では、条件“A”の真偽値の変更に伴い、判定式の真偽値が変更
されることとなる。従って、条件“A”、“B”、“C”について、識別番号３の（真（true）、偽（false）、真（true））の真偽値の組合せ、識別番号７の（偽（false）、偽（false）、真（true））の真偽値の組合せは、ＭＣ／ＤＣの網羅規則４を満たす真偽関係となる。
【００４１】
条件“B”についても同様にして、識別番号１、３の条件“A”、“C”を（真（true）
、真（true））に固定した場合、識別番号２、６の（真（true）、偽（false））に固定
した場合では、条件“B”の真偽値の変更に関らず、判定式の真偽値は変わらない。また
、条件“A”、“C”を（偽（false）、偽（false））に固定した識別番号６、８の場合でも条件“B”の真偽値の変更に関らず、判定式の真偽値は変わらない。
【００４２】
一方、条件“B”について、識別番号５、７の条件“A”、“C”を（偽（false）、真（true））に固定した場合では、条件“B”の真偽値の変更に伴い、判定式の真偽値が変更
されることとなる。従って、条件“A”、“B”、“C”について、識別番号５の（偽（false）、真（true）、真（true））の真偽値の組合せ、識別番号７の（偽（false）、偽（false）、真（true））の真偽値の組合せは、ＭＣ／ＤＣの網羅規則４を満たす真偽関係となる。
【００４３】
条件“C”については、識別番号７、８の条件“A”、“B”を（偽（false）、偽（false））に固定した場合に、条件“C”の真偽値の変更に関らず、判定式の真偽値は変わらない。他の、識別番号１、２の条件“A”、“B”を（真（true）、真（true））に固定した場合、識別番号３、４の（真（true）、偽（false））に固定した場合では、条件“C”の真偽値の変更に応じて判定式の真偽値が変更されることとなる。また、識別番号５、６の（偽（false）、真（true））に固定した場合でも、条件“C”の真偽値の変更に応じて判定式の真偽値が変更される。
従って、条件“C”について、識別番号１と２、３と４、５と６の真偽値の組合せは、
ＭＣ／ＤＣの網羅規則４を満たす真偽関係となる。
【００４４】
（４）各条件の組の（最小となるような）和集合がＭＣ／ＤＣのテスト網羅度の網羅規則１−４を満たすテストケースとなる。
図１Ｂの説明例では、条件“A”に対する真偽値の組合せは、識別番号３と７の１組で
あり、条件“B”に対する真偽値の組合せは、識別番号５と７の１組である。また、条件
“C”に対する真偽値の組合せは、識別番号１と２，３と４，５と６の３組である。それ
ぞれの条件に対する真偽値の組合せの中から、少なくとも条件毎に１組の真偽値の組合せをテストケースとして持つことにより、対象となるプログラムについての最小となるテストケースの和集合を求めることができる。
【００４５】
ここで、条件“C”に対する３組の真偽値の組合せの内、識別番号１と２の１組を選択
した場合、条件“A”、“B”と合わせて、テストケースとなる真偽値の組合せの総数は識
別番号１、２、３、５、７の５通りとなる。また、識別番号３と４の１組を選択した場合では、識別番号３が条件“A”のテストケースとなる組合せと重複するため、テストケー
スとなる真偽値の組合せの総数は識別番号３、４、５、７の４通りとなる。同様に、識別番号５と６の１組を選択した場合では、識別番号５が条件“B”のテストケースとなる組
合せと重複するため、テストケースとなる真偽値の組合せの総数は識別番号３、５、６、７の４通りとなる。
【００４６】
従って、条件“A”、“B”、“C”に対する真偽値の組合せについて、テストケースと
なる真偽値の組合せの総数が最小となる和集合は、識別番号３、４、５、７によるテストケース、或いは、識別番号３、５、６、７によるテストケースとなる。
【００４７】
このように、テスト対象となるプログラムの判定式、判定式に含まれる条件について、上述の手順（１）−（４）を適用し、条件数ｎに対してｎ＋１個を最小値とするｎ＋１通り以上のＭＣ／ＤＣのテスト網羅度を満たすテストケースを生成することができる。しかし、手順（１）において、判定式に含まれる各条件の真偽値の全組合せを生成するため、条件数ｎに対し２のｎ乗個の真偽値の組合せが発生することとなる。テスト対象のプログラムに含まれる条件数が相対的に多い場合には、条件数ｎの増加に比例して真偽値の組合せが増加するため、所謂、組合せ爆発を起こす虞がある。組合せ爆発が生じた場合には、ＭＣ／ＤＣのテスト網羅度を満たすテストケースの生成処理が収束しない虞がある。
【００４８】
＜実施例１＞
図１Ｂで説明したように、テスト対象となるプログラムの判定式に含まれる各条件についての真偽値の組合せの内（図１Ｂでは８通り）、ＭＣ／ＤＣのテスト網羅度の網羅規則を満たす最小数の組合せ以外の、真偽値の組合せ（図１Ｂでは４通り）は余剰となる。
【００４９】
ＭＣ／ＤＣのテスト網羅度を満たすテストケースは、テスト対象となる判定式に対して、網羅規則２の「プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること。」といった真偽値関係を満たすことが求められる。また、同様に、ＭＣ／ＤＣのテスト網羅度を満たすテストケースは、テスト対象となる判定式に対して、網羅規則３の「プログラムの全判定は可能な値を少なくとも一回はテストすること。」といった真偽値関係を満たすことが求められる。
【００５０】
ここで、テスト対象となるプログラムの判定式に対する真偽値は、各条件を結合する“and”，“or”といった論理演算子に基づいて決定される。実施例１では、各条件を結合
する論理演算子の論理関係に基づいて、上述の網羅規則２、３を満たすよう判定式としての真偽値と条件毎の真偽関係の組合せとを求めることにより、各条件についての余剰な真偽値の組合せを排除する。
【００５１】
（基本ルール）
図２Ａ（１）、（２）に、テスト対象となる判定式に含まれる論理積（and）、論理和
（or）についての真偽値関係の説明図を例示する。図２Ａ（１）は、論理積についての真偽値関係の説明図であり、図２Ａ（２）は論理和についての真偽値関係の説明図である。なお、説明例の判定式は、“（A or B） and (C)”とする。
【００５２】
図２Ａ（１）の、論理積：（A and B）の関係では、例えば、条件“A”、“B”の真偽
値の組合せとして（A,B）＝（真（true）、真（true））、（真（true）、偽（false））、（偽（false）、真（true））、（偽（false）、偽（false））の４つの組合せが存在
する。そして、各条件の４通りの真偽値の組合せに対し、ＭＣ／ＤＣのテスト網羅度の網羅規則３を満たすように、論理積の判定結果を“真（true）”、“偽（false）”とする
条件の組合せを抽出する。
【００５３】
先ず、論理積の判定結果を“真（true）”とする条件は、各条件の４通りの真偽値の組合せの中の、（A,B）＝（真（true）、真（true））の１通りである。他の、（A,B）＝（真（true）、偽（false））、（偽（false）、真（true））、（偽（false）、偽（false）の組合せは、論理積の判定結果を“偽（false）”とする条件の組合せである。ＭＣ／
ＤＣのテスト網羅度の網羅規則３を満たすためには、論理積の判定結果を“偽（false）
”とする各条件の３通りの真偽値の組合せから、少なくとも１通り以上を抽出すればよい。
【００５４】
次に、論理積の判定結果を“真（true）”とする条件（A,B）の真偽値の組合せに対し
、ＭＣ／ＤＣのテスト網羅度の網羅規則２を満たすように、論理積の判定結果を“偽（false）”とする各条件の３通りの真偽値の組合せの中から所定の組合せを抽出する。
【００５５】
ここで、条件“A”、“B”のそれぞれについて、論理積の判定結果が“真（true）”となる真偽値の組合せは既に確定している。従って、ＭＣ／ＤＣのテスト網羅度の網羅規則２を満たすためには、条件“A”を“偽（false）”としてテスト可能な条件“A”、“B”の組合せがあればよい。また、同様にして、条件“B”を“偽（false）”としてテスト可能な条件“A”、“B”の組合せがあればよい。
【００５６】
この結果、論理積で結ばれた条件の真偽関係では、条件“A”を“偽（false）”とする（A,B）＝（偽（false）、真（true））の組合せ、条件“B”を“偽（false）”とする（A,B）＝（真（true）、偽（false））の組合せが、網羅規則２の関係を満たすこととなる。なお、各条件の４通りの真偽値の組合せの中で、（A,B）＝（偽（false）、偽（false
））との組合せは、論理積の判定結果を“偽（false）”とする他の２通りの組合せで真
偽値のテストが網羅されるため、余剰な組合せとなる。
【００５７】
論理積：（A and B）で結ばれた各条件の真偽関係では、図２Ａ（１）に例示する、条
件“A”、“B”についての３通りの真偽値の組合せが、ＭＣ／ＤＣのテスト網羅度の網羅規則２，３を満たす組合せとして提示できる。論理積：（A and B）では、条件“A”、“B”の真偽値の組合せとして（A,B）＝（真（true）、真（true））、（真（true）、偽（false））、（偽（false）、真（true））の３通りの組合せがＭＣ／ＤＣのテスト網羅度を満たす組合せとして抽出される。
【００５８】
図２Ａ（２）の、論理和：（A or B）についても、同様の関係が抽出できる。すなわち、論理和についても、条件“A”、“B”の真偽値の組合せとして（A,B）＝（真（true）
、真（true））、（真（true）、偽（false））、（偽（false）、真（true））、（偽（false）、偽（false））の４通りの組合せが存在する。そして、各条件の４通りの真偽値の組合せに対し、ＭＣ／ＤＣのテスト網羅度の網羅規則３を満たすように、論理和の判定結果を“真（true）”、“偽（false）”とする条件の組合せを抽出する。
【００５９】
先ず、論理和の判定結果を“偽（false）”とする条件は、各条件の４通りの真偽値の
組合せの中の、（A,B）＝（偽（false）、偽（false））の１通りである。他の、（A,B）＝（真（true）、真（true））、（真（true）、偽（false））、（偽（false）、真（true））の組合せは、論理和の判定結果を“真（true）”とする条件の組合せである。ＭＣ／ＤＣのテスト網羅度の網羅規則３を満たすためには、論理和の判定結果を“真（true）”とする各条件の３通りの真偽値の組合せから、少なくとも１通り以上を抽出すればよい。
【００６０】
次に、論理和の判定結果を“偽（false）”とする条件（A,B）の真偽値の組合せに対し、ＭＣ／ＤＣのテスト網羅度の網羅規則２を満たすように、論理和の判定結果を“真（tr
ue）”とする各条件の３通りの真偽値の組合せの中から所定の組合せを抽出する。
【００６１】
ここで、条件“A”、“B”のそれぞれについて、論理和の判定結果が“偽（false）”
となる真偽値の組合せは既に確定している。従って、ＭＣ／ＤＣのテスト網羅度の網羅規則２を満たすためには、条件“A”を“真（true）”としてテスト可能な条件“A”、“B
”の組合せがあればよい。また、同様にして、条件“B”を“真（true）”としてテスト
可能な条件“A”、“B”の組合せがあればよい。
【００６２】
この結果、論理和で結ばれた条件の真偽関係では、条件“A”を“真（true）”とする
（A,B）＝（真（true）、偽（false））の組合せ、条件“B”を“真（true）”とする（A,B）＝（偽（false）、真（true））の組合せが、網羅規則２の関係を満たすこととなる
。なお、各条件の４通りの真偽値の組合せの中で、（A,B）＝（真（true）、真（true）
）との組合せは、論理和の判定結果を“真（true）”とする他の２通りの組合せで真偽値のテストが網羅されるため、余剰な組合せとなる。
【００６３】
論理和：（A or B）で結ばれた各条件の真偽関係では、図２Ａ（２）に例示する、条件“A”、“B”についての３通りの真偽値の組合せが、ＭＣ／ＤＣのテスト網羅度の網羅規則２，３を満たす組合せとして提示できる。論理和：（A or B）の関係では、条件“A”
、“B”の真偽値の組合せとして（A,B）＝（真（true）、偽（false））、（偽（false）、真（true））、（偽（false）、偽（false））の３通りの組合せがＭＣ／ＤＣのテスト網羅度を満たす組合せとして抽出される。
【００６４】
このように、判定式の各条件を結合する論理演算子の論理種別に応じて、条件毎の真偽値を演算順に階層的（再帰的）に適用すれば、条件数ｎに対し２のｎ乗個の真偽値の組合せを生じることなくＭＣ／ＤＣのテスト網羅度を満たす真偽値の組合せが生成できる。
【００６５】
例えば、判定式“（A or B）and (C)”では、条件“A”、“B”についての論理和が下
位の処理プロセスであり、条件“A”、“B”の論理和（A or B）と条件（C）との論理積
が上位の処理プロセスとなる。
【００６６】
例えば、論理演算子“and”で結ばれる条件（A or B）と条件（C）に対して、上述した論理積の真偽値関係により、（（A or B）,(C)）＝（真（true），真（true））、（真（true），偽（false））、（偽（false），真（true））の３通りの組合せを生成する。そして、生成された真偽値の各組合せに対し、例えば、論理演算子“or”で結ばれる条件（A or B）についての論理和の真偽関係を適用するとすればよい。つまり、条件（A or B）について、論理和を“真（true）”とする条件“A”、“B”の真偽値の組合せ、論理和を“偽（false）”とする条件“A”、“B”の真偽値の組合せを、論理演算子“and”で得られた３通りの真偽値の組合せに適用する。
【００６７】
例えば、論理和の条件（A or B）を“真（true）”とする条件“A”、“B”の真偽値の組合せは、図２Ａ（２）より、（A,B）＝（真（true）、偽（false））、（偽（false）
、真（true））の２通りとなる。また、論理和の条件（A or B）を“偽（false）”とす
る条件“A”、“B”の真偽値の組合せは、図２Ａ（２）より、（A,B）＝（偽（false）、偽（false））の１通りとなる。
【００６８】
従って、論理和の条件（A or B）を“真（true）”とする条件“A”、“B”の真偽値の組合せを適用することで、（A,B,C）＝（真（true）、偽（false）、真（true））、（偽（false）、真（true）、真（true））の２通りの真偽値の組合せが生成される。同様に
して、（A,B,C）＝（真（true）、偽（false）、偽（false））、（偽（false）、真（true）、偽（false））の２通りの真偽値の組合せが生成される。
【００６９】
また、論理和の条件（A or B）を“偽（false）”とする条件“A”、“B”の真偽値の
組合せを適用することで、（A,B,C）＝（偽（false）、偽（false）、真（true））の１
通りの真偽値の組合せが生成される。判定式の各条件を結合する論理演算子の論理種別に応じて、図２Ａ（１）、（２）に例示の論理積、論理和による基本ルールとしての真偽値を、各条件に対して階層的に適用することにより、冗長性を排除した５通りの真偽値の組合せを得ることができる。
【００７０】
なお、論理積、論理和による基本ルールを適用した場合、判定式“（A or B） and (C)”の３個の条件数（A,B,C）に対して５通りの真偽値の組合せを得ることができる。しか
し、条件数が３個の場合では、最小限となる各条件の真偽値の組合せは４通りであるため、未だ１個の余剰な真偽値の組合せ存在することとなる。次に、論理積、論理和による基本ルールを適用した場合に残された余剰な真偽値の組合せを排除可能な、ＭＣ／ＤＣのテスト網羅度の網羅規則４を考慮した、各条件に対する真偽値の組合せルールを説明する。
【００７１】
（組合せルール）
図２Ｂ（１）、（２）に、論理積（and）、論理和（or）についてのＭＣ／ＤＣのテス
ト網羅度を満たす３通りの真偽値関係の説明図を例示する。図２Ｂ（１）は、論理積についての真偽値関係の説明図であり、図２Ｂ（２）は論理和についての真偽値関係の説明図である。
【００７２】
図２Ｂ（１）、（２）の右上がり斜線でハッチングされた領域に示されるように、論理積（and）、論理和（or）のそれぞれに、判定結果に独立に影響を及ぼす各条件の真偽値
の組合せが存在する。ここで、判定結果に独立に影響を及ぼす各条件の真偽値の組合せとは、各条件についての真偽値を反転させた場合に、判定結果としての真偽値が変更される各条件の真偽値の組合せをいう。
【００７３】
例えば、論理積の判定式“A and B”を想定すると、図２Ｂ（１）のＩＤ＝１のレコー
ドに示すように、条件“A”が“真（true）”、条件“B”が“偽（false）”の真偽値の
組み合わせでは、判定結果（A and B）は“偽（false）”となる。ＩＤ＝１のレコードの真偽値の組合せにおいて、例えば、条件“A”を“真（true）”→“偽（false）”に変更した場合、判定結果は“偽（false）”となり、変更の前後では真偽値は変化しない。
【００７４】
一方、ＩＤ＝１のレコードの真偽値の組合せにおいて、例えば、条件“B”を“偽（false）”→“真（true）”に変更した場合には、判定結果は“真（true）”となり、条件“B”の真偽値の変更の前後で真偽値が変化することとなる。つまり、図２Ｂ（１）のＩＤ
＝１のレコードの真偽値の組合せでは、条件“B”の真偽値は、判定結果の真偽値に独立
に影響を及ぼすということができる。
【００７５】
図２Ｂ（１）のＩＤ＝２のレコードの、条件“A”が“真（true）”，条件“B”が“偽（false）”の組み合わせにおける、条件“A”の真偽値についても、判定結果の真偽値に独立に影響を及ぼすということができる。ＩＤ＝２のレコードの条件“A”、“B”の真偽値の組合せでは、条件“A”を“偽（false）”→“真（true）”に変更した場合には、判定結果（A and B）の真偽値が“偽（false）”→“真（true）”に変更されるからである。
【００７６】
図２Ｂ（１）のＩＤ＝３のレコードの、条件“A”が“真（true）”、条件“B”が“真（true）”の真偽値の組み合わせでは、条件“A”、条件“B”の真偽値がそれぞれに、判定結果の真偽値に独立に影響を及ぼすということができる。例えば、ＩＤ＝３のレコードの条件“A”、“B”の真偽値の組合せでは、条件“A”を“真（true）”→“偽（false）
”に変更した場合には、判定結果（A and B）の真偽値が“真（true）”→“偽（false）”に変更されるからである。同様に、例えば、条件“B”を“真（true）”→“偽（false）”に変更した場合にも、判定結果（A and B）の真偽値が“真（true）”→“偽（false）”に変更されるからである。
【００７７】
図２Ｂ（２）の論理和の判定式（A or B）では、例えば、ＩＤ＝１のレコードに示すように、条件“A”が“真（true）”、条件“B”が“偽（false）”の真偽値の組み合わせ
では、判定結果（A or B）は“真（true）”となる。ＩＤ＝１のレコードの真偽値の組合せにおいて、例えば、条件“A”を“真（true）”→“偽（false）”に変更した場合には、判定結果は“偽（false）”となり、条件“A”の真偽値の変更の前後で真偽値が変化することとなる。ＩＤ＝１のレコードの真偽値の組合せにおいて、条件“A”の真偽値は、
判定結果の真偽値に独立に影響を及ぼすということができる。
【００７８】
図２Ｂ（２）のＩＤ＝２のレコードの、条件“A”が“偽（false）”、条件“B”が“
真（true）”の組み合わせにおける、条件“B”の真偽値についても、判定結果の真偽値
に独立に影響を及ぼすということができる。ＩＤ＝２のレコードの条件“A”、“B”の真偽値の組合せでは、条件“B”を“真（true）”→“偽（false）”に変更した場合には、判定結果（A or B）の真偽値が“真（true）”→“偽（false）”に変更されるからであ
る。
【００７９】
図２Ｂ（２）のＩＤ＝３のレコードの、条件“A”が“偽（false）”、条件“B”が“
偽（false）”の真偽値の組み合わせでは、条件“A”、条件“B”の真偽値がそれぞれに
、判定結果の真偽値に独立に影響を及ぼすということができる。例えば、ＩＤ＝３のレコードの条件“A”、“B”の真偽値の組合せでは、条件“A”を“偽（false）”→“真（true）”に変更した場合には、判定結果（A or B）の真偽値が“偽（false）”→“真（true）”に変更されるからである。同様に、例えば、条件“B”を“偽（false）”→“真（true）”に変更した場合にも、判定結果（A or B）の真偽値が“偽（false）”→“真（true）”に変更されるからである。
【００８０】
図２Ｂ（１）、（２）に例示にように、基本ルールとしての論理積（and）、論理和（or）による真偽値の組合せには、それぞれに判定結果の真偽値に独立に影響を及ぼす組合
せが存在する。従って、例えば、基本ルールの階層的（再帰的）な各条件の真偽値の組合せに対し、以下に定義する組合せルール１、２を適用することにより、網羅規則１−４を満たす各条件の真偽値関係を得ることが可能となる。
・組合せルール１：判定結果としての真偽値に独立に影響しない（対象となる条件の真偽値を反転しても判定結果が変わらない）場合には、判定結果の真偽値が共通する条件の組合せから１つの組合せを抽出し、適用する。
・組合せルール２：判定結果としての真偽値に独立に影響する（対象となる条件の真偽値を反転すると判定結果が変わる）場合には、判定結果の真偽値が共通する条件の組合せを全て抽出し、適用する。
【００８１】
なお、上述の組合せルール１，２は、例えば、基本ルールとなる論理積（and）、論理
和（or）の真偽値表に、予め対応付けておくことができる。例えば、図２Ｂ（１）、（２）の例では、右上がり斜線でハッチングされた領域の真偽値に対し、組合せルール２が適用されることを対応付けておけばよい。また、図２Ｂ（１）、（２）の例において、組合せルール２が適用される領域以外の真偽値に対しては、例えば、組合せルール１が適用されることを対応付けるとしてもよい。
【００８２】
次に、上述の組合せルール１，２を反映させた場合の、各条件に対する真偽値の組合せの適用について説明する。図２Ｃ（１）、（２）に、上述の組合せルールを反映させた基
本ルールの階層的（再帰的）な適用についての説明図を例示する。なお、図２Ｃ（１）、（２）における、判定式は“（A or B） and C”とする。
【００８３】
図２Ｃ（１）に例示の真偽値表テーブルは、例えば、判定式“（A or B） and C”に対して、図２Ａ（１）の論理積の基本ルールを適用した場合の、条件“（A or B）”と条件“C”の真偽値関係を示すものである。図２Ａ（１）で説明したように、判定式“（A or B） and C”に対して、論理積の基本ルールを適用することにより、条件“（A or B）”
、“C”についての、ＭＣ／ＤＣのテスト網羅度を満たす３通りの真偽値の組合せが生成
される。
【００８４】
図２Ｃ（１）に例示のように、条件“（A or B）”、“C”についての、（（A or B）,C）＝（真（true），偽（false））、（偽（false），真（true））、（真（true），真
（true））の３通りの真偽値の組合せが生成される。そして、３通りの真偽値の各組合せについて、条件“（A or B）”に対し、図２Ａ（２）に例示の論理和の真偽値の組合せを適用することで、基本ルールの階層的（再帰的）な真偽値の組合せを反映したテストケースが生成される。
【００８５】
つまり、条件“（A or B）”、“C”について生成された３通りの真偽値の組合せに対
し、条件（A or B）を“真（true）”とする場合では、論理和“A or B”が“真（true）”となる、図２Ａ（２）に例示の条件“A”、“B”の組合せを適用すればよい。同様にして、条件“（A or B）”、“C”について生成された３通りの真偽値の組合せに対し、条
件（A or B）を“偽（false）”とする場合では、論理和“A or B”が“偽（false）”となる、図２Ａ（２）に例示の条件“A”、“B”の組合せを適用すればよい。
【００８６】
論理積で結合される条件“（A or B）”、“C”について生成された３通りの真偽値の
組合せに対し、論理和で結合された条件“A”、“B”の真偽値の組合せを適用することで、基本ルールの階層的（再帰的）な真偽値の組合せに基づくテストケースが生成できる。
【００８７】
図２Ｃ（１）に例示の各条件の組合せにおいて、ＩＤ＝１のレコードの、条件“（A or
B）”の真偽値である“真（true）”は、図２Ｂ（１）で説明したように、論理積の判定結果の真偽値に独立に影響しない。従って、条件“（A or B）”について、論理和の基本ルールを階層的（再帰的）適用する際には、組合せルール１を採用すればよい。つまり、図２Ａ（２）に例示の、ＩＤ＝１、或いは、ＩＤ＝２のどちらか一方の、論理和“A or B”の真偽値が“真（true）”となる、条件“A”、“B”についての真偽値の組合せを適用すればよい。
【００８８】
次に、図２Ｃ（１）に例示の各条件の組合せにおいて、ＩＤ＝２のレコードの、条件“（A or B）”の真偽値である“偽（false）”は、図２Ｂ（１）で説明したように、論理
積の判定結果の真偽値に独立に影響する。このため、条件“（A or B）”について、論理和の基本ルールを階層的（再帰的）に適用する際には、組合せルール２を採用すればよい。つまり、図２Ａ（２）に例示のＩＤ＝３の、論理和“A or B”の真偽値が“偽（false
）”となる、条件“A”、“B”についての真偽値の組合せを全て適用すればよい。
【００８９】
なお、図２Ａ（２）の例では、論理和“A or B”の真偽値が“偽（false）”となる条
件“A”、“B”の真偽値の組合せはＩＤ＝３に例示の１通りである。従って、図２Ｃ（１）のＩＤ＝２のレコードの、条件“（A or B）”の“偽（false）”に対する、論理和の
基本ルールの階層的（再帰的）な適用では、図２Ａ（２）のＩＤ＝３に例示の１通りの条件“A”、“B”についての真偽値の組合せが採用される。
【００９０】
次に、図２Ｃ（１）に例示の各条件の組合せにおいて、ＩＤ＝３のレコードの、条件“
（A or B）”の真偽値である“真（true）”は、図２Ｂ（１）で説明したように、論理積の判定結果の真偽値に独立に影響する。このため、ＩＤ＝３のレコードの条件“（A or B）”に対し、論理和の基本ルールを階層的（再帰的）に適用する際には、組合せルール２を採用すればよい。例えば、図２Ａ（２）に例示のＩＤ＝１、２の、論理和“A or B”の真偽値が“真（true）”となる、条件“A”、“B”についての真偽値の組合せを全て適用すればよい。
【００９１】
図２Ａ（２）では、論理和“A or B”の真偽値が“真（true）”となる条件“A”、“B”の真偽値の組合せは、ＩＤ＝１に例示の（真（true）、偽（false））、及び、ＩＤ＝
２に例示の（偽（false）、真（true））の２通りである。従って、図２Ｃ（１）のＩＤ
＝３のレコードの、条件“（A or B）”の“真（true）”に対する、論理和の基本ルールの階層的（再帰的）な適用では、図２Ａ（２）のＩＤ＝１、２に例示の２通りの条件“A
”、“B”についての真偽値の組合せが採用される。
【００９２】
図２Ｃ（２）は、図２Ｃ（１）に例示の論理積の各レコードに対し、組合せルールを反映し、論理和“（A or B）”についての真偽値を階層的（再帰的）に適用して生成されたテストケースの真偽値表テーブル例である。図２Ｃ（２）に例示の真偽値表テーブルでは、判定式“（A or B） and C”に含まれる各条件“A”、“B”、“C”についてのカラム
を有する。
【００９３】
図２Ｃ（２）のＩＤ＝１のレコードは、図２Ｃ（１）のＩＤ＝１のレコードに対応する。図２Ｃ（２）のＩＤ＝１のレコードには、条件“（A or B）”の真偽値を“真（true）”とする条件“A”、“B”の２通りの真偽値の組合せから抽出された、（A,B）＝（真（true）、偽（false））が格納されている。なお、組合せルール１で説明したように、図２Ｃ（２）のＩＤ＝１のレコードに格納される条件“A”、“B”の真偽値の組合せは、例えば、もう一方の真偽値の組合せである、（A,B）＝（偽（false）、真（true））であってもよい。
【００９４】
図２Ｃ（２）のＩＤ＝２のレコードは、図２Ｃ（１）のＩＤ＝２のレコードに対応する。図２Ｃ（２）のＩＤ＝２のレコードには、条件“（A or B）”の真偽値を“偽（false
）”とする条件“A”、“B”の１通りの真偽値の組合せである、（A,B）＝（偽（false）、偽（false））が格納されている。
【００９５】
図２Ｃ（２）のＩＤ＝３_１、３_２のレコードは、図２Ｃ（１）のＩＤ＝３のレコードに対応する。図２Ｃ（２）のＩＤ＝３_１のレコードには、条件“（A or B）”の真偽値
を“真（true）”とする条件“A”、“B”の２通りの真偽値の組合せの内、（A,B）＝（
真（true）、偽（false））が格納されている。また、図２Ｃ（２）のＩＤ＝３_２のレコードには、条件“（A or B）”の真偽値を“真（true）”とする条件“A”、“B”の２通りの真偽値の組合せの内、（A,B）＝（偽（false）、真（true））が格納されている。
【００９６】
以上、説明したように、実施例１では、テスト対象となる判定式に含まれる各条件の真偽値の組合せに対し、組合せルールを反映した論理積、論理和の基本ルールを階層的（再帰的）に適用することで、網羅規則１−４を満たす最小数のテストケースが生成される。実施例１では、例えば、論理積、論理和の基本ルールの階層的（再帰的）な真偽値の組合せで残されていた、各条件の余剰な真偽値の組合せを排除することが可能となる。
【００９７】
例えば、図２Ａ（２）に例示の論理和の基本ルールでは、論理和（A or B）の真偽値を“真（true）”とする条件“A”、“B”の真偽値の組合せは、（A,B）＝（真（true）、
偽（false））、（偽（false）、真（true））の２通りである。ここで、図２Ｃ（１）に例示のように、論理和（A or B）を条件とする論理積の基本ルールでは、論理和（A or B
）の真偽値を組合せる相手側の条件の真偽値が“偽（false）”である場合には、論理和
（A or B）の真偽値は判定結果の真偽値に独立に影響しない。このため、論理和（A or B）の真偽値を“真（true）”とする条件“A”、“B”の真偽値の組合せに対し、組合せルール１が適用されることとなる。
【００９８】
組合せルール１が適用される場合には、判定結果の真偽値が共通する条件の組合せから１つの組合せが抽出されるため、条件“（A or B）”の真偽値を“真（true）”とする条件“A”、“B”の２通りの真偽値の組合せの内の１つの組合せが抽出される。この結果、例えば、図２Ｃ（２）のＩＤ＝１のレコードに例示のように、条件“A”、“B”の真偽値の組合せとして、（A,B）＝（真（true），偽（false））が抽出され、他方の（A,B）＝
（偽（false）、真（true））の真偽値の組合せを排除することが可能となる。なお、条
件“A”、“B”の真偽値の組合せとして、（A,B）＝（偽（false）、真（true））が抽出された場合には、（A,B）＝（真（true），偽（false））が余剰な真偽値の組合せとして排除されることとなる。
【００９９】
実施例１では、論理積、論理和の基本ルールを階層的（再帰的）に適用する際に、組合せルールを反映することで、判定式に含まれる各条件についての網羅規則１−４を満たす最小数の真偽値の組合せを求めることが可能となる。しかし、例えば、組合せルール１の反映の時に、判定結果の真偽値が共通する各条件の組合せから１つの組合せを抽出する場合、抽出した各条件についての真偽値の組合せによっては、矛盾を含む虞がある。
【０１００】
図３に、組合せルール１を説明例とした、矛盾が生じる場合の、各条件についての真偽値の組合せの説明図を例示する。なお、説明例での判定式は、“((x>10) or (y==0)) and
(x>0)”とする。判定式“((x>10) or (y==0)) and (x>0)”では、条件“(x>10)”、“(y==0)”についての論理和が下位の処理プロセスであり、条件“(x>10)”、“(y==0)”の論理和“((x>10) or (y==0))”と条件“(x>0)”との論理積が上位の処理プロセスとなる。
【０１０１】
図３のＩＤ＝１−３のレコードに例示のように、“(y==0)”の論理和“((x>10) or (y==0))”と条件“(x>0)”との論理積について、基本ルールを適用し、各条件についての３
通りの真偽値の組合せが求められる。
【０１０２】
ＩＤ＝１のレコードにおいて、論理和“((x>10) or (y==0))”と条件“(x>0)”との真
偽値の組合せにおいて、論理和“((x>10) or (y==0))”を“真（true）”とする条件“(x>10)”、“(y==0)”の真偽値の組合せには組合せルール１が適用される。従って、例えば、図２Ｂ（２）に例示の基本ルールとなる論理和の真偽値の組合せから、ＩＤ＝１、或いは、ＩＤ＝２のどちらか一方の組合せを、論理和“((x>10) or (y==0))” を“真（true
）”とする条件“(x>10)”、“(y==0)”の真偽値の組合せに適用すればよい。
【０１０３】
図２Ｂ（２）のＩＤ＝１の論理和の基本ルールを条件“(x>10)”、“(y==0)”の真偽値の組合せとして採用した場合、条件“(x>10)”の真偽値は“真（true）”となり、条件“(y==0)”の真偽値は“偽（false）”となる。ここで、真偽値が“偽（false）”となる条件を、論理否定を示す“not”を該当する条件に付加して表すとする。
【０１０４】
図２Ｂ（２）のＩＤ＝１の論理和の基本ルールを条件“(x>10)”、“(y==0)”の真偽値の組合せとして採用した場合、条件“(x>10)”、“(y==0)”の組合せは、結合式“(x>10)
and not(y==0)”で表すことができる。
【０１０５】
図３のＩＤ＝１のレコードにおける条件“(x>0)”に対する真偽値は“偽（false）”であるため、条件“(x>0)”に論理否定を示す“not”を付加し、条件“not(x>0)”として表すことができる。従って、図３のＩＤ＝１に例示の真偽値に対して組合せルール１を反映
した条件“(x>10)”、“(y==0)”、“(x>0)”の組合せは、以下の結合式（Ａ１）として
表すことができる。
・結合式：(x>10) and not(y==0) and not(x>0)  …結合式（Ａ１）
結合式（Ａ１）では、条件“(x>10)”、“not(x>0)”を同時に含むため、条件“(x>10)”、“not(x>0)”に共通する変数ｘについて矛盾が生じることとなる。このため、ＭＣ／ＤＣのテスト網羅度を満たすテストケースとして生成された真偽値の組合せを反映した結合式（Ａ１）を充足する、テストセット（各条件を充足する変数値の組合せ）を求めることが不能となってしまう。
【０１０６】
一方、図２Ｂ（２）のＩＤ＝２の論理和の基本ルールを条件“(x>10)”、“(y==0)”の真偽値の組合せとして採用した場合、条件“(x>10)”の真偽値は“偽（false）”となり
、条件“(y==0)”の真偽値は“真（true）”となる。従って、真偽値が“偽（false）”
となる条件に、論理否定を示す“not”を付加し、図２Ｂ（２）のＩＤ＝２の論理和の条
件“(x>10)”、“(y==0)”の組合せを表すと、結合式“not(x>10) and (y==0)”となる。
【０１０７】
図２Ｂ（２）のＩＤ＝２の論理和を採用した場合、図３のＩＤ＝１に例示の真偽値に対して組合せルール１を反映した条件“(x>10)”、“(y==0)”、“(x>0)”の組合せは、以
下の結合式（Ａ２）として表すことができる。
・結合式：not(x>10) and (y==0) and not(x>0)  …結合式（Ａ２）
結合式（Ａ２）では、条件“not(x>10)”、“not(x>0)”を同時に含むこととなるが、
条件“not(x>10)”、“not(x>0)”に共通する変数ｘについて矛盾は生じない。このため
、ＭＣ／ＤＣのテスト網羅度を満たすテストケースとして生成された真偽値の組合せを反映した結合式（Ａ２）を充足する、テストセットを求めることが可能となる。
【０１０８】
このように、テスト対象となる判定式に、変数を共通とする条件が複数に含まれる場合には、組合せルール、基本ルールの論理積、論理和の真偽値が適用された各条件の組合せに対し、真偽値を充足する変数値の組合せに矛盾が生じる虞がある。ＭＣ／ＤＣのテスト網羅度を満たすテストケースとして生成された真偽値であっても、真偽値を各条件に反映した場合には、各条件を充足する変数値を求めることが不能となってしまう場合がある。
【０１０９】
例えば、組合せルール１の適用の際に、図２Ｂ（２）に例示のＩＤ＝１の論理和の真偽値の組合せを抽出した場合では、ＭＣ／ＤＣのテスト網羅度の網羅規則１−４の真偽値関係を反映した各条件についての充足解をテストセットとして求めることが不能となる。一方、組合せルール１の適用の際に、図２Ｂ（２）に例示のＩＤ＝２の論理和の真偽値の組合せを抽出した場合では、ＭＣ／ＤＣのテスト網羅度の網羅規則１−４の真偽値関係を反映した各条件についての充足解をテストセットとして求めることが可能となる。
【０１１０】
＜実施例２＞
実施例１では、情報処理装置は、組み合わせルール１において、判定結果としての真偽値に独立に影響しない（対象となる条件の真偽値を反転しても判定結果が変わらない）場合には、判定結果の真偽値が共通する条件の組合せから１つの組合せを抽出し、適用した。今、例えば、真偽値に独立に影響しない、判定結果の真偽値が共通する条件の組合せが、組み合わせＡと、組み合わせＢであるとする。
【０１１１】
実施例２の情報処理装置での処理は、例えば、組合せルール１が適用される場合、組合せルール１で、判定結果の真偽値が共通する条件の組合せ（組合せＡ、組合せＢ）を保持するための選択演算子を導入する。
【０１１２】
実施例２の情報処理装置は、選択演算子を用いることにより、判定結果の真偽値が共通する各条件の真偽値の組合せを選択演算子で結合した状態で保持し、抽出することが可能
となる。そして、実施例２での情報処理装置の処理は、最上位の処理プロセスの論理演算子に基づく各条件の真偽値の組合せに基づいて、選択演算子で結合された状態で抽出された下位の処理プロセスでの各条件の真偽値の組合せについての、各変数に対する充足可能性を判定する。選択演算子を用いること以外の実施例２の処理は実施例１と同様である。
【０１１３】
図４に、組合せルール１を説明例とした、実施例２の下位の処理プロセスからの各条件の真偽値の組合せの抽出についての説明図を例示する。なお、説明例での判定式は、図３の説明例と同じ、判定式“((x>10) or (y==0)) and (x>0)”とする。判定式“((x>10) or
(y==0)) and (x>0)”では、条件“(x>10)”、“(y==0)”についての論理和が下位の処理プロセスであり、条件“(x>10)”、“(y==0)”の論理和“((x>10) or (y==0))”と条件“(x>0)”との論理積が上位の処理プロセスである。
【０１１４】
図４のブロックＰ５に示すＩＤ＝１のレコードにおいて、論理和“((x>10) or (y==0))”と条件“(x>0)”との真偽値の組合せにおいて、論理和“((x>10) or (y==0))”を“真
（true）”とする条件“(x>10)”、“(y==0)”の真偽値の組合せには組合せルール１が適用される。
【０１１５】
実施例１では、例えば、図２Ｂ（２）に例示の基本ルールとなる論理和の真偽値の組合せから、ＩＤ＝１、或いは、ＩＤ＝２のどちらか一方の真偽値の組合せが抽出される。このため、抽出される条件“(x>10)”、“(y==0)”の真偽値の組合せによっては、網羅規則１−４を満たすにも関らず、テストセット（各条件を充足する変数値の組合せ）を求めることが不能となる虞が生じていた。
【０１１６】
実施例２での処理は、例えば、図２Ｂ（２）に例示の論理和の真偽値の組合せから、論理和“((x>10) or (y==0))”を“真（true）”とする条件“(x>10)”、“(y==0)”の、ＩＤ＝１、２の真偽値の組合せを選択演算子“||”で結合し、抽出する。例えば、真偽値が“偽（false）”となる条件に対しては、論理否定を示す“not”を付加することで真偽値を反映し、真偽値が反映されたＩＤ＝１、２の各条件の組合せを選択演算子“||”で結合して部分式を生成する。実施例２では、図４のブロックＰ６に示すように、ＩＤ＝１、２の真偽値の組合せを選択演算子“||”で結合して生成された部分式が抽出される。
【０１１７】
例えば、図３で説明したように、ＩＤ＝１の真偽値の組合せからは“(x>10) and not(y==0)”が生成され、ＩＤ＝２の真偽値の組合せからは“not(x>10) and (y==0)”が生成される。実施例２では、例えば、ＩＤ＝１の真偽値を反映した各条件の組合せと、ＩＤ＝１の真偽値を反映した各条件の組合せとを、選択演算子“||”を用いて結合した部分式（Ａ３）が生成される。
・部分式：((x>10) and not(y==0)) || ((not(x>10) and (y==0))  …部分式（Ａ３）
部分式（Ａ３）では、論理和“((x>10) or (y==0))”を“真（true）”とする条件“(x>10)”、“(y==0)”の真偽値の全ての組合せが、“((x>10) and not(y==0))か((not(x>10) and (y==0))”といった選択関係で表すことができる。
【０１１８】
実施例２での処理は、生成された部分式（Ａ３）に、上位の処理プロセスにおける真偽値を反映させた条件“(x>0)”を結合させ、上位の処理プロセスについての真偽値に基づ
く結合式（Ａ４）を生成する。なお、図４のブロックＰ５に示すＩＤ＝１のレコードでは、条件“(x>0)”に対する真偽値は“偽（false）”であるため、真偽値を反映させた条件は“not(X>0)”となる。
・結合式：(((x>10) and not(y==0)) || ((not(x>10) and (y==0))) and not(X>0)  …結合式（Ａ４）
結合式（Ａ４）には、図４のブロックＰ５に示すＩＤ＝１のレコードの、論理和“((x>10) or (y==0))”を“真（true）”、条件“(X>0)”を“偽（false）”とする真偽値を反
映した条件“(x>10)”、“(y==0)”、“(X>0)”の組合せが含まれる。
【０１１９】
そして、実施例２での処理は、図４のブロックＰ７に示すように、生成された結合式（Ａ４）を選択演算子について展開し、該選択演算子により結合された、下位の処理プロセスにおける各条件の真偽値を反映させた部分式（Ａ５）、（Ａ６）を生成する。なお、図４のブロックＰ７では、部分式（Ａ５）は“ケース１選択時の判定論理式”として表され、部分式（Ａ６）は“ケース２選択時の判定論理式”として表されている。
・部分式：((x>10) and not(y==0)) and not(X>0)  …部分式（Ａ５）
・部分式：((not(x>10) and (y==0)) and not(X>0)  …部分式（Ａ６）
部分式（Ａ５）には、図２Ｂ（２）のＩＤ＝１に例示の真偽値を反映した条件“(x>10)”、“(y==0)”、“(X>0)”の組合せが含まれる。また、部分式（Ａ６）では、図２Ｂ（
２）のＩＤ＝２に例示の真偽値を反映した条件“(x>10)”、“(y==0)”、“(X>0)”の組
合せが含まれる。
【０１２０】
実施例２では、例えば、選択演算子を展開して生成された部分式（Ａ５）、（Ａ６）について、真偽値が反映された各条件の組合せを充足可能な変数値の有無が判定される。そして、図４のブロックＰ８に示すように、真偽値を反映した各条件の組合せを充足する変数値が得られる部分式が選択される。実施例２では、選択した部分式に基づいて、ＭＣ／ＤＣのテスト網羅度の網羅規則１−４を充足するテストセットが求められる。
【０１２１】
例えば、部分式（Ａ５）では、変数ｘについての範囲関係に矛盾を含むため、真偽値を反映した各条件の組合せを充足する変数値が得られない（充足不能）と判定される。一方、部分式（Ａ６）では、変数ｘ、ｙについての範囲関係に矛盾を含まないため、真偽値を反映した各条件の組合せを充足する変数値が得られる（充足可能）と判定される。実施例２の処理では、例えば、充足可能と判定された部分式（Ａ６）が選択され、選択された部分式（Ａ６）の各条件の組合せに基づいて、ＭＣ／ＤＣのテスト網羅度の網羅規則１−４を充足するテストセットが求められる。
【０１２２】
なお、選択演算子を展開して生成された各部分式について、それぞれが充足可能と判定される場合には、例えば、選択演算子によって結合された最左側の各条件の組合せに基づく部分式を選択するとしてもよい。充足可能と判定される部分式が複数に存在する場合では、選択する部分式の選択方法を予め定めておけばよい。
【０１２３】
実施例２では、選択演算子で結合された状態で下位の処理プロセスから抽出される各条件の真偽値の組合せに対する充足可能性が、最上位の処理プロセスにおける各条件の真偽値の組合せに基づいて判定できる。このため、例えば、組合せルール１が適用される下位の処理プロセスにおける各条件の真偽値の組合せの中から、矛盾が生じない各条件の真偽値の組合せを選択することができる。この結果、実施例２では、充足可能性を向上させた、冗長性を排除可能なＭＣ／ＤＣテスト網羅度の網羅規則を満たすテストケースを生成する技術が提供できる。
【０１２４】
〔装置構成〕
図５に、実施例２（以下、本実施形態と称す）の情報処理装置のハードウェアの構成を例示する。図５に例示の情報処理装置１０は、例えば、ＰＣ（Personal Computer）、サ
ーバ等のコンピュータである。情報処理装置１０は、接続バスＢ１によって相互に接続されたＣＰＵ（Central Processing Unit）１１、主記憶部１２、補助記憶部１３、入力部
１４、出力部１５、通信部１６を有する。主記憶部１２及び補助記憶部１３は、情報処理装置１０が読み取り可能な記録媒体である。
【０１２５】
情報処理装置１０は、ＣＰＵ１１が補助記憶部１３に記憶されたプログラムを主記憶部
１２の作業領域に実行可能に展開し、プログラムの実行を通じて周辺機器の制御を行う。これにより、情報処理装置１０は、所定の目的に合致した機能を実現することができる。
【０１２６】
図５に例示の情報処理装置１０において、ＣＰＵ１１は、情報処理装置１０全体の制御を行う中央処理演算装置である。ＣＰＵ１１は、補助記憶部１３に格納されたプログラムに従って処理を行う。主記憶部１２は、ＣＰＵ１１がプログラムやデータをキャッシュしたり、作業領域を展開したりする記憶媒体である。主記憶部１２は、例えば、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）を含む。
【０１２７】
補助記憶部１３は、各種のプログラム及び各種のデータを読み書き自在に記録媒体に格納する。補助記憶部１３は、外部記憶装置とも呼ばれる。補助記憶部１３には、オペレーティングシステム（Operating System :ＯＳ）、各種プログラム、各種テーブル等が格納される。ＯＳは、通信部１６を介して接続される外部装置等とのデータの受け渡しを行う通信インターフェースプログラムを含む。外部装置等には、例えば、通信部１６を介して接続されたネットワーク上の、他のサーバ等の情報処理装置、外部記憶装置、通信機能を有する装置等が含まれる。
【０１２８】
補助記憶部１３は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、ソリッドス
テートドライブ装置、ハードディスクドライブ（ＨＤＤ、Hard Disk Drive）装置等であ
る。また、補助記憶部１３としては、例えば、ＣＤドライブ装置、ＤＶＤドライブ装置、ＢＤ（Blu-ray（登録商標） Disc）ドライブ装置等が提示できる。記録媒体としては、例えば、不揮発性半導体メモリ（フラッシュメモリ）を含むシリコンディスク、ハードディスク、ＣＤ、ＤＶＤ、ＢＤ、ＵＳＢ（Universal Serial Bus）メモリ、メモリカード等がある。
【０１２９】
入力部１４は、ユーザ等からの操作指示等を受け付ける。入力部１４は、入力ボタン、キーボード、タッチパネル等のポインティングデバイス、ワイヤレスリモコン、マイクロフォン、カメラ等の入力デバイスである。入力部１４から入力された情報は、接続バスＢ１を介してＣＰＵ１１に通知される。
【０１３０】
出力部１５は、ＣＰＵ１１で処理されるデータや主記憶部１２に記憶されるデータを出力する。出力部１５は、ＣＲＴ（Cathode Ray Tube）ディスプレイ、ＬＣＤ（Liquid Crystal Display）、ＰＤＰ（Plasma Display Panel）、ＥＬ（Electroluminescence）パネ
ル、有機ＥＬパネル、プリンタ、スピーカ等の出力デバイスである。通信部１６は、例えば、ネットワーク等とのインターフェースである。情報処理装置１０が接続するネットワークには、例えば、ＬＡＮ（Local Area Network）、インターネット（Internet）等の公衆ネットワーク、通信基地局を含む携帯電話網等の無線ネットワーク等が含まれる。
【０１３１】
情報処理装置１０は、例えば、ＣＰＵ１１が補助記憶部１３に記憶されているＯＳ、各種プログラムや各種データを主記憶部１２に読み出して実行することにより、対象プログラムの実行と共に、図５に例示の各処理手段を実現する。情報処理装置１０は、対象プログラムの実行と共に、図５に例示の判定式解析部１０１、真偽値ルール適用部１０２、テストケース生成部１０３、充足可能性判定部１０４を実現する。判定式解析部１０１は、二分木変換部１０１ａを含み、テストケース生成部１０３は、選択分析部１０３ａを含む。但し、図５に例示の各処理手段のいずれか、あるいは、これらの一部がハードウェア回路によって動作するものであってもよい。
【０１３２】
また、情報処理装置１０は、以上の各処理手段が参照し、或いは、管理するデータの格納先として、例えば、真偽値ルールＤＢ２０１、判定式二分木ＤＢ２０２、条件式マップ集合ＤＢ２０３を補助記憶部１３に備える。また、情報処理装置１０は、補助記憶部１３
に、テストケース条件式ＤＢ２０４、テストケースＤＢ２０５を備える。
【０１３３】
なお、各処理手段のうち、いずれかが、他の情報処理装置等に含まれてもよい。例えば、判定式解析部１０１を含む情報処理装置と、真偽値ルール適用部１０２を含む情報処理装置と、テストケース生成部１０３を含む情報処理装置と、充足可能性判定部１０４を含む情報処理装置とがネットワーク等を介して接続する。そしてネットワークを介して接続された各情報処理装置が、情報処理装置１０として機能するとしてもよい。同様に、情報処理装置１０の真偽値ルールＤＢ２０１、判定式二分木ＤＢ２０２、条件式マップ集合ＤＢ２０３、テストケース条件式ＤＢ２０４、テストケースＤＢ２０５は、複数の外部記憶装置に分散されて格納し、ネットワーク等を介して接続されるとしてもよい。情報処理装置１０は、例えば、ネットワーク上のコンピュータ群であるクラウドとして実現できるため、各処理手段の処理負荷を軽減できる。
【０１３４】
〔処理ブロック構成〕
図６に、本実施形態の情報処理装置１０における、処理ブロックの説明図を例示する。図６に例示の説明図において、情報処理装置１０は、判定式解析部１０１、真偽値ルール適用部１０２、テストケース生成部１０３、充足可能性判定部１０４の各処理手段を有する。判定式解析部１０１には、２分木変換部１０１ａの処理手段が含まれる。テストケース生成部１０３には、選択分析部１０３ａの処理手段が含まれる。
【０１３５】
また、図６に例示の説明図において、情報処理装置１０は、以上の各機能手段が参照し、或いは、管理するデータの格納先として、例えば、真偽値ルールＤＢ２０１、判定式二分木ＤＢ２０２、条件式マップ集合ＤＢ２０３を補助記憶部１３に備える。また、情報処理装置１０は、補助記憶部１３に、テストケース条件式ＤＢ２０４、テストケースＤＢ２０５を備える。
【０１３６】
図６に例示の、判定式解析部１０１は、例えば、テスト対象となるプログラムの判定式（論理式）Ｃ１を受け付ける。判定式解析部１０１は、例えば、補助記憶部１３を介して、ＣＤ、ＵＳＢメモリ等の記録媒体に格納された、テスト対象となるプログラムを読み込むことで、該プログラムの判定式Ｃ１を受け付けることができる。また、判定式解析部１０１は、例えば、情報処理装置１０が接続するネットワーク等を介して、他の情報処理装置、或いは、外部記憶装置等に格納されたテスト対象のプログラムを読み込むことで、該プログラムに記述された判定式Ｃ１を受け付けるとしてもよい。判定式解析部１０１は、例えば、情報処理装置１０で受け付けた判定式Ｃ１を主記憶部１２の所定の領域に一時的に記憶する。テスト対象のプログラムはソースプログラムであってもよいし、バイナリプログラムであってもよい。また、判定式Ｃ１は、テキスト形式の論理式であってもよいし、バイナリコードであってもよい。
【０１３７】
判定式解析部１０１は、受け付けたプログラムの判定式Ｃ１を解析し、判定式Ｃ１に含まれる論理演算子、論理演算子によって結び付けられる各条件、論理演算子による各条件の処理プロセスの階層関係を特定する。なお、以下の説明では、判定式に含まれる条件を“条件式”とも称する。
【０１３８】
判定式解析部１０１は、特定した論理演算子、各条件式、処理プロセスの階層関係に基づいて、テスト対象となるプログラムの判定式についての、木構造（判定式二分木）を生成する。なお、判定式に含まれる論理演算子、論理演算子で結合される各条件式、論理演算子による各条件式の処理プロセスの階層関係の特定処理は、例えば、判定式解析部１０１の二分木変換部１０１ａにより行われる。判定式解析部１０１で生成された判定式の木構造（判定式二分木）は、例えば、判定式二分木ＤＢ２０２に格納される。
【０１３９】
［二分木変換処理］
判定式解析部１０１の二分木変換部１０１ａは、受け付けた判定式Ｃ１を解析し、判定式Ｂ１に含まれる論理演算子、論理演算子で結合される各条件式、論理演算子による各条件式についての処理プロセスの階層関係を特定する。そして、二分木変換部１０１ａは、特定した論理演算子、各条件式、処理プロセスの階層関係に基づいて、受け付けた判定式Ｃ１の判定に係る各条件の階層的な論理演算関係を木構造に変換する。
【０１４０】
図７Ａに、二分木変換処理の説明図を例示する。なお、図７Ａに例示の説明図の、二分木処理に係る判定式Ｃ１は、図６に例示の、“(((x>0) and (z==5)) or ((y==1) and (z>1))) and (y>0)”とする。
【０１４１】
二分木変換部１０１ａは、例えば、言語解析、字句解析、構文解析等を行うことにより、判定式Ｃ１に含まれる“(”、“)”等の括弧記号、或いは、スペース等の領域の区切りを検出する。そして、二分木変換部１０１ａは、区切られた領域範囲に含まれる論理演算子の文字列、及び、変数の条件式を特定する。
【０１４２】
二分木変換部１０１ａは、判定式Ｃ１について、例えば、“(”、“)”等の括弧記号により区切られた領域範囲から変数に対する“x>0”、“z==5”、“y==1”、“z>1”、“y>0”といった条件式を特定する。また、例えば、二分木変換部１０１ａは、“)”、“(”
等の括弧記号の配列やスペース等により区切られた領域範囲から“or”、“and”等の論
理演算子の文字列を特定する。
【０１４３】
また、二分木変換部１０１ａは、例えば、“(”、“)”等の括弧記号の配置関係から、判定に係る論理演算の優先順位を特定し、優先順位の高い論理演算子を下位の処理プロセスとする、論理演算子間の階層関係を特定する。そして、二分木変換部１０１ａは、論理演算子間の階層関係と、論理演算子で結び付けられる条件式との対応関係から、判定式Ｃ１の、各条件式の階層的な論理関係を木構造に変換する。
【０１４４】
但し、“(”、“)”等が省略され、同一の優先度の論理演算子が複数個配置された判定式については、二分木変換部１０１ａは、例えば、プログラムを記述するプログラミング言語と同じ優先度の解釈をするとすればよい。二分木変換部１０１ａは、“(”、“)”等が省略され、同一の優先度の論理演算子が複数個配置された判定式については、例えば、左側優先とすることができる。
【０１４５】
図７Ａの例では、条件式“x>0”、“z==5”、“y==1”、“z>1”が木構造の最下層に配置されている。そして、条件式“x>0”、“z==5”を結び付ける論理演算子“and”と、条件式“y==1”、“z>1”を結び付ける論理演算子“and”とは、同じ階層に配置されている。
【０１４６】
なお、図７Ａの同じ階層に配置された２つの“and”のうち、左側の論理演算子“and”は、条件式“x>0”、“z==5”と対応付けられている。同様にして、右側の論理演算子“and”は、条件式“y==1”、“z>1”と対応付けられている。
【０１４７】
また、条件式“y>0”と、条件式“x>0”、“z==5”を含む処理プロセス、及び、条件式“y==1”、“z>0”を含む処理プロセスを結び付ける論理演算子“or”とは、同じ階層に
配置されている。そして、論理演算子“or”による処理プロセスと条件式“y>0”とは、
木構造の最上位の論理演算子“and”により結び付けられている。
【０１４８】
なお、論理演算子“or”は、条件式“x>0”、“z==5”を含む処理プロセスの論理演算
子“and”、及び、条件式“y==1”、“z>1”を含む処理プロセスの論理演算子“and”に
対応付けられている。また、最上位の論理演算子“and”には、論理演算子“or”，条件
式“y>0”に対応付けられている。
【０１４９】
図７Ａに例示のように、木構造に変換された判定式は、論理演算子間の階層関係と、論理演算子で結び付けられる各条件式の対応関係とを表すことができる。図７Ａの木構造の例では、判定式に含まれる論理演算子、各条件が左側から順に配置されていることが判る。また、図７Ａの木構造生成処理では、記号“()”で括られたより内側の優先度の高い処理プロセスが下位層に配置されていることが判る。また、論理式に記述された左側の論理演算関係が、木構造の左側に配置されていることが判る。ここで、木構造で表された条件式を“リーフ”とも称し、各“リーフ”を結び付ける論理演算子を“ノード”とも称する。
【０１５０】
二分木変換部１０１ａは、木構造に変換された判定式の、論理演算子間の階層関係と、論理演算子で結び付けられる各条件式の対応関係とを、例えば、処理対象の判定式を一意に識別する識別番号と対応付けて、判定式二分木ＤＢ２０２に格納する。
【０１５１】
［真偽値ルール適用処理］
真偽値ルール適用部１０２は、例えば、判定式解析部１０１により生成された判定式の木構造（判定式二分木）に基づいて、組合せルールが適用された論理積、論理和の真偽値を反映した各条件式（リーフ）の組合せを生成する。なお、真偽値ルール適用部１０２は、例えば、組合せルール１が適用される論理積、論理和の真偽値の組合せでは、上位の処理プロセスにおける真偽値を共通とする全ての各条件式（リーフ）の真偽値の組合せを、選択演算子“||”で結合して抽出する。
【０１５２】
真偽値ルール適用部１０２では、例えば、処理プロセスの階層毎にノードの論理関係に基づく組合せルール、論理積、論理和の真偽値を反映した各条件式（リーフ）の組合せが生成される。そして、真偽値ルール適用部１０２は、例えば、処理プロセスの階層毎に真偽値が反映された各条件式（リーフ）の組合せに基づいて、図４Ｂに例示のように、最上位の処理プロセスに対応する真偽値を反映した各条件式（リーフ）の結合式（Ａ４）を生成する。
【０１５３】
真偽値ルール適用部１０２は、最上位の処理プロセスの真偽値を反映して生成された結合式を、例えば、処理対象の判定式の識別番号と対応付けて、条件式マップ集合ＤＢ２０３に格納する。
【０１５４】
以下、図７Ｂ−７Ｈに例示の図面を参照し、本実施形態の真偽値ルール適用処理の説明を行う。なお、本実施形態の真偽値ルール適用処理では、真偽値ルール適用部１０２は、リーフ毎に条件式と真偽値とを対応付けた“条件式マップ”、及び、“条件式マップ集合”を生成する。
【０１５５】
ここで、“条件式マップ”とは、例えば、（条件式，真偽値）との組合せを表す。また、“条件式マップ集合”とは、例えば、｛（条件式１，真偽値１），（条件式２，真偽値２）｝として表される“条件式マップ”の集合である。
【０１５６】
“条件式マップ”では、組となる真偽値を反映したリーフが“条件式”として組合せられる。例えば、組となる真偽値が“真（true）”の場合では、“（リーフ，true）”といった組合せが条件式マップとして生成される。また、例えば、組となる真偽値が“偽（false）”の場合では、否定論理（not）を表す記号“¬”がリーフに反映され、“（¬（リーフ），false）”といった組合せが条件式マップとして生成される。リーフに対して真
偽値関係が反映された“条件式”は、“リーフ”、“¬リーフ”の２通りとなる。
【０１５７】
真偽値ルール適用部１０２は、各リーフに対し、真偽値の“真（true）”、“偽（false）”のそれぞれを反映させた条件式と、反映された真偽値とを組合せ、各真偽値につい
ての条件式マップを生成する。そして、真偽値ルール適用部１０２は、例えば、生成した各条件式マップを組合せ、｛（リーフ，true），（¬（リーフ），false）｝といったリ
ーフ毎の“条件式マップ集合”を生成する。
【０１５８】
真偽値ルール適用部１０２は、例えば、リーフ毎に生成された“条件式マップ集合”の中から、各リーフを結び付けるノードの、組合せルールを反映した論理積、論理和の基本ルールの真偽値に対応する“条件式マップ”を抽出する。そして、真偽値ルール適用部１０２は、例えば、リーフ毎に抽出された“条件式マップ”を結合し、結合した“条件式マップ”とノードの処理プロセスでの真偽値とを組合せ、ノード毎の“条件式マップ集合”を生成する。
【０１５９】
本実施形態の真偽値ルール適用処理では、真偽値ルール適用部１０２は、上述の処理プロセスの真偽値を反映した“条件式マップ集合”の生成を、処理プロセスの階層毎に実行し、最上位の処理プロセスに対応する真偽値を反映した“条件式マップ集合”を生成する。なお、最上位の処理プロセスに対応する真偽値を反映して生成された“条件式マップ集合”は、例えば、組合せルールが適用された論理積、論理和の真偽値を反映した各条件式（リーフ）の組合せであり、図４で説明した結合式（Ａ４）である。
【０１６０】
（第１の真偽値ルール適用処理）
図７Ｂに、判定式Ｃ１より生成された木構造についての条件式マップ、条件式マップ集合の生成処理の説明図を例示する。なお、実施例２では、各リーフについての条件式マップ、条件式マップ集合の生成は、例えば、木構造の左側に配置されたノードの処理プロセスから行われるとして説明を行う。同一の階層にノード（論理演算子）が複数個配置された場合では、例えば、左側に配置された処理プロセスを優先とすることができるためである。ただし、本情報処理装置の処理が、左側に配置された処理プロセスを優先とするものに限定される訳ではなく、右側に配置された処理プロセスを優先ものであってもよい。
【０１６１】
第１の真偽値ルール適用処理では、真偽値ルール適用部１０２は、例えば、木構造の同一の階層の左側に配置されたノード（論理演算子）処理についての、条件式マップ、及び、条件式マップ集合を生成する。
【０１６２】
真偽値ルール適用部１０２は、例えば、判定式二分木ＤＢ２０２を参照し、処理対象の判定式について生成された木構造（判定式二分木）を取得する。そして、真偽値ルール適用部１０２は、例えば、木構造の下位層の左側に配置されたノードの処理プロセスについて、リーフ毎に“条件式マップ”、及び、“条件式マップ集合”を生成する。
【０１６３】
図７Ｂに例示の木構造において、破線で囲まれた矩形領域に示すように、下位層の左側に配置されたノードの処理プロセスに係る各リーフは、リーフ“x>0”、“z==5”である
。
【０１６４】
真偽値ルール適用部１０２は、例えば、リーフ“x>0”について、“真（true）”の真
偽値との組合せの条件式マップ（(x>0)，true）を生成し、“偽（false）の真偽値との組合せの条件式マップ（¬(x>0)，false）を生成する。そして、真偽値ルール適用部１０２は、例えば、リーフ“x>0”について生成した各条件式マップを組合せ、ブロックＤ１に
示す条件式マップ集合｛（(x>0)，true），（¬(x>0)，false）｝を生成する。
【０１６５】
また、真偽値ルール適用部１０２は、例えば、リーフ“z==5”について、“真（true）
”の真偽値との組合せの条件式マップ（(z==5)，true）を生成し、“偽（false）の真偽
値との組合せの条件式マップ（¬(z==5)，false）を生成する。真偽値ルール適用部１０
２は、例えば、リーフ“z==5”について生成した各条件式マップを組合せ、ブロックＤ１に示す条件式マップ集合｛（(z==5)，true），（¬(z==5)，false）｝を生成する。
【０１６６】
真偽値ルール適用部１０２は、リーフ“x>0”、“z==5”のそれぞれについて生成され
た条件式マップ集合を、例えば、主記憶部１２の所定の領域に一時的に記憶する。
【０１６７】
次に、真偽値ルール適用部１０２は、リーフ毎に生成した条件式マップ集合に基づいて、リーフ“x>0”、“z==5”を結び付けるノードの処理プロセスについての真偽値を反映
した条件式マップ集合を生成する。
【０１６８】
図７Ｃに、リーフ“x>0”、“z==5”に係る処理プロセスについての真偽値を反映した
条件式マップ集合の生成処理の説明図を例示する。なお、図７Ｃの説明図において、リーフ“x>0”について生成された条件式マップ集合は、ブロックＤ１に示すように、“左辺
の条件式マップ集合”とも称し、リーフ“z==5”について生成された条件式マップ集合は、“右辺の条件式マップ集合”とも称する。また、生成処理の対象となるノード及びリーフを、破線で囲まれた矩形領域に示す。
【０１６９】
また、図７Ｃの説明図において、論理積ルールＴｂ１は、組合せルールが適用された論理積の真偽値表を表す。論理積ルールＴｂ１において、例えば、「左辺」カラム、「右辺」カラムには、“（true，０）”、“（false，１）”といった真偽値情報が格納されて
いる。ここで、例えば、真偽値情報“（true，０）”、“（false，１）”等において、
真偽値“true”、“false”と組合せられた“０”、“１”といった数値は、適用される
組合せルールを指定する識別子である。
【０１７０】
図７Ｃの論理積ルールＴｂ１の例では、識別子“０”が組合せられた真偽値では、論理積、論理和の基本ルールの組合せの際に、組合せルール１が適用され、識別子“１”が組合せられた真偽値では、組合せルール２が適用される。
【０１７１】
言い換えれば、識別子“０”が組合せられた場合には、真偽値ルール適用部１０２は、例えば、識別子“０”が組合せられた真偽値に共通する、下位の条件式の真偽値の組合せを選択演算子“||”を用いて結合し、抽出する。また、識別子“１”が組合せられた場合には、真偽値ルール適用部１０２は、例えば、識別子“１”が組合せられた真偽値に共通する条件式の真偽値の組合せを全て抽出する。
【０１７２】
なお、以下の説明では、図７Ｃに例示の論理積ルールＴｂ１において、「Ｎｏ」カラムに「１」が格納されたレコードを“ＩＤ＝１のレコード”とも称する。「Ｎｏ」カラムに「２」、「３」が格納されたレコードについても、同様に、“ＩＤ＝２のレコード”、“ＩＤ＝３のレコード”とも称する。
【０１７３】
真偽値ルール適用部１０２は、例えば、真偽値ルールＤＢ２０１を参照し、処理対象となるノードに対応した真偽値表を取得する。図７Ｃの例では、リーフ“x>0”、“z==5”
を結び付けるノードは論理積“and”である。真偽値ルール適用部１０２は、例えば、論
理積ルールＴｂ１を真偽値ルールＤＢ２０１から取得し、取得した論理積ルールＴｂ１を主記憶部１２の所定の領域に一時的に記憶する。
【０１７４】
真偽値ルール適用部１０２は、例えば、ノードに対応した真偽値表に基づいて、ノード毎の条件式マップ集合を生成する。ノード毎の条件式マップ集合は、例えば、真偽値表のレコード毎に生成された条件式マップから生成される。真偽値ルール適用部１０２は、例
えば、真偽値表の「全体」カラムに格納された真偽値と、「左辺」カラム、「右辺」カラムの真偽値情報を反映させた条件式の結合式とを組合せ、レコード毎の条件式マップを生成する。ノードに対応した真偽値表に基づいて生成されたノード毎の生成された条件式マップ集合は、例えば、主記憶部１２の所定の領域に一時的に記憶される。
【０１７５】
・論理積ルール１
図７Ｃの論理積ルールＴｂ１において、ＩＤ＝１のレコードの「左辺」カラムには真偽値情報（true，０）が格納され、「右辺」カラムには真偽値情報（false，１）が格納さ
れている。「左辺」カラムは、例えば、ノードによって結び付けられるリーフ“x>0”に
対応し、「右辺」カラムは、ノードによって結び付けられるリーフ“z==5”に対応する。また、「左辺」カラムに対応するリーフの真偽値には組合せルール１が適用され、「右辺」カラムに対応するリーフの真偽値には組合せルール２が適用される。
【０１７６】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“z==5”の条件式マップ集合から、真偽値“false”となる条件式を全て抽出する。ここで、リーフ“z==5”の条件式マ
ップ集合は、｛（(z==5)，true），（¬(z==5)，false）｝であり、真偽値“false”と組合せられた条件式は単一の“¬(z==5)”である。
【０１７７】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「右辺」カラムに対応する条件式として、リーフ“z==5”の条件式マップ集合から、条件式“¬(z==5)”を抽出する。
【０１７８】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「左辺」カラムに格納された真偽値情報に基づいて、リーフ“x>0”の条件式マップ
集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。
【０１７９】
ここで、リーフ“x>0”の条件式マップ集合は、｛（(x>0)，true），（¬(x>0)，false）｝であり、真偽値“true”と組合せられた条件式は単一の“(x>0)”である。リーフ“x>0”についての真偽値“true”となる条件式は複数に存在しないため、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(x>0)”が抽出されることとなる。
【０１８０】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「左辺」カラムに対応する条件式として、リーフ“x>0”の条件式マップ集合から、条件式
“(x>0)”を抽出する。
【０１８１】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝１のレコードについての、「全体」カラムに格納された真偽値“false”と組となる条件式マップを生成す
る。条件式マップは、例えば、リーフ“x>0”の条件式マップ集合から抽出された条件式(x>0)、及び、リーフ“z==5”の条件式マップ集合から抽出された条件式(¬(z==5))に基づいて生成される。
【０１８２】
真偽値ルール適用部１０２は、例えば、各リーフの条件式マップ集合から抽出された条件式(x>0)と条件式(¬(z==5))とを、合接を表す記号“∧”を用いて結合した、“((x>0) ∧ ¬(z==5))”を生成する。そして、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「全体」カラムに格納された真偽値“false”と組合せ
、ＩＤ＝１のレコードの真偽値に対応する条件式マップ“((x>0) ∧ ¬(z==5)，false)”を生成する。生成された条件式マップ“((x>0) ∧ ¬(z==5)，false)”は、例えば、論理積ルールＴｂ１のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０１８３】
・論理積ルール２
図７Ｃの論理積ルールＴｂ１において、ＩＤ＝２のレコードについてもＩＤ＝１と同様にして、条件式マップが生成される。例えば、論理積ルールＴｂ１の、ＩＤ＝２のレコードの「左辺」カラムには真偽値情報（false，１）が格納され、「右辺」カラムには真偽
値情報（true，０）が格納されている。「左辺」カラムに対応するリーフの真偽値には組合せルール２が適用され、「右辺」カラムに対応するリーフの真偽値には組合せルール１が適用される。
【０１８４】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「左辺」カラムに格納された真偽値情報に基づいて、リーフ“x>0”の条件式マップ集合か
ら、真偽値“false”となる条件式を全て抽出する。リーフ“x>0”の条件式マップ集合は、｛（(x>0)，true），（¬(x>0)，false）｝であり、真偽値“false”と組合せられた条件式は単一の“¬(x>0)”である。
【０１８５】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「左辺」カラムに対応する条件式として、リーフ“x>0”の条件式マップ集合から、条件式
“¬(x>0)”を抽出する。
【０１８６】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“z==5”の条件式マップ集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。
【０１８７】
ここで、リーフ“z==5”の条件式マップ集合は、｛（(z==5)，true），（¬(z==5)，false）｝であり、真偽値“true”と組合せられた条件式は単一の“(z==5)”である。リー
フ“(z==5)”についての真偽値“true”となる条件式は複数に存在しないため、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(z==5)”が抽出されることとなる。
【０１８８】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「右辺」カラムに対応する条件式として、リーフ“z==5”の条件式マップ集合から、条件式“(z==5)”を抽出する。
【０１８９】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝２のレコードの「全体」カラムに格納された真偽値“false”と組となる条件式マップを生成する。条件式
マップは、例えば、リーフ“x>0”の条件式マップ集合から抽出された条件式(¬(x>0))、及び、リーフ“z==5”の条件式マップ集合から抽出された条件式(z==5)に基づいて生成される。
【０１９０】
真偽値ルール適用部１０２は、例えば、各リーフの条件式マップ集合から抽出された条件式(¬(x>0))と条件式(z==5)とを、合接を表す記号“∧”を用いて結合した、“(¬(x>0) ∧ (z==5))”を生成する。そして、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「全体」カラムに格納された真偽値“false”と組合せ
、ＩＤ＝２のレコードの真偽値に対応する条件式マップ“(¬(x>0) ∧ (z==5)，false)”を生成する。生成された条件式マップ“(¬(x>0) ∧ (z==5)，false)”は、例えば、論理積ルールＴｂ１のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０１９１】
・論理積ルール３
図７Ｃの論理積ルールＴｂ１のＩＤ＝３のレコードについてもＩＤ＝１と同様にして、
条件式マップが生成される。例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「左辺」カラムには真偽値情報（true，１）が格納され、「右辺」カラムには真偽値情報（true，１）が格納されている。「左辺」カラム、「右辺」カラムのそれぞれに対応するリーフの真偽値には組合せルール２が適用される。
【０１９２】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「左辺」カラムに格納された真偽値情報に基づいて、リーフ“x>0”の条件式マップ集合か
ら、真偽値“true”となる条件式を全て抽出する。リーフ“x>0”の条件式マップ集合は
、｛（(x>0)，true），（¬(x>0)，false）｝であり、真偽値“true”と組合せられた条
件式は単一の“(x>0)”である。
【０１９３】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「左辺」カラムに対応する条件式として、リーフ“x>0”の条件式マップ集合から、条件式
“(x>0)”を抽出する。
【０１９４】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“z==5”の条件式マップ集合から、真偽値“true”となる条件式を全て抽出する。リーフ“z==5”の条件式マップ集合は、｛（(z==5)，true），（¬(z==5)，false）｝であり、真偽値“true”と組合せ
られた条件式は単一の“(z==5)”である。
【０１９５】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「右辺」カラムに対応する条件式として、リーフ“z==5”の条件式マップ集合から、条件式“(z==5)”を抽出する。
【０１９６】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝３のレコードの「全体」カラムに格納された真偽値“true”と組となる条件式マップを生成する。条件式マップは、例えば、リーフ“x>0”の条件式マップ集合から抽出された条件式(x>0)、及び、リーフ“z==5”の条件式マップ集合から抽出された条件式(z==5)に基づいて生成される。
【０１９７】
真偽値ルール適用部１０２は、例えば、各リーフの条件式マップ集合から抽出された条件式(x>0)と条件式(z==5)とを、合接を表す記号“∧”を用いて結合した、“((x>0) ∧ (z==5))”を生成する。そして、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「全体」カラムに格納された真偽値“true”と組合せ、ＩＤ＝３のレコードの真偽値に対応する条件式マップ“((x>0) ∧ (z==5)，true)”を生成する
。生成された条件式マップ“((x>0) ∧ (z==5)，true)”は、例えば、論理積ルールＴｂ
１のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０１９８】
以上の処理により、図７ＣのブロックＤ２に示すように、論理積ルールＴｂ１のＩＤ＝１−３の論理関係に基づいた各条件式マップが生成される。
【０１９９】
・条件式マップ集合
図７Ｃの論理積ルールＴｂ１について、レコード毎に生成した条件式マップに基づいて、真偽値ルール適用部１０２は、リーフ“x>0”、“z==5”に係る処理プロセスについて
の真偽値を反映した条件式マップ集合を生成する。真偽値ルール適用部１０２は、例えば、ブロックＤ２に示す各条件式マップに基づいて、ブロックＤ３に示す条件式マップ集合を生成する。
【０２００】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のレコード毎に生成した条件式マップを組合せ、条件式マップ集合｛((x>0) ∧ ¬(z==5)，false)，(¬(x>0) ∧ (z
==5)，false)，((x>0) ∧(z==5)，true)｝を生成する。論理積ルールＴｂ１のレコード毎に生成した条件式マップに基づいて生成された、リーフ“x>0”、“z==5”に係る処理プ
ロセスについての真偽値を反映した条件式マップ集合は、例えば、条件式マップ集合ＤＢ２０３に格納される。
【０２０１】
（第２の真偽値ルール適用処理）
次に、第２の真偽値ルール適用処理では、真偽値ルール適用部１０２は、例えば、木構造の同一の階層の右側に配置されたノード（論理演算子）処理についての、条件式マップ、及び、条件式マップ集合を生成する。図７Ｄに、第２の真偽値ルール適用処理に係る、判定式Ｃ１の木構造についての条件式マップ、条件式マップ集合の生成処理の説明図を例示する。
【０２０２】
図７Ｄに例示の木構造において、第１の真偽値ルール適用処理の処理対象となったノードと同一の階層の右側に配置されたノードは論理積“and”であり、右側のノードの処理
プロセスに係る各リーフは、破線で囲まれた矩形領域に示すリーフ“y==1”、“z>1”で
ある。
【０２０３】
先ず、真偽値ルール適用部１０２は、例えば、図７Ｂに例示の第1の真偽値ルール適用
処理と同様にして、右側のノードの処理プロセスに係るリーフ“y==1”、“z>1”につい
ての条件式マップ、条件式マップ集合を生成する。
【０２０４】
真偽値ルール適用部１０２は、例えば、判定式二分木ＤＢ２０２を参照し、処理対象の判定式について生成された木構造（判定式二分木）から、下位層の左側に配置されたノードの処理プロセスに係るリーフ“y==1”、“z>1”を特定する。
【０２０５】
真偽値ルール適用部１０２は、例えば、リーフ“y==1”について、“真（true）”の真偽値との組合せの条件式マップ（(y==1)，true）を生成し、“偽（false）の真偽値との
組合せの条件式マップ（¬(y==1)，false）を生成する。そして、真偽値ルール適用部１
０２は、例えば、リーフ“y==1”について生成した各条件式マップを組合せ、ブロックＤ４に示す条件式マップ集合｛（(y==1)，true），（¬(y==1)，false）｝を生成する。
【０２０６】
また、真偽値ルール適用部１０２は、例えば、リーフ“z>1”について、“真（true）
”の真偽値との組合せの条件式マップ（(z>1)，true）を生成し、“偽（false）の真偽値との組合せの条件式マップ（¬(z>1)，false）を生成する。真偽値ルール適用部１０２は、例えば、リーフ“z>1”について生成した各条件式マップを組合せ、ブロックＤ４に示
す条件式マップ集合｛（(z>1)，true），（¬(z>1)，false）｝を生成する。
【０２０７】
真偽値ルール適用部１０２は、リーフ“y==1”、“z>1”のそれぞれについて生成され
た条件式マップ集合を、例えば、主記憶部１２の所定の領域に一時的に記憶する。
【０２０８】
次に、真偽値ルール適用部１０２は、リーフ毎に生成した条件式マップ集合に基づいて、リーフ“y==1”、“z>1”を結び付けるノードの処理プロセスについての真偽値を反映
した条件式マップ集合を生成する。
【０２０９】
図７Ｅに、リーフ“y==1”、“z>1”に係る処理プロセスについての真偽値を反映した
条件式マップ集合の生成処理の説明図を例示する。なお、図７Ｅの説明図において、リーフ“y==1”について生成された条件式マップ集合は、ブロックＤ４に示すように、“左辺の条件式マップ集合”とも称し、リーフ“z>1”について生成された条件式マップ集合は
、“右辺の条件式マップ集合”とも称する。
【０２１０】
また、図７Ｅの説明図において、論理積ルールＴｂ１は、組合せルールが適用された論理積の真偽値表を表す。論理積ルールＴｂ１については、図７Ｃで説明した。なお、以下の説明では、図７Ｅに例示の論理積ルールＴｂ１において、「Ｎｏ」カラムに「１」が格納されたレコードを“ＩＤ＝１のレコード”とも称する。「Ｎｏ」カラムに「２」、「３」が格納されたレコードについても、同様に、“ＩＤ＝２のレコード”、“ＩＤ＝３のレコード”とも称する。
【０２１１】
真偽値ルール適用部１０２は、例えば、真偽値ルールＤＢ２０１を参照し、処理対象となるノードに対応した真偽値表を取得する。図７Ｅの例では、リーフ“y==1”、“z>1”
を結び付けるノードは論理積“and”である。真偽値ルール適用部１０２は、例えば、論
理積ルールＴｂ１を真偽値ルールＤＢ２０１から取得し、取得した論理積ルールＴｂ１を主記憶部１２の所定の領域に一時的に記憶する。
【０２１２】
真偽値ルール適用部１０２は、例えば、ノードに対応した真偽値表に基づいて、ノード毎の条件式マップ集合を生成する。ノード毎の条件式マップ集合は、例えば、真偽値表のレコード毎に生成された条件式マップから生成される。真偽値ルール適用部１０２は、例えば、真偽値表の「全体」カラムに格納された真偽値と、「左辺」カラム、「右辺」カラムの真偽値情報を反映させた条件式の結合式とを組合せ、レコード毎の条件式マップを生成する。ノードに対応した真偽値表に基づいて生成されたノード毎の条件式マップ集合は、例えば、主記憶部１２の所定の領域に一時的に記憶される。
【０２１３】
なお、第２の真偽値ルール適用処理のノード毎の条件式マップ集合の生成処理は、例えば、第1の真偽値ルール適用処理における、ノード毎の条件式マップ集合の生成処理と同
様の処理が行われる。すなわち、論理積テーブルＴｂ１に沿ってレコード毎の条件式マップを生成し、生成したレコード毎の条件式マップを組合せ、ノード毎の条件式マップ集合を生成する。
【０２１４】
・論理積ルール１
図７Ｅの論理積ルールＴｂ１において、ＩＤ＝１のレコードの「左辺」カラムには真偽値情報（true，０）が格納され、「右辺」カラムには真偽値情報（false，１）が格納さ
れている。このため、「左辺」カラムに対応するリーフ“y==1”の真偽値には組合せルール１が適用され、「右辺」カラムに対応するリーフ“z>1”の真偽値には組合せルール２
が適用されることとなる。
【０２１５】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“z>1”の条件式マップ集合か
ら、真偽値“false”となる条件式を全て抽出する。ここで、リーフ“z>1”の条件式マップ集合は、｛（(z>1)，true），（¬(z>1)，false）｝であり、真偽値“false”と組合せられた条件式は単一の“¬(z>1)”である。
【０２１６】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「右辺」カラムに対応する条件式として、リーフ“z>1”の条件式マップ集合から、条件式
“¬(z>1)”を抽出する。
【０２１７】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「左辺」カラムに格納された真偽値情報に基づいて、リーフ“y==1”の条件式マップ集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。ここで、リーフ“y==1”の条件式マップ集合は、｛（(y==1)，true），（¬(y==1)，false）｝
であり、真偽値“true”と組合せられた条件式は複数に存在せずに単一の“(y==1)”である。このため、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(y==
1)”が抽出されることとなる。
【０２１８】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「左辺」カラムに対応する条件式として、リーフ“y==1”の条件式マップ集合から、条件式“(y==1)”を抽出する。
【０２１９】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝１のレコードについての、「全体」カラムに格納された真偽値“false”と組となる条件式マップを生成す
る。条件式マップは、例えば、リーフ“y==1”の条件式マップ集合から抽出された条件式(y==1)、及び、リーフ“z>1”の条件式マップ集合から抽出された条件式(¬(z>1))に基づいて生成される。
【０２２０】
真偽値ルール適用部１０２は、例えば、各リーフの条件式マップ集合から抽出された条件式(y==1)と条件式(¬(z>1))とを、合接を表す記号“∧”を用いて結合した、“((y==1)
∧ ¬(z>1))”を生成する。そして、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「全体」カラムに格納された真偽値“false”と組合せ
、ＩＤ＝１のレコードの真偽値に対応する条件式マップ“((y==1) ∧ ¬(z>1)，false)”を生成する。生成された条件式マップ“((y==1) ∧ ¬(z>1)，false)”は、例えば、論理積ルールＴｂ１のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０２２１】
・論理積ルール２
図７Ｅの論理積ルールＴｂ１において、ＩＤ＝２のレコードの「左辺」カラムには真偽値情報（false，１）が格納され、「右辺」カラムには真偽値情報（true，０）が格納さ
れている。このため、「左辺」カラムに対応するリーフ“y==1”の真偽値には組合せルール２が適用され、「右辺」カラムに対応するリーフ“z>1”の真偽値には組合せルール１
が適用されることとなる。
【０２２２】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「左辺」カラムに格納された真偽値情報に基づいて、リーフ“y==1”の条件式マップ集合から、真偽値“false”となる条件式を全て抽出する。リーフ“y==1”の条件式マップ集合
は、｛（(y==1)，true），（¬(y==1)，false）｝であり、真偽値“false”と組合せられた条件式は単一の“¬(y==1)”である。
【０２２３】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「左辺」カラムに対応する条件式として、リーフ“y==1”の条件式マップ集合から、条件式“¬(y==1)”を抽出する。
【０２２４】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“z>1”の条件式マップ
集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。リーフ“z>1”の条件式マップ集合は、｛（(z>1)，true），（¬(z>1)，false）｝であり、真偽値“true”と組合せられた条件式は複数に存在せずに単一の“(z>1)”である。このため
、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(z>1)”が抽出さ
れることとなる。
【０２２５】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「右辺」カラムに対応する条件式として、リーフ“z>1”の条件式マップ集合から、条件式
“(z>1)”を抽出する。
【０２２６】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝２のレコードについての、「全体」カラムに格納された真偽値“false”と組となる条件式マップを生成す
る。条件式マップは、例えば、リーフ“y==1”の条件式マップ集合から抽出された条件式(¬(y==1))、及び、リーフ“z>1”の条件式マップ集合から抽出された条件式(z>1)に基づいて生成される。
【０２２７】
真偽値ルール適用部１０２は、例えば、各リーフの条件式マップ集合から抽出された条件式(¬(y==1))と条件式(z>1)とを、合接を表す記号“∧”を用いて結合した、“(¬(y==1) ∧ (z>1))”を生成する。そして、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「全体」カラムに格納された真偽値“false”と組合せ
、ＩＤ＝２のレコードの真偽値に対応する条件式マップ“(¬(y==1) ∧ (z>1)，false)”を生成する。生成された条件式マップ“(¬(y==1) ∧ (z>1)，false)”は、例えば、論理積ルールＴｂ１のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０２２８】
・論理積ルール３
図７Ｅの論理積ルールＴｂ１において、ＩＤ＝３のレコードの「左辺」カラムには真偽値情報（true，１）が格納され、「右辺」カラムには真偽値情報（true，１）が格納されている。このため、「左辺」カラムに対応するリーフ“y==1”の真偽値、及び、「右辺」カラムに対応するリーフ“z>1”の真偽値には組合せルール２が適用されることとなる。
【０２２９】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「左辺」カラムに格納された真偽値情報に基づいて、リーフ“y==1”の条件式マップ集合から、真偽値“true”となる条件式を全て抽出する。リーフ“y==1”の条件式マップ集合は、｛（(y==1)，true），（¬(y==1)，false）｝であり、真偽値“true”と組合せられた
条件式は単一の“(y==1)”である。
【０２３０】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「左辺」カラムに対応する条件式として、リーフ“y==1”の条件式マップ集合から、条件式“(y==1)”を抽出する。
【０２３１】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“z>1”の条件式マップ
集合から、真偽値“true”となる条件式を全て抽出する。リーフ“z>1”の条件式マップ
集合は、｛（(z>1)，true），（¬(z>1)，false）｝であり、真偽値“true”と組合せら
れた条件式は単一の“(z>1)”である。
【０２３２】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「右辺」カラムに対応する条件式として、リーフ“z>1”の条件式マップ集合から、条件式
“(z>1)”を抽出する。
【０２３３】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝３のレコードについての、「全体」カラムに格納された真偽値“true”と組となる条件式マップを生成する。条件式マップは、例えば、リーフ“y==1”の条件式マップ集合から抽出された条件式(y==1)、及び、リーフ“z>1”の条件式マップ集合から抽出された条件式(z>1)に基づいて生成される。
【０２３４】
真偽値ルール適用部１０２は、例えば、各リーフの条件式マップ集合から抽出された条件式(y==1)と条件式(z>1)とを、合接を表す記号“∧”を用いて結合した、“((y==1) ∧ (z>1))”を生成する。そして、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ
１のＩＤ＝３のレコードの「全体」カラムに格納された真偽値“true”と組合せ、ＩＤ＝３のレコードの真偽値に対応する条件式マップ“((y==1) ∧ (z>1)，true)”を生成する
。生成された条件式マップ“((y==1) ∧ (z>1)，true)”は、例えば、論理積ルールＴｂ
１のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０２３５】
以上の処理により、図７ＥのブロックＤ５に示すように、論理積ルールＴｂ１のＩＤ＝１−３の論理関係に基づいた各条件式マップが生成される。
【０２３６】
・条件式マップ集合
図７Ｅの論理積ルールＴｂ１の、レコード毎に生成した条件式マップに基づいて、真偽値ルール適用部１０２は、リーフ“y==1”、“z>1”に係る処理プロセスについての真偽
値を反映した条件式マップ集合を生成する。真偽値ルール適用部１０２は、例えば、ブロックＤ５に示す各条件式マップに基づいて、ブロックＤ６に示す条件式マップ集合を生成する。
【０２３７】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のレコード毎に生成した条件式マップを組合せ、条件式マップ集合｛((y==1) ∧ ¬(z>1)，false)，(¬(y==1) ∧ (z>1)，false)，((y==1) ∧(z>1)，true)｝を生成する。論理積ルールＴｂ１のレコード毎に生成した条件式マップに基づいて生成された、リーフ“y==1”、“z>1”に係る処理プ
ロセスについての真偽値を反映した条件式マップ集合は、例えば、条件式マップ集合ＤＢ２０３に格納される。
【０２３８】
（第３の真偽値ルール適用処理）
次に、第３の真偽値ルール適用処理では、真偽値ルール適用部１０２は、例えば、木構造において、下位の処理プロセスの各ノードを結び付けるノード（論理演算子）処理についての、条件式マップ、及び、条件式マップ集合を生成する。
【０２３９】
図７Ｆに、第３の真偽値ルール適用処理に係る、判定式Ｃ１の木構造についての条件式マップ、条件式マップ集合の生成処理の説明図を例示する。図７Ｆに例示の木構造において、破線で囲まれた矩形領域に示すように、同一階層に配置された下位ノード（論理積“and”）を結び付ける上位ノードは、論理和“or”である。第３の真偽値ルール適用処理
では、例えば、同一階層に配置された下位ノード毎に生成された条件式マップ集合に基づいて、各下位ノードを結び付ける上位ノード（論理和“or”）処理についての、条件式マップ、及び、条件式マップ集合が生成される。
【０２４０】
図７Ｆに例示の木構造において、リーフ“x>0”、“z==5”を結び付ける左側の下位ノ
ードで生成された条件式マップ集合は、｛((x>0) ∧ ¬(z==5)，false)，(¬(x>0) ∧ (z==5)，false)，((x>0) ∧(z==5)，true)｝である。また、リーフ“y==1”、“z>1”を結
び付ける右側の下位ノードで生成された条件式マップ集合は、｛((y==1) ∧ ¬(z>1)，false)，(¬(y==1) ∧ (z>1)，false)，((y==1) ∧(z>1)，true)｝である。
【０２４１】
なお、図７Ｆの説明図において、ブロックＤ７に示すように、リーフ“x>0”、“z==5
”を結び付ける左側の下位ノードで生成された条件式マップ集合は、“左辺の条件式マップ集合”とも称する。同様にして、ブロックＤ７に示すように、リーフ“y==1”、“z>1
”を結び付ける右側の下位ノードで生成された条件式マップ集合は、“右辺の条件式マップ集合”とも称する。
【０２４２】
また、図７Ｆの説明図において、論理和ルールＴｂ２は、組合せルールが適用された論理和の真偽値表を表す。論理和ルールＴｂ２の「左辺」カラム、「右辺」カラムに格納された真偽値情報については、図７Ｃで説明した。なお、以下の説明では、図７Ｆに例示の
論理和ルールＴｂ２において、「Ｎｏ」カラムに「１」が格納されたレコードを“ＩＤ＝１のレコード”とも称する。「Ｎｏ」カラムに「２」、「３」が格納されたレコードについても、同様に、“ＩＤ＝２のレコード”、“ＩＤ＝３のレコード”とも称する。
【０２４３】
真偽値ルール適用部１０２は、例えば、真偽値ルールＤＢ２０１を参照し、処理対象となるノードに対応した真偽値表を取得する。図７Ｆに例示の木構造において、同一階層に配置された下位ノード（論理積“and”）を結び付ける上位ノードは、論理和“or”であ
る。真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２を真偽値ルールＤＢ２０１から取得し、取得した論理和ルールＴｂ２を主記憶部１２の所定の領域に一時的に記憶する。
【０２４４】
真偽値ルール適用部１０２は、例えば、真偽値表の「全体」カラムに格納された真偽値と、「左辺」カラム、「右辺」カラムの真偽値情報を反映させた条件式の結合式とを組合せ、レコード毎の条件式マップを生成する。そして、真偽値ルール適用部１０２は、例えば、真偽値表のレコード毎に生成された条件式マップから、レコード毎の条件式マップを組合せ、処理対象となるノードの処理プロセスに対する条件式マップ集合を生成する。処理対象となるノードの処理プロセスに対して生成された条件式マップ集合は、例えば、主記憶部１２の所定の領域に一時的に記憶される。
【０２４５】
・論理和ルール１
図７Ｆの論理和ルールＴｂ２において、ＩＤ＝１のレコードの「左辺」カラムには真偽値情報（true，１）が格納され、「右辺」カラムには真偽値情報（false，０）が格納さ
れている。ここで、「左辺」カラムは、例えば、処理対象となる上位ノードで結び付けられる左側の下位ノードの条件式マップ集合に対応し、「左辺」カラムは、処理対象となる上位ノードで結び付けられる右側の下位ノードの条件式マップ集合に対応する。
【０２４６】
このため、「左辺」カラムに対応する左側の下位ノードの条件式マップ集合の真偽値には組合せルール２が適用され、「右辺」カラムに対応する右側の下位ノードの条件式マップ集合の真偽値には組合せルール１が適用される。
【０２４７】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝１のレコードの「左辺」カラムに格納された真偽値情報に基づいて、左側の下位ノードの条件式マップ集合から、真偽値“true”となる条件式を全て抽出する。ここで、左側の下位ノードの条件式マップ集合は、｛((x>0) ∧ ¬(z==5)，false)，(¬(x>0) ∧ (z==5)，false)，((x>0) 
∧(z==5)，true)｝であり、真偽値“true”と組合せられた条件式は、単一の“(x>0) ∧ (z==5)”である。
【０２４８】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝１のレコードの「左辺」カラムに対応する条件式として、左側の下位ノードの条件式マップ集合から、条件式“(x>0) ∧ (z==5)”を抽出する。
【０２４９】
次に、真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝１のレコードの「右辺」カラムに格納された真偽値情報に基づいて、右側の下位ノードの条件式マップ集合から、真偽値“false”となる条件式を選択演算子を用いて結合し、抽出する。
【０２５０】
ここで、右側の下位ノードで生成された条件式マップ集合は、｛((y==1) ∧ ¬(z>1)，false)，(¬(y==1) ∧ (z>1)，false)，((y==1) ∧(z>1)，true)｝である。真偽値“false”と組合せられた条件式は複数に存在し、“(y==1) ∧ ¬(z>1)”、“¬(y==1) ∧ (z>1)”の２通りである。このため、真偽値ルール適用部１０２では、例えば、真偽値“false”と組合せられた複数の条件式が選択演算子“||”を用いて結合され、結合された条件式
“((y==1) ∧ ¬(z>1) ||¬(y==1) ∧ (z>1))”が抽出されることとなる。
【０２５１】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝１のレコードの「右辺」カラムに対応する条件式として、右側の下位ノードの条件式マップ集合から、選択演算子を用いて結合した条件式“((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))”を抽出する。
【０２５２】
そして、真偽値ルール適用部１０２は、論理和ルールＴｂ２のＩＤ＝１のレコードについての、「全体」カラムに格納された真偽値“true”と組となる条件式マップを生成する。条件式マップは、例えば、左側の下位ノードの条件式マップ集合から抽出された条件式“(x>0) ∧ (z==5)”、及び、右側の下位ノードの条件式マップ集合から抽出された条件
式“((y==1) ∧ ¬(z>1) ||¬(y==1) ∧ (z>1))”に基づいて生成される。
【０２５３】
真偽値ルール適用部１０２は、例えば、各下位ノードの条件式マップ集合から抽出された条件式を、合接を表す記号“∧”を用いて結合した、“(x>0) ∧ (z==5) ∧((y==1) ∧
¬(z>1) ||¬(y==1) ∧ (z>1))”を生成する。
【０２５４】
そして、真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝１のレコードの「全体」カラムに格納された真偽値“true”と組合せ、ＩＤ＝１のレコードの真偽値に対応する条件式マップを生成する。論理和ルールＴｂ２のＩＤ＝１のレコードでは、ブロックＤ８に示すように、条件式マップ“((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))，true)”が生成される。
【０２５５】
生成された条件式マップ“((x>0) ∧ (z==5)) ∧ ((y==1) ∧ ¬(z>1) ||¬(y==1) ∧(z>1))，true)”は、例えば、論理和ルールＴｂ２のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０２５６】
・論理和ルール２
図７Ｆの論理和ルールＴｂ２において、ＩＤ＝２のレコードの「左辺」カラムには真偽値情報（false，０）が格納され、「右辺」カラムには真偽値情報（true，１）が格納さ
れている。このため、「左辺」カラムに対応する左側の下位ノードの条件式マップ集合の真偽値には組合せルール１が適用され、「右辺」カラムに対応する右側の下位ノードの条件式マップ集合の真偽値には組合せルール２が適用されることとなる。
【０２５７】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝２のレコードの「左辺」カラムに格納された真偽値情報に基づいて、左側の下位ノードの条件式マップ集合から、真偽値“false”となる条件式を選択演算子を用いて結合し、抽出する。
【０２５８】
ここで、左側の下位ノードの条件式マップ集合は、｛((x>0) ∧ ¬(z==5)，false)，(
¬(x>0) ∧ (z==5)，false)，((x>0) ∧(z==5)，true)｝である。真偽値“false”と組合せられた条件式は複数に存在し、“(x>0) ∧ ¬(z==5)”、“¬(x>0) ∧ (z==5)”の２通りである。このため、真偽値ルール適用部１０２では、例えば、真偽値“false”と組合
せられた複数の条件式が選択演算子“||”を用いて結合され、結合された条件式“((x>0)
∧ ¬(z==5)||¬(x>0) ∧ (z==5))”が抽出されることとなる。
【０２５９】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝２のレコードの「左辺」カラムに対応する条件式として、左側の下位ノードの条件式マップ集合から、選択演算子を用いて結合した条件式“((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5))”を抽出する。
【０２６０】
次に、真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝１のレコードの「右辺」カラムに格納された真偽値情報に基づいて、右側の下位ノードの条件式マップ集合から、真偽値“true”となる条件式を全て抽出する。ここで、右側の下位ノードで生成された条件式マップ集合は、｛((y==1) ∧ ¬(z>1)，false)，(¬(y==1) ∧ (z>1)，false)，((y==1) ∧(z>1)，true)｝であり、真偽値“true”と組合せられた条件式は、単一の“(y==1) ∧ (z>1)”である。
【０２６１】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝２のレコードの「右辺」カラムに対応する条件式として、右側の下位ノードの条件式マップ集合から、条件式“(y==1) ∧ (z>1)”を抽出する。
【０２６２】
そして、真偽値ルール適用部１０２は、論理和ルールＴｂ２のＩＤ＝２のレコードについての、「全体」カラムに格納された真偽値“true”と組となる条件式マップを生成する。条件式マップは、例えば、左側の下位ノードの条件式マップ集合から抽出された条件式“((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5))”、及び、右側の下位ノードの条件式マップ集合から抽出された条件式“(y==1) ∧ (z>1)”に基づいて生成される。
【０２６３】
真偽値ルール適用部１０２は、例えば、各下位ノードの条件式マップ集合から抽出された条件式を、合接を表す記号“∧”を用いて結合した、“((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)”を生成する。
【０２６４】
そして、真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝２のレコードの「全体」カラムに格納された真偽値“true”と組合せ、ＩＤ＝２のレコードの真偽値に対応する条件式マップを生成する。論理和ルールＴｂ２のＩＤ＝２のレコードでは、ブロックＤ８に示すように、条件式マップ“(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)，true)”が生成される。
【０２６５】
生成された条件式マップ“(((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1)，true)”は、例えば、論理和ルールＴｂ２のＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０２６６】
・論理和ルール３
図７Ｆの論理和ルールＴｂ２において、ＩＤ＝３のレコードの「左辺」カラムには真偽値情報（false，１）が格納され、「右辺」カラムには真偽値情報（false，１）が格納されている。このため、「左辺」カラムに対応する左側の下位ノードの条件式マップ集合の真偽値、及び、「右辺」カラムに対応する右側の下位ノードの条件式マップ集合の真偽値には組合せルール２が適用されることとなる。
【０２６７】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝３のレコードの「左辺」カラムに格納された真偽値情報に基づいて、左側の下位ノードの条件式マップ集合から、真偽値“false”となる条件式を全て抽出する。
【０２６８】
ここで、左側の下位ノードの条件式マップ集合は、｛((x>0) ∧ ¬(z==5)，false)，(
¬(x>0) ∧ (z==5)，false)，((x>0) ∧(z==5)，true)｝である。真偽値“false”と組合せられた条件式は、｛(x>0) ∧ ¬(z==5)，¬(x>0) ∧ (z==5)｝の２通りである。このため、真偽値ルール適用部１０２では、例えば、真偽値“false”と組合せられた２通りの
条件式が全て抽出されることとなる。なお、真偽値“false”と組合せられた２通りの条
件式は、例えば、記号“｛｝”を用いた集合形式で抽出される。
【０２６９】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝３のレコードの「
左辺」カラムに対応する条件式として、左側の下位ノードの条件式マップ集合から、条件式の集合形式で表された“｛(x>0) ∧ ¬(z==5)，¬(x>0) ∧ (z==5)｝”を抽出する。
【０２７０】
次に、真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝３のレコードの「右辺」カラムに格納された真偽値情報に基づいて、右側の下位ノードの条件式マップ集合から、真偽値“false”となる条件式を全て抽出する。
【０２７１】
ここで、右側の下位ノードで生成された条件式マップ集合は、｛((y==1) ∧ ¬(z>1)，false)，(¬(y==1) ∧ (z>1)，false)，((y==1) ∧(z>1)，true)｝である。真偽値“false”と組合せられた条件式は、｛(y==1) ∧ ¬(z>1)，¬(y==1) ∧ (z>1)｝の２通りであ
る。このため、真偽値ルール適用部１０２では、例えば、右側の下位ノードにおいても、真偽値“false”と組合せられた２通りの条件式が全て抽出されることとなる。真偽値“false”と組合せられた２通りの条件式は、例えば、記号“｛｝”を用いた集合形式で抽出される。
【０２７２】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝３のレコードの「右辺」カラムに対応する条件式として、右側の下位ノードの条件式マップ集合から、条件式の集合形式で表された“｛(y==1) ∧ ¬(z>1)，¬(y==1) ∧ (z>1)｝”を抽出する。
【０２７３】
そして、真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝３のレコードの「全体」カラムに格納された真偽値“false”と組合せ、ＩＤ＝３のレコードの真
偽値に対応する条件式マップを生成する。なお、論理和ルールＴｂ２のＩＤ＝３では、左側の下位ノードについて２通りの条件式が抽出され、右側の下位ノードについても２通りの条件式が抽出されている。このため、論理和ルールＴｂ２のＩＤ＝３では、各下位ノードで抽出された条件式の組合せである、条件式２×条件式２＝４通りの条件式の組合せが生成される。真偽値ルール適用部１０２は、例えば、各下位ノードで抽出された条件式の組合せから生成された４通りの条件式のそれぞれについて、論理和ルールＴｂ２のＩＤ＝３のレコードの「全体」カラムに格納された真偽値“false”を組合せ、条件式マップを
生成する。
【０２７４】
真偽値ルール適用部１０２は、例えば、条件式の集合形式で表された“｛(x>0) ∧ ¬(z==5)，¬(x>0) ∧ (z==5)｝”及び“｛(y==1) ∧ ¬(z>1)，¬(y==1) ∧(z>1)｝”をそ
れぞれに組合せ、４通りの条件式を生成する。生成される条件式は、“((x>0) ∧ ¬(z==5)) ∧ ((y==1) ∧ ¬(z>1))”、“((x>0) ∧ ¬(z==5)) ∧ (¬(y==1) ∧ (z>1))”、“(¬(x>0) ∧ (z==5)) ∧ ((y==1) ∧ ¬(z>1))”、“(¬(x>0) ∧ (z==5)) ∧ (¬(y==1)
∧ (z>1))”の４通りである。
【０２７５】
そして、真偽値ルール適用部１０２は、例えば、ブロックＤ８に示すように、４通りの条件式のそれぞれに真偽値“false”を組合せた条件式マップを生成する。生成された条
件式マップは、例えば、記号“｛｝”を用いた集合形式で、以下に示すように表される。
【０２７６】
条件式マップ：｛((x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1)，false)，((x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧ (z>1)，false)，(¬(x>0) ∧ (z==5) ∧ (y==1) ∧ ¬(z>1)，false)，(¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧(z>1)，false)｝
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のＩＤ＝３のレコードの真偽値を反映して生成された条件式マップを、例えば、論理和ルールＴｂ２のＩＤに対応付けて、主記憶部１２の所定の領域に一時的に記憶する。
【０２７７】
・条件式マップ集合
図７Ｆの論理和ルールＴｂ２の、レコード毎に生成した条件式マップに基づいて、真偽
値ルール適用部１０２は、同一階層に配置された複数の下位ノードを結び付ける上位ノードの処理プロセスに対する、真偽値を反映した条件式マップ集合を生成する。真偽値ルール適用部１０２は、例えば、ブロックＤ８に示す各条件式マップに基づいて、ブロックＤ９に示す条件式マップ集合を生成する。
【０２７８】
真偽値ルール適用部１０２は、例えば、論理和ルールＴｂ２のレコード毎に生成した条件式マップを組合せ、以下に示す条件式マップ集合を生成する。なお、生成された条件式マップ集合は、例えば、条件式マップ集合ＤＢ２０３に格納される。
【０２７９】
条件式マップ集合：｛((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))
，true)、(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧ (y==1) ∧(z>1)，true)、((x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1)，false)、((x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧ (z>1)，false)、(¬(x>0) ∧ (z==5) ∧(y==1) ∧ ¬(z>1)，false)、(¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧ (z>1)，false)｝
【０２８０】
（第４の真偽値ルール適用処理）
第４の真偽値ルール適用処理では、真偽値ルール適用部１０２は、例えば、木構造において、最上位の処理プロセスのノード（論理演算子）処理についての条件式マップ、条件式マップ集合を生成する。真偽値ルール適用処理部１０２は、例えば、第３の真偽値ルール適用処理の処理対象となったノードと同一階層に配置されたリーフとを結び付ける最上位のノード（論理積“and”）の処理プロセスについての条件式マップ、条件式マップ集
合を生成する。
【０２８１】
図７Ｇに、第４の真偽値ルール適用処理に係る、判定式Ｃ１の木構造についての条件式マップ、条件式マップ集合の生成処理の説明図を例示する。図７Ｇに例示の木構造において、第３の真偽値ルール適用処理の処理対象となったノードと同一階層に配置されたリーフは、破線で囲まれた矩形領域に示すように、リーフ“y>0”である。真偽値ルール適用
部１０２は、例えば、判定式二分木ＤＢ２０２を参照し、図７Ｇに例示の木構造から、リーフ“y>0”を特定し、リーフ“y>0”についての条件式マップ、条件式マップ集合を生成する。
【０２８２】
真偽値ルール適用部１０２は、例えば、リーフ“y>0”について、“真（true）”の真
偽値との組合せの条件式マップ((y>0)，true)を生成し、“偽（false）の真偽値との組合せの条件式マップ（¬(y>0)，false）を生成する。そして、真偽値ルール適用部１０２は、例えば、リーフ“(y>0)”について生成した各条件式マップを組合せ、ブロックＤ１０
に示す条件式マップ集合｛（(y>0)，true），（¬(y>0)，false）｝を生成する。真偽値
ルール適用部１０２は、例えば、リーフ“y>0”について生成された条件式マップ集合｛
（(y>0)，true），（¬(y>0)，false）｝を、主記憶部１２の所定の領域に一時的に記憶
する。
【０２８３】
真偽値ルール適用部１０２は、例えば、第３の真偽値ルール適用処理で生成された条件式マップ集合、及び、リーフ“y>0”で生成された条件式マップ集合に基づいて、最上位
のノードの処理プロセスについての真偽値を反映した条件式マップ集合を生成する。
【０２８４】
図７Ｈに、最上位のノードについての処理プロセスに係る、真偽値を反映した条件式マップ集合の説明図を例示する。なお、図７Ｈの説明図において、第３の真偽値ルール適用処理で生成された条件式マップ集合は、ブロックＤ９に示すように“左辺の条件式マップ集合”とも称する。また、リーフ“y>0”で生成された条件式マップ集合は、ブロックＤ
１０に示すように“右辺の条件式マップ集合”とも称する。
【０２８５】
ここで、リーフ“y>0”で生成された条件式マップ集合は、｛（(y>0)，true），（¬(y>0)，false）｝である。また、第３の真偽値ルール適用処理で生成された条件式マップ集合は、以下の通りである。
【０２８６】
第３の真偽値ルール適用処理で生成された条件式マップ集合：｛((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))，true)、(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧ (y==1) ∧(z>1)，true)、((x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1)，false)
、((x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧ (z>1)，false)、(¬(x>0) ∧ (z==5) ∧(y==1) 
∧ ¬(z>1)，false)、(¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧ (z>1)，false)｝
また、図７Ｈの説明図において、論理積ルールＴｂ１は、図７Ｃ等に例示の、組合せルールが適用された論理積の真偽値表を表す。なお、以下の説明では、図７Ｆに例示の論理積ルールＴｂ１において、「Ｎｏ」カラムに「１」が格納されたレコードを“ＩＤ＝１のレコード”とも称する。「Ｎｏ」カラムに「２」、「３」が格納されたレコードについても、同様に、“ＩＤ＝２のレコード”、“ＩＤ＝３のレコード”とも称する。
【０２８７】
真偽値ルール適用部１０２は、例えば、真偽値ルールＤＢ２０１を参照し、処理対象となるノードに対応した真偽値表を取得する。図７Ｈの例では、破線で囲まれた矩形領域に示すように、同一階層に配置された左側のノード（論理和“or”）と右側に配置されたリーフ“y>0”とを結び付ける最上位のノードは論理積“and”である。真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１を真偽値ルールＤＢ２０１から取得し、取得した論理積ルールＴｂ１を主記憶部１２の所定の領域に一時的に記憶する。
【０２８８】
真偽値ルール適用部１０２は、例えば、最上位のノードに対応した真偽値表に基づいて、最上位のノードの処理プロセスに対する条件式マップ集合を生成する。最上位のノードの処理プロセスに対する条件式マップ集合は、例えば、レコード毎に生成された条件式マップの組合せから生成される。真偽値ルール適用部１０２は、例えば、レコード毎に、真偽値表の「全体」カラムに格納された真偽値と、「左辺」カラム、「右辺」カラムの真偽値情報を反映させた条件式の結合式とを組合せ、レコード毎の条件式マップを生成する。最上位ノードの処理プロセスに対して生成された条件式マップ集合は、例えば、条件式マップ集合ＤＢ２０３に格納される。
【０２８９】
・論理積ルール１
図７Ｈの論理積ルールＴｂ１において、ＩＤ＝１のレコードの「左辺」カラムには真偽値情報（true，０）が格納され、「右辺」カラムには真偽値情報（false，１）が格納さ
れている。このため、「左辺」カラムに対応する左側のノード（論理和“or”）の条件式マップ集合の真偽値には組合せルール１が適用され、「右辺」カラムに対応する右側のリーフ“y>0”の真偽値には組合せルール２が適用される。
【０２９０】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「左辺」カラムに格納された真偽値情報に基づいて、左側のノードの条件式マップ集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。
【０２９１】
左側のノードの条件式マップ集合で、真偽値“true”と組合せられた条件式は、“(x>0) ∧ (z==5) ∧((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))”、“((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1)”の２通りである。真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「左辺」カラムに対応する条件式として、左側のノードの条件式マップ集合から、選択演算子を用いて結合した、以下に示す条件式を抽出する。なお、以下の条件式では、選択演算子の階層関係を識別するため記号“[]”を用いて選択される２通りの条件式を表すとする。
【０２９２】
ＩＤ＝１の左辺の条件式：([(x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))]||[((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)])
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「右辺」カラムに格納された真偽値情報に基づいて、右側のリーフ“y>0”の条件式
マップ集合から、真偽値“false”となる条件式を全て抽出する。ここで、リーフ“y>0”の条件式マップ集合は、｛（(y>0)，true），（¬(y>0)，false）｝であり、真偽値“false”と組合せられた条件式は単一の“¬(y>0)”である。
【０２９３】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝１のレコードの「右辺」カラムに対応する条件式として、リーフ“y>0”の条件式マップ集合から、条件式
“¬(y>0)”を抽出する。
【０２９４】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝１のレコードについての、「全体」カラムに格納された真偽値“false”と組となる条件式マップを生成す
る。条件式マップは、例えば、左側のノードの条件式マップ集合から抽出された条件式、及び、右側のリーフ“y>0”の条件式マップ集合から抽出された条件式(¬(y>0))に基づいて生成される。
【０２９５】
真偽値ルール適用部１０２は、例えば、左側のノードの条件式マップ集合から抽出された条件式と右側のリーフの条件式マップ集合から抽出された条件式とを、合接を表す記号“∧”を用いて結合する。そして、真偽値ルール適用部１０２は、例えば、結合した左側のノードの条件式と右側のリーフの条件式に、論理積ルールＴｂ１のＩＤ＝１のレコードの「全体」カラムに格納された真偽値“false”を組合せ、ＩＤ＝１の真偽値に対応する
条件式マップを生成する。
【０２９６】
論理積ルールＴｂ１のＩＤ＝１のレコードでは、以下に示す条件式マップが生成される。なお、生成されたＩＤ＝１の真偽値に対応する条件式マップは、例えば、論理積ルールＴｂ１のレコードのＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０２９７】
ＩＤ＝１の条件式マップ：([(x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))]||[((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)] ∧ ¬(y>0)，false)
【０２９８】
・論理積ルール２
図７Ｈの論理積ルールＴｂ１において、ＩＤ＝２のレコードの「左辺」カラムには真偽値情報（false，１）が格納され、「右辺」カラムには真偽値情報（true，０）が格納さ
れている。このため、「左辺」カラムに対応する左側のノード（論理和“or”）の条件式マップ集合の真偽値には組合せルール２が適用され、「右辺」カラムに対応する右側のリーフ“y>0”の条件式マップ集合の真偽値には組合せルール１が適用される。
【０２９９】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「左辺」カラムに格納された真偽値情報に基づいて、左側のノードの条件式マップ集合から、真偽値“false”となる条件式を全て抽出する。
【０３００】
なお、左側のノードの条件式マップ集合で、真偽値“false”と組合せられた条件式は
、４通りである。真偽値ルール適用部１０２は、例えば、左側のノードの条件式マップ集合から、真偽値“false”となる４通りの条件式を記号“｛｝”を用いた集合形式で全て
抽出する。左側のノードの条件式マップ集合から、記号“｛｝”を用いた集合形式で抽出される条件式は以下の通りである。
【０３０１】
ＩＤ＝２の左辺の条件式：｛((x>0) ∧ ¬(z==5)) ∧ ((y==1) ∧ ¬(z>1))，((x>0) 
∧ ¬(z==5)) ∧ (¬(y==1) ∧ (z>1))，((¬(x>0) ∧ (z==5)) ∧ ((y==1) ∧ ¬(z>1))，((¬(x>0) ∧ (z==5)) ∧ (¬(y==1) ∧ (z>1))｝
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“y>0”の条件式マップ
集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。ここで、リーフ“y>0”の条件式マップ集合では、真偽値“true”と組合せられた条件式は複数
に存在しない。このため、選択演算子は使用されずに単一の条件式“(y>0)”が抽出され
ることとなる。
【０３０２】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝２のレコードの「右辺」カラムに対応する条件式として、リーフ“y>0”の条件式マップ集合から、条件式
“(y>0)”を抽出する。
【０３０３】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝２のレコードについての、「全体」カラムに格納された真偽値“false”と組となる条件式マップを生成す
る。条件式マップは、例えば、左側のノードの条件式マップ集合から集合形式で抽出された条件式、及び、右側のリーフ“y>0”の条件式マップ集合から抽出された条件式(y>0)に基づいて生成される。
【０３０４】
真偽値ルール適用部１０２は、例えば、左側のノードの条件式マップ集合から集合形式で抽出された４通りの条件式のそれぞれと右側のリーフの条件式マップ集合から抽出された条件式とを、合接を表す記号“∧”を用いて結合する。そして、真偽値ルール適用部１０２は、例えば、各結合した左側のノードの条件式と右側のリーフの条件式に、論理積ルールＴｂ１のＩＤ＝２のレコードの「全体」カラムに格納された真偽値“false”を組合
せ、ＩＤ＝２の真偽値に対応する条件式マップを生成する。
【０３０５】
なお、論理積ルールＴｂ１のＩＤ＝２のレコードでは、以下に示す条件式マップのように、記号“｛｝”を用いた集合形式で、条件式マップが生成される。なお、集合形式で生成されたＩＤ＝２の真偽値に対応する条件式マップは、例えば、論理積ルールＴｂ１のレコードのＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
【０３０６】
ＩＤ＝２の条件式マップ：｛(((x>0) ∧ ¬(z==5)) ∧ ((y==1) ∧ ¬(z>1)) ∧ (y>0)，false)，(((x>0) ∧ ¬(z==5)) ∧ (¬(y==1) ∧ (z>1)) ∧ (y>0)，false)，((¬(x>0) ∧ (z==5)) ∧ ((y==1) ∧ ¬(z>1)) ∧ (y>0)，false)，((¬(x>0) ∧ (z==5)) ∧ (
¬(y==1) ∧ (z>1)) ∧ (y>0)，false)｝
【０３０７】
・論理積ルール３
図７Ｈの論理積ルールＴｂ１において、ＩＤ＝３のレコードの「左辺」カラムには真偽値情報（true，１）が格納され、「右辺」カラムには真偽値情報（true，１）が格納されている。このため、「左辺」カラムに対応する左側のノード（論理和“or”）の条件式マップ集合、及び、「右辺」カラムに対応する右側のリーフ“y>0”のマップ集合の真偽値
には、それぞれに組合せルール２が適用されることとなる。
【０３０８】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「左辺」カラムに格納された真偽値情報に基づいて、左側のノードの条件式マップ集合から、真偽値“true”となる条件式を全て抽出する。
【０３０９】
ここで、左側のノードの条件式マップ集合で、真偽値“true”と組合せられた条件式は
、２通りである。真偽値ルール適用部１０２は、例えば、左側のノードの条件式マップ集合から、真偽値“true”となる２通りの条件式を記号“｛｝”を用いた集合形式で全て抽出する。左側のノードの条件式マップ集合から、記号“｛｝”を用いた集合形式で抽出される条件式は以下の通りである。
ＩＤ＝３の左辺の条件式：｛((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1)))，(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1))｝
【０３１０】
次に、真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“y>0”の条件式マップ
集合から、真偽値“true”となる条件式を全て抽出する。ここで、リーフ“y>0”の条件
式マップ集合は、｛（(y>0)，true），（¬(y>0)，false）｝であり、真偽値“true”と
組合せられた条件式は単一の“(y>0)”である。
【０３１１】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のＩＤ＝３のレコードの「右辺」カラムに対応する条件式として、リーフ“y>0”の条件式マップ集合から、条件式
“(y>0)”を抽出する。
【０３１２】
そして、真偽値ルール適用部１０２は、論理積ルールＴｂ１のＩＤ＝３のレコードについての、「全体」カラムに格納された真偽値“true”と組となる条件式マップを生成する。条件式マップは、例えば、左側のノードの条件式マップ集合から集合形式で抽出された条件式、及び、右側のリーフ“y>0”の条件式マップ集合から抽出された条件式(y>0)に基づいて生成される。
【０３１３】
真偽値ルール適用部１０２は、例えば、左側のノードの条件式マップ集合から集合形式で抽出された２通りの条件式のそれぞれと右側のリーフの条件式マップ集合から抽出された条件式とを、合接を表す記号“∧”を用いて結合する。そして、真偽値ルール適用部１０２は、例えば、各結合した左側のノードの条件式と右側のリーフの条件式に、論理積ルールＴｂ１のＩＤ＝３のレコードの「全体」カラムに格納された真偽値“true”を組合せ、ＩＤ＝３の真偽値に対応する条件式マップを生成する。
【０３１４】
なお、論理積ルールＴｂ１のＩＤ＝３のレコードでは、以下に示す条件式マップのように、記号“｛｝”を用いた集合形式で、条件式マップが生成される。なお、集合形式で生成されたＩＤ＝３の真偽値に対応する条件式マップは、例えば、論理積ルールＴｂ１のレコードのＩＤに対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。
ＩＤ＝３の条件式マップ：｛((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1)) ∧ (y>0)，true)，(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)
∧ (y>0)，true)｝
【０３１５】
・条件式マップ集合
図７Ｈの論理積ルールＴｂ１の、レコード毎に生成した条件式マップに基づいて、同一階層の左側に配置されたノードと右側に配置されたリーフとを結び付ける最上位ノードの処理プロセスについての、真偽値を反映した条件式マップ集合が生成される。真偽値ルール適用部１０２は、例えば、図７ＨのブロックＤ１１に示す条件式マップ集合を生成する。
【０３１６】
真偽値ルール適用部１０２は、例えば、論理積ルールＴｂ１のレコード毎に生成した条件式マップを組合せ、以下に示す、最上位ノードの処理プロセスに係る条件式マップ集合を生成する。なお、以下に示す条件式マップ集合は、例えば、判定式Ｃ１についての各処理プロセスでの真偽値を反映した各リーフの結合式に相当する。真偽値ルール適用部１０２は、以下に示す条件式を、例えば、処理対象の判定式の識別番号と対応付けて、条件式
マップ集合ＤＢ２０３に格納する。
【０３１７】
判定式Ｃ１の条件式マップ集合：｛([(x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))]||[((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1)] ∧ ¬(y>0)，false)、((x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1) ∧ (y>0)，false)、((x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧ (z>1) ∧ (y>0)，false)、(¬(x>0) ∧ (z==5) ∧ (y==1) ∧ ¬(z>1) ∧ (y>0)，false)、(¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧ (z>1) ∧ (y>0)，false)、((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1)) ∧ (y>0)，true)、(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1) ∧ (y>0)，true)｝
【０３１８】
[テストケース生成処理]
図６に例示の説明図に戻り、テストケース生成部１０３は、例えば、真偽値ルール適用部１０２で生成された判定式Ｃ１についての条件式マップ集合に基づいて、ＭＣ／ＤＣのテスト網羅度を満たすテストケースの条件式を生成する。テストケース生成部１０３で生成された、ＭＣ／ＤＣのテスト網羅度を満たすテストケースの条件式は、例えば、テストケース条件式ＤＢ２０４に格納される。
【０３１９】
テストケース生成部１０３では、例えば、判定式Ｃ１についての条件式マップ集合に含まれる条件式マップ毎に、判定式Ｃ１の処理プロセスの真偽値を反映した条件式の抽出が行われる。例えば、判定式Ｃ１について生成された条件式マップ集合には７通りの条件式マップが含まれる。このため、判定式Ｃ１について生成された条件式マップ集合からは、７通りの条件式が抽出されることとなる。
【０３２０】
なお、抽出された各条件式には、例えば、選択演算子を用いて結合された条件式が含まれる。以下の説明においては、選択演算子を用いて結合された条件式を展開して得られた条件式を“部分条件式”とも称する。
【０３２１】
テストケース生成部１０３は、例えば、選択演算子を用いて結合された条件式を展開して分析を行い、展開された部分条件式の中から部分条件式についての変数関係を充足する部分条件式をＭＣ／ＤＣのテスト網羅度を満たすテストケースの条件式として選択する。選択演算子を用いて結合された条件式に対する展開・分析、展開された部分条件式の中から部分条件式についての変数関係を充足する部分条件式の選択は、例えば、選択分析部１０３ａにより行われる。
【０３２２】
テストケース生成部１０３は、例えば、ＭＣ／ＤＣのテスト網羅度を満たすテストケースとして選択された条件式、及び、選択された変数関係を充足する部分条件式を充足可能性判定部１０４に引き渡す。そして、充足可能性判定部１０４では、例えば、テストケース生成部１０３から引き渡されたテストケースの条件式、部分条件式に基づいて、それぞれの条件式に含まれる変数値の組合せ（テストセット）が生成される。
【０３２３】
（条件式マップ毎の条件式の抽出）
テストケース生成部１０３は、例えば、条件式マップ集合ＤＢ２０３を参照し、処理対象の判定式に対応付けられた条件式マップ集合を取得する。取得された条件式マップ集合は、例えば、主記憶部１２の所定の領域に一時的に記憶される。
【０３２４】
テストケース生成部１０３は、例えば、取得した条件式マップ集合から条件式マップ毎に、判定式の処理プロセスを反映した条件式の抽出を行う。そして、テストケース生成部１０３は、例えば、条件式マップ集合の条件式マップ毎に抽出された条件式に基づいて、処理対象の判定式に対するテストケース条件式テーブルを生成する。生成されたテストケース条件式テーブルは、例えば、テストケース条件式ＤＢ２０４に格納される。
【０３２５】
図８Ａに、判定式Ｃ１についてのテストケース条件式テーブル例を例示する。判定式Ｃ１について生成された条件式マップ集合には７通りの条件式マップが含まれるため、７通りの条件式が抽出される。
【０３２６】
図８Ａに例示のテストケース条件式テーブルは、「Ｎｏ」カラム、「テストケースの条件式」カラムを有する。「Ｎｏ」カラムには、対象となる判定式の条件式マップ集合における条件式マップの組合せ順に対応した番号が格納される。「テストケースの条件式」カラムには、条件式マップ毎の、処理プロセスを反映した条件式が格納される。「テストケースの条件式」カラムに格納される条件式には、例えば、選択演算子によって結合された条件式が含まれる。
【０３２７】
図８Ａのテーブル例では、例えば、「Ｎｏ」カラムに格納された番号順に、以下に示す７通りの条件式がそれぞれの番号に対応するレコードに格納されている。なお、図８Ａのテーブル例に示すように、選択演算子を用いて結合された条件式は、Ｎｏ＝１，６，７のレコードに格納されていることが判る。
・Ｎｏ＝１の条件式：[(x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))]||[((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)] ∧ ¬(y>0)
・Ｎｏ＝２の条件式：(x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1) ∧ (y>0)
・Ｎｏ＝３の条件式：(x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧(z>1) ∧ (y>0)
・Ｎｏ＝４の条件式：¬(x>0) ∧ (z==5) ∧ (y==1) ∧ ¬(z>1) ∧ (y>0)
・Ｎｏ＝５の条件式：¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧(z>1) ∧ (y>0)
・Ｎｏ＝６の条件式：((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1)) ∧
(y>0)
・Ｎｏ＝７の条件式：((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1) ∧ (y>0)
【０３２８】
（選択分析処理）
テストケース生成部１０３の選択分析部１０３ａは、例えば、テストケース条件式ＤＢ２０４を参照し、処理対象となる判定式で生成されたテストケース条件式テーブルから、選択演算子が含まれる条件式を抽出する。抽出された条件式は、例えば、該条件式が格納されたテストケース条件式テーブルのレコードの番号（Ｎｏ）に対応付けられて、主記憶部１２の所定の領域に一時的に記憶される。例えば、図８Ａに例示のテストケース条件式テーブルでは、レコードＮｏ＝１，６，７の条件式が順に抽出される。
【０３２９】
選択分析部１０３ａは、例えば、抽出された条件式を展開し、選択演算子で結合された選択関係にある部分条件式をそれぞれに抽出する。選択関係にある部分条件式の抽出は、例えば、記号“（）”で括られた演算順序の深い（早い）順に、左側に配置された部分条件式を優先的に探索して展開し、展開して得られた部分条件式を抽出する。抽出された選択関係にある部分条件式は、例えば、主記憶部１２の所定の領域に一時的に記憶される。
【０３３０】
図８Ｂ（１）、（２）に、選択分析処理についての説明図を例示する。図８Ｂ（１）、（２）に例示の選択分析処理の対象となる条件式は、図８Ａに例示のテストケース条件式テーブルのＮｏ＝１のレコードに格納された条件式である。なお、図８Ｂ（１）、（２）に例示の説明図において、一点鎖線で囲まれた矩形領域は、選択演算子の階層関係において、左側（左項）の選択演算子により結合された条件式を表す。また、図８Ｂ（１）に例示の説明図において、破線で囲まれた矩形領域は、選択演算子により結び付けられる条件式の、左側（左項）の条件式を表す。同様にして、図８Ｂ（２）に例示の説明図において、太破線で囲まれた矩形領域は、選択演算子により結び付けられる条件式の、右側（右項）の条件式を表す。
【０３３１】
図８Ｂ（１）に例示の条件式において、選択分析部１０３ａは、例えば、一点鎖線で囲まれた矩形領域に示すように、選択演算子の階層関係において、左側（左項）の選択演算子により結合された条件式を探索する。選択分析部１０３ａは、例えば、条件式“(x>0) ∧ (z==5) ∧((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))”を探索する。
【０３３２】
そして、選択分析部１０３ａは、例えば、探索した条件式に選択演算子が含まれる場合には、破線で囲まれた矩形領域に示すように、選択演算子で結合された条件式の内、左側の条件式を特定する。選択分析部１０３ａは、例えば、選択演算子で結合された条件式の内、左側の条件式“(y==1) ∧ ¬(z>1)”を特定する。
【０３３３】
そして、選択分析部１０３ａは、例えば、特定した左側の条件式を、上位の選択関係で探索された左側の条件式の演算関係に組合せて展開し、左優先を条件として展開されたＮｏ＝１のレコードの条件式についての部分条件式の抽出を行う。抽出された部分条件式は以下の通りである。
・部分条件式１：(x>0) ∧(z==5) ∧ (y==1) ∧ ¬(z>1) ∧ ¬(y>0)
【０３３４】
選択分析部１０３ａは、例えば、抽出された部分条件式１について、該部分条件式１に含まれる各変数関係に矛盾を含まず、各変数関係を充足する変数値の組合せが存在するか否かの判定を行う。抽出された部分条件式についての、各変数関係を充足する変数値の組合せの有無は、例えば、充足可能性判定部１０４により行われる。選択分析部１０３ａは、例えば、抽出された部分条件式１を充足可能性判定部１０４に引き渡す。
【０３３５】
充足可能性判定部１０４では、例えば、選択分析部１０３ａから引き渡された部分条件式に基づいて、各変数関係を充足する変数値の組合せが生成される。充足可能性判定部１０４は、例えば、選択分析部１０３ａから引き渡された部分条件式に矛盾が含まれず、各変数関係を充足する変数値の組合せを生成できる場合には、生成された変数値の組合せを選択分析部１０３ａに返却する。一方、充足可能性判定部１０４は、例えば、選択分析部１０３ａから引き渡された部分条件式が矛盾を含む場合には、各変数関係を充足する変数値の組合せを生成できないため、“充足不能”との応答を選択分析部１０３ａに返却する。
【０３３６】
例えば、部分条件式１の場合では、変数ｚについて“(z==5) ∧ ¬(z>1)”との矛盾関
係を含むため、充足可能性判定部１０４は、部分条件式Ｃ１の各変数関係を充足する変数値の組合せを生成することができない。このため、充足可能性判定部１０４は、例えば、部分条件式Ｃ１を引き渡した選択分析部１０３ａに対して、“充足不能”との応答を返却する。
【０３３７】
選択分析部１０３ａは、例えば、充足可能性判定部１０４からの応答に基づいて、抽出された部分条件式についての、充足可能性を判定する。選択分析部１０３ａは、例えば、充足可能性判定部１０４に引き渡した部分条件式に対し、“充足不能”との応答が返却された場合には、抽出された部分条件式は充足不能と判定する。一方、選択分析部１０３ａは、例えば、充足可能性判定部１０４に引き渡した部分条件式に対し、生成された変数値の組合せが返却された場合には、抽出された部分条件式は充足可能と判定する。例えば、部分条件式１の場合では、“充足不能”との応答が返却されるため、選択分析部１０３ａは、抽出した部分条件式１に対して充足不能と判定する。
【０３３８】
選択分析部１０３ａは、例えば、抽出した部分条件式が充足不能である場合には、選択分析処理の対象となる条件式“(x>0) ∧ (z==5) ∧((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))”から次の部分条件式の抽出を行う。次の部分条件式の抽出は、例えば、図８Ｂ（２
）に例示のように、探索した条件式において、選択演算子で結合された右側の条件式“¬(y==1) ∧ (z>1)”に基づいて行われる。
【０３３９】
図８Ｂ（２）に例示の条件式において、選択分析部１０３ａは、例えば、一点鎖線の矩形領域の条件式から、太破線で囲まれた矩形領域に示すように、選択演算子で結合された条件式の内、右側の条件式“¬(y==1) ∧ (z>1)”を特定する。
【０３４０】
そして、選択分析部１０３ａは、例えば、特定した右側の条件式を、上位の選択関係で探索された左側の条件式の演算関係に組合せて展開し、Ｎｏ＝１のレコードの条件式についての次の部分条件式の抽出を行う。抽出された部分条件式は以下の通りである。
・部分条件式２：(x>0) ∧(z==5) ∧ ¬(y==1) ∧ (z>1) ∧ ¬(y>0)
【０３４１】
選択分析部１０３ａは、例えば、抽出された部分条件式２について、部分条件式１と同様にして、部分条件式２に含まれる各変数関係に矛盾を含まず、各変数関係を充足する変数値の組合せが存在するか否かの判定を行う。部分条件式２についての、各変数関係を充足する変数値の組合せの有無は、例えば、充足可能性判定部１０４により行われる。選択分析部１０３ａは、例えば、抽出された部分条件式２を充足可能性判定部１０４に引き渡す。
【０３４２】
充足可能性判定部１０４では、例えば、選択分析部１０３ａから引き渡された部分条件式に基づいて、各変数関係を充足する変数値の組合せが生成される。例えば、部分条件式２では、変数ｘ、ｙ、ｚのそれぞれについての範囲関係に矛盾は含まれない。このため、充足可能性判定部１０４では、例えば、部分条件式２について生成された変数値の組合せが選択分析部１０３ａに返却されることとなる。例えば、充足可能性判定部１０４は、“（ｘ，ｙ，ｚ）＝（１，−１，５）”といった変数値の組合せを選択分析部１０３ａに返却する。
【０３４３】
選択分析部１０３ａは、例えば、充足可能性判定部１０４からの応答に基づいて、抽出された部分条件式２についての、充足可能性を判定する。部分条件式Ａ２の場合では、例えば、“（ｘ，ｙ，ｚ）＝（１，−１，５）”との応答が返却されるため、選択分析部１０３ａは、抽出した部分条件式２に対して充足可能と判定する。
【０３４４】
選択分析部１０３ａは、充足可能な部分条件式が抽出された場合には、例えば、抽出された部分条件式に基づいて、テストケース条件式テーブルのＮｏ＝１のレコードに格納された条件式を更新する。例えば、更新前の条件式“[(x>0) ∧ (z==5) ∧((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1))]||[((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)] ∧ ¬(y>0)”は、部分条件式“(x>0) ∧ (z==5) ∧ ¬(y==1) ∧ (z>1) ∧ ¬(y>0)”に更新される。
【０３４５】
選択分析部１０３ａは、例えば、選択演算子が含まれる他のＮｏ＝６，７の条件式についても同様の処理を行い、充足可能と判定された部分条件式でそれぞれのレコードに格納された条件式を更新する。例えば、Ｎｏ＝６の更新前の条件式“((x>0) ∧ (z==5) ∧((y==1) ∧ ¬(z>1)||¬(y==1) ∧ (z>1)) ∧ (y>0)”は、部分条件式“(x>0) ∧ (z==5) ∧
¬(y==1) ∧ (z>1) ∧(y>0)”に更新される。また、例えば、Ｎｏ＝７の更新前の条件式“((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1) ∧ (y>0)”は、部分条
件式“(x>0) ∧ ¬(z==5) ∧ (y==1) ∧(z>1) ∧ (y>0)”に更新される。
【０３４６】
図８Ｃに、更新前後のテストケース条件式テーブル例を例示する。図８Ｃに例示の更新前後のテストケース条件式テーブル例では、図８Ａに例示のテストケース条件式テーブル例のＮｏ＝１，６，７に格納された条件式が上述した部分条件式で更新されていることが
判る。なお、選択分析部１０３ａによって更新されたテストケース条件式テーブルは、例えば、テストケース条件式ＤＢ２０４に格納される。
【０３４７】
（テストセット生成処理）
テストケース生成部１０３は、例えば、選択分析部１０３ａで更新されたテストケース条件式テーブルに基づいて、処理対象となる判定式の真偽値が反映された各条件式を充足する変数値の組合せであるテストセットを生成する。なお、テストセットの生成は、例えば、充足判定部１０４により行われる。
【０３４８】
図８Ｄに、テストケース生成処理の説明図を例示する。図８Ｄの説明図において、Ｔｂ３は、選択分析部１０３ａで更新されたテストケース条件式テーブルである。テストケース条件式テーブルＴｂ３には、選択演算子によって結合された条件式の中から充足可能と判定された部分条件式を含む７通りの条件式が格納されている。
【０３４９】
テストケース生成部１０３は、例えば、テストケース条件式ＤＢ２０４を参照し、処理対象となる判定式についての、テストケース条件式テーブルＴｂ４を取得する。取得されたテストケース条件式テーブルＴｂ４は、例えば、主記憶部１２の所定の領域に一時的に記憶される。
【０３５０】
テストケース生成部１０３は、例えば、テストケース条件式テーブルＴｂ４の各レコードに格納された７通りの条件式を、レコードの識別番号順に抽出し、抽出したレコードの条件式を充足可能性判定部１０４に引き渡す。
【０３５１】
充足可能性判定部１０４では、例えば、テストケース生成部１０３から引き渡された条件式に基づいて、条件式に含まれる変数関係を充足する変数値の組合せであるテストセットを生成する。充足可能性判定部１０４は、例えば、生成した変数値の組合せであるテストセットをテストケース生成部１０３に引き渡す。テストケース生成部１０３は、充足可能性判定部１０４から引き渡されたテストセットを、例えば、テストケース条件式テーブルＴｂ４のレコードのＮｏに対応付けて、主記憶部１２の所定の領域に一時的に記憶する。
【０３５２】
充足可能性判定部１０４は、例えば、条件式に含まれる結合演算子“∧”を検出し、該結合演算子で結び付けられる変数条件を抽出する。例えば、図８Ｄに例示のテストケース条件式テーブルＴｂ４のＮｏ＝１のレコードの条件式では、充足可能性判定部１０４は、論理演算子“∧”で結合された変数条件“（x>0）”、“(z==5)”、“¬(y==1)”、“(z>1)”、“¬(y>0)”を抽出する。
【０３５３】
充足可能性判定部１０４は、例えば、抽出した各変数条件から変数“x”、“ｙ”、“z”を特定し、“>”、“<”、“==”といった大小関係を表す記号で結合された数値“0”
、“1”等を特定する。そして、充足可能性判定部１０４は、例えば、各変数に対する数
値との大小関係、及び、各変数条件に付加された否定演算子“¬t”との論理関係から、
変数条件“（x>0）”、“(z==5)”、“¬(y==1)”、“(z>1)”、“¬(y>0)”を充足する
変数値の組合せを生成する。
【０３５４】
例えば、充足可能性判定部１０４は、変数条件“（x>0）”を充足する変数値として“x=1”を生成し、変数条件“¬（y==1）”、“¬(y>0)”を充足する変数値として“y=-1”
を生成する。また、例えば、充足可能性判定部１０４は、変数条件“(z==5)”、“(z>1)
” を充足する変数値として“z=5”を生成する。そして、充足可能性判定部１０４は、例えば、引き渡された条件式の変数関係を充足する充足解として“x=1,y=-1,z=5”といった変数値の組合せをテストケース生成部１０３に引き渡す。
【０３５５】
テストケース生成部１０３、充足可能性判定部１０４では、例えば、図８Ｄに例示の、テストケース条件式テーブルＴｂ３のレコードＮｏ＝２−７の条件式についても同様の処理を繰り返し、各条件式についての充足解が生成される。テストケース生成部１０３は、例えば、充足可能性判定部１０４から引き渡された充足解に基づいて、図８Ｄに例示のテストケーステーブルＴｂ４を生成する。
【０３５６】
なお、充足可能性判定部１０４では、引き渡された条件式から各変数関係を充足する変数値の組合せを生成できない場合には、“充足不能”との応答をテストケース生成部１０３に返却する。例えば、テストケース条件式テーブルＴｂ３のレコードＮｏ＝４の条件式“¬(x>0) ∧ (z==5) ∧(y==1) ∧ ¬(z>1) ∧ (y>0)”では、変数ｚについて“(z==5) 
∧ ¬(z>1)”といった矛盾が含まれる。このため、テストケース条件式テーブルＴｂ３のレコードＮｏ＝４の条件式に対し、充足可能性判定部１０４は、充足不能”との応答をテストケース生成部１０３に返却することとなる。
【０３５７】
テストケース生成部１０３は、例えば、“充足不能”といった応答が返却された場合では、対応する条件式のＮｏのレコードに“UNSAT(充足解なし)”といった情報を格納し、
テストケーステーブルを生成する。図８Ｄに例示のテストケーステーブルＴｂ４では、例えば、Ｎｏ＝４のレコードには、“UNSAT(充足解なし)”といった情報が格納されている
。
【０３５８】
テストケース生成部１０３は、例えば、生成したテストケーステーブルをテストケースＤＢ２０５に格納する。そして、テストケース生成部１０３は、例えば、生成したテストケーステーブルから“UNSAT(充足解なし)”が格納されたＮｏのレコードを除き、テスト
ケースＣ２として出力する。
【０３５９】
テストケースＣ２として出力される充足解（テストセット）は、テストケース条件式テーブルＴｂ３において、“UNSAT(充足解なし)”が格納されたレコードを除く６通りのテ
ストセットである。つまり、本実施形態の情報処理装置１０は、処理対象となる条件数ｎの判定式に対して、ｎ＋１個を最小数とするｎ＋１通り以上の充足可能性を向上させたＭＣ／ＤＣのテスト網羅度を充足するテストケースを生成し、出力することができる。
【０３６０】
〔処理フロー〕
（全体処理）
以下、図９Ａ−９Ｈに例示のフローチャートを参照し、本実施形態の情報処理装置１０の、ＭＣ／ＤＣのテスト網羅度を満たすテストケース生成処理を説明する。図９Ａ−９Ｂは、ＭＣ／ＤＣのテスト網羅度を満たすテストケース生成処理の全体処理を示すフローチャートの例示である。
【０３６１】
図９Ａに例示のフローチャートにおいて、ＭＣ／ＤＣのテスト網羅度を満たすテストケース生成処理の開始は、例えば、テスト対象となるプログラムの判定式の受け付けのときが例示できる。情報処理装置１０は、例えば、受け付けた判定式を解析し、判定式に含まれる論理演算子、論理演算子で結合される各条件式、論理演算子による各条件式についての処理プロセスの階層関係を特定する。そして、情報処理装置１０は、例えば、特定した論理演算子、各条件式、処理プロセスの階層関係に基づいて、受け付けた判定式の各条件式の階層的な論理演算関係を二分木構造に変換する（Ｓ１）。なお、受け付けた判定式に対する二分木構造の変換処理は、図７Ａで説明した。
【０３６２】
情報処理装置１０は、Ｓ１の処理の結果、例えば、処理対象となる判定式についての判定式二分木を生成する。生成された判定式二分木は、例えば、受け付けた判定式の識別情
報に対応付けられて、判定式二分木ＤＢ２０２に格納される。
【０３６３】
情報処理装置１０は、例えば、Ｓ１の処理で生成した、処理対象の判定式についての二分木構造（判定式二分木）に基づいて、階層的な論理演算関係に係る処理プロセスについての条件式マップ集合を生成する（Ｓ２）。情報処理装置１０は、例えば、二分木構造で階層化されたノード関係、ノード／リーフ関係に対して、組合せルールが反映された論理積、論理和の基本ルールである真偽値ルール適用処理を適用することにより、条件式マップ集合の生成を行う。なお、Ｓ２の真偽値ルール適用処理については、図９Ｃ−９Ｇで詳細を説明する。
【０３６４】
情報処理装置１０は、例えば、Ｓ２の処理の結果、生成された判定式についての条件式マップ集合を、受け付けた判定式の識別情報に対応付けて条件式マップ集合ＤＢ２０３に格納する。
【０３６５】
Ｓ３の処理では、情報処理装置１０は、例えば、条件式マップ集合ＤＢ２０３を参照し、処理対象となる判定式について生成された条件式マップ集合を取得する。取得した条件式マップ集合は、例えば、主記憶部１２の所定の領域に一時的に記憶される。そして、情報処理装置１０は、例えば、条件式マップ集合に含まれる条件式マップ毎に、判定式の処理プロセスの真偽値を反映した条件式の抽出を行う。そして、情報処理装置１０は、例えば、条件式マップ毎に抽出された条件式に基づいて、処理対象の判定式に対するテストケース条件式テーブルを生成する。なお、条件式マップ集合に基づくテストケース条件式テーブルの生成処理は、図８Ａで説明した。
【０３６６】
ここで、Ｓ３の処理で生成されたテストケース条件式テーブルには、選択演算子を用いて結合された条件式が含まれる。情報処理装置１０は、例えば、選択演算子を用いて結合された条件式が含まれるテストケース条件式テーブルを、処理対象の判定式の識別情報に対応付けてテストケース条件式ＤＢ２０４に格納する。
【０３６７】
図９Ｂに例示のフローチャートにおいて、Ｓ４−Ｓ８の処理では、情報処理装置１０は、テストケース条件式テーブルの選択演算子を用いて結合された条件式を展開し、部分条件式を生成する。そして、Ｓ４−Ｓ８の処理では、例えば、情報処理装置１０は、生成された部分条件式について、矛盾を含む変数関係の有無を判定する。
【０３６８】
Ｓ４−Ｓ８の処理では、情報処理装置１０は、例えば、部分条件式が矛盾を含む変数関係を有する場合には、該部分条件式と選択関係にある他の部分条件式を生成し、選択関係にある他の部分条件式についての、矛盾を含む変数関係の有無を判定する。一方、情報処理装置１０は、例えば、部分条件式の変数関係に矛盾が含まれない場合には、生成した部分条件式に基づいて、テストケース条件式テーブルを更新する。テストケース条件式テーブルの、選択演算子を用いて結合された条件式は、変数関係に矛盾が含まれない部分条件式により更新される。
【０３６９】
Ｓ４の処理では、情報処理装置１０は、例えば、テストケース条件式ＤＢ２０４を参照し、Ｓ３の処理で生成されたテストケース条件式テーブルを取得する。取得したテストケース条件式テーブルは、例えば、主記憶部１２の所定の領域に一時的に記憶される。そして、情報処理装置１０は、例えば、テストケース条件式テーブルに、未処理のテストケース条件式が存在するかを判定する。
【０３７０】
情報処理装置１０は、例えば、テストケース条件式テーブルに未処理のテストケース条件式が存在しない場合には（Ｓ４，ｎｏ）、Ｓ９の処理に移行する。一方、情報処理装置１０は、例えば、テストケース条件式テーブルに未処理のテストケース条件式が存在する
場合には（Ｓ４，ｙｅｓ）、Ｓ５の処理に移行する。Ｓ５の処理では、情報処理装置１０は、テストケース条件式テーブルから、処理対象となるテストケース条件式を抽出する。
【０３７１】
Ｓ６の処理では、情報処理装置１０は、例えば、Ｓ５の処理で抽出されたテストケース条件式に選択演算子を表す選択記号“||”が含まれるか否かを判定する。情報処理装置１０は、例えば、Ｓ５の処理で抽出されたテストケース条件式に選択演算子を表す選択記号“||”が含まれない場合には（Ｓ６，ｎｏ）、Ｓ４―Ｓ５の処理を繰り返す。一方、情報処理装置１０は、例えば、Ｓ５の処理で抽出されたテストケース条件式に選択演算子を表す選択記号“||”が含まれる場合には（Ｓ６，ｙｅｓ）、Ｓ７の処理に移行する。
【０３７２】
Ｓ７の処理では、情報処理装置１０は、例えば、テストケース条件式を選択関係に基づいて展開し、部分条件式を生成する（テストケース選択処理）。そして、情報処理装置１０は、例えば、生成された部分条件式について矛盾を含む変数関係の有無を判定し、変数関係に矛盾を含まない部分条件式を選択されたテストケース条件式として取得する。なお、Ｓ７の処理については、図９Ｈで詳細を説明する。
【０３７３】
Ｓ８の処理では、情報処理装置１０は、例えば、Ｓ７の処理で選択されたテストケースとして取得された部分条件式に基づいて、対応するテストケース条件式テーブル内のテストケース条件式を更新する。更新されたテストケース条件式テーブルは、例えば、テストケース条件式ＤＢ２０４に格納される。
【０３７４】
Ｓ９−Ｓ１２の処理では、情報処理装置１０は、例えば、テストケース条件式テーブルに格納されたテストケース条件式に基づいて、ＭＣ／ＤＣのテスト網羅度を充足する変数値の組合せであるテストセットを生成する。そして、情報処理装置１０は、例えば、テストケース条件式毎に生成されたテストセットに基づいて、テストケーステーブルを生成する。生成されたテストケーステーブルは、例えば、テストケースＤＢ２０５に格納される。
【０３７５】
Ｓ９の処理では、情報処理装置１０は、例えば、テストケース条件式ＤＢ２０４を参照し、Ｓ８の処理で更新されたテストケース条件式テーブルを取得する。取得したテストケース条件式テーブルは、例えば、主記憶部１２の所定の領域に一時的に記憶される。そして、情報処理装置１０は、例えば、テストケース条件式テーブルに、未処理のテストケース条件式が存在するかを判定する。なお、Ｓ８の処理で更新されたテストケース条件式テーブル内には、選択演算子により結合された条件式は含まれない。
【０３７６】
情報処理装置１０は、例えば、テストケース条件式テーブルに未処理のテストケース条件式が存在しない場合には（Ｓ９，ｎｏ）、Ｓ１２の処理に移行する。一方、情報処理装置１０は、例えば、テストケース条件式テーブルに未処理のテストケース条件式が存在する場合には（Ｓ９，ｙｅｓ）、Ｓ１０の処理に移行する。Ｓ１０の処理では、情報処理装置１０は、テストケース条件式テーブルから、処理対象となるテストケース条件式を抽出する。
【０３７７】
Ｓ１１の処理では、情報処理装置１０は、例えば、Ｓ１０の処理で抽出されたテストケース条件式を充足可能性判定部１０４に引き渡し、テストケース条件式についての充足解を取得する。情報処理装置１０は、例えば、充足可能性判定部１０４から返却された各変数値の組合せであるテストセットを、引き渡したテストケース条件式に対する充足解として取得する。取得した充足解は、例えば、テストケーステーブルに格納される。
【０３７８】
情報処理装置１０は、例えば、Ｓ９−Ｓ１１の処理を繰り返し、Ｓ９の処理で取得したテストケース条件式テーブルにテストケーステーブルを生成する。Ｓ１２の処理では、例
えば、Ｓ９の処理でテストケース条件式ＤＢ２０４から取得したテストケース条件式テーブルに基づいて生成されたテストケーステーブルが情報処理装置１０に返却される。
【０３７９】
情報処理装置１０は、例えば、Ｓ１２の処理で返却されたテストケーステーブルを、処理対象の判定式の識別情報に対応付けられてテストケーステーブルＤＢ２０５に格納する。なお、Ｓ１０−Ｓ１２の処理は、図８Ｄで説明した。
【０３８０】
ここで、情報処理装置１０で実行されるＳ１の処理は、判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップの一例である。また、情報処理装置１０のＣＰＵ１１等は、判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得手段の一例としてＳ１の処理を実行する。
【０３８１】
また、情報処理装置１０で実行されるＳ２の処理は、演算子による演算結果の真偽値と演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、演算対象式の真偽値を求める解析ステップの一例である。また、情報処理装置１０のＣＰＵ１１等は、演算子による演算結果の真偽値と演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、演算対象式の真偽値を求める解析手段の一例としてＳ２の処理を実行する。
【０３８２】
また、情報処理装置１０で実行されるＳ４−Ｓ８の処理は、所定関係にある複数の演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択ステップの一例である。また、情報処理装置１０のＣＰＵ１１等は、所定関係にある複数の演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択手段の一例としてＳ４−Ｓ８の処理を実行する。
【０３８３】
（真偽値ルール適用処理）
図９Ｃ−９Ｇに例示のフローチャートを参照し、図９Ａに例示のＳ２の真偽値ルール適用処理を説明する。なお、図９Ｃに例示のＳ２１−Ｓ２５の処理、図９Ｄ−９Ｅに例示のＳ３１−Ｓ４４の処理、図９Ｆ−９Ｇに例示のＳ５１−Ｓ６４の処理は、例えば、図７Ｂ−７Ｈで説明した。
【０３８４】
図９Ｃに例示のフローチャートにおいて、情報処理装置１０は、例えば、二分木構造において、処理対象のルートがリーフであることを判定する（Ｓ２１）。情報処理装置１０は、例えば、処理対象のルートがリーフである場合には（Ｓ２１，ｙｅｓ）、Ｓ２５の処理に移行する。Ｓ２５の処理では、情報処理装置１０は、例えば、処理対象のリーフについて条件式マップ集合｛(リーフ,true)，(¬(リーフ)，false)｝を生成し、処理中のテストケース生成処理に返却する。
【０３８５】
一方、情報処理装置１０は、例えば、処理対象のルートがリーフでない場合には（Ｓ２１，ｎｏ）、Ｓ２２の処理に移行し、処理対象のルートが“or”演算子であることを判定する。情報処理装置１０は、例えば、処理対象のルートが“or”演算子である場合には（Ｓ２２，ｙｅｓ）、Ｓ２４の処理に移行する。一方、情報処理装置１０は、例えば、処理対象のルートが“or”演算子でない場合には（Ｓ２２，ｎｏ）、Ｓ２３の処理に移行する。
【０３８６】
Ｓ２３の処理では、例えば、情報処理装置１０は論理積のノード処理に係る左子木（左側のノード、或いは、リーフ）に真偽値ルール適用処理を適用し条件式マップ集合を生成
する。また、例えば、情報処理装置１０は論理積のノード処理に係る右子木（右側のノード、或いは、リーフ）に真偽値ルール適用処理を適用し条件式マップ集合を生成する。
【０３８７】
そして、情報処理装置１０は、例えば、左右子木のそれぞれについて生成された条件式マップ集合から、論理積のノードに係る処理プロセス（ＡＮＤ演算子処理）についての真偽値を反映した条件式マップ集合を生成し、処理中のテストケース生成処理に返却する。なお、Ｓ２３の処理については、図９Ｄ−９Ｅで詳細を説明する。
【０３８８】
Ｓ２４の処理では、例えば、情報処理装置１０は論理和のノード処理に係る左子木（左側のノード、或いは、リーフ）に真偽値ルール適用処理を適用し条件式マップ集合を生成する。また、例えば、情報処理装置１０は論理和のノード処理に係る右子木（右側のノード、或いは、リーフ）に真偽値ルール適用処理を適用し条件式マップ集合を生成する。
そして、情報処理装置１０は、例えば、左右子木のそれぞれについて生成された条件式マップ集合から、論理和のノードに係る処理プロセス（ＯＲ演算子処理）についての真偽値を反映した条件式マップ集合を生成し、処理中のテストケース生成処理に返却する。なお、Ｓ２４の処理については、図９Ｆ−９Ｇで詳細を説明する。
【０３８９】
なお、Ｓ２３−Ｓ２４の処理において、真偽値ルールを適用した条件式マップ集合の生成は、例えば、真偽値ルールＤＢ２０１に格納された論理積ルールＴｂ１、論理和ルールＴｂ２に基づいて行われる。真偽値ルールＤＢ２０１に格納された論理積ルールＴｂ１、論理和ルールＴｂ２には、組合せルールが反映されている。
【０３９０】
ここで、情報処理装置１０で実行されるＳ２１−Ｓ２５の処理は、所定関係を満たす演算対象式の真偽値を用いて階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に取得ステップと解析ステップとを適用するステップの一例である。また、情報処理装置１０のＣＰＵ１１等は、所定関係を満たす演算対象式の真偽値を用いて階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に取得ステップと解析ステップとを適用する手段の一例としてＳ２１−Ｓ２５の処理を実行する。
【０３９１】
・ＡＮＤ演算子処理
図９Ｄ−９Ｅに例示のフローチャートを参照し、図９Ｃに例示のＳ２３のＡＮＤ演算子処理を説明する。なお、以下の説明では、論理積のノード処理に係る左子木で生成された条件式マップ集合を“左マップ集合”とも称し、右子木で生成された条件式マップ集合を“右マップ集合”とも称する。
【０３９２】
図９Ｄに例示のフローチャートにおいて、情報処理装置１０は、例えば、左マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、選択演算子で結合された結合式“leftcond1”を生成する（Ｓ３１）
。生成された結合式“leftcond1”は以下の通りである。なお、条件式に付加された識別
子“ｎ”は、抽出された条件式マップの数量を表す。
【０３９３】
・leftcond1：＝（条件式１||…||条件式ｎ）
Ｓ３２の処理では、情報処理装置１０は、例えば、右マップ集合から真偽値“false”
と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond1”を生成する。なお、抽出した条件式マップが複数の場合には、“rightcond1”は、集合を表す記号“｛｝”を用いて以下のように表される。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０３９４】
・rightcond1：｛(条件式１)，…，(条件式ｎ)｝
Ｓ３３の処理では、情報処理装置１０は、例えば、Ｓ３２の処理で生成した“rightcon
d1”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“rightcond1”の中に未処理の条件式が存在する場合には（Ｓ３３，ｙｅｓ）、Ｓ３４の処理に移行する。一方、情報処理装置１０は、例えば、“rightcond1”の中に未処理の条件式が存在しない場合には（Ｓ３３，ｎｏ）、Ｓ３５の処理に移行する。
【０３９５】
Ｓ３４の処理では、情報処理装置１０は、例えば、Ｓ３２の処理で生成した“rightcond1”から条件式(rightcond1)を抽出し、抽出した条件式(rightcond1)を“leftcond1”と
結合演算子“∧”で結合する。条件式(rightcond1)には、複数の条件式が含まれる。“leftcond1”と条件式(rightcond1)との結合式は、“leftcond1 ∧ rightcond1”で表される。
【０３９６】
そして、情報処理装置１０は、例えば、結合式“leftcond1 ∧ rightcond1”と論理積
ルールＴｂ１のＩＤ＝１の真偽値“false”とを組合せた条件式マップ(leftcond1 ∧ rightcond1，false)を生成する。情報処理装置１０は、例えば、生成した条件式マップを返
却用条件式マップ集合に追加する。
【０３９７】
情報処理装置１０は、例えば、Ｓ３３−Ｓ３４の処理を繰り返すことにより、論理積ルールＴｂ１のＩＤ＝１のレコードに対応した、条件式マップを生成することができる。
【０３９８】
次に、情報処理装置１０は、例えば、Ｓ３５−Ｓ３８の処理により、論理積ルールＴｂ１のＩＤ＝２のレコードに対応した、条件式マップを生成する。
【０３９９】
情報処理装置１０は、例えば、右マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、選択演算子で結合された結合式“rightcond2”を生成する（Ｓ３５）。生成された結合式“rightcond2”は以下の通りである。なお、条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４００】
・rightcond2：＝（条件式１||…||条件式ｎ）
Ｓ３６の処理では、情報処理装置１０は、例えば、左マップ集合から真偽値“false”
と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“leftcond2”を生成する。なお、抽出した条件式マップが複数の場合には、“leftcond2”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４０１】
・leftcond2：｛(条件式１)，…，(条件式ｎ)｝
Ｓ３７の処理では、情報処理装置１０は、例えば、Ｓ３６の処理で生成した“leftcond2”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“leftcond2”の中に未処理の条件式が存在する場合には（Ｓ３７，ｙｅｓ）、Ｓ３８の処理に移行する。一方、情報処理装置１０は、例えば、“leftcond2”の中に未処理の条件式が
存在しない場合には（Ｓ３７，ｎｏ）、図９Ｅに例示するフローチャートのＳ３９の処理に移行する。
【０４０２】
Ｓ３８の処理では、情報処理装置１０は、例えば、Ｓ３６の処理で生成した“leftcond2”から条件式(leftcond2)を抽出し、抽出した条件式(leftcond2)を“rightcond2”と結
合演算子“∧”で結合する。Ｓ３４と同様に、条件式(leftcond2)には、複数の条件式が
含まれる。“leftcond2”と条件式(rightcond2)との結合式は、“leftcond2 ∧ rightcond2”で表される。
【０４０３】
そして、情報処理装置１０は、例えば、結合式“leftcond2 ∧ rightcond2”と論理積
ルールＴｂ１のＩＤ＝２の真偽値“false”とを組合せた条件式マップ(leftcond2 ∧ rightcond2，false)を生成する。情報処理装置１０は、例えば、生成した条件式マップを返
却用条件式マップ集合に追加する。
【０４０４】
次に、情報処理装置１０は、例えば、図９Ｅに例示するフローチャートのＳ３９−Ｓ４３の処理により、論理積ルールＴｂ１のＩＤ＝３のレコードに対応した、条件式マップを生成する。
【０４０５】
図９Ｅに例示のフローチャートにおいて、情報処理装置１０は、例えば、左マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“leftcond3”を生成する（Ｓ３９）。なお、抽出した条件式マップ
が複数の場合には、“leftcond3”は、集合を表す記号を用いて以下のように表される。
条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４０６】
・leftcond3：｛(条件式１)，…，(条件式ｎ)｝
同様にして、情報処理装置１０は、例えば、右マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond3”を生成する（Ｓ４０）。抽出した条件式マップが複数の場合には、“rightcond3”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４０７】
・rightcond3：｛(条件式１)，…，(条件式ｎ)｝
Ｓ４１の処理では、情報処理装置１０は、例えば、Ｓ３９の処理で生成した“leftcond3”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“leftcond3”の中に未処理の条件式が存在する場合には（Ｓ４１，ｙｅｓ）、Ｓ４２の処理に移行する。一方、情報処理装置１０は、例えば、“leftcond3”の中に未処理の条件式が
存在しない場合には（Ｓ４１，ｎｏ）、Ｓ４４の処理に移行する。
【０４０８】
Ｓ４２の処理では、情報処理装置１０は、例えば、Ｓ４０の処理で生成した“rightcond3”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“rightcond3”の中に未処理の条件式が存在する場合には（Ｓ４２，ｙｅｓ）、Ｓ４３の処理に移行する。一方、情報処理装置１０は、例えば、“rightcond3”の中に未処理の条件式が存在しない場合には（Ｓ４２，ｎｏ）、Ｓ４１の処理を繰り返す。
【０４０９】
Ｓ４３の処理では、情報処理装置１０は、例えば、Ｓ３９の処理で生成した“leftcond3”から条件式(leftcond3)を抽出し、Ｓ４０の処理で生成した“rightcond3”から条件式(rightcond3)を抽出する。そして、情報処理装置１０は、例えば、抽出した各条件式を結合し、結合した各条件式と論理積ルールＴｂ１のＩＤ＝３の真偽値“true”とを組合せた条件式マップ(leftcond3 ∧ rightcond3，true)を生成する。情報処理装置１０は、例え
ば、生成した条件式マップを返却用条件式マップ集合に追加する。
【０４１０】
情報処理装置１０は、例えば、Ｓ４１−Ｓ４３の処理を繰り返すことにより、論理積ルールＴｂ１のＩＤ＝３のレコードに対応した、条件式マップを生成することができる。
【０４１１】
Ｓ４４の処理では、情報処理装置１０は、例えば、Ｓ３４，Ｓ３８，Ｓ４３の処理で生成された条件式マップが格納された返却用条件式マップ集合を、処理中の真偽値ルール適用処理に返却する。
【０４１２】
・ＯＲ演算子処理
図９Ｆ−９Ｇに例示のフローチャートを参照し、図９Ｃに例示のＳ２４のＯＲ演算子処
理を説明する。以下の説明においても、ＡＮＤ演算子処理と同様に、論理和のノード処理に係る左子木で生成された条件式マップ集合を“左マップ集合”とも称し、右子木で生成された条件式マップ集合を“右マップ集合”とも称する。
【０４１３】
情報処理装置１０は、例えば、図９Ｆに例示のフローチャートのＳ５１−Ｓ５４の処理により、論理和ルールＴｂ２のＩＤ＝１のレコードに対応した、条件式マップを生成する。同様にして、情報処理装置１０は、例えば、図９Ｆに例示のフローチャートのＳ５５−Ｓ５８の処理により、論理和ルールＴｂ２のＩＤ＝２のレコードに対応した、条件式マップを生成する。また、情報処理装置１０は、例えば、図９Ｇに例示のフローチャートのＳ５９−Ｓ６３の処理により、論理和ルールＴｂ２のＩＤ＝３のレコードに対応した、条件式マップを生成する。
【０４１４】
図９Ｆに例示のフローチャートにおいて、情報処理装置１０は、例えば、右マップ集合から真偽値“false”と組となった条件式マップを全て抽出し、抽出した各条件式マップ
の条件式に基づいて、選択演算子で結合された結合式“rightcond1”を生成する（Ｓ５１）。生成された結合式“rightcond1”は以下の通りである。なお、条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４１５】
・rightcond1：＝（条件式１||…||条件式ｎ）
Ｓ５２の処理では、情報処理装置１０は、例えば、左マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“leftcond1”を生成する。なお、抽出した条件式マップが複数の場合には、“leftcond1”は、集合を表す記号“｛｝”を用いて以下のように表される。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４１６】
・leftcond1：｛(条件式１)，…，(条件式ｎ)｝
Ｓ５３の処理では、情報処理装置１０は、例えば、Ｓ５２の処理で生成した“leftcond1”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“leftcond1”の中に未処理の条件式が存在する場合には（Ｓ５３，ｙｅｓ）、Ｓ５４の処理に移行する。一方、情報処理装置１０は、例えば、“leftcond1”の中に未処理の条件式が
存在しない場合には（Ｓ５３，ｎｏ）、Ｓ５５の処理に移行する。
【０４１７】
Ｓ５４の処理では、情報処理装置１０は、例えば、Ｓ５２の処理で生成した“leftcond1”から条件式(leftcond1)を抽出し、抽出した条件式(leftcond1)を“rightcond1”と結
合演算子“∧”で結合する。条件式(leftcond1)には、複数の条件式が含まれる。“leftcond1”と条件式(rightcond1)との結合式は、“leftcond1 ∧ rightcond1”で表される。
【０４１８】
そして、情報処理装置１０は、例えば、結合式“leftcond1 ∧ rightcond1”と論理和
ルールＴｂ２のＩＤ＝１の真偽値“true”とを組合せた条件式マップ(leftcond1 ∧ rightcond1，true)を生成する。情報処理装置１０は、例えば、生成した条件式マップを返却
用条件式マップ集合に追加する。
【０４１９】
次に、情報処理装置１０は、例えば、左マップ集合から真偽値“false”と組となった
条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、選択演算子で結合された結合式“leftcond2”を生成する（Ｓ５５）。生成された結合式“leftcond2”は以下の通りである。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４２０】
・leftcond2：＝（条件式１||…||条件式ｎ）
Ｓ５６の処理では、情報処理装置１０は、例えば、右マップ集合から真偽値“true”と
組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond2”を生成する。なお、抽出した条件式マップが複数の場合には、“rightcond2”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４２１】
・rightcond2：｛(条件式１)，…，(条件式ｎ)｝
Ｓ５７の処理では、情報処理装置１０は、例えば、Ｓ５６の処理で生成した“rightcond2”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“rightcond2”の中に未処理の条件式が存在する場合には（Ｓ５７，ｙｅｓ）、Ｓ５８の処理に移行する。一方、情報処理装置１０は、例えば、“rightcond2”の中に未処理の条件式が存在しない場合には（Ｓ５７，ｎｏ）、図９Ｇに例示するフローチャートのＳ５９の処理に移行する。
【０４２２】
Ｓ５８の処理では、情報処理装置１０は、例えば、Ｓ５６の処理で生成した“rightcond2”から条件式(rightcond2)を抽出し、抽出した条件式(rightcond2)を“leftcond2”と
結合演算子“∧”で結合する。条件式(rightcond2)には、複数の条件式が含まれる。“leftcond2”と条件式(rightcond2)との結合式は、“leftcond2 ∧ rightcond2”で表される。
【０４２３】
そして、情報処理装置１０は、例えば、結合式“leftcond2 ∧ rightcond2”と論理和
ルールＴｂ２のＩＤ＝２の真偽値“true”とを組合せた条件式マップ(leftcond2 ∧ rightcond2，true)を生成する。情報処理装置１０は、例えば、生成した条件式マップを返却
用条件式マップ集合に追加する。
【０４２４】
図９Ｇに例示のフローチャートにおいて、情報処理装置１０は、例えば、左マップ集合から真偽値“false”と組となった条件式マップを全て抽出し、抽出した各条件式マップ
の条件式に基づいて、“leftcond3”を生成する（Ｓ５９）。なお、抽出した条件式マッ
プが複数の場合には、“leftcond3”は、集合を表す記号を用いて以下のように表される
。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４２５】
・leftcond3：｛(条件式１)，…，(条件式ｎ)｝
同様にして、情報処理装置１０は、例えば、右マップ集合から真偽値“false”と組と
なった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond3”を生成する（Ｓ６０）。抽出した条件式マップが複数の場合には、“rightcond3”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“ｎ”は、抽出された条件式マップの数量を表す。
【０４２６】
・rightcond3：｛(条件式１)，…，(条件式ｎ)｝
Ｓ６１の処理では、情報処理装置１０は、例えば、Ｓ５９の処理で生成した“leftcond3”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“leftcond3”の中に未処理の条件式が存在する場合には（Ｓ６１，ｙｅｓ）、Ｓ６２の処理に移行する。一方、情報処理装置１０は、例えば、“leftcond3”の中に未処理の条件式が
存在しない場合には（Ｓ６１，ｎｏ）、Ｓ６４の処理に移行する。
【０４２７】
Ｓ６２の処理では、情報処理装置１０は、例えば、Ｓ６０の処理で生成した“rightcond3”の中に未処理の条件式が存在するかを判定する。情報処理装置１０は、例えば、“rightcond3”の中に未処理の条件式が存在する場合には（Ｓ６２，ｙｅｓ）、Ｓ６３の処理に移行する。一方、情報処理装置１０は、例えば、“rightcond3”の中に未処理の条件式が存在しない場合には（Ｓ６２，ｎｏ）、Ｓ６１の処理を繰り返す。
【０４２８】
Ｓ６３の処理では、情報処理装置１０は、例えば、Ｓ５９の処理で生成した“leftcond3”から条件式(leftcond3)を抽出し、Ｓ６０の処理で生成した“rightcond3”から条件式(rightcond3)を抽出する。そして、情報処理装置１０は、例えば、抽出した各条件式を結合し、結合した各条件式と論理和ルールＴｂ２のＩＤ＝３の真偽値“false”とを組合せ
た条件式マップ(leftcond3 ∧ rightcond3，false)を生成する。情報処理装置１０は、例えば、生成した条件式マップを返却用条件式マップ集合に追加する。
【０４２９】
Ｓ６４の処理では、情報処理装置１０は、例えば、Ｓ５４，Ｓ５８，Ｓ６３の処理で生成された条件式マップが格納された返却用条件式マップ集合を、処理中の真偽値ルール適用処理に返却する。
【０４３０】
（テストケース選択処理）
図９Ｈに例示のフローチャートを参照し、図９Ｂに例示のＳ７のテストケース選択処理を説明する。なお、図９Ｈに例示のＳ７１−Ｓ７５の処理については、例えば、図８Ｂ（１）、（２）で説明した。
【０４３１】
図９Ｈに例示のフローチャートにおいて、情報処理装置１０は、例えば、処理対象となるテストケース条件式について、選択演算子“||”を分岐とみなした深さ優先の探索が終了したかを判定する（Ｓ７１）。情報処理装置１０は、例えば、処理対象となるテストケース条件式に対し、選択演算子を分岐とみなした深さ優先の探索が終了した場合には（Ｓ７１，ｙｅｓ）、Ｓ７６の処理に移行し、空の状態の条件式を処理中のテストケース生成処理に返却する。なお、情報処理装置１０では、例えば、Ｓ７６の処理で空の状態の条件式が返却された場合には、処理対象のテストケース条件式は充足不能であると判定される。
【０４３２】
一方、情報処理装置１０は、例えば、処理対象となるテストケース条件式に対し、選択演算子を分岐とみなした深さ優先の探索が終了しない場合には（Ｓ７１，ｎｏ）、Ｓ７２の処理に移行する。
【０４３３】
Ｓ７２の処理では、情報処理装置１０は、例えば、処理対象となるテストケース条件式に対し、選択演算子“||”を分岐とみなした深さ優先の探索を行い、選択関係を展開して生成された部分条件式を処理対象のテストケース条件式として選択する。なお、Ｓ７２の処理で生成される部分条件式には、例えば、選択演算子は含まれない。
【０４３４】
情報処理装置１０は、例えば、Ｓ７２の処理で選択されたテストケース条件式である部分条件式を、充足可能性判定部１０４に引き渡し、引き渡した部分条件式の充足可能性の判定を行う（Ｓ７３）。引き渡した部分条件式の充足可能性は、例えば、充足可能性判定部１０４から返却される応答情報により行われる。
【０４３５】
例えば、情報処理装置１０は、充足可能性判定部１０４から、“充足不能”を表す空の状態の変数値の組合せ等が応答情報として返却された場合には、処理対象の部分条件式について充足不能と判定する。また、例えば、情報処理装置１０は、充足可能性判定部１０４から、部分条件式に含まれる変数値の組合せであるテストセットが応答情報として返却された場合には、処理対象の部分条件式について充足可能と判定する。
【０４３６】
Ｓ７４の処理では、情報処理装置１０は、例えば、上述した判定に基づいて、Ｓ７２の処理で選択された部分条件式の充足可能性を判定する。情報処理装置１０は、例えば、Ｓ７２の処理で選択された部分条件式が充足不能の場合には（Ｓ７４，ｎｏ）、Ｓ７１の処理に移行し、選択関係にある他の部分条件式に対してＳ７１−Ｓ７４の処理を繰り返す。
【０４３７】
一方、情報処理装置１０は、例えば、Ｓ７２の処理で選択された部分条件式が充足可能である場合には（Ｓ７４，ｙｅｓ）、Ｓ７５の処理に移行し、選択された部分条件式をテストケース条件式として処理中のテストケース生成処理に返却する。テストケース生成処理では、例えば、Ｓ７５の処理で返却された部分条件式に基づいて、テストケース条件式テーブルに格納された、選択演算子を含むテストケース条件式が更新される。
【０４３８】
以上、説明したように、本実施形態の情報処理装置１０は、テスト対象となる判定式を解析し、判定式に含まれる論理演算子、論理演算子で結合される各条件式、論理演算子による各条件式についての処理プロセスの階層関係を特定することができる。本実施形態の情報処理装置１０は、例えば、特定した論理演算子、各条件式、処理プロセスの階層関係に基づいて、判定式に含まれる各条件式の階層的な論理演算関係を二分木構造に変換することができる。
【０４３９】
また、本実施形態の情報処理装置１０は、判定式の論理演算関係について、論理積、論理和等の基本ルールとなる、３通りの真偽値の組合せを格納した真偽値表を備えることができる。本実施形態の情報処理装置１０は、基本ルールの真偽値表に格納された３通りの真偽値の組合せを判定式の論理演算関係に適用することで、論理演算の処理プロセスに係る各条件式についての真偽値の組合せから、余剰となる条件式の真偽値の組合せを排除できる。
【０４４０】
また、本実施形態の各真偽値表には、真偽値の判定結果に独立に影響しない（対象となる条件式の真偽値を反転しても判定結果が変わらない）場合には、判定結果が共通する条件式の組合せを選択演算子で結合して抽出すると言う組合せルールが反映できる。同様に、本実施形態の各真偽値表には、真偽値の判定結果に独立に影響する（対象となる条件式の真偽値を反転すると判定結果が変わる）場合には、判定結果が共通する条件の組合せを全て抽出すると言う組合せルールが反映できる。本実施形態の情報処理装置１０では、論理積、論理和の真偽値表に基づいて判定結果が共通する条件式の組合せの抽出の際に、充足不能な変数関係にある条件式の組合せが抽出されることを防止することができる。
【０４４１】
本実施形態の情報処理装置１０は、組合せルールが反映された論理積・論理和の真偽値表に格納された真偽値に従って、判定式に含まれる論理演算の処理プロセスに係る各条件式の真偽値関係を、選択肢を含み特定することができる。情報処理装置１０は、例えば、判定式の論理演算に対応する真偽値表に格納された真偽値と一致する判定結果となる、各条件式の真偽値の組合せを特定することができる。特定された各条件式の真偽値の組合せには、選択演算子で結合された、判定結果の真偽値が共通する条件式の複数の組合せが含まれる。
【０４４２】
本実施形態の情報処理装置１０は、階層化された最上位の論理演算子で結び付く上位の各条件式の真偽値関係を特定し、さらに、上位の各条件式に係る下位の演算処理プロセスについての下位の条件式の真偽値関係を階層的（再帰的）に求めることができる。そして、本実施形態の情報処理装置１０は、最上位の論理演算の処理プロセスで特定された各条件式について、選択関係にある複数の条件式を展開し、充足可能な変数関係にある条件式の組合せを選択することができる。
【０４４３】
この結果、本実施形態の情報処理装置１０は、テスト対象となる判定式について、充足可能性を向上させ、冗長性を排除した、ＭＣ／ＤＣのテスト網羅度を満たす、各条件式についての真偽値の組合せを生成することができる。本実施形態の情報処理装置１０は、生成された各条件式の真偽値の組合せから、各条件式に含まれる各変数について、変数関係に矛盾を含まない、真偽値の値に応じた変数値の組合せをテストケースとして生成することができる。本実施形態の情報処理装置１０では、複数の条件式に共通する変数が含まれ
る場合であっても、変数関係を充足する変数値の組合せを生成することができる。
【０４４４】
本実施形態の情報処理装置１０では、充足可能性を向上させた、冗長性を排除可能な、ＭＣ／ＤＣのテスト網羅度の網羅規則を満たすテストケースを生成する技術が提供できる。
【０４４５】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０４４６】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【０４４７】
《その他》
以上の実施形態は、さらに以下の付記と呼ぶ態様を含む。以下の各付記に含まれる構成要素は、他の付記に含まれる構成と組み合わせることができる。
（付記１）
コンピュータに、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、前記所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、前記演算対象式の真偽値を求める解析ステップと、
前記所定関係にある複数の前記演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択ステップと、
を実行させるためのテストケース生成プログラム。
（付記２）
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップと、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
をさらに実行させる付記１に記載のテストケース生成プログラム。
（付記３）
前記選択ステップは、前記演算対象式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定する、付記１または付記２に記載のテストケース生成プログラム。
（付記４）
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記２または付記３に記載のテストケース生成プログラム。
（付記５）
前記解析ステップは、第１の階層に含まれる第１の演算子による演算結果の真偽値に影響しない、前記第１の演算子によって演算の対象となる第１の演算対象式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、付記４に記載のテストケース生成プログラム。
（付記６）
前記解析ステップは、第１の階層に含まれる第１の演算子による演算結果の真偽値に影響し、前記第１の演算子によって演算の対象となる第１の演算対象式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、付記４に記載のテストケース生成プログラム。
（付記７）
前記解析ステップは、第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第１の階層直下の第２の演算対象式中の真偽値の組合せを選択するステップを含む、付記４から付記６の何れか一の付記に記載のテストケース生成プログラム。
（付記８）
前記解析ステップは、第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第１の階層直下の第２の演算対象式中の真偽値の組合せを選択するステップを含む、付記４から付記６の何れか一の付記に記載のテストケース生成プログラム。
（付記９）
第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記７に記載のテストケース生成プログラム。
（付記１０）
第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が偽となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記８に記載のテストケース生成プログラム。
【０４４８】
（付記１１）
コンピュータを用いてテストケースを生成する方法であって、
前記コンピュータの有するプロセッサが、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、前記所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、前記演算対象式の真偽値を求め、
前記所定関係にある複数の前記演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する、
テストケース生成方法。
（付記１２）
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得し、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子
で結合される演算対象式以下の論理式に前記取得と前記演算対象式の真偽値を求めることとを行う、付記１１に記載のテストケース生成方法。
（付記１３）
前記充足可能と判定された演算対象式を選択することは、前記演算対象式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定する、付記１１または付記１２に記載のテストケース生成方法。
（付記１４）
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記１２または付記１３に記載のテストケース生成方法。
（付記１５）
前記演算対象式の真偽値を求めることは、第１の階層に含まれる第１の演算子による演算結果の真偽値に影響しない、前記第１の演算子によって演算の対象となる第１の演算対象式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択することを含む、付記１４に記載のテストケース生成方法。
（付記１６）
前記演算対象式の真偽値を求めることは、第１の階層に含まれる第１の演算子による演算結果の真偽値に影響し、前記第１の演算子によって演算の対象となる第１の演算対象式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択することを含む、付記１４に記載のテストケース生成方法。
（付記１７）
前記演算対象式の真偽値を求めることは、第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第１の階層直下の第２の演算対象式中の真偽値の組合せを選択することを含む、付記１４から付記１６の何れか一の付記に記載のテストケース生成方法。
（付記１８）
前記演算対象式の真偽値を求めることは、第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第１の階層直下の第２の演算対象式中の真偽値の組合せを選択することを含む、付記１４から付記１６の何れか一の付記に記載のテストケース生成方法。
（付記１９）
第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記１７に記載のテストケース生成方法。
（付記２０）
第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が偽となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記１８に記載のテストケース生成方法。
【０４４９】
（付記２１）
演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、且つ、前記所定関係にある複数の前記演算対象式の中から一の演算対象式を選択可能なように、前記演算対象式の真偽値を求める解析手段と、
前記所定関係にある複数の前記演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択手段と、
を備えるテストケース生成装置。
（付記２２）
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得手段と、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得手段と前記解析手段とを適用する手段と、
をさらに備える付記２１に記載のテストケース生成装置。
（付記２３）
前記選択手段は、前記演算対象式に含まれる第１部分式と第２部分式との組合せ関係の矛盾の有無により充足可能性を判定する、付記２１または付記２２に記載のテストケース生成装置。
（付記２４）
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記２２または付記２３に記載のテストケース生成装置。
（付記２５）
前記解析手段は、第１の階層に含まれる第１の演算子による演算結果の真偽値に影響しない、前記第１の演算子によって演算の対象となる第１の演算対象式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択する手段を含む、付記２４に記載のテストケース生成装置。
（付記２６）
前記解析手段は、第１の階層に含まれる第１の演算子による演算結果の真偽値に影響し、前記第１の演算子によって演算の対象となる第１の演算対象式の真偽値を共通の値にする、前記第１の階層直下の第２の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択する手段を含む、付記２４に記載のテストケース生成装置。
（付記２７）
前記解析手段は、第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの第１の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第１の階層直下の第２の演算対象式中の真偽値の組合せを選択する手段を含む、付記２４から付記２６の何れか一の付記に記載のテストケース生成装置。
（付記２８）
前記解析手段は、第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第１の階層直下の第２の演算対象式中の真偽値の組合せを選択する手段を含む、付記２４から付記２６の何れか一の付記に記載のテストケース生成装置。
（付記２９）
第１の階層の演算子が積演算子である場合に、積演算子による演算の対象となる２つの
第１の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記２７に記載のテストケース生成装置。
（付記３０）
第１の階層の演算子が和演算子である場合に、和演算子による演算の対象となる２つの第１の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が偽となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記２８に記載のテストケース生成装置。
【符号の説明】
【０４５０】
１０  情報処理装置
１１  ＣＰＵ
１２  主記憶部
１３  補助記憶部
１４  入力部
１５  出力部
１６  通信部
１０１  判定式解析部
１０１ａ  二分木変換部
１０２  真偽値ルール適用部
１０３  テストケース生成部
１０３ａ  選択分析部
１０４  充足可能性判定部
２０１  真偽値ルールＤＢ
２０２  判定式二分木ＤＢ
２０３  条件式マップ集合ＤＢ
２０４  テストケース条件式ＤＢ
２０５  テストケースＤＢ
Ｔｂ１  論理積ルール真偽値表
Ｔｂ２  論理和ルール真偽値表
Ｔｂ３  テストケース条件式テーブル
Ｔｂ４  テストケーステーブル
【図１Ａ】
0006511793.tif 000002
【図１Ｂ】
0006511793.tif 000003
【図２Ａ】
0006511793.tif 000004
【図２Ｂ】
0006511793.tif 000005
【図２Ｃ】
0006511793.tif 000006
【図３】
0006511793.tif 000007
【図４】
0006511793.tif 000008
【図５】
0006511793.tif 000009
【図６】
0006511793.tif 000010
【図７Ａ】
0006511793.tif 000011
【図７Ｂ】
0006511793.tif 000012
【図７Ｃ】
0006511793.tif 000013
【図７Ｄ】
0006511793.tif 000014
【図７Ｅ】
0006511793.tif 000015
【図７Ｆ】
0006511793.tif 000016
【図７Ｇ】
0006511793.tif 000017
【図７Ｈ】
0006511793.tif 000018
【図８Ａ】
0006511793.tif 000019
【図８Ｂ】
0006511793.tif 000020
【図８Ｃ】
0006511793.tif 000021
【図８Ｄ】
0006511793.tif 000022
【図９Ａ】
0006511793.tif 000023
【図９Ｂ】
0006511793.tif 000024
【図９Ｃ】
0006511793.tif 000025
【図９Ｄ】
0006511793.tif 000026
【図９Ｅ】
0006511793.tif 000027
【図９Ｆ】
0006511793.tif 000028
【図９Ｇ】
0006511793.tif 000029
【図９Ｈ】
0006511793.tif 000030