JP5287693B2 - プログラム検査装置 - Google Patents
プログラム検査装置 Download PDFInfo
- Publication number
- JP5287693B2 JP5287693B2 JP2009288239A JP2009288239A JP5287693B2 JP 5287693 B2 JP5287693 B2 JP 5287693B2 JP 2009288239 A JP2009288239 A JP 2009288239A JP 2009288239 A JP2009288239 A JP 2009288239A JP 5287693 B2 JP5287693 B2 JP 5287693B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- abstraction
- inspection
- established
- constraint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
本発明は、プログラム検査装置に関する。
車両の制御用プログラム等の各種プログラムの不具合をなくすためには、網羅的検査が必要である。その検査手法として、例えば、形式検査手法(形式的検証手法)が利用される。従来の形式検査手法では、検査対象が主に整数やブール型変数に限定されており、浮動少数点変数の検査には適用できていない。しかし、プログラムは、固定小数点よりも実数の表現範囲の広い浮動小数点が用いられることがある。特許文献1には、車両制御プログラムの開発支援装置において、浮動小数点及び整数のシミュレーション結果を出力することが開示されている。また、図7には、IEEE754標準に基づいた単精度(32ビット)の浮動小数点の実数表現と固定少数点の実数表現の一例を示している。
しかし、図7の例でも判るように、浮動小数点の場合、exponet(指数部)の値によって小数点が移動し、表現できる実数の範囲が非常に大きい。そのため、浮動小数点変数を用いたプログラムの検査を行う場合、表現可能な小数点の桁毎に検査が必要となる。そのため、検査に要する計算量が膨大となり、メモリ不足になる虞があり、検査が不可能になる場合がある。そこで、固定小数点を用いた場合には、表現できる範囲が狭くなり、一般的な検査ができない。
そこで、本発明は、浮動小数点を含む実数を用いるプログラムの検査において計算量を抑制したプログラム検査装置を提供することを課題とする。
本発明に係るプログラム検査装置は、浮動少数点を含む実数を用いるプログラムを検査するプログラム検査装置であって、検査対象のプログラムに対する制約を強化する制約強化抽象化手段と、検査対象のプログラムに対する制約を緩和する制約緩和抽象化手段と、制約強化抽象化で制約強化抽象化を行い、検査対象のプログラムが成立するか否かを判定するとともに、制約緩和抽象化で制約緩和抽象化を行い、検査対象のプログラムが成立するか否かを判定する判定手段を備えることを特徴とする。
このプログラム検査装置では、制約強化抽象化手段によって検査対象のプログラムに対する制約を強化する制約強化抽象化を行い、判定手段によって制約強化抽象化を行った上で検査対象のプログラムが成立するか否かを判定する。制約強化抽象化を行っても、プログラムが成立する解が生成できる場合には、制約強化前のもとのプログラムにも解が存在することになる。また、プログラム検査装置では、制約緩和抽象化手段によって検査対象のプログラムに対する制約を緩和する制約緩和抽象化を行い、判定手段によって制約緩和抽象化を行った上で検査対象のプログラムが成立するか否かを判定する。制約緩和抽象化を行っても、プログラムが成立する解が生成できない場合には、制約緩和前のもとのプログラムにも解が存在しないことになる。プログラム検査装置では、このような制約強化抽象化及び制約緩和抽象化の性質を利用してプログラムの検査を行うことにより、検査可能な浮動小数点を含む実数のビット幅を決定でき、検査精度を確保しつつ、検査の計算量を抑制できる。
本発明の上記プログラム検査装置では、制約強化抽象化手段で制約強化抽象化を行い、判定手段でプログラムが成立しないと判定した場合に、制約緩和抽象化手段で制約緩和抽象化を行い、判定手段でプログラムが成立しないと判定した場合には検査に用いる実数のビット幅を増加し、当該増加したビット幅の実数を用いて制約強化抽象化手段で制約強化抽象化を再度行い、判定手段でプログラムが成立するか否かを判定すると好適である。
このプログラム検査装置では、まず、制約強化抽象化手段によって制約強化抽象化を行った上で、判定手段によってプログラムが成立するか否かを判定する。この際、プログラムが成立しないと判定した場合に、プログラム検査装置では、制約緩和抽象化手段によって制約緩和抽象化を行った上で、判定手段によってプログラムが成立するか否かを判定する。この際、プログラムが成立すると判定した場合、プログラム検査装置では、検査に用いる浮動小数点を含む実数のビット幅を増加する。そして、プログラム検査装置では、その増加したビット幅の実数を用いて制約強化抽象化手段によって制約強化抽象化を再度行った上で、判定手段によってプログラムが成立するか否かを判定する。プログラム検査装置では、上記の処理を繰り返し行い、検査可能な浮動小数点を含む実数のビット幅を決定し、プログラムの検査を行う。このように、プログラム検査装置では、制約強化抽象化と制約緩和抽象化の性質を利用しながら各抽象化を交互に行うことにより、検査可能な浮動小数点を含む実数の最小のビット幅を決定することができる。
本発明は、制約強化抽象化及び制約緩和抽象化の性質を利用してプログラムの検査を行うことにより、検査精度を確保しつつ、検査の計算量を抑制できる。
以下、図面を参照して、本発明に係るプログラム検査装置の実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。
本実施の形態では、本発明に係るプログラム検査装置を、車両のECU等に搭載されるCコードの制御プログラムの検査を行うプログラム形式検査装置に適用する。本実施の形態に係るプログラム形式検査装置は、検査対象の制御プログラムにおいて実数として少なくとも浮動小数点実数を用いており、浮動小数点実数がIEEE754標準に基づいて32ビットの単精度である(図7参照)。また、実施の形態に係るプログラム形式検査装置は、Over-approximationとUnder-approximation及びSAT[satisfiability]ソルバーを利用した形式検査装置である。本実施の形態には、2つの形態があり、第1の実施の形態がOver-approximationとUnder-approximationを1回ずつ交互に適用する形態であり、第2の実施の形態がOver-approximationとUnder-approximationを同時に適用する形態である。
図1〜図4を参照して、第1の実施の形態に係るプログラム形式検査装置1について説明する。図1は、本実施の形態にプログラム形式検査装置の構成図である。図2は、Over-approximationとUnder-approximationの性質の説明図である。図3は、Under-approximationの適用例である。図4は、Over-approximationの適用例である。
プログラム形式検査装置1について具体的に説明する前に、Over-approximationとUnder-approximation及びSATソルバーについて説明しておく。まず、図2を参照して、Over-approximationとUnder-approximationの性質について説明する。図2に示す例の場合、内側が斜線の丸S1,S5,S9が検証対象の問題(プログラム)の解とする。Over-approximationは、検証対象の問題の制約を緩和し、もとの問題より解を多く生成させる。図2に示す例の場合、内側が斜線の丸S1,S5,S9を含む9つの丸S1〜S9が制約を緩和したときの解である。Over-approximation(more solutions)したにもかかわらず、解が生成できない場合、制約緩和前のもとの問題にも解が存在しない。一方、Under-approximationは、検証対象の問題の制約を強化し、もとの問題より解を少なく生成させる。図2に示す例の場合、内側が斜線の太丸S5だけが制約を強化したときの解である。Under-approximation(fewer solutions)しても、解が生成できる場合、制約強化前のもとの問題にも解が存在する。
図3を参照して、Under-approximationを実際に適用した例について説明する。この例では、Under-approximationは、round−off(丸め)制約を強化し、round−offによる近似を禁止する。図3に示す例では、OriginalのExp.[Exponent]:010,Mant.[Mantissa]:1.001(1.1250・2−1)にoperandsのExp.:001,Mant.:1.000(1.0000・2−2)を加算する問題であり、7ビット幅の表現である。
まず、operands(Exp.:001,Mant.:1.000)のExp.をOriginal(Exp.:010,Mant.:1.001)のExp.と合わせるために、Mant.right−shiftedしてExp.:010,Mant.:0.10000(0.5000・2−1)とする。そして、それを加算すると、Mant.substractedとしてExp.:010,Mant.:1.1010(1.6250・2−1)となる。このExp.:010,Mant.:1.1010(1.6250・2−1)をNormalizationしたExp.:010,Mant.:1.1010(1.6250・2−1)が加算結果である。この加算結果のExp.:010,Mant.:1.1010は、8ビット表現なので、7ビット表現する。この際、Under-approximationでは、round−up及びround−downなしで7ビットで正確に表現できる場合のみ、この加算演算を満たす入力と出力として認める。この例の場合、Exp.:010,Mant.:1.1010を、round−up及びround−downすることなく、Exp.:010,Mant.:1.101(1.6250・2−1)と7ビット表現でき、Under-approximation(fewer solutions)しても、解が生成できたことになる。
図4を参照して、Over-approximationを実際に適用した例について説明する。この例では、Over-approximationは、round−off制約を緩和し、round−offによる近似を許容する。図4に示す例では、OriginalのExp.:010,Mant.:1.001(1.1250・2−1)にoperandsのExp.:001,Mant.:1.001(1.1250・2−2)を加算する問題であり、7ビット幅の表現である。
まず、operands(Exp.:001,Mant.:1.001)のExp.をOriginal(Exp.:010,Mant.:1.001)のExp.と合わせるために、Mant.right−shiftedしてExp.:010,Mant.:0.1001(0.5625・2−1)とする。そして、それを加算すると、Mant.substractedとしてExp.:010,Mant.:1.1011(1.6875・2−1)となる。このExp.:010,Mant.:1.1011(1.6875・2−1)をNormalizationしたExp.:010,Mant.:1.1011(1.6875・2−1)が加算結果である。この加算結果のExp.:010,Mant.:1.1011は、8ビット表現なので、7ビット表現する。この際、Over-approximationでは、round−up及びround−downで近似することを許容するので、round−up及びround−downをしたものも加算演算を満たす入力と出力として認める。この例の場合、Exp.:010,Mant.:1.1011を、round−upしたExp.:010,Mant.:1.110(1.7500・2−1)とround−downしたExp.:010,Mant.:1.101(1.6250・2−1)も、Over-approximation(more solutions)の解として許容する。
SATソルバーは、検査対象のプログラムのコードと検査項目のCNF[Conjunctive Normal Form]式毎に、各変数や常数に各値をそれぞれ入力し、CNF式の条件にあった値を探索する。その探索の結果、全てのCNF式についてTrue[T]となる値(解)が探索できると、検査項目(プログラムのオリジナル性質)が成立との結果と解情報を出力する。一方、探索の結果、全てのCNF式がTrue[T]となる解が探索できないと、検査項目(プログラムのオリジナル性質)が不成立との結果とその不成立の証明手順を出力する
検査項目を織り込んだCコードのプログラムの一例を示す。式(1)、式(2)、式(3)が加算演算のCコードプログラムであり、式(4)が検査項目である。x1,x2,x3は、32ビットの浮動小数点の変数である。a,bは、32ビットの浮動小数点の常数である。
式(1)のCNF式は式(5)となり、式(2)のCNF式は式(6)となり、式(3)のCNF式は式(7)となり、式(4)のCNF式は式(8)となる。t1は、テンポラリー変数である。x131はx1の32ビット目のブール変数であり、x10はx1の1ビット目のブール変数であることを示し、x2,x3,t1,a,bについても同様である。但し、a,bは、ブール常数である。Tは、真理値Trueを意味する。
SATソルバーでは、式(5)、式(6)、式(7)、式(8)が入力されると、全ての式が真理値Trueとなるx131,・・・,x10、x231,・・・,x20、x331,・・・,x30を探索する。そして、全ての式(5)、式(6)、式(7)、式(8)がTrueとなる解が探索できた場合には検査項目(プログラムのオリジナル性質)が成立したと判定する。なお、上記の説明では通常の32ビットのビット幅に対応したCNF式(5)〜(8)を用いてSATソルバーでの検査を行う場合であるが、プログラム形式検査装置1で32ビットからビット幅を減らしてSAT検査を行う場合には減らしたビット幅に対応したCNF式を用いてSATソルバーでの検査を行うことになる。したがって、プログラム形式検査装置1では、変数や常数の表現においてSAT検査に用いられないビットがあり、計算量を削減できる。
それでは、プログラム形式検査装置1について具体的に説明する。プログラム形式検査装置1は、パーソナルコンピュータ等のコンピュータ上に構成され、記憶装置Mに格納されている制御プログラムの検査(検証)を行う。特に、プログラム形式検査装置1では、検査に要する計算量を削減し、メモリ効率を向上させるために、Over-approximationとUnder-approximationの性質を利用して浮動小数点実数のビット幅を減らして、SATソルバーで検査を行う。そのために、プログラム形式検査装置1は、浮動小数点抽象化部11とSAT検査部12を備えている。
浮動小数点抽象化部11については説明する。浮動小数点抽象化部11では、まず、検査する際のビット幅の初期値を選定する。このビット幅の初期値は、検査精度等が考慮され、検査する際の浮動小数点実数表現に用いる最小のビット幅である。なお、プログラム形式検査装置1では、浮動小数点実数表現のビット幅としてこの初期値から1ビットずつ増加してゆき、SATソルバーで検査可能なビット幅を決定する。検査途中の各ビット幅での浮動小数点実数表現では、少なくとも1ビット分のexponentを含むものとする。
浮動小数点抽象化部11では、そのときに設定されているビット幅で表現される浮動小数点実数を用いたプログラムに対して、under抽象化(Under-approximation)を行う。この際、Under-approximationしても、検査対象のプログラムの解が生成できた場合、検査対象のプログラムにも解が存在することになる。
under抽象化を行い、SAT検査部12でUnder-approximationの性質が成立していないと判定した場合、浮動小数点抽象化部11では、そのときに設定されているビット幅で表現される浮動小数点実数を用いたプログラムに対して、over抽象化(Over-approximation)を行う。この際、Over-approximationしても、検査対象のプログラムの解が生成できない場合、検査対象のプログラムにも解が存在しないことになる。
over抽象化を行い、SAT検査部12でOver-approximationの性質が成立したと判定した場合、浮動小数点抽象化部11では、浮動小数点実数を表現するビット幅を1つ増加する。そして、浮動小数点抽象化部11では、その1つ増加したビット幅で表現される浮動小数点実数を用いたプログラムに対して、under抽象化(Under-approximation)を行う。
浮動小数点抽象化部11では、under抽象化を行い、SAT検査部12でUnder-approximationの性質が成立したと判定する場合又はover抽象化を行い、SAT検査部12でOver-approximationの性質が成立していないと判定する場合まで、上記の処理を繰り返し行い、SAT検査可能な最小のビット幅を決定する。
SAT検査部12について説明する。SAT検査部12では、浮動小数点抽象化部11でそのときに設定されているビット幅で表現される浮動小数点実数を用いたプログラムに対してunder抽象化を行うと、Under-approximationの性質が成立するか否かを判定する。Under-approximationの性質が成立すると判定した場合(制約を強化しても、検査項目を含む全てのCNF式がTrue[T]となる解がある場合)、SAT検査部12では、検査項目が成立し、検査対象のプログラムのオリジナル性質が成立と判定する。一方、Under-approximationの性質が成立しないと判定した場合(制約を強化して、検査項目を含む全てのCNF式がTrue[T]となる解がない場合)、上記したように浮動小数点抽象化部11でover抽象化(Over-approximation)が行われる。
SAT検査部12では、浮動小数点抽象化部11でそのときに設定されているビット幅で表現される浮動小数点実数を用いたプログラムに対してover抽象化を行うと、Over-approximationの性質が成立するか否かを判定する。Over-approximationの性質が成立しないと判定した場合(制約を緩和しても、検査項目を含む全てのCNF式がTrue[T]となる解がない場合)、SAT検査部12では、検査項目が不成立で、検査対象のプログラムのオリジナル性質が不成立と判定する。一方、Over-approximationの性質が成立すると判定した場合(制約を緩和して、検査項目を含む全てのCNF式がTrue[T]となる解がある場合)、上記したように浮動小数点抽象化部11でビット幅を1増加してunder抽象化(Under-approximation)が行われる。
図1を参照して、プログラム形式検査装置1の動作を図5のフローチャートに沿って説明する。図5は、第1の実施の形態に係る形式検査の流れを示すフローチャートである。
プログラム形式検査装置1には、記憶装置Mから検査対象の検査項目が織り込まれたオリジナルプログラムが入力される(S10)。まず、プログラム形式検査装置1では、その浮動小数点実数(変数や常数)を表現するビット幅の初期値を選定する(S11)。
プログラム形式検査装置1では、そのときに設定されているビット幅で表現される浮動小数点実数を用いたプログラムに対して、under抽象化を適用する(S12)。そして、プログラム形式検査装置1では、Under-approximationの性質が成立か否かを判定する(S13)。S13にてUnder-approximationの性質が成立と判定した場合、プログラム形式検査装置1では、プログラムの検査項目が成立し、検査対象のプログラムのオリジナル性質が成立と判定する(S14)。ここで、検査は終了し、検査対象のプログラムは成立するという結果が得られる。
S13にてUnder-approximationの性質が成立しないと判定した場合、プログラム形式検査装置1では、そのときに設定されているビット幅で表現される浮動小数点実数を用いたプログラムに対して、over抽象化を適用する(S15)。そして、プログラム形式検査装置1では、Over-approximationの性質が不成立か否かを判定する(S16)。S16にてOver-approximationの性質が不成立と判定した場合、プログラム形式検査装置1では、プログラムの検査項目が不成立であり、検査対象のプログラムのオリジナル性質が不成立と判定する(S17)。ここで、検査は終了し、検査対象のプログラムは成立しなという結果が得られる。
S16にてOver-approximationの性質が成立と判定した場合、プログラム形式検査装置1では、浮動小数点実数を表現するためのビット幅を1ビット増加する(S18)。そして、プログラム形式検査装置1では、その増加したビット幅で表現される浮動小数点実数を用いたプログラムに対して、under抽象化を適用する(S12)。
プログラム形式検査装置1では、検査対象のプログラムの検査項目が成立(S14)又は検査対象のプログラムの検査項目が不成立(S17)になるまで、上記の処理を繰り返し行う。
このプログラム形式検査装置1によれば、Over-approximationの性質とUnder-approximationの性質を利用し、under抽象化とover抽象化を1回ずつ交互に行ってSAT検査を行うことにより、浮動小数点実数を用いたプログラムについて検査可能な最小のビット幅を決定することができる。これによって、検査精度を確保しつつ、検査に要する計算量を抑制できる。その結果、32ビット幅の浮動小数点実数を用いて検査を行う場合よりも検査時間を大幅に削減でき、メモリ効率も向上させることができる(メモリ不足を防止できる)。
図1を参照して、第2の実施の形態に係るプログラム形式検査装置2について説明する。プログラム形式検査装置2は、第1の実施の形態に係るプログラム形式検査装置1と比較すると、over抽象化とunder抽象化を交互に行ってSAT検査を行うのではなく、over抽象化とunder抽象化を同時に適用してSAT検査を行う混合抽象化手法を用いる点が異なる。そのために、プログラム形式検査装置2は、浮動小数点抽象化部21とSAT検査部22を備えている。
浮動小数点抽象化部21については説明する。浮動小数点抽象化部21では、まず、検査対象の検査項目を織り込んだオリジナルプログラムφに対して適用可能なover抽象化とunder抽象化の各抽象化手法を用意する。ここでは、複数のover抽象化手法、under抽象化手法を用意するとよい。用意される各抽象化手法には、32ビット幅から減らしたビット幅で表現される浮動小数点実数を用いた抽象化手法を含んでもよい。
浮動小数点抽象化部21では、over抽象化手法とunder抽象化手法の集合の中から抽象化手法の一部を選択する。そして、浮動小数点抽象化部21では、オリジナルプログラムφに対して、選択した抽象化手法を適用する。
SAT検査部22について説明する。SAT検査部22では、浮動小数点抽象化部21でオリジナルプログラムφに対して抽象化手法を適用すると、抽象化されたプログラムψの解が存在するか否か(SAT検査が成立するか否か)を判定する。
抽象化プログラムψの解が存在する(SAT検査が成立する)場合、SAT検査部22では、抽象化プログラムψの解情報α(SATソルバー情報)を出力する。そして、SAT検査部22では、その解αをオリジナルプログラムφに適用し、オリジナルプログラムφが成立するか否かを判定する。オリジナルプログラムφが成立する場合、SAT検査部22では、検査項目が成立し、検査対象のプログラムのオリジナル性質が成立と判定する。オリジナルプログラムφが成立しない場合、SAT検査部22では、抽象化プログラムψはオリジナルプログラムφから緩和しすぎと判断し、緩和しすぎの原因となったover抽象化手法をover抽象化手法とunder抽象化手法の集合の中から排除する。
抽象化プログラムψの解が存在しない(SAT検査が成立しない)場合、SAT検査部22では、抽象化プログラムψが不成立の証明手順P(SATソルバー情報)を出力する。そして、SAT検査部22では、その証明手順Pをオリジナルプログラムφに適用し、オリジナルプログラムφが成立するか否かを判定する。オリジナルプログラムφが成立しない場合、SAT検査部22では、検査項目が不成立で、検査対象のプログラムのオリジナル性質が不成立と判定する。オリジナルプログラムφが成立する場合、SAT検査部22では、抽象化プログラムψはオリジナルプログラムφから強化しすぎと判断し、強化しすぎの原因となったunder抽象化手法をover抽象化手法とunder抽象化手法の集合の中から排除する。
図1を参照して、プログラム形式検査装置2の動作を図6のフローチャートに沿って説明する。図6は、第2の実施の形態に係る形式検査の流れを示すフローチャートである。
プログラム形式検査装置2には、記憶装置Mから検査対象の検査項目が織り込まれたオリジナルプログラムφが入力される(S20)。プログラム形式検査装置2では、そのオリジナルプログラムφに適用可能なover抽象化手法とunder抽象化手法を用意する(S21)。以下では、{over,under}をover抽象化手法とunder抽象化手法の集合とする。
プログラム形式検査装置2では、{over,under}の中から一部の抽象化手法を選択し、その選択した抽象化手法をオリジナルプログラムφに適用し、抽象化されたプログラムψを出力する(S22)。そして、プログラム形式検査装置2では、SAT検査が成立するか否か(抽象化プログラムψの解が存在するか否か)を判定する(S23)。
S23にてSAT検査が成立すると判定した場合、プログラム形式検査装置2では、抽象化プログラムψの解αをオリジナルプログラムφに適用し、オリジナルプログラムφが成立するか否かを判定する(S24)。S24にてオリジナルプログラムφが成立すると判定した場合、プログラム形式検査装置2では、オリジナルプログラムφの検査項目が成立し、検査対象のオリジナルプログラムφのオリジナル性質が成立と判定する(S25)。ここで、検査が終了し、オリジナルプログラムφは成立するという結果が得られる。
一方、S24にてオリジナルプログラムφが成立しないと判定した場合、プログラム形式検査装置2では、抽象化プログラムψはオリジナルプログラムφを緩和しすぎなので、緩和しすぎの原因となった抽象化手法を{over,under}から排除し(S26)、S22の処理に戻る。
S23にてSAT検査が成立しないと判定した場合、プログラム形式検査装置2では、抽象化プログラムψの不成立の証明手順Pをオリジナルプログラムφに適用し、オリジナルプログラムφが不成立か否かを判定する(S27)。S27にてオリジナルプログラムφが不成立と判定した場合、プログラム形式検査装置2では、オリジナルプログラムφの検査項目が不成立で、検査対象のオリジナルプログラムφのオリジナル性質が不成立と判定する(S28)。ここで、検査が終了し、オリジナルプログラムφは成立しないという結果が得られる。
一方、S27にてオリジナルプログラムφが成立すると判定した場合、プログラム形式検査装置2では、抽象化プログラムψはオリジナルプログラムφを強化しすぎなので、強化しすぎの原因となった抽象化手法を{over,under}から排除し(S29)、S22の処理に戻る。
このプログラム形式検査装置2によれば、第1の実施の形態に係るプログラム形式検査装置1と同様に、Over-approximationの性質とUnder-approximationの性質を利用してSAT検査を行うことにより、検査精度を確保しつつ、検査に要する計算量を抑制できる。特に、プログラム形式検査装置2では、over抽象化とunder抽象化を同時に適用してSAT検査を行う混合抽象化手法を用いているので、検査時間をより削減することができる。
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
例えば、本実施の形態ではCコードの制御プログラムに適用したが、他の様々なプログラムにも適用可能である。
また、本実施の形態ではIEEE754標準の32ビット(単精度)の浮動小数点実数に適用したが、他の表現方式の浮動小数点実数にも適用可能である。
また、本実施の形態では浮動小数点実数を用いたプログラムの検査に適用したが、固定小数点実数を用いたプログラムの検査にも適用可能である。
また、本実施の形態では検査手法としてSATソルバーを用いたが、他の検査手法を用いてもよい。
1,2…プログラム形式検査装置、11,21…浮動小数点抽象化部、12,22…SAT検査部
Claims (2)
- 浮動少数点を含む実数を用いるプログラムを検査するプログラム検査装置であって、
検査対象のプログラムに対する制約を強化する制約強化抽象化手段と、
検査対象のプログラムに対する制約を緩和する制約緩和抽象化手段と、
前記制約強化抽象化で制約強化抽象化を行い、検査対象のプログラムが成立するか否かを判定するとともに、前記制約緩和抽象化で制約緩和抽象化を行い、検査対象のプログラムが成立するか否かを判定する判定手段
を備えることを特徴とするプログラム検査装置。 - 前記制約強化抽象化手段で制約強化抽象化を行い、前記判定手段でプログラムが成立しないと判定した場合に、前記制約緩和抽象化手段で制約緩和抽象化を行い、前記判定手段でプログラムが成立しないと判定した場合には検査に用いる実数のビット幅を増加し、当該増加したビット幅の実数を用いて前記制約強化抽象化手段で制約強化抽象化を再度行い、前記判定手段でプログラムが成立するか否かを判定することを特徴とする請求項1に記載のプログラム検査装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009288239A JP5287693B2 (ja) | 2009-12-18 | 2009-12-18 | プログラム検査装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009288239A JP5287693B2 (ja) | 2009-12-18 | 2009-12-18 | プログラム検査装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011128980A JP2011128980A (ja) | 2011-06-30 |
JP5287693B2 true JP5287693B2 (ja) | 2013-09-11 |
Family
ID=44291497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009288239A Expired - Fee Related JP5287693B2 (ja) | 2009-12-18 | 2009-12-18 | プログラム検査装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5287693B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7711525B2 (en) * | 2002-05-30 | 2010-05-04 | Nec Corporation | Efficient approaches for bounded model checking |
ATE526628T1 (de) * | 2004-01-22 | 2011-10-15 | Nec Lab America Inc | System und verfahren zum modellieren, abstrahieren und analysieren von software |
US7546563B2 (en) * | 2005-06-28 | 2009-06-09 | Fujitsu Limited | Validating one or more circuits using one of more grids |
JP2009168523A (ja) * | 2008-01-11 | 2009-07-30 | Toyota Motor Corp | エンジン制御ソフト検査装置、方法およびプログラム |
-
2009
- 2009-12-18 JP JP2009288239A patent/JP5287693B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011128980A (ja) | 2011-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4953644B2 (ja) | 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法 | |
US7720899B2 (en) | Arithmetic operation unit, information processing apparatus and arithmetic operation method | |
US7797648B1 (en) | Solving constraint satisfiability problem for automatic generation of design verification vectors | |
KR102627299B1 (ko) | 부동소수점 곱셈 장치 및 방법 | |
US7689640B2 (en) | Method and apparatus for formatting numbers in microprocessors | |
Russinoff | A case study in formal verification of register-transfer logic with acl2: The floating point adder of the amd athlon tm processor | |
JP4388980B2 (ja) | 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 | |
Ramananandro et al. | A unified Coq framework for verifying C programs with floating-point computations | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
GB2565385B (en) | An apparatus and method for estimating a shift amount when performing floating-point subtraction | |
Yu et al. | Automatic word-level abstraction of datapath | |
JP5287693B2 (ja) | プログラム検査装置 | |
US8745117B2 (en) | Arithmetic logic unit for use within a flight control system | |
CN116243883A (zh) | 一种测试激励生成方法、测试方法及相关设备 | |
US8572141B2 (en) | Execution of fixed point instructions using a decimal floating point unit | |
US8745118B2 (en) | Verifying floating point square root operation results | |
US8626816B2 (en) | Method, system and computer program product for detecting errors in fixed point division operation results | |
US7356553B2 (en) | Data processing apparatus and method for determining a processing path to perform a data processing operation on input data elements | |
US20090216823A1 (en) | Method, system and computer program product for verifying floating point divide operation results | |
US20140164463A1 (en) | Exponent flow checking | |
Cantoro et al. | In-field functional test programs development flow for embedded FPUs | |
KR101922462B1 (ko) | 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법 | |
CN109933948B (zh) | 一种形式验证方法、装置、形式验证平台及可读存储介质 | |
Kaivola et al. | Timed causal fanin analysis for symbolic circuit simulation | |
Kleinekathöfer et al. | Lower bound proof for the size of BDDs representing a shifted addition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120202 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130425 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130507 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130520 |
|
LAPS | Cancellation because of no payment of annual fees |