"多値変数について、全ての多値否定変数からなる錯綜目的節、及び多値肯定変数2つからなる開孔関連節の全ての組合せの場合の節により構成される多値CNFを表すデータが記録されたコンピュータ読み取り可能な記録媒体。請求項1において、多値CNFを、三値CNF、四値CNF、五値CNF、六値CNF、七値CNFとした、コンピュータ読み取り可能な記録媒体。請求項1~2いずれかの項において、多値CNFを、単数または複数の異なる多値CNFの論理積となる合成CNFとした、コンピュータ読み取り可能な記録媒体。請求項1~3いずれかの項において、合成CNFまたは多値CNFを、合成CNFまたは多値CNFと、CNFに含まれる多値CNFの単数あるいは複数の多値肯否変数からなる拘束節との論理積となる合成CNFとした、コンピュータ読み取り可能な記録媒体。請求項4において、拘束節を、3つ以上の多値CNFそれぞれの多値否定変数1つ以上または多値肯定変数1つを含む節とした、コンピュータ読み取り可能な記録媒体。請求項4において、拘束節を、その拘束節を含まない合成CNFが真となる真理値割当において、その節の値が偽となる節とした、コンピュータ読み取り可能な記録媒体。請求項4~6いずれかの項において、合成CNFを、ある2つの変数の肯定変数からなる拘束節及び否定変数からなる拘束節の組合せを、そのいずれかの変数について、その肯定変数をもう片方の否定変数に、その否定変数をもう片方の肯定変数にしたCNFとした、コンピュータ読み取り可能な記録媒体。請求項4~7いずれかの項において、合成CNFを、ある変数の肯定変数とある変数の否定変数からなる拘束節及び同じ変数の肯否を入れ替えた拘束節の組合せを、そのいずれかの変数について、その肯定変数をもう片方の肯定変数に、その否定変数をもう片方の否定変数にしたCNFとした、コンピュータ読み取り可能な記録媒体。請求項1~8いずれかの項において、合成CNFを、合成CNFの任意の多値変数の肯否を入れ替えたCNFとした、コンピュータ読み取り可能な記録媒体。請求項1~9いずれかの項において、データに、CNEを表すデータに加えて、CNFが真となる真理値割当を表すデータを追加したデータとした、コンピュータ読み取り可能な記録媒体。請求項1~10いずれかの項において、多値CNFの錯綜目的節を、閉孔節とした、コンピュータ読み取り可能な記録媒体。多値変数について、全ての多値否定変数から変数を1つ取り除いた閉孔節の全ての場合の節、及び多値肯定変数2つからなる開孔関連節の全ての組合せの場合の節により構成される多値MUCを表すデータが記録されたコンピュータ読み取り可能な記録媒体。請求項12において、多値MUCを、三値MUC、四値MUC、五値MUC、六値MUC、七値MUCとした、コンピュータ読み取り可能な記録媒体。コンピュータを下記手段として機能させるためのプログラム。構成する多値CNFの条件として、多値の個数または/及び多値変数のデータを受け取り構成部に出力する入力部。入力部から構成する多値CNFの条件を受け取り、条件を満たす多値変数を定め、その多値変数全ての組合せの開孔関連節と、全ての多値変数の錯綜目的節を構成し、それらの論理積となる多値CNFを構成して出力部に出力する構成部。構成部から多値CNFを受け取り、データを出力する出力部。請求項14において、入力部が多値CNFの個数も追加条件として受け取り構成部に出力し、構成部が多値CNFに替えて入力部が受け取った個数だけ異なる多値CNFを含む合成CNFを構成して出力し、出力部が合成CNFのデータを出力するプログラム。請求項14~15いずれかの項において、入力部が真となる真理値割当の個数も条件として受け取り構成部に出力し、構成部が、合成CNFを真とする真理値割当の個数が入力部から受け取った個数になるよう、多値真理値割当で偽となる拘束節を追加した合成CNFを構成して出力するプログラム。請求項14~16いずれかの項において、入力部が真となる真理値割当も条件として受け取り構成部に出力し、構成部が、合成CNFを真とする真理値割当が入力部から受け取った真理値割当になるよう、多値真理値割当で偽となる拘束節を追加した上で変数の肯否を変更した合成CNFを構成して出力するプログラム。コンピュータを下記手段として機能させるためのプログラム。構成する多値MUCの条件として、多値の個数または/及び多値変数のデータを受け取り構成部に出力する入力部。入力部から構成する多値MUCの条件を受け取り、条件を満たす多値変数を定め、その多値変数全ての組合せの開孔関連節と、全ての多値変数の閉孔節を構成し、それらの論理積となる多値MUCを構成して出力部に出力する構成部。構成部から多値MUCを受け取り、データを出力する出力部。上記の通り、計算複雑性の高い充足可能なCNFSATのデータ構造を構成するのは困難だった。そのようなCNFSATを効率的に構成するプログラムが無かった。ブール式による論理を拡張して多値を実現するデータ構造やプログラムが無かった。本発明の解決しようとする課題は、計算複雑性の高いCNFSATのデータ構造を提供する点にある。またそのようなCNFを用いて取り扱いの容易なMUCのデータ構造を提供する点にある。また計算複雑性の高いCNFSATを構成するようコンピュータを動作させるプログラムを提供する点にある。またCNFを真にする真理値割当が多値に対応する真理値割当のみになるCNFのデータ構造を提供する点にある。また多値を実現するCNFを構成するようコンピュータを動作させるプログラムを提供する点にある。上記問題を解決するため、本発明では、多値CNFを含むCNFを表すデータ構造が記録されたコンピュータ読み取り可能な記録媒体とした。なお、多値CNFとは多値に対応する変数以下、多値変数と呼ぶの真理値割当に含まれる偽が1つの時のみ真となるCNFである。詳細は後述する。なお本発明では、肯定リテラルを肯定変数、否定リテラルを否定変数、リテラルを肯否変数と呼び、多値変数も同様に多値肯定変数、多値否定変数と呼ぶ。以下に多値CNFを説明する。多値CNFは次の二種類の節からなるCNFである。全ての多値否定変数からなる節この節を錯綜目的節と呼ぶ、及び多値肯定変数2つからなる節の全ての組合せこの節を開孔関連節と呼ぶ。本発明では、多値CNFを多値CNFA,B,...のように表記する。下記に多値CNFを例示する。二値CNFA,B=¬A∨¬B∧A∨B三値CNFA,B,C=¬A∨¬B∨¬C∧A∨B∧B∨C∧C∨A四値CNFA,B,C,D=¬A∨¬B∨¬C∨¬D∧A∨B∧A∨C∧A∨D∧B∨C∧B∨D∧C∨D五値CNFA,B,C,D,E=¬A∨¬B∨¬C∨¬D∨¬E∧A∨B∧B∨C∧C∨D∧D∨E∧E∨A∧A∨C∧C∨E∧E∨B∧B∨D∧D∨A六値CNFA,B,C,D,E,F=¬A∨¬B∨¬C∨¬D∨¬E∨¬F∧A∨B∧A∨C∧A∨D∧A∨E∧A∨F∧B∨C∧B∨D∧B∨E∧B∨F∧C∨D∧C∨E∧C∨F∧D∨E∧D∨F∧E∨F七値CNFA,B,C,D,E,F,G=¬A∨¬B∨¬C∨¬D∨¬E∨¬F∨¬G∧A∨B∧A∨C∧A∨D∧A∨E∧A∨F∧A∨G∧B∨C∧B∨D∧B∨E∧B∨F∧B∨G∧C∨D∧C∨E∧C∨F∧C∨G∧D∨E∧D∨F∧D∨G∧E∨F∧E∨G∧F∨G八値CNF及びそれ以上の多値CNFも同様に定義可能である。なお一値CNFを次のようにすることもある。一値CNFA=¬A多値CNFは、多値変数の真理値割当において、偽の値を2つ以上含むもの、及び全て真となるもので偽となる。多値CNFが真となるのは多値変数に偽をただ1つ含む真理値割当のみである。また多値CNFは、このような真理値割当とCNFの真偽の関係を満たすCNFの中で最小であり、多値変数以外の変数を含まないという特徴を持つ。また、多値CNFが真となる真理値割当以下、多値真理値割当と呼ぶの各変数の値以下、多値真理値と呼ぶは、ある多値真理値が偽の時、他の多値真理値が全て真になるという特徴を持つ。そのため、ある多値変数が偽かどうかを確認することで、他の多値変数が全て真になるかを判定することもできる。本発明では、ある多値真理値割当において、他の多値真理値割当での多値変数の値がこの多値真理値割当と全て異なる多値変数を多値真理値割当の開孔変数と呼ぶ。つまり多値CNFの場合、ある多値真理値割当で否定変数の値が真となる変数が、その多値真理値割当の開孔変数となる。ここで、多値真理値割当それぞれを多値の値と対応付けることにより、CNFによる多値を実現することができる。多値真理値割当は開孔変数と一対一に対応するため、多値の値は、対象となる多値否定変数が真となる値と定めることができる。このように多値を定めることで、多値論理を真偽二値の論理として扱うことができる。また本発明では、CNFを、単数または複数の異なる多値CNFと、CNFに含まれる単数または複数の多値CNFのそれぞれ単数または複数の多値肯否変数からなる節を含むCNFを表すデータ構造とすることがある。このCNFを合成CNFと呼ぶ。なお簡単のため、単数または複数の多値CNFの論理積も合成CNFと呼ぶことがある。特に、合成CNFは下記のAとBの条件を満たすCNFとすることがある。A:1つ以上の多値CNFを含む。B:CNFに含まれる多値CNFのうち1つ以上、特に3つ以上の多値CNFそれぞれの、多値否定変数1つ以上または多値肯定変数1つを含む節この節を拘束節と呼ぶを含む。拘束節は、多値CNEが真となる多値真理値割当のいずれかにおいて偽となる節である。複数の多値変数を含む場合は、複数の多値真理値割当を組合せた真理値割当のいずれかで偽となる。つまり、多値CNFは拘束節により真となる多値真理値割当が制限され、全ての多値について自由に真になることができなくなる。結果として拘束節は多値の論理関係を表し、多値はお互いに拘束節により制限を受ける。例えば、三値CNF1X,Y,Z、三値CNF2A,B,C、三値CNF3P,Q,Rが合成CNFに含まれる場合を考える。この時X∨A∨Pのようなそれぞれの多値の多値変数を含む拘束節が合成CNFに含まれる場合がある。合成CNF=三値CNF1∧三値CNF2∧三値CNF3∧X∨A∨Pこの結果、X、A、Pは同時に偽になることができず、その自由度が制限される。同様に、¬Y∨A∨¬P∨¬Qのような、多値肯定変数に替えて多値否定変数を1つ以上含む節が拘束節となる場合もある。合成CNF=三値CNF1∧三値CNF2∧三値CNF3∧¬Y∨A∨¬P∨¬Qこの結果、Y、P、Qが偽かつAが真に同時になることができず、自由度が制限される。また¬Y∨Aのような、合成CNFに含まれる多値CNFのうち一部の多値CNFにおける多値変数を含む節が拘束節となる場合もある。合成CNF=三値CNF1∧三値CNF2∧三値CNF3∧¬Y∨A上記の例の通り拘束節にはさまざまな節があるが、多値真理値割当で偽になる節ということが重要であり、上記の例に限らない。逆に合成CNFで真となる真理値割当から拘束節を構成することがある。この場合、合成CNFで真となる真理値割当から任意の変数を取り出し、その真理値割当で偽となる節を構成すれば良い。このように合成CNFを構成することにより、このCNFは充足可能かつ対称性の高い多値変数によりCNFが構成される。また、似たような多値真理値割当でもCNFの真偽が異なるため、絞り込みの困難な計算複雑性の高いCNFとなる。なお、任意の変数とは、従来のコンピュータで用いられる方法で選択される多値変数とする。例えばランダムに選択する場合がある。あるいはプログラムであらかじめ定められた値とする場合がある。このように様々な方法があるが、これらの例に限定されない。以降も明示しない場合は同様とする。なお、CNFにX∨Y∧¬X∨¬Yの節を含む多値変数がある場合、充足可否についてX=¬Y、¬X=Yが成立する。よって拘束節にX∨Y∧¬X∨¬Yが含まれる合成CNFは、Xを¬Yに置き換え、¬XをYに置き換え、X∨Y∧¬X∨¬Yを削除した合成CNFと充足可否が等しい。よって、X∨Y∧¬X∨¬Yのような関係にある拘束節が存在する場合、その節による制約を変数の肯否の制約に置き換えることがある。つまり、合成CNFについて、ある2つの変数の肯定変数からなる拘束節及び否定変数からなる拘束節の組合せを、そのいずれかの変数について、その肯定変数をもう片方の否定変数に、その否定変数をもう片方の肯定変数にしたCNFとする。同様に、CNFにX∨¬Y∧¬X∨Yの節を含む多値変数がある場合、充足可否についてX=Y、¬X=¬Yが成立する。よって拘束節にX∨¬Y∧¬X∨Yが含まれる合成CNFは、XをYに置き換え、¬Xを¬Yに置き換え、¬X∨¬Y∧¬X∨Yを削除した合成CNFと充足可否が等しい。よって、X∨¬Y∧¬X∨Yのような関係にある拘束節が存在する場合、その節による制約を変数の肯否の制約に置き換えることがある。つまり、合成CNFについて、ある変数の肯定変数とある変数の否定変数からなる拘束節及び同じ変数の肯否を入れ替えた拘束節の組合せを、そのいずれかの変数について、その肯定変数をもう片方の肯定変数に、その否定変数をもう片方の否定変数にしたCNFとする。このように、拘束節の制約が全て変数の肯否による制約に変更できる合成CNFの場合、そのCNFには拘束節が含まれない場合がある。なお、拘束節は単独の多値CNFについても同様に考えることができる。複数の多値CNFからなる合成CNFと同様、ある多値CNFに、全ての多値真理値割当で真とならないCNFを追加した合成CNFを考えることができる。例えばある多値CNFの1つの多値肯定変数からなる拘束節や、複数の多値否定変数からなる拘束節などである。ただし、単独の多値CNFに対する拘束節は、吸収律により多値CNFの節の一部を吸収する。例えば、多値肯定変数1つからなる拘束節は、同じ変数を持つ開孔関連節を吸収する。複数の多値否定変数からなる拘束節は、錯綜目的節を吸収する。特に、錯綜目的節から1つの多値変数を除いた拘束節は、錯綜目的節を吸収するとともに多値真理値割当のうちただ一つでのみ偽となる。つまり、拘束節とその拘束節を偽にする多値が一対一に対応する。このような節をある多値に対する閉孔節と呼び、閉孔節が偽になる多値真理値割当に対応する開孔変数を閉孔変数と呼ぶ。また、多値CNFの錯綜目的節を閉孔節に置き換えたCNFもまた合成CNFと呼ぶ。また、ある多値CNFの錯綜目的節を、全ての多値変数の閉孔節で置き換えたCNFはMUCとなる。このMUCを多値MUCと呼ぶ。多値MUCは多値変数の対称性の高いMUCであり、節の追加によりMUCの構造が大きく変わることは少ない。構造が大きく変化するのは、多値肯定変数1つからなる節や、多値否定変数のみからなる節を付加した時に限られる。また、多値MUCから開孔関連節を削除したCNFは、その削除した開孔関連節に含まれる変数のみが偽で、他の変数が真となる真理値割当でCNFが真になるという特性を持つ。多値MUCも、多値CNFと同様に多値MUCA,B,...のように表記する。下記に多値MUCを例示する。二値MUCA,B=¬A∧¬B∧A∨B三値MUCA,B,C=¬B∨¬C∧¬A∨¬C∧¬A∨¬B∧A∨B∧B∨C∧C∨A四値MUCA,B,C,D=¬B∨¬C∨¬D∧¬A∨¬C∨¬D∧¬A∨¬B∨¬D∧¬A∨¬B∨¬C∧A∨B∧A∨C∧A∨D∧B∨C∧B∨D∧C∨D五値MUCA,B,C,D,E=¬B∨¬C∨¬D∨¬E∧¬A∨¬C∨¬D∨¬E∧¬A∨¬B∨¬D∨¬E∧¬A∨¬B∨¬C∨¬E∧¬A∨¬B∨¬C∨¬D∧A∨B∧B∨C∧C∨D∧D∨E∧E∨A∧A∨C∧C∨E∧E∨B∧B∨D∧D∨A六値MUCA,B,C,D,E,F=¬B∨¬C∨¬D∨¬E∨¬F∧¬A∨¬C∨¬D∨¬E∨¬F∧¬A∨¬BV¬D∨¬E∨¬F∧¬A∨¬B∨¬C∨¬E∨¬F∧¬A∨¬B∨¬C∨¬D∨¬F∧¬A∨¬B∨¬C∨¬D∨¬E∧A∨B∧A∨C∧A∨D∧A∨E∧A∨F∧B∨C∧B∨D∧B∨E∧B∨F∧C∨D∧C∨E∧C∨F∧D∨E∧D∨F∧E∨F七値MUCA,B,C,D,E,F,G=¬B∨¬C∨¬D∨¬E∨¬F∨¬G∧¬A∨¬C∨¬D∨¬E∨¬F∨¬G∧¬A∨¬B∨¬D∨¬E∨¬F∨¬G∧¬A∨¬B∨¬C∨¬E∨¬F∨¬G∧¬A∨¬B∨¬C∨¬D∨¬F∨¬G∧¬A∨¬B∨¬C∨¬D∨¬E∨¬G∧¬A∨¬B∨¬C∨¬D∨¬E∨¬F∧A∨B∧A∨C∧A∨D∧A∨E∧A∨E∧A∨G∧B∨C∧B∨D∧B∨E∧B∨F∧B∨G∧C∨D∧C∨E∧C∨F∧C∨G∧D∨E∧D∨F∧D∨G∧E∨F∧E∨G∧F∨Gまた本発明のデータ構造を、多値ごとの多値変数の組合せ及び拘束節を表すデータ構造とすることもある。例えば上記の例だと、{X,Y,Z}、{A,B,C}、{P,Q,R}、X∨A∨P、¬Y∨A∨¬P∨¬Qのように、多値変数の組と節が識別可能になっており、さらにそれぞれの変数の構成及び肯否がわかるようにしたデータ構造とすることがある。このようなデータ構造から、それぞれの多値CNFを構成し、拘束節を構成し、それぞれの論理積を構成することで合成CNFを構築できる。なお、多値が1つだけの場合や、拘束節を含まない場合も同様である。本発明では、データ構造を単にCNFを表現するデータ構造だけにするのではなく、CNFが真となる真理値割当も追加したデータ構造とすることもある。またCNFや真理値割当を表現するデータ構造を従来のコンピュータで用いられる構造とする場合もある。バイナリ列や節を配列やテーブルなどの構造とする場合もある。また変数番号の偶数奇数で変数の肯定否定を定める構造もある。あるいはCNFや真理値割当の省略形を表すデータ構造などの場合もある。また暗号の鍵として使用する場合は、CNFや真理値割当に難読化が施されたデータ構造となる場合もある。また暗号の落し戸関数となる場合は、任意のNP検索問題から多項式の集合を構成することができるため例えば非特許文献1参照、そのようにしてCNFを多項式化したデータ構造となる場合もある。このように様々なデータ構造があるが、これらの方法に限定されない。また、特に明記しない限り他のCNFや真理値割当を表すデータ構造も同様とする。また本発明では、上記の多値CNFや合成CNFの任意の変数の肯否を入れ替えたCNFのデータ構造とすることがある。このようにすることで、CNFの変数の構成から多値CNFを類推することを困難にすることができる。この場合、上記の多値ごとの多値変数の組合せ及び拘束節を表すデータ構造は、多値変数の肯否で多値CNFの肯否の入れ替えを示すことがある。例えば{¬X,Y,Z}、{A,¬B,C}、{P,Q,¬R}、¬X∨A∨P、¬Y∨A∨¬P∨¬Qの場合、三値CNF1X,Y,2のXの肯否を入れ替えたCNFと、三値CNF2A,B,CのBの肯否を入れ替えたCNFと、三値CNF3P,Q,RのRの肯否を入れ替えたCNFが合成CNF含まれる。また拘束節も同様にXの肯否が入れ替わっている。また本発明では、プログラムを、上記の多値CNFをコンピュータに構成させるために、コンピュータを下記手段として機能させるためのプログラムとした。構成する多値CNFの条件として、多値の個数または/及び多値変数のデータを受け取り構成部に出力する入力部。入力部から構成する多値CNFの条件を受け取り、条件を満たす多値変数を定め、その多値変数全ての組合せの開孔関連節と、全ての多値変数の錯綜目的節を構成し、それらの論理積となる多値CNFを構成して出力部に出力する構成部。構成部から多値CNFを受け取り、データを出力する出力部。コンピュータは多値CNFの情報を入力として受け取ると、まずは多値変数の設定を行う。入力に多値変数の個数が含まれている場合は、その個数と合うように多値変数を選択し設定する。あるいは、入力に構成する多値変数自体が含まれている場合はその多値変数を構成する多値CNFの多値変数として設定する。あるいは入力に多値変数と多値変数の個数が含まれている場合は、その多値変数に新たに任意の多値変数を追加して、多値変数の個数が一致するように多値変数を設定する。あるいは入力に多値変数と追加する多値変数の個数が含まれている場合は、その多値変数に指定された数だけ新たに任意の多値変数を追加して多値変数を設定する。あるいは入力に多値変数や多値変数の総数に関する情報が含まれない場合は、任意の個数の任意の多値変数を設定することもある。なお、上記の任意の多値変数及び多値変数の個数の設定方法は、従来のコンピュータで用いられる方法とする。例えばランダムに選択する場合がある。あるいはプログラムであらかじめ定められた値とする場合がある。このように様々な方法があるが、これらの例に限定されない。以降も明示しない場合は同様とする。次に、設定した多値変数で構成される多値CNFを表すデータ構造を作成する。多値CNFは上記のCNFである。多値変数の個数に合わせて多値CNFを構成する。そして、このように構成したCNFのデータを出力する。また本発明では、上記の合成CNFを複数組合せた合成CNFを出力することがある。この場合、入力に合成CNFの個数を表す情報が含まれることがある。また本発明では、上記の合成CNFに拘束節を追加した合成CNFを出力することがある。この場合、入力に拘束節の条件を表す情報が含まれることがある。例えば、合成CNFに含まれる真理値割当のうち、真にするあるいは偽とする個数が含まれる。合成CNFを真にする多値真理値割当は、それぞれの多値CNFの多値真理値割当を組合せた真理値割当から、拘束節が偽となる真理値割当を取り除いたものとなる。よって、合成CNFを真にする真理値割当が入力で指定された個数になるように拘束節この拘束節は、複数の任意の多値の任意の多値変数で構成されているを構成し、論理積として組合せて出力する。またこの場合、合成CNFを真にする真理値割当のデータ構造を合わせて出力することもある。また別の例として、合成CNFが唯一真となる1つの真理値割当が拘束節の条件として含まれることがある。この場合、真理値割当に対応する変数が多値変数として指定されたと考えることができるため、上記の多値変数が指定された場合と同様に合成CNFを構成する。そして真理値割当が1つのみで真になるということは、上記の真となる真理値割当の個数を1つと指定されたと考えることができるため、上記の真理値割当の個数を指定された場合と同様に合成CNFを構成する。そして、合成CNFを真とする真理値割当と入力として与えられた真理値割当を比較し、真偽が異なる変数について、合成CNFの変数の肯否を入れ替える。このようにすることで、合成CNFは入力で指定された真理値割当のみで真となるCNFとなる。また本発明では、多値CNFに替えて多値MUCに対応するデータ構造を構成して出力することがある。この場合、多値CNFを構成する代わりに多値MUCを構成し、そのデータ構造を出力する。例えば、合成CNFに含まれる多値CNFの個数が含まれる。この場合、前述の方法でこの個数だけ合成CNFを作成し、論理積として組合せて出力する。あるいは、入力に多値変数自体が含まれる場合は、その多値変数がどのような集合に分られるかがわかるようになっていることがある。例えば多値変数がA、B、C、Dの場合、{A,B},{A,C,D},{A,B,C},{C,D},{B,D}のように、多値変数の組合せがわかるようになっている。この場合、この多値変数の組合せごとに合成CNFを作成し、論理積として組合せて出力する。また、入力に合成CNFの個数を示す情報が含まれない場合もあるが、その場合は任意の個数の合成CNFを構成し、論理積として組合せて出力する。また本発明では、上記の合成CNFや多値MUCの任意の変数の肯否が入れ替わったCNFに対応するデータ構造を出力することがある。本発明により、多値の構造の複雑性を活用した複雑性の高い合成CNFを構成することが可能となり、結果として計算複雑性の高いCNFSATのデータ構造を実現できた。また、そのような計算複雑性の高いCNFSATを構成するようコンピュータを動作させることが可能となった。また本発明により、CNFを真にする真理値割当が多値に対応する真理値割当のみになるCNFのデータ構造を実現することができた。また、多値を実現するCNFを構成するようコンピュータを動作させることが可能になった。以下に本発明の実施形態の一つについて説明する。本データ構造はCNFとして表される。一値から七値までの多値CNFは前述の通りである。また、八値CNFより大きな多値CNFも同様に構成できる。また、複数の異なる多値CNFから構成される合成CNFや、拘束節を含むCNFの例も前述の通りである。多値MUCの構成もそれぞれ前述の通りとなる。以下に本発明の別の実施形態の一つについて、図面に基づき説明する。図1は本発明のプログラムの構成図である。本プログラムは以下の構成となる。構成するCNFの条件を表すデータを受け取る入力部111。入力部111から受け取ったデータを元に、合成CNFを構成する構成部112。合成CNFを表すデータを出力する出力部113。入力部111の詳細を説明する。入力部111はメモリ、ストレージ、IO、他のプログラムなど、通常のコンピュータで使用される入出力部からの入力を受け取る。受け取る入力には、多値の個数、多値変数、多値CNFの個数、真となる真理値割当の個数、真となる真理値割当、などが含まれる。あるいは、出力として多値CNFではなく多値MUCを出力する指定が含まれる場合がある。入力部111はこれらのデータを受け取ると、構成部112にデータを出力する。構成部112の詳細を説明する。構成部112は、入力部から条件を示すデータを受け取ると、まず条件に合致するように多値変数の集合を構成する。次にそれぞれの多値変数の集合について多値CNFを構成し、その論理積として合成CNFを構成する。また、条件に多値MUCを出力することが指定されている場合は、多値CNFではなく多値MUCを構成する。そして、真となる真理値割当の個数が指定されている場合は、合成CNFを真とする真理値割当で偽となる拘束節を合成CNFに追加し、真となる真理値割当の個数が条件と一致するように調整する。また、真となる真理値割当が指定されている場合は、まず合成CNFに拘束節を追加して合成CNFが真となる真理値割当が1つになるように調整し、その後合成CNFの変数の肯否を変更してその真理値割当が入力から受け取った真理値割当と一致するようにする。構成部112は、合成CNF/多値CNF/多値MUCを上記のように構成すると、出力部113に出力する。なお合成CNFを出力する際に、真となる真理値割当も出力することがある。出力部113の詳細を説明する。出力部113は、構成部112からCNFや真理値割当のデータを受け取り、他のプログラムなど通常のコンピュータで使用される入出力部への出力を行う。他のプログラムには通常の表示プログラムや演算プログラムなど、様々なプログラムが存在する。変換したデータには、変換結果だけではなく、変換で使用した変数や節の対応関係、データ作成の途中で生成したデータなどを含むことがある。"