(57)【要約】  大規模なルールセットに対して、実用時間での整合性検証を実現するための技術を提供する。  ルール整合性検証装置（１００）は、条件部と結果部と、を含むルールを含むルールセットを受け付けるルール入力部（１０１）と、結果部のラベルに合わせて、異なった整合性検証方式でグループ単位での整合性検証を実施する整合性検証部（１０３）と、矛盾を出力する矛盾出力部（１０７）と、を備える。整合性検証部（１０３）は、結果部が共通するルールをひとつのグループとして扱い、また、結果部のラベルによって異なった整合性検証方法を実施する。
2016110946.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア仕様の開発におけるルールの整合性を検証するルール整合性検証装置であって、
前記ルールが成立するための条件の論理式を格納するＩＦ節と前記条件が成立した場合の結果の論理式を格納するＴＨＥＮ節とを含むルールを含むルールセットを受け付けるルール入力部と、前記ルールセットに含まれる前記ルールが互いに矛盾しないかを判定するルール整合性検証部と、前記ルールセットに含まれる前記ルールが互いに矛盾しないかを判定した結果を出力する矛盾出力部と、
を備え、
前記ルール入力部は、前記ルールのＴＨＥＮ節の論理式の構造に基づき、前記ルールを分類し、分類結果を表すルールラベルを前記ルールに付与し、
前記ルール整合性検証部は、前記ルールラベルが２以上ある場合、同一の前記ルールラベルを持つルール同士で互いに矛盾しないかを判定し、前記ルールラベルが異なるルール同士で互いに矛盾しないかを判定することを特徴とするルール整合性検証装置。
【請求項２】
請求項１に記載のルール整合性検証装置であって、
前記ルールラベルには、決定ラベルと非決定ラベルとの２種類があり、
前記ルール入力部は、前記ルールのＴＨＥＮ節の論理式が、変数と変数値の等式である論理式の場合、または、変数と変数値の等式を論理積で結合した論理式の場合に前記ルールに前記決定ラベルを付与し、そうでない場合に前記非決定ラベルを付与し、
前記ルール整合性検証部は、前記決定ラベルが付与された前記ルール同士の整合性を検証する決定ルール検証手段と、前記非決定ラベルが付与された前記ルール同士の整合性を検証する非決定ルール検証手段と、前記決定ラベルが付与された前記ルールと前記非決定ラベルが付与された前記ルール同士の整合性を検証する決定／非決定ルール間検証手段と、を備えることを特徴とするルール整合性検証装置。
【請求項３】
請求項２に記載のルール整合性検証装置であって、
前記決定ルール検証手段は、前記決定ラベルが付与された前記ルールのルールセットから、前記ルールのＴＨＥＮ節が充足不能となる２つのＴＨＥＮ節の組合せである決定ＴＨＥＮ節組合せを取得し、前記決定ＴＨＥＮ節組合せを含むルールのＩＦ節を取得し、同一のＴＨＥＮ節を持つ前記ルールのＩＦ節をグループ化し、各グループから１ずつＩＦ節を取得し、取得したＩＦ節の論理積の充足可能性を判定し、充足可能な場合、矛盾なしと判定し、充足不能な場合、矛盾ありと判定することを特徴とするルール整合性検証装置。
【請求項４】
請求項３に記載のルール整合性検証装置であって、
２以上の前記ルールのＴＨＥＮ節の論理積が充足不能となる充足不能ルールＴＨＥＮ節組合せを格納する学習節記録部をさらに備え、
前記非決定ルール検証手段は、前記非決定ラベルが付与された前記ルールのＴＨＥＮ節の論理積が充足可能となる前記ルールのＴＨＥＮ節の組合せを格納する充足可能ＴＨＥＮ節組合せ集合を有し、
前記非決定ルール検証手段は、前記充足可能ＴＨＥＮ節組合せ集合から、前記非決定ラベルが付与された前記ルールのＴＨＥＮ節の論理積が充足可能となる前記ルールのＴＨＥＮ節の組合せを取得し、取得した前記ルールのＴＨＥＮ節の組合せに前記非決定ラベルが付与された前記ルールのＴＨＥＮ節を追加し、前記ルールのＴＨＥＮ節の組合せに前記充足不能ルールＴＨＥＮ節組合せの部分集合を含むか否かを判定し、含まない場合に前記ルールのＴＨＥＮ節の組合せに含まれるＴＨＥＮ節の論理積の充足可能性を判定し、充足可能な場合に前記ルールのＴＨＥＮ節の組合せを前記充足可能ＴＨＥＮ節組合せ集合に追加し、充足不能な場合に前記ルールのＴＨＥＮ節の組合せを前記学習節記録部に追加することを特徴とするルール整合性検証装置。
【請求項５】
請求項４に記載のルール整合性検証装置であって、
前記決定／非決定ルール間検証手段は、前記非決定ラベルが付与された前記ルールのＴＨＥＮ節の論理積が充足可能となる非決定ルールＴＨＥＮ節組合せを取得し、前記決定ラベルが付与された前記ルールのＴＨＥＮ節の論理積が充足可能となる決定ルールＴＨＥＮ節組合せを取得し、前記非決定ルールＴＨＥＮ節組合せの各ＴＨＥＮ節で使用されている変数の集合が前記決定ルールＴＨＥＮ節組合せのＴＨＥＮ節で使用している変数の集合を含むか否かを判定し、前記非決定ルールＴＨＥＮ節組合せと前記決定ルールＴＨＥＮ節組合せのＴＨＥＮ節を全て含む決定／非決定ＴＨＥＮ節組合せに前記学習節記録部のＴＨＥＮ節の組合せを含むか否かを判定し、前記決定／非決定ＴＨＥＮ節組合せのＴＨＥＮ節の論理積の充足可能性を判定し、充足不能な場合に前記決定／非決定ＴＨＥＮ節組合せを前記学習節記録部に追加することを特徴とするルール整合性検証装置。
【請求項６】
請求項１に記載のルール整合性検証装置であって、
前記ルール整合性検証部は、前記ルールのＴＨＥＮ節の組合せの論理積が充足可能であるか否かを判定するＴＨＥＮ節充足可能性判定手段と、前記ルールのＴＨＥＮ節の組合せを生成する際の制約であるＴＨＥＮ節組合せ生成制約式を格納するＴＨＥＮ節組合せ生成制約式格納領域と、を有し、
前記ＴＨＥＮ節充足可能性判定手段は、前記ＴＨＥＮ節組合せ生成制約式格納領域から前記ＴＨＥＮ節組合せ生成制約式を読み込み、前記ＴＨＥＮ節組合せ生成制約式を満たす前記ルールのＴＨＥＮ節の組合せである充足可能ＴＨＥＮ節組合せを生成し、前記充足可能ＴＨＥＮ節組合せの論理積が充足可能であるかを判定し、充足不能である場合に前記充足可能ＴＨＥＮ節組合せの論理積を充足不能にする最小の前記充足可能ＴＨＥＮ節組合せを生成し、前記充足可能であるかの判定結果に基づき前記ＴＨＥＮ節組合せ生成制約式を生成することを特徴とするルール整合性検証装置。
【請求項７】
請求項２に記載のルール整合性検証装置であって、
前記決定ルール検証手段は、前記決定ラベルが付与された前記ルールのルールセットから、前記各ルールが有効か否かを表すルール有効フラグを活用して、前記ルール間の整合性を判定する整合性判定式を生成し、前記整合性判定式の充足可能性を判定し、充足可能な場合に前記整合性判定式を充足にする解である充足解を取得し、前記充足解から矛盾となるルール組を特定し、前記矛盾となるルール組に対応するルール有効フラグから同じルール組が再度抽出されないようにするためのルール制約式を生成し、前記ルール制約式を追加した前記整合性判定式の充足可能性を判定することを特徴とするルール整合性検証装置。
【請求項８】
請求項１に記載のルール整合性検証装置であって、
前記矛盾出力部は、前記ルールセットに含まれる前記ルールが互いに矛盾しないかを判定した結果として、矛盾が含まれる場合、優先的に修正すべきルールの修正優先度を表示することを特徴とするルール整合性検証装置。
【請求項９】
請求項３ないし請求項６のいずれか一つに記載のルール整合性検証装置であって、
前記充足可能性の判定をＳＡＴソルバまたはＳＭＴソルバにより判定することを特徴とするルール整合性検証装置。
【請求項１０】
ソフトウェア仕様の開発におけるルールの整合性を検証するルール整合性検証方法であって、
前記ルールが成立するための条件の論理式を格納するＩＦ節と前記条件が成立した場合の結果の論理式を格納するＴＨＥＮ節とを含むルールを含むルールセットを受け付けるルール入力のステップと、前記ルールセットに含まれる前記ルールが互いに矛盾しないかを判定するルール整合性検証のステップと、前記ルールセットに含まれる前記ルールが互いに矛盾しないかを判定した結果を出力する矛盾出力のステップと、
を含み、
前記ルール入力のステップは、前記ルールのＴＨＥＮ節の論理式の構造に基づき、前記ルールを分類するステップと、分類結果を表すルールラベルを前記ルールに付与するステップと、を含み、
前記ルール整合性検証のステップは、前記ルールラベルが２以上ある場合、同一の前記ルールラベルを持つルール同士で互いに矛盾しないかを判定するステップと、前記ルールラベルが異なるルール同士で互いに矛盾しないかを判定するステップと、を含むことを特徴とするルール整合性検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発を支援する技術に係り、特に、ルール整合性検証装置およびルール整合性検証方法に関する。
【背景技術】
【０００２】
ソフトウェアは、処理対象となる製品、サービスを含む業務に関する法的な規制、種々の業務上の規則、基準に従って仕様が決定され、設計される。ソフトウェアの仕様を、ＩＦ−ＴＨＥＮ形式で整理する場合がある。ＩＦ−ＴＨＥＮ形式の仕様は、業務ルール、システムルール、チェックルールを含む利用するフェーズに応じて様々な呼び名がある。以下、ＩＦ−ＴＨＥＮルール単体を「ルール」といい、複数のルールの集まりを「ルールセット」という。ルールは、（１）「もし〜ならば〜である」というように自然文で記述する。（２）条件と結果の対応関係を表形式で定義した決定表で記述する。などさまざまな形態で表現される。【０００３】
特許文献１は、命題形式の記述と決定表とを連携させてルールを定義する方法を開示する。特許文献１では、２つの命題形式のルールの充足可能性を判定することで、ルールセットの整合性を検証する方法が開示されている。整合性を検証することで、ルールセットに矛盾が含まれるか否かを判定できる。【０００４】
なお、ルールセットが整合している（矛盾がない）とは、「ルールセットの入力変数に任意の変数値が指定されたとき、ＩＦ節が真となる全てのルールのＴＨＥＮ節を全て真とできる出力変数の値が存在する」という条件を満たすことである。特許文献１は、条件を満たしているか否かを判定するために、２つの命題形式のルールのＩＦ節の充足可能性を判定する。充足可能な場合、さらに、ルールに対応するルールのＴＨＥＮ節の充足可能性を判定する。充足不能な場合、矛盾ありと判定し、そうでない場合、矛盾なしと判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１９０２０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１で開示されている技術を用いることで、ルールセットの整合性を検証できる。ルールセットに含まれるルールの数が少数の場合、かつ、ルールのＴＨＥＮ節に論理和および否定が含まれないシンプルな形式の場合、特許文献１の技術は、実用的な計算時間で整合性を検証でき、有用である。しかし、ルールセットに含まれるルールの数が膨大な場合、特許文献１の技術は、検証に多くの時間を要する。また、ルールのＴＨＥＮ節に論理和または否定が含まれる複雑な場合、特許文献１の技術は、十分に手当てができない。【０００７】
上記の課題に鑑み、本発明では、ルールのＴＨＥＮ節に論理和または否定が含まれる複雑な場合に対処すると共に、ルールセットに含まれるルール数が膨大な場合においても短時間で検証できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題は、ソフトウェア開発におけるルールセットの整合性の検証をするルール整合性検証装置であって、ルールが成立するための条件の論理式を格納するＩＦ節と条件が成立した場合の結果の論理式を格納するＴＨＥＮ節とを含むルールを含むルールセットを受け付けるルール入力部と、ルールセットに含まれるルールが互いに矛盾しないかを判定するルール整合性検証部と、ルールセットに含まれるルールが互いに矛盾しないかを判定した結果を出力する矛盾出力部を備え、ルール入力部は、ルールを表示・選択・修正するルール一覧と、ルール一覧内のルールを削除するルール削除と、ルール一覧にルールを追加するルール追加と、ルール一覧をルールセットとし整合性検証を開始する検証開始と、ルール一覧に矛盾が存在する場合に、ルールの修正優先度を出力する修正優先度と、修正優先度でルール一覧のルールを並べ替える修正優先度並べ替えと、を備え、ルールのＴＨＥＮ節の論理式の構造に基づき、ルールを分類し、分類結果を表すルールラベルをルールに付与し、ルール整合性検証部は、ルールラベルが２以上ある場合、ＴＨＥＮ節を用いてルールをグルーピングし、グループ内のルールが同一のルールラベルをもつグループ同士で互いに矛盾しないかを判定し、グループ内のルールラベルが異なるグループ同士で互いに矛盾しないかを判定し、矛盾出力部は、ルール一覧に存在する矛盾を出力する矛盾リストを備え、矛盾リストは、ルール一覧内に存在する全ての矛盾を出力するか、ルール一覧の中で選択されたルールに含まれる矛盾を出力するルール整合性検証装置により、達成できる。
また、ルール整合性検証装置の各ブロックの動作に基づく、ルール整合性検証方法により、達成できる。
【発明の効果】
【０００９】
本発明によれば、ルールのＴＨＥＮ節に論理和または否定が含まれる複雑な場合に対処できる共に、ルールセットに含まれるルール数が膨大な場合においても短時間で検証する技術を提供できる。
【図面の簡単な説明】
【００１０】
【図１】ルール整合性検証装置のブロック図である。
【図２】ルール記録部のデータ構造を説明する図である。
【図３】検証方式記録部のデータ構造を説明する図である。
【図４】整合性検証対象のルール入力画面および矛盾記録部出力画面を説明する図である。
【図５】ルール入力部のルール記録部へのルール記録方法を説明するフローチャートである。
【図６】整合性検証部の整合性検証方法を説明するフローチャートである。
【図７】決定ルール整合性検証モジュールの整合性検証方法を説明するフローチャートである。
【図８】非決定ルール整合性検証モジュールの整合性検証方法を説明するフローチャートである。
【図９】整合性検証部の異なるラベルを持つルール間の整合性検証方法を説明するフローチャートである。
【図１０】整合性検証部の条件部充足可能性判定処理方法を説明するフローチャートである。
【図１１】非決定ルール整合性検証モジュールの他の整合性処理方法を説明するフローチャートである。
【図１２】決定ルール整合性検証モジュールの他の整合性処理方法を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明について、その実施形態に則して、実施例を用い図面を参照しながら詳細に説明する。なお、以下に説明する実施例は、特許請求の範囲に係る発明を限定するものではない。また、実施例の中で説明されている諸要素およびその組合せの全てが発明の解決手段に必須とは限らない。
【実施例１】
【００１２】
実施例１では、ユーザが定義したルール間の整合性の検証を支援するルール整合性検証装置を説明する。
図１を参照して、ルール整合性検証装置の構成を説明する。図１において、ルール整合性検証装置１００は、ルール入力部１０１と、ルール記録部１０２と、ルール整合性検証部１０３と、検証方式記録部１０４と、学習節記録部１０５と、矛盾記録部１０６と、矛盾出力部１０７と、プロセッサ１６０と、メモリ１７０と、入出力装置１８０と、を含んで構成されている。ルール整合性検証装置１００は、プロセッサ１６０とメモリ１７０と入出力装置１８０とを備えたコンピュータである。【００１３】
プロセッサ１６０は、ＣＰＵ（Central Processing Unit）を含む。メモリ１７０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）を含む。入出力装置１８０は、キーボード、表示モニタを含む。【００１４】
ルール整合性検証装置１００は、ルール入力部１０１、整合性検証部１０３および矛盾出力部１０７の機能ロジックを備える。これらの機能ロジックは、コンピュータプログラムとして実現されており、メモリ１７０上でプロセッサ１６０により実行される。また、ルール整合性検証装置１００は、ルール記録部１０２、検証方式記録部１０４、学習節記録部１０５および矛盾記録部１０６のデータを、図示を省略するハードディスクドライブを含む補助記憶装置またはメモリ１７０に保管している。これらのデータは、プロセッサ１６０が機能ロジックを実行する際に補助記憶装置またはメモリ１７０から読みだして使用する。【００１５】
ルール入力部１０１は、ＩＦ節とＴＨＥＮ節を含むルールを受け付ける。ルール入力部１０１は、ルールを分類してラベルを付与し、ルール記録部１０２に記録する。以下、ルールに付与したラベルを「ルールラベル」呼ぶ。ルールラベルを付与することで、ルール整合性検証装置１００は、ルールラベルに応じた効率的な検証処理の適用が可能となる。なお、ＩＦ節およびＴＨＥＮ節は、変数、比較演算子、変数値を含む組合せで構成される比較式と、論理積および論理和を含む論理演算子を０個以上含む論理式である。【００１６】
ルール整合性検証部１０３は、ルール記録部１０２、検証方式記録部１０４、および学習節記録部１０５のデータに基づき、ルールセットの整合性を検証する。検証方式記録部１０４は、ルールラベルに対応した検証モジュールの情報を格納する。ルール整合性検証部１０３は、検証方式記録部１０４のデータに基づき、ルールラベルに応じた検証モジュールを読み込み、整合性を検証する。【００１７】
ルールの整合性検証は、ＴＨＥＮ節がシンプルな形式の場合、２つのルールの組合せをチェックすることで検証できる。しかし、ＴＨＥＮ節が複雑な場合、任意のＮ個のルールの組合せのチェックが必要であり、検証処理時間が膨大となる。具体的には、ＴＨＥＮ節に論理和または否定を含む非決定的な（論理式を満たす解が一意に定まらない）場合、２つのルールの組合せのチェックでは整合性を検証できない。【００１８】
ルールラベルを利用することで、ルールの整合性検証問題を分割することができる。具体的には、２つのルールの組合せのみでチェック可能なものと、そうでないものを分割することで、それぞれに適した検証処理を行うことができる。【００１９】
学習節記録部１０５は、ルールラベルに応じた各検証モジュールの中間処理の結果を格納する。ルール整合性検証部１０３は、学習節記録部１０５を利用することで、効率的な検証処理を実現できる。【００２０】
矛盾出力部１０７は、矛盾記録部１０６のデータに基づき、矛盾しているルールの組合せを入力装置１８０の表示モニタの画面に表示する。矛盾しているルールの組合せがない場合、矛盾出力部１０７は、矛盾なしの旨のメッセージを表示する。これにより、ユーザは、ルールセットに矛盾が含まれるか否かを確認できる。ルールセットに矛盾が含まれている場合、ユーザは、矛盾しているルールの組合せを参考に、ルールの見直しができる。【００２１】
図２を参照して、ルール記録部のデータ構造について説明する。図２において、ルール記録部１０２は、ＴＨＥＮ節要素リスト２１０およびルールリスト２２０を含んで構成されている。
図２（ａ）において、ＴＨＥＮ節要素リスト２１０は、ルールのＴＨＥＮ節に関する情報を格納するテーブルである。ＴＨＥＮ節要素とは、ルールのＴＨＥＮ節の論理式の一部または全部をいう。ＴＨＥＮ節要素リスト２１０は、ＩＤ２１１と、ＴＨＥＮ節要素２１２と、ルールラベル２１３と、を含む。【００２２】
ＩＤ２１１は、ＴＨＥＮ節要素を一意に識別する。ＴＨＥＮ節要素２１２は、ＴＨＥＮ節が決定的なとき、個々の要素を格納する。一方、ＴＨＥＮ節が非決定的なとき、ＴＨＥＮ節要素２１２は、ＴＨＥＮ節全体を格納する。ルールラベル２１３は、ＴＨＥＮ節要素の特徴を表す。【００２３】
ここで、ＴＨＥＮ節要素リスト２１０の各行２１４、２１５および２１６は、ＴＨＥＮ節要素情報という。ルールラベル２１３は、ＴＨＥＮ節要素２１２の特徴をもとに、ルール入力部１０１が付与する。ルールラベル２１３としては、具体的には、「決定的」および「非決定的」がある。【００２４】
ルール入力部１０１は、ルールのＴＨＥＮ節が「変数＝変数値」形式の論理式である場合、当該論理式をＴＨＥＮ節要素２１２に記録し、ルールラベル２１３に「決定的」を記録する。ルールのＴＨＥＮ節が、「変数＝変数値」形式の論理式を論理積で結合した論理式の場合、ルール入力部１０１は、「変数＝変数値」形式の論理式をそれぞれ異なるＴＨＥＮ節要素情報として、ＴＨＥＮ節要素２１２に記録し、ルールラベル２１３に「決定的」を記録する。それ以外の場合、ルール入力部１０１は、ルールのＴＨＥＮ節全てをＴＨＥＮ節要素２１２に記録し、ルールラベル２１３に「非決定的」を記録する。ＴＨＥＮ節要素リスト２１０に記録する際、ルール入力部１０１は、ＴＨＥＮ節要素リスト２１０内のＴＨＥＮ節要素２１２が重複しないように処理を行う。【００２５】
なお、ＴＨＥＮ節要素情報に記録する論理式は、上記と異なっても良い。具体的には、「変数＝変数値」形式の論理式を論理積で結合した論理式をそのままＴＨＥＮ節要素情報として記録しても良い。ルール整合性検証部１０３で利用する検証モジュールにより、最適な記録方式は、異なる。また、ＴＨＥＮ節要素２１２に含まれる「∨」は、命題論理のORである。【００２６】
図２（ｂ）において、ルールリスト２２０は、ＩＤ２２１と、ＩＦ節２２２と、ＴＨＥＮ節２２３と、を含む。ＩＤ２２１は、ルールを一意に識別する。ＩＦ節２２２は、ルールのＩＦ節自体を表す。ＴＨＥＮ節２２３は、ルールのＴＨＥＮ節自体を表す。【００２７】
ＴＨＥＮ節２２３は、対応するＴＨＥＮ節要素リスト２１０のＩＤ２１１を記録する。ルールリスト２２０の各行２２４、２２５および２２６は、１つのルール情報を表す。具体的には、ルール情報２２６は、ＩＦ節２２２が「ａ＜１００∧ｂ＝２０」であり、ＴＨＥＮ節２２３がＴＨＥＮ節要素情報２１４のＴＨＥＮ節要素２１２（ｃ＝２０）とＴＨＥＮ節要素情報２１６のＴＨＥＮ節要素２１２（ｅ＝２０）を論理積で結合した論理式「ｃ＝２０∧ｅ＝２０」であることを表す。ここで、「∧」は、命題論理のANDである。【００２８】
図３を参照して、検証方式記録部のデータ構造を説明する。図３において、検証方式記録部１０４は、検証モジュールリスト３１０を含んで構成されている。
図３において、検証モジュールリスト３１０は、実行順３１１と、ルールラベル３１２と、検証モジュール名３１３と、を含む。実行順３１１は、検証の実行順を表す。ルールラベル３１２は、整合性検証対象を表す。検証モジュール名３１３は、使用する整合性検証モジュールの名前を表す。検証モジュールリスト３１０の各行は、検証モジュール情報という。【００２９】
ルール整合性検証部１０３は、検証モジュールリスト３１０から実行順３１１が小さい順に、検証モジュール情報を取得し、ルールラベル３１２に一致するルールをルール記録部１０２から読み込み、整合性の検証を行う。図３に基づけば、ルールラベル３１２が「決定」のルールを検証する場合、決定ルール検証モジュールを、「非決定」のルールを検証する場合、非決定ルール検証モジュールを、「決定」のルールと「非決定」のルールとの間のルール間の検証を行う場合、決定／非決定ルール間検証モジュールを、それぞれルール整合性検証部１０３が読み込む。【００３０】
図４を参照して、ルール入力部１０１における業務ルール入力画面および矛盾出力部における矛盾結果を表示するルール整合性検証画面について説明する。図４において、ルール整合性検証画４００は、ルール表示領域４１０と、矛盾表示領域４２０と、を含む。【００３１】
ルール表示領域４１０は、ルールを追加、変更および削除をする領域である。ルール表示領域４１０は、ルールを表示するルール一覧４１１に加え、ルール削除ボタン４１２と、ルール追加ボタン４１３と、検証開始ボタン４１４と、を備える。ルール一覧４１１は、ＩＤ４３１と、ルール識別子並べ替え４３２と、修正優先度４３３と、修正優先度並べ替え４３４と、ＩＦ節４３５と、ＴＨＥＮ節４３６と、を備える。ＩＤ４３１は、ルールを一意に識別する。ルール識別子並べ替え４３２は、ＩＤ４３１でルールを並び替える。修正優先度４３３は、矛盾が存在するとき修正するルールの優先度を表示する。修正優先度並べ替え４３４は、修正優先度４３３でルールを並び替える。ＩＦ節４３５は、ルールのＩＦ節を表示する。ＴＨＥＮ節４３６は、ルールのＴＨＥＮ節を表示する。ルール一覧４１１の各行は、入力ルール情報という。【００３２】
ユーザは、任意のＩＦ節４３５またはＴＨＥＮ節４３６を選択し、入出力装置１８０を用いて論理式を入力することで、任意のルールのＩＦ節およびＴＨＥＮ節を修正できる。
修正優先度４３３は、矛盾出力部１０７が、矛盾を解消する際の修正の優先度を表示する。修正優先度４３３として、具体的には、各ルールの矛盾リスト４２１に含まれる出現回数を表示する。この場合、優先度の高い入力ルール情報ほど、多くの矛盾に関係しており、ユーザは入力ルール情報を１つ修正するだけで、複数の矛盾を解消できる可能性があり、矛盾発生時のルールの修正作業を効率化できる。【００３３】
ルール識別子並べ替え４３２は、ルール一覧４１１内のルールがルール識別子４３１に対して、大きい順と小さい順のどちらで並んでいるかを表しており、下向きの三角形ならば、大きい順、上向きの三角形ならば小さい順に、ルール一覧４１１内の入力ルール情報は並んでいる。このとき、下向きの三角形として画面に表示されている状態で、ルール識別子並べ替え４３２を押下することで、入力ルール情報をルール識別子４３１の小さい順に並べ替えることができる。このとき、ルール識別子並べ替え４３２の三角形の向きは下向きから上向きに変更される。また、ルール識別子並べ替え２１１２が上向きの三角形として画面に表示されている状態で、ルール識別子並べ替え２１１２を押下することで、入力ルール情報をルール識別子４３１の大きい順に並べ替えることができる。このとき、ルール識別子並べ替え４３２の三角形の向きは上向きから下向きに変更される。【００３４】
修正優先度並べ替え４３４は、ルール一覧４１１内の入力ルール情報が修正優先度４３３に対して、大きい順と小さい順のどちらで並んでいるかを表している。三角形の方向と順序、順序の並べ替えは、ルール識別子並べ替え４３２と同様である。【００３５】
ルール一覧４１１から入力ルール情報を選択した状態でルール削除ボタン４１２を押下することで、該当入力ルール情報をルール一覧４１１から除外することができる。次に、ルール追加ボタン４１３を押下することで、ルール一覧４１１に、修正優先度４３３、条件式４３５、結果式４３６が空欄となっている新たな入力ルール情報が追加される。また、ユーザが検証開始ボタン４１４を押下することで、ルール入力部１０１、整合性検証部１０３および矛盾出力部１０７が実行される。【００３６】
矛盾表示領域４２０は、ルール一覧４１１に表示された入力ルール情報の検証結果を表示する領域である。矛盾表示領域４２０は、矛盾リスト４２１を備える。矛盾リスト４２１は、ＩＤ４４１と、矛盾ルールペア４４２と、を備える。ＩＤ４４１は、矛盾するルールのペアを一意に識別する。矛盾ルールペア４４２は、矛盾を構成する入力ルール情報のルール識別子４３１の組合せを表示する。矛盾リスト４２１は、具体的には、全ての矛盾ルールペアを表示しても、ルール一覧４１１上でユーザが選択した入力ルール情報が含まれる矛盾だけを出力してもよい。
図４では、ルール入力部１０１と矛盾出力部１０７とは、同一の画面を共有しているが、それぞれを独立した画面としてもよい。【００３７】
図５を参照して、ルール入力部の処理について説明する。ここでは、ルールラベルとして「決定」「非決定」の２種類があるものとして説明する。なお、図中の符号Ｓはステップを表す(以下、本明細書中で同様)。【００３８】
図５において、ルール入力部１０１は、ユーザがルール整合性検証画面４００の検証開始４１４を押下することで、処理の実行を開始する。ルール入力部１０１は、ルール整合性検証画面４００のルール一覧４１１に未取得の入力ルール情報Ｒ５（Rule of Fig. 5）が存在するか否かを確認する（Ｓ５０１）。ここで、Ｒ５が存在する場合、ルール入力部１０１は、Ｒ５を取得する（Ｓ５０２）。ステップ５０１でＲ５が存在しない場合、ルール入力部１０１は、処理を終了する。【００３９】
ステップ５０２のあと、ルール入力部１０１は、Ｒ５からＴＨＥＮ節Ｒ５_ＲＥＳＵＬＴを取得する(Ｓ５０３)。ルール入力部１０１は、Ｒ５_ＲＥＳＵＬＴが「変数＝変数値」形式の論理式と論理積のみで構成されるか否かを確認する（Ｓ５０４）。Ｒ５_ＲＥＳＵＬＴが「変数＝変数値」形式の論理式と論理積のみで構成される場合、ルール入力部１０１は、ステップ５０５に進み、それ以外の場合は、ルール入力部１０１は、ステップ５０６に進む。【００４０】
ステップ５０５では、ルール入力部１０１は、Ｒ５_ＲＥＳＵＬＴ内の「変数＝変数値」形式の各論理式をＴＨＥＮ節要素２１２としてＴＨＥＮ節要素リスト２１０に記録する。このとき、ルール入力部１０１は、ルールラベル２１３として「決定的」を付与する。【００４１】
ステップ５０６では、ルール入力部１０１は、Ｒ５_ＲＥＳＵＬＴ自身をＴＨＥＮ節要素２１２としてＴＨＥＮ節要素リスト２１０に記録する。このとき、ルール入力部１０１は、ルールラベル２１３として「非決定的」を付与する。【００４２】
ステップ５０５、ステップ５０６ともに、ＴＨＥＮ節要素リスト２１０に、記録しようとしているＴＨＥＮ節要素２１２がＴＨＥＮ節要素リスト２１０にすでに存在する場合、当該ＴＨＥＮ節要素２１２のＴＨＥＮ節要素リスト２１０への記録をしない。これにより、ＴＨＥＮ節要素リスト２１０へのＴＨＥＮ節要素の重複登録を避ける。【００４３】
次に、ルール入力部１０１は、Ｒ５から条件式Ｒ５_ＣＯＮＤＩＴＩＯＮを取得する(Ｓ５０７)。次に、ルール入力部１０１は、ＴＨＥＮ節要素リスト２１０からＲ５_ＲＥＳＵＬＴに対応するＴＨＥＮ節要素情報のＩＤ２１１をすべて取得し、結果部識別子のリストＲＥＳＵＬＴ_ＩＤｓに格納する（Ｓ５０８）。次に、ルール入力部１０１は、Ｒ５_ＣＯＮＤＩＴＩＯＮをＩＦ節２２２に、ＲＥＳＵＬＴ_ＩＤｓをＴＨＥＮ節２２３にそれぞれ記録し（Ｓ５０９）、ステップ５０１に進む。【００４４】
図６を参照して、ルール整合性検証部の処理について説明する。本実施形態では、前述の通り「決定」と「非決定」という２つのルールラベルを使用する。また、整合性検証モジュールとして、決定ルール検証モジュール、非決定ルール検証モジュールおよび決定／非決定ルール間整合性検証モジュールを使用する。【００４５】
図６において、ルール整合性検証部１０３は、検証モジュールリスト３１０に未取得の検証モジュール情報が存在するか否か確認する（Ｓ５１１）。ここで、未取得の検証モジュール情報が存在する場合、ルール整合性検証部１０３は、ステップ５１２に進み、存在しない場合、ルール整合性検証部１０３は、処理を終了する。【００４６】
ステップ５１２では、ルール整合性検証部１０３は、検証モジュールリスト３１０からルールラベル３１２と検証モジュール名３１３を取得する(Ｓ５１２)。ルール整合性検証部１０３は、検証モジュール名３１３に対応する整合性検証モジュールを読み込む(Ｓ５１３)。次に、ルール整合性検証部１０３は、整合性検証を実施し(Ｓ５１４)、ステップ５１１に戻る。【００４７】
図７を参照して、整合性検証モジュールの１つである決定ルール検証モジュールの処理について説明する。図７において、ルール整合性検証部１０３は、ＴＨＥＮ節要素リスト２１０内でルールラベル２１３として「決定」が付与されたＴＨＥＮ節要素情報の組合せのうち、ＴＨＥＮ節要素２１２の論理積が充足不能となるＴＨＥＮ節要素情報の組合せ（以下、ＴＨＥＮ節要素２１２の論理積が充足不能となるＴＨＥＮ節要素情報の組合せを「充足不能ＴＨＥＮ節組合せ」という）が存在するか否か確認する（Ｓ５２１）。充足不能ＴＨＥＮ節組合せが存在する場合、ルール整合性検証部１０３はステップ５２２に進み、存在しない場合、ルール整合性検証部１０３は処理を終了する（リターンする）。【００４８】
ステップ５２２では、ルール整合性検証部１０３は、充足不能ＴＨＥＮ節組合せを生成する(Ｓ５２２)。具体的には、ＴＨＥＮ節要素Ｒ１（Rule No. 1）、Ｒ２の変数名が一致し、かつ変数値が異なるようにＴＨＥＮ節要素リスト２１０からＴＨＥＮ節要素情報を２つ取得することで、ルール整合性検証部１０３は充足不能ＴＨＥＮ節組合せを生成できる。次に、ルール整合性検証部１０３は、ＩＦ節充足可能性判定を実施し（Ｓ５２３）、ステップ５２１に進む。ここで、充足不能uとは、複数の論理式について、それらの論理式の真理値を同時に真にする真理値割り当てが存在しないということである。【００４９】
図８を参照して、ルール整合性検証部におけるＩＦ節充足可能性判定の処理について説明する。図８において、ルール整合性検証部１０３は、ルールリスト２２０から、充足不能ＴＨＥＮ節組合せ内のＴＨＥＮ節要素を含むルールのＩＤ２２１をルールリスト２２０から全て取得し、ＴＨＥＮ節要素単位にルールのグループを作成する（Ｓ５３１）。次に、ルール整合性検証部１０３は、各グループからひとつずつルールを選ぶ組合せ（以下、「グループ間ルールペア」という）の内、未生成のものが存在するか否かを確認する（Ｓ５３２）。ここで、グループ間ルールペアが存在する場合、ルール整合性検証部１０３は、ステップ５３３に進み、存在しない場合、処理を終了する。【００５０】
ステップ５３３では、ルール整合性検証部１０３は、グループ間ルールペアを生成する（Ｓ５３３）。次に、ルール整合性検証部１０３は、グループ間ルールペアに含まれるルールのＩＦ節の論理積が充足可能か否かを確認する（Ｓ５３４）。充足可能か否かの判定には、ＳＡＴ（SATisfiability problem、充足可能性問題）ソルバまたはＳＭＴ（Satisfiable Modulo Theories）ソルバを用いることができる。ＳＡＴソルバとは、論理式の充足可能性問題を解くアルゴリズムを実装するツールの総称である。また、ＳＭＴソルバは、ＳＡＴソルバの技術をベースとしつつ、より複雑な論理式の充足可能性問題を解くことが可能なツールである。本明細書の他の処理における充足可能性の判定においても、ＳＡＴソルバまたはＳＭＴソルバを用いてもよい。【００５１】
ルール整合性検証部１０３は、充足可能な場合、ステップ５３５に進み、充足不能な場合、ステップ５３２に戻る。ステップ５３５では、ルール整合性検証部１０３は、グループ間ルールペアに含まれるルールのＩＤのペアを矛盾記録部１０６に記録し（Ｓ５３５）、ステップ５３２に戻る。【００５２】
図８において、ルール整合性検証部１０３は、ＴＨＥＮ節要素が共通しているルールをグルーピングする。これによって、ルール整合性検証部１０３は、各グループから１つのルールを取得する組合せだけを矛盾判定の対象とする。この処理は、全ての２つのルールペアの組合せを検証する場合と比較して、検証処理を高速化できる。【００５３】
図９を参照して、整合性検証モジュールの１つである非決定ルール検証モジュールの処理について説明する。図９において、ルール整合性検証部１０３は、ＴＨＥＮ節要素リスト２１０からルールラベル「非決定」を持つＴＨＥＮ節要素情報を充足可能なＴＨＥＮ節要素情報の組合せの集合に格納する（Ｓ５４１）。ルールラベル「非決定」を持つＴＨＥＮ節要素情報を、以下、「非決定ＴＨＥＮ節要素」という。充足可能なＴＨＥＮ節要素情報の組合せの集合を、以下、「充足可能ＴＨＥＮ節組合せ集合」という。【００５４】
ルール整合性検証部１０３は、充足可能ＴＨＥＮ節組合せ集合内の要素数を確認する（Ｓ５４２）。要素数が１以上の場合、ルール整合性検証部１０３は、ステップ５４３に進み、０の場合、ルール整合性検証部１０３は、処理を終了する（Ｓ５４２）。【００５５】
ステップ５４３では、ルール整合性検証部１０３は、充足可能ＴＨＥＮ節組合せ集合から充足可能なＴＨＥＮ節要素の組合せＳＳ（Satisfiable Set）をひとつ取得し、取得したＴＨＥＮ節要素の組合せを充足可能ＴＨＥＮ節組合せ集合から除外する（Ｓ５４３）。ルール整合性検証部１０３は、ＳＳにＴＨＥＮ節要素リスト２１０の非決定ＴＨＥＮ節要素をひとつ追加した組合せのうち、学習節記録部１０５内の学習節を含まないＴＨＥＮ節要素の未生成の組合せＲＳ（Rule Set）が存在するか否かを確認する（Ｓ５４４）。具体的には、次の手順で確認できる。【００５６】
まず、ＴＨＥＮ節要素に対応する命題変数（ＴＨＥＮ節要素有効フラグｖ_ｉ；ｉはＴＨＥＮ節要素のＩＤを表す）を導入する。次に、任意のＴＨＥＮ節要素の組合せを含まない制約（ス―パーセット除去制約）を導入する。ス―パーセット除去制約は、ＴＨＥＮ節要素の組合せにおいて、各ＴＨＥＮ節要素のＴＨＥＮ節要素有効フラグを論理積で結合した論理式を否定した論理式である。次の式がスーパーセット除去制約となる。【００５７】
｛ＴＨＥＮ節要素ｉ、ＴＨＥＮ節要素ｊ｝のスーパーセット除去制約：
¬（ｖ_ｉ∧ｖ_ｊ）
ここで、「¬」は、命題論理のNOTである。任意のＴＨＥＮ節要素の組合せを表す論理式（Ｌ１：Logic No. 1）を導入する。具体的には、ＴＨＥＮ節要素有効フラグｖ_ｉを論理和で結合した式である。【００５８】
次に、ルール整合性検証部１０３は、ＳＳを表す論理式（Ｌ２）を導入する。具体的には、ＳＳ内のＴＨＥＮ節要素のＴＨＥＮ節要素有効フラグを論理積で繋いだ式である。ルール整合性検証部１０３は、ＳＳに含まれないＴＨＥＮ節要素をひとつだけ選択する制約（Ｃ１：Condition No. 1）を導入する。具体的には、ＳＳに含まれないＴＨＥＮ節要素のＴＨＥＮ節有効フラグの集合に対して、ＴＨＥＮ節要素に対応する命題変数の集合Ｐ_ＶＳ（Proposition Variable Set）において、唯一ひとつのみの命題変数が真となるＯＮＬＹ−ＯＮＥ制約を導入する。これは、制約充足問題（Constraint Satisfaction Problem：ＣＳＰ）におけるＳＡＴ符号化法の１つである直接符号化法（Direct Encording：ＤＣ）を利用できる。直接符号化法を用いた場合、ＡＴ−ＬＥＡＳＴは、Ｐ_ＶＳ内の命題変数ｖ_ｉを論理和で結合した式と、Ｐ_ＶＳ内の２つの命題変数の各組合せ｛ｖ_ｉ、ｖ_ｊ｝における命題変数の否定を論理和で結合した論理式を論理積で結合した論理式と、を論理積で結合した論理式として表現できる。具体的には、ＴＨＥＮ節要素に対応する命題変数の数が３の場合、ＯＮＬＹ−ＯＮＥは、下式の通りとなる。【００５９】
（ｖ_１∨ｖ_２∨ｖ_３）∧（¬ｖ_１∧¬ｖ_２）∧（¬ｖ_１∧¬ｖ_３）∧（¬ｖ_２∧¬ｖ_３）
次に、ルール整合性検証部１０３は、学習節記録部１０５内の組合せを含まない制約（Ｃ２）を導入する。具体的には、Ｃ２は、各学習節のスーパーセット除去制約を論理積で結合した式である。ルール整合性検証部１０３は、同一のＲＳを生成しない制約（繰り返し防止制約）を導入する。具体的には、ステップ５４４によって追加された各ＴＨＥＮ節要素のＴＨＥＮ節要素有効フラグを否定した論理式である。【００６０】
以上の制約および論理式を論理積で結合した式の充足可能性判定を行うことで、ＲＳが存在するかを確認できる。具体的には、ＳＳ｛ｒ１、ｒ２｝、ＴＨＥＮ節要素リスト２１０内の非決定結果式｛ｒ１、ｒ２、ｒ３、ｒ４｝、学習節記録部１０５内の学習節｛ｒ３、ｒ４｝、追加済のＴＨＥＮ節要素｛ｒ３｝の場合（ｒ１、ｒ２、ｒ３、ｒ４はそれぞれＴＨＥＮ節要素有効フラグ）、次の式が、ステップ５４４におけるＲＳの存在確認を行う際に利用する論理式である。
（ｒ１∨ｒ２∨ｒ３∨ｒ４）∧（ｒ１∧ｒ２）∧（ｒ３∨ｒ４）∧（¬ｒ３∨¬ｒ４）∧（¬ｒ３）
なお、上記論理式は充足解として｛ｒ１、ｒ２、ｒ４｝が存在するため、ＲＳが存在する。
ここで、ＲＳが存在する場合、ルール整合性検証部１０３は、ステップ５４５に進み、存在しない場合、ステップ５４２に進む（Ｓ５４４）。【００６１】
ステップ５４５では、ルール整合性検証部１０３は、ＲＳを生成する（Ｓ５４５）。ルール整合性検証部１０３は、ＲＳが充足可能かを確認する（Ｓ５４６）。ここで、ＲＳが充足可能な場合、ルール整合性検証部１０３は、ステップ５４９に進む。ＲＳが充足不能な場合、ルール整合性検証部１０３は、ステップ５４７に進む。【００６２】
ステップ５４７では、ルール整合性検証部１０３は、ＲＳを学習節記録部１０５に記録する（Ｓ５４７）。ルール整合性検証部１０３は、ＲＳに対して、図８に示す条件式の充足可能性判定を実施し（Ｓ５４８）、ステップ５４４に戻る。ステップ５４９では、ルール整合性検証部１０３は、充足可能ＴＨＥＮ節組合せ集合にＲＳを追加し（Ｓ５４９）、ステップ５４４に戻る。【００６３】
ここでは、ルール整合性検証部１０３はＴＨＥＮ節要素の組合せを生成する際、充足可能なＴＨＥＮ節要素の組合せに対して新たな非決定ＴＨＥＮ節要素を追加している。これにより、充足可能なＴＨＥＮ節要素の組合せの最大の要素数がＭＡＸの場合、最悪でもＭＡＸ個以下の非決定ＨＥＮ節の組合せを網羅すれば良い。このため、ＭＡＸの値が非決定ＴＨＥＮ節要素の数よりも小さければ、ルール整合性検証部１０３は処理を高速化できる。また、ステップ５４４において、学習節１０７内の学習節を含むＲＳを矛盾判定の対象外とすることで、ルール整合性検証部１０３の処理を高速化できる。【００６４】
図１０を参照して、整合性検証モジュールの１つである決定/非決定ルール間整合性検証モジュールの処理を説明する。図１０において、ルール整合性検証部１０３は、ＴＨＥＮ節要素リスト２１０のＴＨＥＮ節要素の組合せのうち、充足可能な１つ以上の非決定ＴＨＥＮ節要素の未生成組合せＳＳ１が存在するかを確認する（Ｓ５５１）。ここで、ＳＳ１が存在する場合、ルール整合性検証部１０３は、ステップ５５２に進み、ＳＳ１が存在しない場合、ルール整合性検証部１０３は、処理を終了する。具体的には、図９のステップ５４３において、充足可能ＴＨＥＮ節組合せ集合から除外されたＴＨＥＮ節要素の組合せを充足可能ＴＨＥＮ節組合せリストに保持して、そのリスト内に要素が存在するかを確認する。【００６５】
ルール整合性検証部１０３は、ＳＳ１を生成する（Ｓ５５２）。具体的には、充足ＴＨＥＮ節組合せリストをＴＨＥＮ節要素組合せ内の要素数が少ない順に並べ替え、ルール整合性検証部１０３は、要素数が小さい方からＴＨＥＮ節要素組合せを取得し、取得したＴＨＥＮ節要素組合せを充足ＴＨＥＮ節組合せリストから除外する。これにより、小さな学習節を早期に発見することができ、検証対象をより減らすことができる。ルール整合性検証部１０３は、ＴＨＥＮ節要素リスト２１０の結果式の組合せのうち、充足可能な１つ以上のルールラベル「決定」が付与されたＴＨＥＮ節要素(決定ＴＨＥＮ節要素)の組合せＳＳ２が存在するかを確認する。ここで、ＳＳ２が存在する場合、ルール整合性検証部１０３は、ステップ５５４に進み、ＳＳ２が存在しない場合、ルール整合性検証部１０３は、ステップ５５１に進む。具体的には、ＴＨＥＮ節要素の組合せにおいて、各ＴＨＥＮ節要素（「変数＝変数値」）の変数が重複しない組合せをすべて生成したか確認する。【００６６】
ステップ５５４では、ルール整合性検証部１０３は、ＳＳ２を生成する（Ｓ５５４）。具体的には、決定ＴＨＥＮ節要素（「変数＝変数値」）を、変数で分類する。分類された決定ＴＨＥＮ節要素の集合をパーティションと呼ぶ。各パーティションから、１個以下ずつＴＨＥＮ節要素を取得する組合せを網羅すれば良い。ここで、ルール整合性検証部１０３は、ＳＳ２内の決定ＴＨＥＮ節要素の数が少ない順にＳＳ２を生成する。これにより、小さな学習節を早期に発見することができ、検証対象をより減らすことができる。次に、ルール整合性検証部１０３は、ＳＳ１内の結果式で使用している変数の集合ＶＳ１（Variable Set No. 1）が、ＳＳ２内の結果式で使用している変数の集合ＶＳ２を含んでいるかを確認する（Ｓ５５５）。ここで、ＶＳ１がＶＳ２を含んでいる場合、ルール整合性検証部１０３は、ステップ５５６に進む。ＶＳ１がＶＳ２を含んでいない場合、ルール整合性検証部１０３は、ステップ５５３に進む。【００６７】
ステップ５５６では、ルール整合性検証部１０３は、ＳＳ２とＳＳ１のＴＨＥＮ節要素をすべて含む結果式の組合せ（決定／非決定ＴＨＥＮ節組合せ）が学習節記録部１０５内の学習節を含むかを確認する（Ｓ５５６）。ここで、決定／非決定ＴＨＥＮ節組合せが学習節を含む場合、ルール整合性検証部１０３は、ステップ５５３に進み、決定／非決定ＴＨＥＮ節組合せが学習節を含まない場合、ステップ５５７に進む。【００６８】
ステップ５５７において、ルール整合性検証部１０３は、決定／非決定ＴＨＥＮ節組合せが充足可能かを確認する（Ｓ５５７）。ここで、決定／非決定ＴＨＥＮ節組合せが充足可能な場合、ルール整合性検証部１０３は、ステップ５５３に進む。ＲＳが充足不能な場合、ルール整合性検証部１０３は、ステップ５５８に進む。【００６９】
ステップ５５８において、ルール整合性検証部１０３は、決定／非決定ＴＨＥＮ節組合せに対して、図８に示す条件式の充足可能性判定を行う（Ｓ５５８）。ルール整合性検証部１０３は、学習節記録部１０５に決定／非決定ＴＨＥＮ節組合せを記録し（Ｓ５５９）、ステップ５５３に進む。【００７０】
本実施例では、任意のＲＳにおいて、全決定結果式で使用している変数は、全非決定結果式で使用している変数のサブセットになっている。この条件を満たさない結果式の組合せを矛盾判定の対象外とすることで、ルール整合性検証部１０３の処理を高速化できる。
【実施例２】
【００７１】
実施例２では、非決定ルール検証モジュールに別の形態を用いた業務ルール整合性検証装置を説明する。
図１１を参照して、業務ルール整合性検証装置の他の非決定ルール検証モジュールの処理を説明する。図１１において、ルール整合性検証部１０３Ａは、ＴＨＥＮ節要素の組合せの生成に関する制約リストＣＳ（Condition Set）の制約を満たすＴＨＥＮ節要素リスト２１０のＴＨＥＮ節要素の組合せＲＳ１１が存在するかを確認する（Ｓ５６１）。ここで、ＲＳ１１が存在する場合、ルール整合性検証部１０３Ａは、ステップ５６２に進み、ＲＳ１１が存在しない場合、ルール整合性検証部１０３Ａは、処理を終了する（リターンする）。制約リストは、ＴＨＥＮ節要素の組合せ生成に対する制約を論理式として記録する。ステップ５６１の具体的な手順として、非決定ＴＨＥＮ節要素に対応する命題変数を論理和で結合した式にＣＳ内の各制約を論理積で結合した式の充足可能性判定を実施し、充足解の存在を確認する。さらに具体的には、非決定ＴＨＥＮ節要素としてＲ１、Ｒ２、Ｒ３が存在し、制約として組合せ｛Ｒ２、Ｒ３｝を含む組合せを生成しない場合、次の式の充足可能性を判定する。
ＲＳ１１の存在判定式：
（Ｒ１∨Ｒ２∨Ｒ３）∧¬（Ｒ２∧Ｒ３）
このとき、｛Ｒ１＝真、Ｒ２＝真、Ｒ３＝偽｝が充足解のひとつとなるため、ＲＳ１１が存在する。なお、以降、任意の組合せＲとＲ内の全ての要素を含む組合せＲ´において、Ｒ´をＲのスーパーセットと呼称し、ＲをＲ´のサブセットと呼称する。【００７２】
ステップ５６２では、ルール整合性検証部１０３Ａは、ＲＳ１１を生成する（Ｓ５６２）。具体的には、充足解において、真となっている命題変数に対応するＴＨＥＮ節要素を持つ組合せが、ＲＳ１１となる。次に、ルール整合性検証部１０３Ａは、ＲＳ１１が充足可能かを確認する（Ｓ５５３）。ここで、ＲＳ１１が充足可能な場合、ルール整合性検証部１０３Ａは、ステップ５６４に進み、ＲＳ１１が充足不能な場合、ルール整合性検証部１０３Ａは、ステップ５６８に進む。【００７３】
ステップ５６４では、ルール整合性検証部１０３Ａは、ＲＳ１１から充足不能な最小のＴＨＥＮ節要素の組合せＭＵＳ（Minimum Unsatisfiable Set）を生成する（Ｓ５６４）。ここで、ＭＵＳとは、ＭＵＳからいずれかのＴＨＥＮ節要素を除外したとき、充足可能となるＴＨＥＮ節要素の組合せのことである。充足不能なＴＨＥＮ節要素の組合せＵＳ（Unsatisfiable Set）からＭＵＳを生成する方法として、具体的には、ＵＳ内からＴＨＥＮ節要素（以下、「除去ＴＨＥＮ節要素」と呼ぶ）をひとつ除外した組合せＵＳ´の充足可能性判定を行いＵＳ´が充足不能であるならば、除去ＴＨＥＮ節要素をＵＳから除外する処理をＵＳ内のＴＨＥＮ節要素に対して順番に実行することで、ＭＵＳを生成できる。次に、ルール整合性検証部１０３Ａは、ＭＵＳのサブセットを生成しない制約Ｃ２をＣＳに追加する（Ｓ５６５）。具体的には、ＭＵＳに含まれていない非決定ＴＨＥＮ節要素に対応する命題変数を論理和で結合した論理式が、ＭＵＳのサブセットを生成しない制約となる。具体的には、ＭＵＳ｛Ｒ１、Ｒ２｝、ＴＨＥＮ節要素リスト２１０の非決定ＴＨＥＮ節要素｛Ｒ１、Ｒ２、Ｒ３、Ｒ４｝の場合、次の式がＭＵＳ｛Ｒ１、Ｒ２｝のサブセットを生成しない制約となる。
ＭＵＳ｛Ｒ１、Ｒ２｝のサブセットを生成しない制約：
Ｒ１∨Ｒ２
次に、ルール整合性検証部１０３Ａは、ＭＵＳのスーパーセットを生成しない制約Ｃ３をＣＳに追加する（Ｓ５６６）。具体的には、ＭＵＳ内のルールに対応する命題変数を論理積で結合した論理式を否定した論理式が、ＭＵＳのスーパーセットを生成しない制約となる。具体的にはＭＵＳ｛Ｒ１、Ｒ２、Ｒ３｝の場合、次の式がＭＵＳ｛Ｒ１、Ｒ２、Ｒ３｝のスーパーセットを生成しない制約となる。
ＭＵＳ｛Ｒ１、Ｒ２、Ｒ３｝のスーパーセットを生成しない制約：
¬（Ｒ１∧Ｒ２∧Ｒ３）。【００７４】
次に、ルール整合性検証部１０３Ａは、ＭＵＳに対して、図８に示す条件式の充足可能性判定を実施し、ステップ５６１に戻る（Ｓ５６７）。【００７５】
ステップ５６８では、ルール整合性検証部１０３Ａは、ＲＳ１１のサブセットを生成しない制約Ｃ１をＣＳに追加し、ステップ５６１に戻る（Ｓ５６８）。
なお、実施例２においては、非決定ルール整合性検証モジュールの処理方式として示したが、本方式は、決定ルール整合性検証モジュールおよび決定／非決定ルール間検証モジュールとして利用しても良い。実施例２を適用することで、充足不能なＴＨＥＮ節要素の組合せを効率的に見つけることができる。
【実施例３】
【００７６】
実施例３は、他の決定ルール整合性検証モジュールを用いた業務ルール整合性検証装置を説明する。
まず、ルール入力部の処理について、図５を参照して、実施例１との違いを説明する。実施例３は、図５に示すステップ５０５の処理が、実施例１と異なる。実施例３では、Ｒ５_ＲＥＳＵＬＴをそのままの形式でルール記録部１０２に記録する。実施例１では、「変数＝変数値」形式単位に分解して記録しているが、実施例３ではそのような分解を行わない。【００７７】
図１２を参照して、実施例３に係る他の決定ルール整合性検証モジュールの処理について説明する。図１２において、ルール整合性検証部１０３Ｂは、各ルールが有効であるか否かを示す命題変数であるルール有効フラグを活用して、ルールラベルが「決定」であるルールの集まりであるルールセット（以下、「決定ルールセット」と呼ぶ）の整合性を判定する式（以下、「決定ルールセット整合性判定式」と呼ぶ）を生成する（Ｓ５７１）。決定ルールセット整合性判定式は、具体的には、決定ルールセットがルール一覧４１１のＩＤ４３２が「０」および「２」の場合、以下の式の否定で表すことができる。
（（Ｐｃ∧ｒ０∧（ａ＞２０∧ｂ＝２０）∧（ｃ＝２０））∨（（Ｐｃ∨Ｐｅ）∧ｒ２∧（ａ＜１００∧ｂ＝２０）∧（ｃ＝２０∧ｅ＝２０）））→（（（Ｐｃ∧ｒ０∧（ａ＞２０∧ｂ＝２０））→（（ｃ＝２０）∧Ｐｃ））∧（（（Ｐｃ∨Ｐｅ）∧ｒ２∧（ａ＜１００∧ｂ＝２０））→（（ｃ＝２０）∧Ｐｃ）∨（（ｅ＝２０）∧Ｐｅ）））
ここで、ｒ０およびｒ２は、ルール有効フラグを表し、ＰｃおよびＰｅは、出力変数が有効であるか否かを示す命題変数である出力変数有効フラグである。出力変数有効フラグは、いずれか１つのみが真となるように直接符号化法を用いて、出力変数有効フラグに関する制約を追加する。【００７８】
ルール整合性検証部１０３Ｂは、決定ルールセット整合性判定式の充足可能性を判定する（Ｓ５７２）。充足可能性の判定には、ＳＭＴソルバを活用する。充足可能な場合は、ルール整合性検証部１０３Ｂは、ステップ５７３に進み、充足不能な場合は、処理を終了する。【００７９】
ルール整合性検証部１０３Ｂは、矛盾となるルールの組合せを生成し、矛盾記録部１０６に記録する（Ｓ５７３）。ルール整合性検証部１０３Ｂは、ＳＭＴソルバの機能を利用して、充足可能と判定された際の各ルール有効フラグの真偽値、各ＩＦ節の真偽値、各ＴＨＥＮ節の真偽値、および各出力変数有効フラグの真偽値を取得し、これらの真偽値情報を元に矛盾となるルールの組合せを生成する。具体的には、ルールαに対応するルール有効フラグとＩＦ節の論理積が真、および、ルールβに対応するルール有効フラグとＩＦ節の論理積が真で、他のルールに対応するルール有効フラグとＩＦ節の論理積が偽の場合、ルールαとルールβが矛盾となる。各ルールに対応するルール有効フラグとＩＦ節の論理積が真となるルールが３以上の場合は、これらのルールに対応するＴＨＥＮ節と出力変数有効フラグの論理積の真偽値を取得し、真となるルールと偽となるルールの組合せが矛盾となる。【００８０】
ルール整合性検証部１０３Ｂは、決定ルールセット整合性判定式にルール有効フラグの制約を追加する（Ｓ５７４）。ルール整合性検証部１０３Ｂは、ステップ５７３において、矛盾記録部１０６に記録した矛盾となるルールの組合せに基づき、当該矛盾となるルールの組合せが再び検出されないような制約を決定ルールセット整合性判定式に追加する。具体的には、ｒ０とｒ１が矛盾している場合、¬（ｒ０∧ｒ１）を追加すれば良い。次に、ルール整合性検証部１０３Ｂは、ステップ５７２に進む。【００８１】
ＳＭＴソルバは、過去に実行した充足可能性判定の処理の情報を記憶する機能がある。そのため、ステップ５７４において、決定ルールセット整合性判定式に制約を追加して、ステップ５７２において、充足可能性を行う場合、ゼロベースで充足可能性判定を行うのではなく、過去に実行した結果を再利用するため、効率的に検証可能である。【００８２】
実施例３を適用することで、ＴＨＥＮ節が複数の出力変数が含まれる場合においても、ＴＨＥＮ節の分解処理が不要となる。また、実施例１の決定ルール整合性検証モジュールは、ＴＨＥＮ節に含まれる出力変数が１つのみの場合に効率的に検証処理を実現できるのに対し、実施例３では、ＴＨＥＮ節に複数の出力変数が含まれる場合に効率的に検証処理を実現できる。【００８３】
実施例３によれば、結果式に否定または論理和を含むルールを含むルールセットにおける整合性を実用時間で検証することが可能な業務ルール整合性検証装置を提供することができる。【００８４】
なお、本発明は、実施例に限定されるものではなく、様々な変形例が含まれる。具体的には、実施例は、本発明を分りやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成に他の構成を加えることも可能である。
【符号の説明】
【００８５】
１００…ルール整合性検証装置、１０１…ルール入力部、１０２…ルール記録部、１０３…ルール整合性検証部、１０４…検証方式記録部、１０５…学習節記録部、１０６…矛盾記録部、１０７…矛盾出力部、１６０…プロセッサ、１７０…メモリ、１８０…入出力装置、２１０…ＴＨＥＮ節要素リスト 、２２０…ルールリスト、３１０…検証モジュールリスト、４００…ルール整合性検証画面。
【図１】
2016110946.tif 000003
【図２】
2016110946.tif 000004
【図３】
2016110946.tif 000005
【図４】
2016110946.tif 000006
【図５】
2016110946.tif 000007
【図６】
2016110946.tif 000008
【図７】
2016110946.tif 000009
【図８】
2016110946.tif 000010
【図９】
2016110946.tif 000011
【図１０】
2016110946.tif 000012
【図１１】
2016110946.tif 000013
【図１２】
2016110946.tif 000014
【国際調査報告】
2016110946.tif 000015
2016110946.tif 000016