JP2013065258A - Information processor, information processing method and information processing program - Google Patents

Information processor, information processing method and information processing program Download PDF

Info

Publication number
JP2013065258A
JP2013065258A JP2011204793A JP2011204793A JP2013065258A JP 2013065258 A JP2013065258 A JP 2013065258A JP 2011204793 A JP2011204793 A JP 2011204793A JP 2011204793 A JP2011204793 A JP 2011204793A JP 2013065258 A JP2013065258 A JP 2013065258A
Authority
JP
Japan
Prior art keywords
loop
program
bounded
information processing
inspection target
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.)
Withdrawn
Application number
JP2011204793A
Other languages
Japanese (ja)
Inventor
Yusuke Hashimoto
祐介 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011204793A priority Critical patent/JP2013065258A/en
Publication of JP2013065258A publication Critical patent/JP2013065258A/en
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide an information processor, an information processing method and an information processing program that can detect a fault related to processing after a loop after bounding loop processing.SOLUTION: The information processor includes: an input module 111 for receiving an input of an inspection target program; and a loop bounding module 113 for generating a bounding program to specify a repeated operand of the loop included in the inspection target program as a threshold or less from the inspection target program. The loop bounding module 113 changes whether or not the bounding program is generated to perform the processing after the loop in the inspection target program depending on whether or not a value is set to a variable referred in the loop processing and the subsequent processing.

Description

本発明に係るいくつかの態様は、情報処理装置、情報処理方法及び情報処理プログラムに関する。   Some embodiments according to the present invention relate to an information processing apparatus, an information processing method, and an information processing program.

従来から、検査対象のプログラムが、検査したい性質(以下、プロパティ;propertyともいう)を満たすか否かをモデル検査法(model checking method)を用いて、当該検査対象プログラムを実行せずに(静的に)調べる方法がある。この検査は、ソフトウェアモデル検査(software model checking)又はモダンモデル検査(modern model checking)と呼ばれている。   Conventionally, whether or not a program to be inspected satisfies a property to be inspected (hereinafter also referred to as a property) by using a model checking method without executing the program to be inspected (static There is a way to check). This check is called software model checking or modern model checking.

このソフトウェアモデル検査で用いられる検査法の中でも、有界モデル検査法(bounded model checking method)は、探索する深さを限定することで探索範囲を有界にして有限状態遷移空間を効率的に探索する手法である。有界モデル検査法を用いたソフトウェアモデル検査については、例えば、非特許文献1に記載されている。   Among the inspection methods used in this software model inspection, the bounded model checking method efficiently searches the finite state transition space with the search range bounded by limiting the search depth. It is a technique to do. The software model check using the bounded model check method is described in Non-Patent Document 1, for example.

Edmund Clarke他2名、“Behavioral Consistency of C and Verilog Programs Using Bounded Model Checking”、Proceedings Of DAC2003、p.368−p.371Edmund Clarke et al., “Behavioral Consistency of C and Verilog Programs Using Bounded Model Checking”, Processeds of DAC2003, p. 368-p. 371

しかしながら、非特許文献1記載のソフトウェアモデル検査では、ループ内の処理を所定回数まで実行した後、ループ後の処理を探索しない場合があるという課題があった。   However, the software model check described in Non-Patent Document 1 has a problem in that a process after the loop may not be searched after the process in the loop is executed a predetermined number of times.

本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、ループ処理を有界にした上で、ループ後の処理に係る不具合を検出し得るようにする情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的の1つとする。   Some aspects of the present invention have been made in view of the above-described problems. An information processing device and an information processing device that can detect a defect related to processing after a loop while the loop processing is bounded. It is an object to provide a method and an information processing program.

本発明に係る情報処理装置は、検査対象プログラムの入力を受ける入力手段と、前記検査対象プログラムから、該検査対象プログラムに含まれるループの繰返し演算数を閾値以下とするための有界プログラムを生成する生成手段とを備え、前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える。   An information processing apparatus according to the present invention generates a bounded program for setting the number of repeated operations of a loop included in an inspection target program to be equal to or less than a threshold value from input means for receiving an input of the inspection target program and the inspection target program Generating means for performing the processing after the loop in the program to be inspected according to whether or not a value referred to in the loop and thereafter is set in the loop. Change whether to use a bounded program.

本発明に係る情報処理方法は、記憶媒体から、検査対象プログラムを読込む入力ステップと、前記検査対象プログラムから、該検査対象プログラムに含まれるループの繰返し演算数を閾値以下とするための有界プログラムを生成する生成ステップと、を備え、前記生成ステップは、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える。   An information processing method according to the present invention includes an input step of reading an inspection target program from a storage medium, and a bounded number for making the number of repeated operations of a loop included in the inspection target program equal to or less than a threshold from the inspection target program. A generation step for generating a program, and the generation step includes a step after the loop in the inspection target program depending on whether or not a value to be set in the loop is set to a variable referred to after the loop. Whether or not to use a bounded program that performs the above process.

本発明に係る情報処理プログラムは、コンピュータに情報処理方法を実行させる情報処理プログラムであって、当該情報処理方法は、記憶媒体から、検査対象プログラムを読込む入力ステップと、前記検査対象プログラムから、該検査対象プログラムに含まれるループの繰返し演算数を閾値以下とするための有界プログラムを生成する生成ステップと、を備え、前記生成ステップは、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える。   An information processing program according to the present invention is an information processing program for causing a computer to execute an information processing method. The information processing method includes an input step of reading an inspection target program from a storage medium, and the inspection target program. A generation step for generating a bounded program for setting the number of iterations of the loop included in the inspection target program to be equal to or less than a threshold value, and the generation step includes a variable referred to in the loop or later in the loop. Depending on whether or not a value is set, whether or not a bounded program for performing the processing after the loop in the inspection target program is changed.

本発明によれば、ループ処理を有界にした上で、ループ後の処理に係る不具合を検出し得るようにする情報処理装置、情報処理方法、及び情報処理プログラムを提供することができる。   According to the present invention, it is possible to provide an information processing apparatus, an information processing method, and an information processing program capable of detecting a defect related to processing after a loop after making the loop processing bounded.

本発明の第1実施形態における情報処理装置の概略構成を示す機能ブロック図である。It is a functional block diagram which shows schematic structure of the information processing apparatus in 1st Embodiment of this invention. 図1に示した情報処理装置が検査の対象とすることのできるプログラムの具体例を示す図である。It is a figure which shows the specific example of the program which the information processing apparatus shown in FIG. 1 can make into the test object. 図1に示した情報処理装置がループ有界化処理を行うための変換ルールの例を示す図である。It is a figure which shows the example of the conversion rule for the information processing apparatus shown in FIG. 1 to perform a loop bounding process. 図2に示した検査対象プログラムから第1のループ有界化処理により生成した有界プログラムの具体例を示す図である。It is a figure which shows the specific example of the bounded program produced | generated by the 1st loop bounding process from the test object program shown in FIG. 図1に示した情報処理装置がループ有界化処理を行うための変換ルールの例を示す図である。It is a figure which shows the example of the conversion rule for the information processing apparatus shown in FIG. 1 to perform a loop bounding process. 図2に示した検査対象プログラムから第1のループ有界化処理により生成した有界プログラムの具体例を示す図である。It is a figure which shows the specific example of the bounded program produced | generated by the 1st loop bounding process from the test object program shown in FIG. 図1に示した情報処理装置が検査の対象とすることのできるプログラムの具体例を示す図である。It is a figure which shows the specific example of the program which the information processing apparatus shown in FIG. 1 can make into the test object. 図2に示した検査対象プログラムから第2のループ有界化処理により生成した有界プログラムの具体例を示す図である。It is a figure which shows the specific example of the bounded program produced | generated by the 2nd loop bounding process from the test object program shown in FIG. 図2に示した検査対象プログラムから第2のループ有界化処理により生成した有界プログラムの具体例を示す図である。It is a figure which shows the specific example of the bounded program produced | generated by the 2nd loop bounding process from the test object program shown in FIG. 図1に示した情報処理装置の処理の流れを示すフローチャートである。3 is a flowchart illustrating a processing flow of the information processing apparatus illustrated in FIG. 1. ループ位置情報の具体例を示す図である。It is a figure which shows the specific example of loop position information. データ依存関係の具体例を示す図である。It is a figure which shows the specific example of a data dependence. 本発明の第2実施形態における情報処理装置の概略構成を示す機能ブロック図である。It is a functional block diagram which shows schematic structure of the information processing apparatus in 2nd Embodiment of this invention. 図13に示した情報処理装置の処理の流れを示すフローチャートである。It is a flowchart which shows the flow of a process of the information processing apparatus shown in FIG.

以下に本発明の実施の形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。   Embodiments of the present invention will be described below. In the following description and the description of the drawings to be referred to, the same or similar components are denoted by the same or similar reference numerals.

(第1実施形態)
図1乃至図12は、本発明の第1実施形態を説明するための図である。図1は、第1実施形態における情報処理装置の概略構成を説明するための機能ブロック図である。
(First embodiment)
1 to 12 are diagrams for explaining a first embodiment of the present invention. FIG. 1 is a functional block diagram for explaining a schematic configuration of the information processing apparatus according to the first embodiment.

図1に記載の情報処理装置100は、検査対象プログラムに含まれるループを有界化した有界プログラムを生成することにより、当該検査対象プログラムに対して好適に有界モデル検査を行い得るようにする装置である。   The information processing apparatus 100 illustrated in FIG. 1 generates a bounded program in which a loop included in the inspection target program is bounded, so that the bounded model inspection can be suitably performed on the inspection target program. It is a device to do.

情報処理装置100は、例えばCPU(Central Processing Unit)等の演算装置で実装される情報処理部110と、例えばHDD(Hard Disk Drive)やメモリ等の記憶媒体で実装されるファイル格納部120とを含む。情報処理部110は、入力モジュール111と、ループ有界化モジュール113と、出力モジュール115とを含む。尚、これらのモジュールはソフトウェアで実装されていてもハードウェアで実装されていても良い。すなわち、情報処理部110上の処理は、すべてコンピュータに実行させるプログラムにより実現されうる。
入力モジュール111は、ファイル格納部120から検査対象プログラムを読込むことで、検査対象プログラムの入力を受けるモジュールである。
The information processing apparatus 100 includes, for example, an information processing unit 110 implemented by an arithmetic device such as a CPU (Central Processing Unit) and a file storage unit 120 implemented by a storage medium such as an HDD (Hard Disk Drive) or a memory. Including. The information processing unit 110 includes an input module 111, a loop bounding module 113, and an output module 115. Note that these modules may be implemented by software or hardware. That is, all the processes on the information processing unit 110 can be realized by a program executed by a computer.
The input module 111 is a module that receives an inspection target program by reading the inspection target program from the file storage unit 120.

ループ有界化モジュール113は、ファイル格納部120から読込んだ検査対象プログラムに対し、ループ処理を有界化する。以下、検査対象プログラムに対してループ処理を有界化することで生成されるプログラムを有界プログラムと呼ぶ。   The loop bounding module 113 bounds the loop processing for the inspection target program read from the file storage unit 120. Hereinafter, a program generated by bounding the loop process to the inspection target program is referred to as a bounded program.

ここで、ループ有界化モジュール113は、ループ内の変数の参照関係に応じて、2つの有界化処理が可能である。以下では、これらの2つの有界化処理を、第1のループ有界化処理及び第2のループ有界化処理と呼ぶ。第1のループ有界化処理及び第2のループ有界化処理については、後に詳述する。
出力モジュール115は、ループ有界化モジュール113が生成した有界プログラムをファイル格納部120へ出力するモジュールである。
Here, the loop bounding module 113 can perform two bounding processes according to the reference relationship of the variables in the loop. Hereinafter, these two bounding processes are referred to as a first loop bounding process and a second loop bounding process. The first loop bounding process and the second loop bounding process will be described in detail later.
The output module 115 is a module that outputs the bounded program generated by the loop bounding module 113 to the file storage unit 120.

尚、以下では有界モデル検査の対象プログラムはC言語で記載されているものとして説明を進めるが、本発明の適用はC言語で記載されたプログラムに限られるものではない。   In the following description, it is assumed that the target program for the bounded model check is written in the C language, but the application of the present invention is not limited to the program written in the C language.

また、以下では、ループ処理についてwhile文を用いているプログラムを例に説明するが、本発明の適用はwhile文を用いたループ処理には限られない。例えば、for文、do文、goto文を用いたループ処理は、実行前後の変数の値が同じであるという意味で等価なwhile文に変換することができるものであるため、このようなループ処理にも本発明は適用可能である。   In the following, a program using a while statement will be described as an example of loop processing, but the application of the present invention is not limited to loop processing using a while statement. For example, loop processing using a for statement, do statement, and goto statement can be converted into an equivalent while statement in the sense that the values of variables before and after execution are the same. In addition, the present invention is applicable.

以下では、ループ終了直後にラベルwhileM_break(Mは対象関数内のループに割り振った1から始まる連番)が設定されているものとするが、これに限られるものではない。   In the following, it is assumed that the label whileM_break (M is a serial number starting from 1 assigned to the loop in the target function) is set immediately after the end of the loop, but the present invention is not limited to this.

更に、以下では、検査対象プログラムに関して、ループ処理のコードを固定回数(任意に指定可能な閾値回数)だけ展開する変換(以下、「ループ展開」とも呼ぶ)、あるいはループ処理に繰返し回数を表すメタ変数やその値を調べるコード(命令文)を挿入する変換(以下、「ループ強制終了」とも呼ぶ)を、ソースコードに対して行う例について説明するが、本発明が適用される検査対象プログラムは、ソースコードには限られない。例えば、ソースコードを解析して得られる抽象構文木や制御フローグラフ、若しくは、ソースコードをコンパイルして得られる中間コードやバイナリコードに適用しても良い。
以下、有界モデル検査について説明する。
Further, in the following, regarding the program to be inspected, a transformation (hereinafter also referred to as “loop expansion”) that expands the code of the loop processing a fixed number of times (a threshold number that can be arbitrarily specified), or a meta that represents the number of iterations in the loop processing A description will be given of an example in which conversion (hereinafter also referred to as “loop forced termination”) for inserting a code (an instruction statement) for examining a variable or its value is performed on a source code. A test target program to which the present invention is applied is described below. It is not limited to source code. For example, the present invention may be applied to an abstract syntax tree or control flow graph obtained by analyzing source code, or intermediate code or binary code obtained by compiling source code.
Hereinafter, the bounded model inspection will be described.

検査対象のプログラムが検査したい性質(プロパティ;property)を満たすか否かを、モデル検査法(model checking method)を用いて静的に(すなわち、プログラムを実行せずに)調べる方法がある。この方法は、ソフトウェアモデル検査(software model checking)又はモダンモデル検査(modern model checking)と呼ばれている。モデル検査法とは、検査対象のシステムやソフトウェア(以下、システムやソフトウェアを総称してプログラムと呼ぶことがある)を有限状態遷移システム(finite state transition system)として表し、同システム上の有限状態空間(finite state space)を網羅探索することにより、時相論理(temporal logic)で表現されたプロパティが成立するか否かを調べる手法である。   There is a method of statically checking whether a program to be inspected satisfies a property (property) to be inspected using a model checking method (that is, without executing the program). This method is called software model checking or modern model checking. The model checking method represents a system or software to be checked (hereinafter, the system and software may be collectively referred to as a program) as a finite state transition system, and a finite state space on the system. This is a method for investigating whether or not a property expressed in temporal logic is established by performing an exhaustive search of (finite state space).

モデル検査法では、プロパティが成立しない場合には、プロパティへの反例(counter−example)として、初期状態からプロパティが成立しない状態への状態遷移列(パス情報)が出力される。   In the model checking method, when the property is not satisfied, a state transition sequence (path information) from the initial state to the state where the property is not satisfied is output as a counter-example to the property.

特に、有界モデル検査法(bounded model checking method)は、探索する深さを限定して(すなわち、探索範囲を有界にして)有限状態遷移空間を効率的に探索する手法であり、不具合の検出に有効であると考えられている。有界モデル検査法を用いたソフトウェアモデル検査では、検査対象プログラムに出現する全ての変数に関して、各変数の値の組合せの1つ1つが状態として取り扱われる。   In particular, the bounded model checking method is a technique for efficiently searching a finite state transition space by limiting the search depth (ie, making the search range bounded). It is considered effective for detection. In software model checking using a bounded model checking method, for each variable appearing in the program to be checked, each combination of values of each variable is handled as a state.

以下、有界モデル検査法をプログラムの静的検査へ適用した例を説明する。有界モデル検査法により、C∧¬P(“∧”は論理積、“¬”は否定)を満たす変数値の遷移(パス情報)を検出することを試みる。ここで、検査対象プログラムに表れる各変数の値の遷移は制約式C(有限状態遷移システム)として、検査対象プログラムが正しい状態にあることは論理式P(プロパティ)として表現されている。   Hereinafter, an example in which the bounded model checking method is applied to a program static check will be described. An attempt is made to detect transitions (path information) of variable values satisfying C∧¬P ("∧" is a logical product and "¬" is negative) by a bounded model checking method. Here, the transition of the value of each variable appearing in the inspection target program is expressed as a constraint expression C (finite state transition system), and the fact that the inspection target program is in the correct state is expressed as a logical expression P (property).

検出されたパス情報は、検査対象プログラムが正しく動作すること(C⇒P(“⇒”は論理の含意))への反例である(C∧¬P=¬(C⇒P))。反例として示されたパス情報に沿って検査対象プログラムを実行すると、検査対象プログラムが正しい状態にないという不具合が発生する。   The detected path information is a counter example to the fact that the program to be inspected operates correctly (C⇒P (“⇒” is a logical implication))) (C∧¬P = ¬ (C⇒P)). When the inspection target program is executed along the path information shown as a counter example, a problem that the inspection target program is not in a correct state occurs.

一般に、プログラムの状態及び遷移は無数にあり得るため、プログラムを有界な(探索の深さを限定した)有限状態遷移システムに変換する際には、過小近似(under−approximation)が必要となる。プログラム上の表現のうち、特にループは定められた探索の深さを超えやすい。よって、ループを有界化する処理が必要となる。
以下、第1のループ有界化処理について、図2に示すソースファイル200aを検査対象プログラムとしてループ展開を行う場合を例に説明する。
In general, there can be an infinite number of program states and transitions, so under-approximation is required when transforming a program into a bounded (limited search depth) finite state transition system. . Among program expressions, loops in particular tend to exceed the specified search depth. Therefore, processing for making the loop bounded is necessary.
Hereinafter, the first loop bounding process will be described by taking as an example a case where loop expansion is performed using the source file 200a shown in FIG. 2 as an inspection target program.

第1のループ有界化処理では、図3のルールaとbとを用いて、ループを、ユーザが指定した固定回数(以下、NMAX回とする)だけ展開する。より具体的には、0≦n<NMAXであるn回目のループ内の処理についてはルールaを、n=NMAXであるn回目のループ内の処理についてはルールbを用いて展開する。   In the first loop bounding process, the loop is expanded by a fixed number of times designated by the user (hereinafter referred to as NMAX times) using the rules a and b in FIG. More specifically, rule a is expanded for the processing in the n-th loop where 0 ≦ n <NMAX, and rule b is expanded for the processing in the n-th loop where n = NMAX.

ルールbのassert文において、assert(!e)の式“!e”が偽(すなわちeが真)の場合、有限モデル検査ツールは、式!eに対する反例を出力してその状態以降の探索は行わない。ここで、“!”はCやJava(登録商標)等のプログラミング言語における否定の単項演算子である。   In the assert statement of rule b, if the expression “! E” of assert (! E) is false (ie, e is true), the finite model checking tool uses the expression! A counterexample to e is output and the search after that state is not performed. Here, “!” Is a negative unary operator in a programming language such as C or Java (registered trademark).

ルールbの式eは、元のループの制御式なので、!eへの反例は、eが真であること、すなわちループをNMAX回展開した後で、制御式が真になり得ることを示す。換言すると、この反例は、元のループがNMAXを超える回数の繰返しを含んでいること、すなわちNMAXを越える繰返し部分で起きる不具合を有限モデル検査ツールが見過ごし得ることを示している。以下、ルールbのassert文をループ展開表明と呼ぶ。   Since the expression e of rule b is the control expression of the original loop,! The counterexample to e shows that e is true, that is, the control expression can be true after expanding the loop NMAX times. In other words, this counterexample shows that the original loop contains more than NMAX iterations, i.e., the finite model checking tool can overlook defects that occur in repeated parts beyond NMAX. Hereinafter, the assert statement of rule b is referred to as a loop expansion assertion.

図4のソースファイル400aは、図2で示したソースファイル200aを検査対象プログラムとし、NMAXを2としてループを展開した有界プログラムの例である。   The source file 400a in FIG. 4 is an example of a bounded program in which the source file 200a shown in FIG.

尚、ここまではループ展開によりループを有界化する場合を説明したが、ループボディの固定回数の実行後にループの処理を強制終了するように有界プログラムを生成する変換処理(ループ強制終了)も可能である。図5のルールcは、このループ強制終了の際に用いる変換ルールを示す。   Up to this point, the case where the loop is bounded by loop expansion has been described, but the conversion process (loop forced termination) that generates a bounded program so that the loop processing is forcibly terminated after a fixed number of executions of the loop body. Is also possible. The rule c in FIG. 5 shows a conversion rule used when this loop is forcibly terminated.

ルールcでは、検査対象プログラムには存在しないメタ変数_nMを導入する。_nMはループの実行回数を示すメタ変数であり、初期値は0を取り、ループボディの先頭で1ずつ値が加算されるようになっている。ルールcでは、この_nMがNMAXを超えると、図3のルールbと同様のループ展開表明としてassert(!e)が呼び出されるようになっている。   In the rule c, a meta variable _nM that does not exist in the inspection target program is introduced. _NM is a meta variable indicating the number of executions of the loop. The initial value is 0, and the value is incremented by 1 at the head of the loop body. In rule c, when this _nM exceeds NMAX, assert (! E) is called as a loop expansion assertion similar to rule b in FIG.

図6のソースファイル400bは、図2に示したソースファイル200aを検査対象プログラムとして、NMAXを2としてループを強制終了するように変換(生成)された有界プログラムの例である。   A source file 400b in FIG. 6 is an example of a bounded program converted (generated) so that the source file 200a shown in FIG. 2 is a program to be inspected, NMAX is 2 and the loop is forcibly terminated.

このように、第1のループ有界化処理では、ルールa及びb、又はルールcを用いて、検査対象プログラムに含まれるループを有界化することができる。しかしながら、第1のループ有界化処理によりループを有界にする方式(ループ有界化法)には、ループ内の処理を固定回数(NMAX)まで実行した後の処理が、有界モデル検査ツールにより検査されないという課題がある。この点、以下に説明する。   As described above, in the first loop bounding process, the loops included in the inspection target program can be bounded using the rules a and b or the rule c. However, in the method of making the loop bounded by the first loop bounding processing (loop bounding method), the processing after executing the processing in the loop up to a fixed number of times (NMAX) is performed. There is a problem that it is not inspected by the tool. This point will be described below.

ソースファイル200aは、変数xに1を設定し(第12行)、変数iとaに関係するループ処理を1024回繰返し(第13行〜第17行)、当該ループ処理終了後にxが0であることを検査するようにassert文で指示している(第19行)。   The source file 200a sets 1 to the variable x (line 12), repeats the loop process related to the variables i and a 1024 times (line 13 to line 17), and x is 0 after the loop process ends. The assert statement is instructed to check the existence (line 19).

実際にソースファイル200aを実行すると、第19行ではxの値は1となるのでassert文の式x==0は偽となり、結果、assert違反の警告が出力されて停止する。   When the source file 200a is actually executed, the value of x is 1 in the 19th line, so the expression x == 0 in the assert statement becomes false, and as a result, a warning of assert violation is output and the process stops.

一方、第1のループ有界化処理により有界化された有界プログラムである図4のソースファイル400aや図6のソースファイル400bを有界モデル検査によって検査すると、ループボディ(元のソースファイル200aが含むループ内の処理)を固定回数(ここでは2回)繰り返してからループ展開表明が偽となるため(ソースファイル400aの第14_3行、及びソースファイル400bの第14c行)、ここでassert違反の警告が出力されて停止する。これにより、ループ後の処理(第19行)は探索されないので、x==0のassert違反は見過ごされることとなる。   On the other hand, when the source file 400a of FIG. 4 and the source file 400b of FIG. 6 which are bounded programs by the first loop bounding process are inspected by the bounded model inspection, the loop body (original source file) 200a) is repeated a fixed number of times (here, twice), and then the loop expansion assertion becomes false (14_3 line of the source file 400a and 14c line of the source file 400b). Violation warning is output and stopped. As a result, since the process after the loop (the 19th line) is not searched, the assert violation of x == 0 is overlooked.

つまり、有界モデル検査法を用いた検索対象プログラムの検査において、第1のループ有界化処理によってプログラムを有界な有限状態空間に収めるためにループを固定回数のループボディの処理の繰返しに変換すると、固定回数が本来の繰返し回数(図2のソースファイル200aの例では1024回)未満である場合には、それ以降の処理に対する検査が行われないこととなってしまう。ルールa及びbを用いた、ループボディを固定回数だけ展開して繰返しを限定するループ展開の方式であっても、ルールcを用いた、ループボディに繰返し回数を表すメタ変数を挿入し、メタ変数の値と固定回数とを比較して繰返しを限定するようなループ強制終了の方式であっても、この課題は発生する。   In other words, in the inspection of the search target program using the bounded model checking method, the loop is repeated a fixed number of times to process the loop body in order to fit the program in the bounded finite state space by the first loop bounding process. When converted, if the fixed number is less than the original number of repetitions (1024 in the example of the source file 200a in FIG. 2), the subsequent processing is not inspected. Even in a loop expansion method that uses rules a and b to expand a loop body a fixed number of times to limit repetition, a meta variable that indicates the number of repetitions is inserted into the loop body using rule c, This problem occurs even in a method of forced loop termination that limits the repetition by comparing the value of a variable with a fixed number of times.

そこで、ループ有界化モジュール113は、状況に応じてループ後の処理も探索できるように有界化を行う機能(第2のループ有界化処理)を有する。以下、図2に示すソースファイル200aを検査対象プログラムとして、第2のループ有界化処理を行う場合を例に説明する。   Therefore, the loop bounding module 113 has a function of performing bounding (second loop bounding processing) so that processing after the loop can be searched according to the situation. Hereinafter, a case where the second loop bounding process is performed using the source file 200a shown in FIG. 2 as the inspection target program will be described as an example.

第2のループ有界化処理によるループ展開では、図3のルールaとルールb’とを用いて、ループを、ユーザが指定した固定回数であるNMAX回だけ展開する。より具体的には、0≦n<NMAXであるようなn回目までのループ内の処理についてはルールaを、n=NMAXであるn回目のループ内の処理についてはルールb’を用いてループを展開する。   In the loop expansion by the second loop bounding process, the loop is expanded NMAX times, which is a fixed number designated by the user, using the rule a and the rule b 'of FIG. More specifically, the rule a is used for the processing in the loop up to the nth time such that 0 ≦ n <NMAX, and the rule b ′ is used for the processing in the nth loop where n = NMAX. Expand.

図8のソースファイル400cは、ソースファイル200aを検査対象プログラムとし、NMAXを2として第2のループ有界化処理を行った結果である有界プログラムの例を示す。   A source file 400c of FIG. 8 shows an example of a bounded program that is a result of performing the second loop bounding process with the source file 200a as the inspection target program and NMAX being 2.

第1のループ有界化処理では、NMAX回目のループ内の処理がルールbによって、図4の14_3行目のようにassertを用いた表明(ループ展開表明、第14_3行)に変換されていた。これにより、変換結果であるソースファイル400aは、assertに指定された式が偽となる場合にはループの後に続く処理には制御が移らない、すなわち、ループの後に続く処理(第19行)が有界モデル検査法で探索されないものとなっていた。   In the first loop bounding process, the process in the NMAX-th loop has been converted into an assertion (loop expansion assertion, line 14_3) using assert as shown in line 14_3 of FIG. . As a result, the source file 400a, which is the conversion result, does not transfer control to the process following the loop when the expression specified in assert is false, that is, the process (line 19) following the loop is not transferred. It was not searched by the bounded model checking method.

一方、第2のループ有界化処理では、NMAX回目のループ内の処理は、ルールb’によって、ループ後に続くラベルwhile1_breakに制御を移すgoto文(第14_3行)に変換される(図8のソースファイル400c)。
これにより、第2のループ有界化処理を用いた有界プログラムは、ループ後の処理も有界モデル検査法で探索可能となる。
On the other hand, in the second loop bounding process, the process in the NMAX-th loop is converted into a goto statement (line 14_3) that transfers control to the label while1_break following the loop according to the rule b ′ (FIG. 8). Source file 400c).
As a result, the bounded program using the second loop bounding process can search for the process after the loop by the bounded model checking method.

尚、ここまではループ展開によりループを有界化する場合を説明してきたが、第2のループ有界化処理でも第1のループ有界化処理と同様に、ループを強制終了するように変換することも可能である。図5のルールc’にその変換ルールを示す。   Up to this point, the case where the loop is bounded by loop expansion has been described, but the second loop bounding process is also converted to forcibly terminate the loop, as in the first loop bounding process. It is also possible to do. The rule c ′ in FIG. 5 shows the conversion rule.

ルールc’でも、ルールcと同様に、検査対象プログラムには存在しないメタ変数_nMが導入される。_nMはループの実行回数を示すメタ変数であり、初期値は0を取り、ループボディの先頭で1ずつ値が加算される。ルールc’では、この_nMがNMAXを超えると、図3のルールb’と同様に、ループ後に続くラベルwhileM_breakに制御を移すgoto文を呼び出す。   In the rule c ′, similarly to the rule c, a meta variable _nM that does not exist in the inspection target program is introduced. _NM is a meta variable indicating the number of executions of the loop. The initial value is 0, and the value is incremented by 1 at the head of the loop body. In the rule c ′, when this _nM exceeds NMAX, a goto statement for transferring control to the label “whileM_break” following the loop is called as in the rule b ′ in FIG. 3.

図9のソースファイル400dは、第2のループ有界化処理において、ソースファイル200aを検査対象プログラムとし、NMAXを2としてループ強制終了により変換した結果である有界プログラムの例である。   The source file 400d in FIG. 9 is an example of a bounded program that is a result of conversion by forced loop termination with the source file 200a as the inspection target program and NMAX as 2 in the second loop bounding process.

第1のループ有界化処理では、ルールcを用いていたので、NMAX回目のループの処理が図6の第14c行のようにassertを用いた表明(ループ展開表明)に変換されていた。これにより、変換結果であるソースファイル400bは、assertに指定された式が偽となる場合には、ループの後に続く処理に制御が移らない、すなわち、ループの後に続く処理(第19行)が有界モデル検査法で探索されないものとなっていた。   Since the rule c is used in the first loop bounding process, the NMAX-th loop process is converted to assertion (loop expansion assertion) using assert as shown in the 14th line of FIG. Thereby, in the source file 400b which is the conversion result, when the expression specified in assert is false, control is not transferred to the process following the loop, that is, the process (line 19) following the loop is not executed. It was not searched by the bounded model checking method.

一方、第2のループ有界化処理では、ルールc’によって、NMAX回目のループの処理がループ後に続くラベルwhile1_break(18行)に制御を移すgoto文(14c行)に変換される(図9のソースファイル400d)。   On the other hand, in the second loop bounding process, according to the rule c ′, the NMAX-th loop process is converted into a goto statement (line 14c) that transfers control to the label while1_break (line 18) following the loop (FIG. 9). Source file 400d).

以上のように、ループ展開の場合であっても、ループ強制終了の場合であっても、第2のループ有界化処理により有界プログラムを生成すれば、有界モデル検査ツールがループより後の処理も探索できるようになる。   As described above, regardless of whether the loop is expanded or the loop is forcibly terminated, if the bounded program is generated by the second loop bounding process, the bounded model checking tool is moved after the loop. This process can also be searched.

しかしながら、すべての場合に第2のループ有界化処理を適用して、一律でループ後の処理も探索することとしてしまうと、誤警告が生じるという新たな課題が発生する。以下、その課題を説明する。   However, if the second loop bounding process is applied in all cases to uniformly search for a process after the loop, a new problem of generating a false alarm occurs. The problem will be described below.

例えば、図7のソースファイル200bに記載の検査対象プログラムを実際に動かすと、ループ(第14行〜第17行)を1024回繰返し、変数iの値が1024となってループを終了する。よってループ後の処理(第19行)での表明i==1024は真となり、表明違反を起こさない。   For example, when the program to be inspected described in the source file 200b in FIG. 7 is actually moved, the loop (line 14 to line 17) is repeated 1024 times, the value of variable i becomes 1024, and the loop is terminated. Therefore, the assertion i == 1024 in the processing after the loop (the 19th line) is true, and no assertion violation occurs.

一方、ループ(第14行〜第17行)を2回のみ繰り返した後、ループ後の処理(第19行)を強制的に探索するようにループ有界化を行うと、有界プログラムは、図4のソースファイル400aで第19行が“assert(i==1024)”に置換されたものとなる。これを実行すると、第19行において変数iの値は2となるので、表明i==1024は偽となる。よって、表明違反の警告が出力されることとなる。上述の通り、本来の検査対象プログラムでは表明違反は起きないので、この警告は誤り(誤警告)である。   On the other hand, after the loop (14th to 17th lines) is repeated only twice and then the bounded program is performed so as to forcibly search for the process after the loop (19th line), the bounded program becomes In the source file 400a of FIG. 4, the 19th line is replaced with “assert (i == 1024)”. When this is executed, the value of the variable i is 2 in the 19th line, so the assertion i == 1024 is false. Therefore, a warning of assertion violation is output. As described above, there is no assertion violation in the original program to be inspected, so this warning is an error (false warning).

誤警告が発生した原因は、繰返し回数を限定したループ内で値が参照される変数(図7の例ではi)をループ後の処理で参照することにより、当該変数が本来のループ終了時とは異なる値を得てしまったことである。   The cause of the false alarm is that a variable whose value is referenced in a loop with a limited number of iterations (i in the example of FIG. 7) is referred to in the process after the loop, so that the variable is detected when the original loop ends. Has a different value.

このような誤警告を防ぐために、ループ有界化モジュール113は、ループ後の処理で値が参照される変数に対し、その変数の値がループ内で設定されたか否かを調べた上で、第1のループ有界化処理を行うか、若しくはループ後の処理も探索する第2のループ有界化処理を行うかを判別する。これにより、誤警告を防ぎつつ、ループ後の処理も探索することができるようになる。
以下、図10のフローチャートを参照しながら、情報処理装置100の処理の流れを説明する。
In order to prevent such a false alarm, the loop bounding module 113 checks whether or not the value of the variable is set in the loop with respect to the variable whose value is referred to in the processing after the loop. It is determined whether the first loop bounding process is performed or the second loop bounding process for searching for a process after the loop is performed. This makes it possible to search for processing after the loop while preventing false warnings.
Hereinafter, the flow of processing of the information processing apparatus 100 will be described with reference to the flowchart of FIG.

まず情報処理部110は、ユーザから、有界モデル検査の対象である検査対象プログラムと、検査対象関数との指定を受付け、これに伴い、入力モジュール111、ループ有界化モジュール113、及び出力モジュール115を用いて一連の処理を実行する。以下、特に記載しない場合には、検査対象プログラムとして図2に示すソースファイル200aが指定されたものとして説明を行う。   First, the information processing unit 110 receives a specification of a test target program and a test target function that are targets of bounded model checking from the user, and accordingly, the input module 111, the loop bounding module 113, and the output module 115 is used to execute a series of processes. Hereinafter, the description will be made assuming that the source file 200a shown in FIG.

入力モジュール111は、ファイル格納部120から検査対象プログラムを読込む(S501)。ループ有界化モジュール113は、まず、読込まれた検査対象プログラムの関数毎に、ループの開始位置と終了位置とを含むループ位置情報を抽出する(S503)。   The input module 111 reads the inspection target program from the file storage unit 120 (S501). The loop bounding module 113 first extracts loop position information including the start position and end position of the loop for each function of the read program to be inspected (S503).

図11は、ループ有界化モジュール113が抽出したループ位置情報の例である。図11の例では、ループを含む関数の名前と、ソースファイル等の検査対象プログラムを格納するもの(格納体)の名前、格納体上でのループの開始位置と終了位置(格納体がソースファイルの場合、開始位置及び終了位置は、行番号となる)がそれぞれ対応づけて管理されている。例えば、図11の1行目(見出し行は除く)は、関数fooに含まれるループが、ソースファイルFoo.cにおいて、第14行から始まり第17行で終わることを示す。   FIG. 11 is an example of loop position information extracted by the loop bounding module 113. In the example of FIG. 11, the name of a function including a loop, the name of a program (storage body) that stores a program to be inspected such as a source file, the start position and end position of a loop on the storage body (the storage body is a source file) In this case, the start position and the end position are managed as line numbers). For example, the first line in FIG. 11 (excluding the heading line) indicates that the loop included in the function foo is the source file Foo. In c, it indicates that it starts at the 14th line and ends at the 17th line.

続いてループ有界化モジュール113は、検査対象プログラムの関数毎に、変数に値が設定される位置と、その値を参照する位置との組であるデータ依存関係を抽出する(S505)。   Subsequently, the loop bounding module 113 extracts, for each function of the inspection target program, a data dependency that is a set of a position where a value is set in a variable and a position that refers to the value (S505).

図12は、ループ有界化モジュール113が抽出したループ位置情報の例である。図12の例では、変数が現れる関数の名前と、変数の名前と、ソースファイル等の検索対象プログラムを格納するもの(格納体)の名前と、格納体上で変数に値を設定する位置(定義位置)と、その変数の値を参照する位置(参照位置)とが対応付けて管理されている。   FIG. 12 is an example of loop position information extracted by the loop bounding module 113. In the example of FIG. 12, the name of the function in which the variable appears, the name of the variable, the name of the storage program for the search target program such as the source file (storage body), and the position where the value is set for the variable on the storage body ( A definition position) and a position (reference position) referring to the value of the variable are managed in association with each other.

例えば、図12の1行目(見出し行は除く)は、関数fooに現れる変数xにソースファイルFoo.cの第12行で値が設定され(図2のソースファイル200aにおける第12行の“x=1”)、第19行でその値が参照される(ソースファイル200aの第19行の“x==0”)ことを示す。   For example, the first line (excluding the heading line) in FIG. 12 includes the source file Foo. The value is set in the 12th line of c (“x = 1” in the 12th line in the source file 200a in FIG. 2), and the value is referenced in the 19th line (“x in the 19th line of the source file 200a). == 0 ”).

次に、ループ有界化モジュール113は、検査対象関数に含まれるループをループ位置情報から抽出し(S507)、ループ毎に、ループボディの処理(ループ内の処理)の繰返しを固定回数までとする有界化を行う(S511〜S521)。
最後に、ループ有界化モジュール113は、ループが有界化されたプログラム(有界プログラム)を出力する(S523)。
Next, the loop bounding module 113 extracts the loop included in the inspection target function from the loop position information (S507), and repeats the loop body processing (processing within the loop) up to a fixed number of times for each loop. Bounding is performed (S511 to S521).
Finally, the loop bounding module 113 outputs a program in which the loop is bounded (bounded program) (S523).

以下、ループ毎の有界化の処理(S511〜S521)を詳しく説明する。ループ有界化モジュール113は、検査対象関数に現れる変数のうち、「処理中のループの終了位置<変数の参照位置」である変数を、データ依存関係から抽出する(S511)。ループ有界化モジュール113は、抽出した変数毎に(S513)、変数の定義位置とループの開始位置/終了位置とを比較し(S515及びS517)、変数の定義位置がループ内にあれば(S517がNo(比較結果が偽))、ループの後の処理に制御を移さないように第1のループ有界化処理を用いてループを有界化する(S519)。より具体的には、ループ展開によりループを有界化するのであれば図3のルールa、bを、ループの強制終了によりループを有界化するのであれば図5のルールcを用いてループを有界化する。   The bounding process for each loop (S511 to S521) will be described in detail below. The loop bounding module 113 extracts, from the data dependency relationship, variables that are “the end position of the loop being processed <the reference position of the variable” among the variables that appear in the inspection target function (S511). For each extracted variable (S513), the loop bounding module 113 compares the variable definition position with the start / end position of the loop (S515 and S517), and if the variable definition position is in the loop (S515 and S517) If S517 is No (the comparison result is false), the loop is bounded using the first loop bounding process so as not to transfer control to the process after the loop (S519). More specifically, if the loop is bounded by loop expansion, the rules a and b in FIG. 3 are used. If the loop is bounded by forced termination of the loop, the rule c in FIG. 5 is used. Is bounded.

変数の定義位置がループ内になければ(S515またはS517がYes(比較結果が真))、第1のループ有界化処理とは異なり、ループの後の処理に制御を移すように第2のループ有界化処理を用いてループを有界化する(S521)。より具体的には、ループ展開によりループを有界化するのであれば図3のルールa、b’を、ループの強制終了によりループを有界化するのであれば図5のルールc’を用いてループを有界化する。   If the variable definition position is not in the loop (S515 or S517 is Yes (comparison result is true)), unlike the first loop bounding process, the second control is transferred to the process after the loop. The loop is bounded using the loop bounding process (S521). More specifically, if the loop is bounded by loop expansion, the rules a and b ′ of FIG. 3 are used, and if the loop is bounded by forced termination of the loop, the rule c ′ of FIG. 5 is used. To make the loop bounded.

以下、具体例を用いて、ループをループボディの繰返しに展開する処理を説明する。検査対象プログラムであるソースファイル200aのループ(第14行〜第17行)は、まず図3のルールaを用いて有界プログラム(図8のソースファイル400c)の1回目のループボディ(第14_1行、第15_1行、第16_1行、及び第17_1行)、2回目のループボディ(第14_2行、第15_2行、第16_2行、及び第17_2行)に展開される。次に、図3のルールb’を用いて、ループの後に続くラベルwhile1_breakに制御を移すgoto文(第14_3行)に変換される。これにより、ループの後に続く処理が有界モデル検査で探索可能となる。   Hereinafter, a process for expanding a loop into repetition of a loop body will be described using a specific example. The loop (14th to 17th lines) of the source file 200a, which is the program to be inspected, first uses the rule a of FIG. 3 and the first loop body (14_1) of the bounded program (source file 400c of FIG. 8). Line, line 15_1, line 16_1, and line 17_1) and the second loop body (line 14_2, line 15_2, line 16_2, line 17_2). Next, using the rule b 'of FIG. 3, it is converted into a goto statement (line 14_3) in which control is transferred to the label while1_break following the loop. As a result, the processing following the loop can be searched by the bounded model check.

ここで、もしルールbを用いた場合(すなわち、第1のループ有界化処理を用いた場合)には、図4のソースファイル400bの第14_3行のように、assertを用いた表明に変換されるので、assertに指定された式が偽となる場合、ループの後に続く処理には制御が移らない。つまり、すなわちループの後に続く処理が有界モデル検査で探索されないこととなってしまう。   Here, if rule b is used (that is, if the first loop bounding process is used), it is converted into an assert using assert as in line 14_3 of source file 400b in FIG. Therefore, if the expression specified in assert becomes false, control does not move to the processing following the loop. That is, the process following the loop is not searched by the bounded model check.

しかしながら、図2のソースファイル200aを検査対象プログラムとする場合には、図11で示したループの終了位置(第17行)よりも後の位置で値が参照される変数は、図12を参照すると、x(第19行で参照)のみであることがわかる。   However, when the source file 200a in FIG. 2 is the inspection target program, refer to FIG. 12 for variables whose values are referenced after the loop end position (line 17) shown in FIG. Then, it turns out that it is only x (refer with 19th line).

変数xは、ループ開始前に値が設定され(第12行)、ループ終了(第17行)後に値が参照されている(第19行)。よって、変数xの定義位置とループの開始位置の比較で比較結果が真(S515のYes)となるので、ループ有界化モジュール113の処理はS513に戻る。この例において調べるべき変数はxのみであったので、ループ有界化モジュール113は、S513からS521に処理を進める。S521において、ループ有界化モジュール113は、検査対象プログラムであるソースファイル200aを、第2のループ有界化処理により、有界プログラムであるソースファイル400cへと変換する。
このように変換された有界プログラムを出力することにより(S523)、有界モデル検査ツールがループよりも後の処理を探索できるようになる。
The value of the variable x is set before the start of the loop (line 12), and the value is referenced after the end of the loop (line 17) (line 19). Therefore, since the comparison result is true (Yes in S515) by comparing the definition position of the variable x and the start position of the loop, the processing of the loop bounding module 113 returns to S513. In this example, since only x is a variable to be examined, the loop bounding module 113 advances the process from S513 to S521. In S521, the loop bounding module 113 converts the source file 200a, which is a program to be inspected, into a source file 400c, which is a bounded program, by the second loop bounding process.
By outputting the bounded program converted in this way (S523), the bounded model checking tool can search for processing after the loop.

(第2実施形態)
以下、図13及び図14を参照しながら本発明の第2実施形態を説明する。図13及び図14は、本発明の第2実施形態を説明するための図である。尚、第1実施形態と同様の構成及び動作を行う構成には第1実施形態と同じ符号を付すと共に、説明を省略する。また、構成以外にも、有限モデル検査の説明や、情報処理装置100が入力とすることのできる検査対象プログラム等の、第1実施形態と同様の前提等については、説明を省略している。
図13は、第2実施形態に係る情報処理装置100の概略構成を示す機能ブロック図である。
(Second Embodiment)
Hereinafter, a second embodiment of the present invention will be described with reference to FIGS. 13 and 14. 13 and 14 are diagrams for explaining the second embodiment of the present invention. In addition, the same code | symbol as 1st Embodiment is attached | subjected to the structure and operation | movement similar to 1st Embodiment, and description is abbreviate | omitted. In addition to the configuration, descriptions of finite model inspection and assumptions similar to those of the first embodiment such as an inspection target program that can be input by the information processing apparatus 100 are omitted.
FIG. 13 is a functional block diagram illustrating a schematic configuration of the information processing apparatus 100 according to the second embodiment.

本実施形態に係る情報処理装置100は、例えばCPU(Central Processing Unit)等の演算装置である情報処理部110と、例えば記憶媒体等であるファイル格納部120とを有する。この点、第1の実施形態と同様である。   The information processing apparatus 100 according to the present embodiment includes an information processing unit 110 that is an arithmetic device such as a CPU (Central Processing Unit), and a file storage unit 120 that is a storage medium, for example. This is the same as in the first embodiment.

ここで、情報処理部110が、入力モジュール111、ループ有界化モジュール113、及び出力モジュール115に加えて、有界モデル検査モジュール117を更に有する点が第1実施形態と異なる。尚、これらのモジュールはソフトウェアで実装されていてもハードウェアで実装されていても良い。すなわち、情報処理部110上の処理は、すべてコンピュータに実行させるプログラムにより実現されうる。   The information processing unit 110 is different from the first embodiment in that the information processing unit 110 further includes a bounded model checking module 117 in addition to the input module 111, the loop bounding module 113, and the output module 115. Note that these modules may be implemented by software or hardware. That is, all the processes on the information processing unit 110 can be realized by a program executed by a computer.

情報処理部110は、入力モジュール111と、ループ有界化モジュール113と、出力モジュール115と、有界モデル検査モジュール117とに、図14に示すS601乃至S605の処理を実行させる。
以下、図14のフローチャートを参照しながら、本実施形態に係る情報処理装置100の処理の流れを詳細に説明する。
The information processing unit 110 causes the input module 111, the loop bounding module 113, the output module 115, and the bounded model checking module 117 to execute the processes of S601 to S605 illustrated in FIG.
Hereinafter, the flow of processing of the information processing apparatus 100 according to the present embodiment will be described in detail with reference to the flowchart of FIG.

情報処理部110は、利用者(ユーザ)から検査対象プログラムと検査対象関数との指定を受付け、入力モジュール111と、ループ有界化モジュール113と、出力モジュール115と、有界モデル検査モジュール117とに図14に示す一連の処理を実行させる。   The information processing unit 110 receives designation of the inspection target program and the inspection target function from the user (user), and inputs the input module 111, the loop bounding module 113, the output module 115, and the bounded model checking module 117. Then, a series of processes shown in FIG. 14 is executed.

入力モジュール111は、検査対象プログラムをファイル格納部120から読込む(S601)。そしてループ有界化モジュール113は、ループボディの処理の繰返しが固定回数に制限された有界プログラムに変換し、生成した有界プログラムを出力する(S603)。ここで、有界プログラムへの変換処理(S603)の詳細は、第1実施形態の図10の処理と同様である。   The input module 111 reads the inspection target program from the file storage unit 120 (S601). The loop bounding module 113 converts the loop body processing into a bounded program that is limited to a fixed number of times, and outputs the generated bounded program (S603). Here, the details of the conversion processing to the bounded program (S603) are the same as the processing of FIG. 10 of the first embodiment.

有界モデル検査モジュール117は、有界プログラムを入力として、プログラムを有界名有限状態遷移システムに変換し、同システム上の有限状態空間を決められた範囲内で網羅探索して、プログラムの正しさを示す性質(プロパティ)を表現した論理式が成立するか否かを調べる(S605)。出力モジュール115は、当該有界モデル検査モジュール117による検査結果をファイル格納部120へと出力する(S607)。   The bounded model checking module 117 receives the bounded program, converts the program into a bounded name finite state transition system, and exhaustively searches the finite state space on the system within a predetermined range to correct the program. It is examined whether or not a logical expression expressing the property indicating the trueness is established (S605). The output module 115 outputs the inspection result by the bounded model inspection module 117 to the file storage unit 120 (S607).

有界モデル検査モジュール117は、決められた時間内に網羅探索が終わった場合、検査結果として不具合の有無を示す。もし不具合があった場合には、有界モデル検査モジュール117は、初期状態からプロパティが成立しない状態までの変数値の遷移列(パス情報)も併せて示す。他方、決められた網羅探索が終わらなかった場合には、有界モデル検査モジュール117は不具合の有無を示すことができない。   The bounded model inspection module 117 indicates the presence or absence of a defect as an inspection result when the exhaustive search is completed within a predetermined time. If there is a problem, the bounded model checking module 117 also shows a transition sequence (path information) of variable values from the initial state to the state where the property is not established. On the other hand, if the determined exhaustive search has not ended, the bounded model checking module 117 cannot indicate the presence or absence of a defect.

(第1及び第2実施形態の効果)
有界モデル検査法を用いたプログラムの検査では、プログラムを有界名有限状態空間に収めるために、ループを固定回数の繰返しに変換する。第1のループ有界化処理のみを用いる場合には、固定回数を超えるループボディの繰返しに続く処理にプログラム実行の制御が移らないように有界プログラムを生成するため、ループに続く処理が有界モデル検査の探索対象外となってしまう。換言すると、ループに続く処理で生じる不具合を有界モデル検査で見逃す場合があった。
(Effects of the first and second embodiments)
In the inspection of a program using the bounded model checking method, a loop is converted into a fixed number of repetitions in order to fit the program in a bounded name finite state space. When only the first loop bounding process is used, a bounded program is generated so that the control of program execution does not shift to the process following the loop body repetition exceeding the fixed number of times, so there is a process following the loop. It will be excluded from the search target of the field model inspection. In other words, in some cases, a defect that occurs in the process following the loop is overlooked by the bounded model inspection.

第1及び第2実施形態に示す手法によれば、ループの後に続く処理で値が参照される変数について、その値がループ内で設定されていない場合であれば、固定回数を超えるループボディの繰返しに続く処理にもプログラム実行の制御が移るように変換されるので、ループに続く処理も有界モデル検査による探索対象となる。よって、このような場合に、ループに続く処理で生じる不具合を有界モデル検査で示すことができるようになる。   According to the method shown in the first and second embodiments, if a variable whose value is referred to in the process following the loop is not set in the loop, the loop body exceeding the fixed number of times Since the program execution control is also transferred to the process following the iteration, the process following the loop is also a search target by the bounded model check. Therefore, in such a case, it becomes possible to show a defect caused by the processing following the loop by the bounded model check.

(付記事項)
なお、前述の各実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
尚、前述の各実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(Additional notes)
Note that the configurations of the above-described embodiments may be combined or some of the components may be replaced. The configuration of the present invention is not limited to the above-described embodiment, and various modifications may be made without departing from the scope of the present invention.
A part or all of each of the above-described embodiments can be described as in the following supplementary notes, but is not limited thereto.

(付記1)
検査対象プログラムの入力を受ける入力手段と、前記検査対象プログラムから、該検査対象プログラムに含まれるループによる繰返し演算数を閾値以下とするための有界プログラムを生成する生成手段とを備え、前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える、情報処理装置。
(Appendix 1)
An input unit that receives an input of the inspection target program; and a generation unit that generates a bounded program for setting the number of repeated operations by a loop included in the inspection target program to be equal to or less than a threshold value from the inspection target program, The means determines whether or not to make a bounded program that performs the processing after the loop in the program to be inspected depending on whether or not a value to be set in the loop is set to a variable that is referenced after the loop. Change information processing equipment.

(付記2)
前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定される場合には、前記検査対象プログラム内の前記ループ後の処理を行わない有界プログラムを生成し、前記ループ以降で参照される変数に前記ループ内で値が設定されない場合には、前記閾値回の繰返し演算後、前記検査対象プログラム内の前記ループ処理後の処理を行う有界プログラムを生成する、付記1記載の情報処理装置。
(Appendix 2)
The generation means generates a bounded program that does not perform processing after the loop in the program to be inspected when a value is set in the loop to a variable referred to after the loop, and the loop If no value is set in the loop for a variable to be referred to later, a bounded program for performing the processing after the loop processing in the inspection target program is generated after the threshold number of iterations. The information processing apparatus described.

(付記3)
前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定される場合には、前記閾値回の繰返し演算後に強制終了し、前記ループ以降で参照される変数に前記ループ内で値が設定されない場合には、前記閾値回の繰返し演算後、前記検査対象プログラム内の前記ループ後の処理へ移る有界プログラムを生成する、付記1又は付記2に記載の情報処理装置。
(Appendix 3)
The generating means forcibly terminates after the threshold number of iterations when a value set in the loop is set to a variable referred to after the loop, and the variable referred to after the loop If the value is not set in step 1, the information processing apparatus according to claim 1 or 2, wherein a bounded program that moves to the processing after the loop in the inspection target program is generated after the threshold value is repeated.

(付記4)
前記検査対象プログラムが生成した有界プログラムを用いて、有界モデル検査を行う検査手段をさらに備える、付記1乃至付記3のいずれか1項に記載の情報処理装置。
(Appendix 4)
4. The information processing apparatus according to claim 1, further comprising inspection means for performing a bounded model inspection using a bounded program generated by the inspection object program.

(付記5)
記憶媒体から、検査対象プログラムを読込む入力ステップと、前記検査対象プログラムから、該検査対象プログラムに含まれるループによる繰返し演算数を閾値以下とするための有界プログラムを生成する生成ステップと、を備え、前記生成ステップは、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える、情報処理方法。
(Appendix 5)
An input step of reading the inspection target program from the storage medium, and a generation step of generating a bounded program for setting the number of repeated operations by a loop included in the inspection target program to be equal to or less than a threshold from the inspection target program. The generating step is a bounded program that performs processing after the loop in the program to be inspected according to whether or not a value to be set in the loop is set to a variable that is referred to after the loop. Information processing method that changes whether or not.

(付記6)
コンピュータに情報処理方法を実行させる情報処理プログラムであって、当該情報処理方法は、記憶媒体から、検査対象プログラムを読込む入力ステップと、前記検査対象プログラムから、該検査対象プログラムに含まれるループの繰返し演算数を閾値以下とするための有界プログラムを生成する生成ステップと、を備え、前記生成ステップは、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える、情報処理プログラム。
(Appendix 6)
An information processing program for causing a computer to execute an information processing method, comprising: an input step of reading an inspection target program from a storage medium; and a loop included in the inspection target program from the inspection target program A generation step for generating a bounded program for setting the number of repetitive operations to be equal to or less than a threshold value, and the generation step determines whether or not a value is set in the loop to a variable referred to after the loop. In response, an information processing program that changes whether or not to use a bounded program that performs the processing after the loop in the inspection target program.

100・・・情報処理装置、110・・・情報処理部、111・・・入力モジュール、113・・・ループ有界化モジュール、115・・・出力モジュール、120・・・ファイル格納部   DESCRIPTION OF SYMBOLS 100 ... Information processing apparatus, 110 ... Information processing part, 111 ... Input module, 113 ... Loop bound module, 115 ... Output module, 120 ... File storage part

Claims (6)

検査対象プログラムの入力を受ける入力手段と、
前記検査対象プログラムから、該検査対象プログラムに含まれるループによる繰返し演算数を閾値以下とするための有界プログラムを生成する生成手段と
を備え、
前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える、
情報処理装置。
Input means for receiving the program to be inspected;
Generating means for generating a bounded program for setting the number of repeated operations by a loop included in the inspection target program to be equal to or less than a threshold value from the inspection target program;
Whether the generation means is a bounded program that performs processing after the loop in the program to be inspected depending on whether a value to be set in the loop is set to a variable referred to after the loop. Change
Information processing device.
前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定される場合には、前記検査対象プログラム内の前記ループ後の処理を行わない有界プログラムを生成し、前記ループ以降で参照される変数に前記ループ内で値が設定されない場合には、前記閾値回の繰返し演算後、前記検査対象プログラム内の前記ループ処理後の処理を行う有界プログラムを生成する、
請求項1記載の情報処理装置。
The generation means generates a bounded program that does not perform processing after the loop in the program to be inspected when a value is set in the loop to a variable referred to after the loop, and the loop If no value is set in the loop for a variable referred to later, a bounded program for performing the processing after the loop processing in the inspection target program is generated after the threshold number of iterations.
The information processing apparatus according to claim 1.
前記生成手段は、前記ループ以降で参照される変数に前記ループ内で値が設定される場合には、前記閾値回の繰返し演算後に強制終了し、前記ループ以降で参照される変数に前記ループ内で値が設定されない場合には、前記閾値回の繰返し演算後、前記検査対象プログラム内の前記ループ後の処理へ移る有界プログラムを生成する、
請求項1又は請求項2に記載の情報処理装置。
The generating means forcibly terminates after the threshold number of iterations when a value set in the loop is set to a variable referred to after the loop, and the variable referred to after the loop If the value is not set in, generate a bounded program that moves to the processing after the loop in the program to be inspected after the repetitive calculation of the threshold times.
The information processing apparatus according to claim 1 or 2.
前記検査対象プログラムが生成した有界プログラムを用いて、有界モデル検査を行う検査手段をさらに備える、
請求項1乃至請求項3のいずれか1項に記載の情報処理装置。
Using a bounded program generated by the inspection target program, further comprising inspection means for performing a bounded model inspection;
The information processing apparatus according to any one of claims 1 to 3.
記憶媒体から、検査対象プログラムを読込む入力ステップと、
前記検査対象プログラムから、該検査対象プログラムに含まれるループによる繰返し演算数を閾値以下とするための有界プログラムを生成する生成ステップと、
を備え、
前記生成ステップは、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える、
情報処理方法。
An input step of reading the program to be inspected from the storage medium;
A generation step for generating a bounded program for setting the number of repeated operations by a loop included in the inspection target program to be equal to or less than a threshold value from the inspection target program;
With
Whether the generation step is a bounded program that performs processing after the loop in the program to be inspected depending on whether a value to be set in the loop is set to a variable referred to after the loop. Change
Information processing method.
コンピュータに情報処理方法を実行させる情報処理プログラムであって、当該情報処理方法は、
記憶媒体から、検査対象プログラムを読込む入力ステップと、
前記検査対象プログラムから、該検査対象プログラムに含まれるループの繰返し演算数を閾値以下とするための有界プログラムを生成する生成ステップと、
を備え、
前記生成ステップは、前記ループ以降で参照される変数に前記ループ内で値が設定されるか否かに応じて、前記検査対象プログラム内の前記ループ後の処理を行う有界プログラムとするか否かを変える、
情報処理プログラム。
An information processing program for causing a computer to execute an information processing method,
An input step of reading the program to be inspected from the storage medium;
A generation step for generating a bounded program for setting the number of repeated operations of the loop included in the inspection target program to be equal to or less than a threshold value from the inspection target program;
With
Whether the generation step is a bounded program that performs processing after the loop in the program to be inspected depending on whether a value to be set in the loop is set to a variable referred to after the loop. Change
Information processing program.
JP2011204793A 2011-09-20 2011-09-20 Information processor, information processing method and information processing program Withdrawn JP2013065258A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011204793A JP2013065258A (en) 2011-09-20 2011-09-20 Information processor, information processing method and information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011204793A JP2013065258A (en) 2011-09-20 2011-09-20 Information processor, information processing method and information processing program

Publications (1)

Publication Number Publication Date
JP2013065258A true JP2013065258A (en) 2013-04-11

Family

ID=48188680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011204793A Withdrawn JP2013065258A (en) 2011-09-20 2011-09-20 Information processor, information processing method and information processing program

Country Status (1)

Country Link
JP (1) JP2013065258A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015212929A (en) * 2014-02-27 2015-11-26 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited Loop abstraction for model checking
JP2017062780A (en) * 2015-09-15 2017-03-30 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited Static analysis based on efficient elimination of false positive
JP2018028879A (en) * 2016-08-19 2018-02-22 日本電信電話株式会社 Program analyzer, program analysis method and program analysis program

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015212929A (en) * 2014-02-27 2015-11-26 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited Loop abstraction for model checking
JP2017062780A (en) * 2015-09-15 2017-03-30 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited Static analysis based on efficient elimination of false positive
JP2018028879A (en) * 2016-08-19 2018-02-22 日本電信電話株式会社 Program analyzer, program analysis method and program analysis program

Similar Documents

Publication Publication Date Title
CN110633206B (en) System and method for automation requirement based test case generation based on equivalence class analysis
US20110093824A1 (en) Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
JP5450840B2 (en) Test data generation method for program execution performance evaluation
US8578311B1 (en) Method and system for optimal diameter bounding of designs with complex feed-forward components
JP7077909B2 (en) Dead code analysis program, dead code analysis method and dead code analysis device
US7523029B2 (en) Logic verification and logic cone extraction technique
US8060848B2 (en) Verification support apparatus, verification support method, and computer product
US9081930B1 (en) Throughput during high level synthesis
JP2013065258A (en) Information processor, information processing method and information processing program
Yang et al. Coverage-driven stimuli generation
US8909579B2 (en) Identifying invariant candidates based on proofs
US9569572B2 (en) Selectively loading design data for logical equivalency check
Mateescu et al. Property-dependent reductions adequate with divergence-sensitive branching bisimilarity
CN101894072B (en) Method for detecting abnormal termination during model detection
US8015523B2 (en) Method and system for sequential netlist reduction through trace-containment
JP2009134360A (en) Model inspection system, model inspection method, and model inspection program
JP5464031B2 (en) Program verification apparatus, method and program
JP6790921B2 (en) Program analyzer, program analysis method and program analysis program
Grellois et al. Indexed linear logic and higher-order model checking
US11023357B1 (en) Method and system for sequential equivalence checking
JP6547345B2 (en) Test case generation program, test case generation method and test case generation apparatus
Kallehbasti et al. On how bit-vector logic can help verify LTL-based specifications
JP6497199B2 (en) Program test prioritization system
Keng et al. Automated debugging of missing assumptions
US8527922B1 (en) Method and system for optimal counterexample-guided proof-based abstraction

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20141202