JP6976064B2 - モデルチェックのためのデータ構造抽象化 - Google Patents
モデルチェックのためのデータ構造抽象化 Download PDFInfo
- Publication number
- JP6976064B2 JP6976064B2 JP2017042840A JP2017042840A JP6976064B2 JP 6976064 B2 JP6976064 B2 JP 6976064B2 JP 2017042840 A JP2017042840 A JP 2017042840A JP 2017042840 A JP2017042840 A JP 2017042840A JP 6976064 B2 JP6976064 B2 JP 6976064B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- data structure
- source code
- statement
- loops
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
- G06F11/3608—Analysis of software for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、2016年3月9日に出願されたインド非仮出願(名称:DATA STRUCTURE ABSTRACTION FOR MODEL CHECKING)第201621008284号の優先権を主張するものである。上記出願の内容全体は、参照により本明細書に援用される。
に達する。
元のプログラムでは、アサーションが違反される場合、あるインデックスi0で違反し得、a[i0]の値は、初期化又はa[i0]:p及びa[i0]:qにk及びk*kがそれぞれ割り当てられるポイントから達することができる。したがって、例えば、属性が元のプログラムで違反の場合、あるi0で違反することになり、xが、元のプログラム内でa[i0]がとるものと同じ経路をとる抽象プログラムの実行があり、したがって、変換プログラムも属性が違反し得る。この特定の例では、属性が、変換プログラムに対して当てはまらない場合、元のプログラムでも当てはまり得ない。しかし、これは、全ての事例で全体的に当てはまるわけではない。変換コードを以下に示す(例1.2)。
102 プロセッサ
104 IOインタフェース
106 メモリ
108 モジュール
110 データ
Claims (15)
- ソースコードのモデルチェックのための前記ソースコードでのデータ構造抽象化のプロセッサにより実施される方法であって、
1つ又は複数のハードウェアプロセッサによって、抽象化するソースコードを受信することと、
前記1つ又は複数のハードウェアプロセッサによって、前記ソースコード内の1つ又は複数のデータ構造アクセスを識別することであって、前記1つ又は複数のデータ構造アクセスは、前記ソースコード内のデータ構造にアクセスするために、前記データ構造の要素を参照する表現を含み、前記1つ又は複数のデータ構造アクセスのうちのデータ構造アクセスは、アレイ、ハッシュテーブル、グラフ、ツリー、クラス、セット、及びマップのうちの1つを含む、識別することと、
前記1つ又は複数のハードウェアプロセッサを介して、前記1つ又は複数のデータ構造アクセスを含む1つ又は複数のループを識別することであって、前記1つ又は複数のループは、制御ステートメント及びループ本体を含み、前記ループは、前記ループ本体を前記制御ステートメントに基づいて繰り返し実行させる、識別することと、
前記1つ又は複数のハードウェアプロセッサを介して、前記1つ又は複数のループのループタイプを識別することであって、前記ループタイプは完全ループ及び部分ループを含み、前記完全ループは、前記データ構造の前記要素の全てにわたり繰り返されるループを含み、及び前記部分ループは、前記データ構造の前記要素のサブセットにわたり繰り返されるループを含む、識別することと、
前記1つ又は複数のハードウェアプロセッサを介して、少なくとも前記ループタイプに基づいて抽象化コードを生成することであって、前記抽象化コードは、前記データ構造を抽象化することが可能であり、前記データ構造を抽象化することは、前記1つ又は複数のループの各ループについて、
前記ループの反復でアクセスされる前記データ構造の要素に基づいて、前記1つ又は複数のデータ構造アクセスを前記ループの前記ループ本体内の非決定論的値又は、前記データ構造の代表的な要素で置換すること、
前記ループのループタイプに基づいて、前記データ構造の前記要素に作用する前記ループのループ制御ステートメントをなくすこと、及び
前記ループ本体の冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ代入を追加すること
を実行することを含む、生成することと、
前記1つ又は複数のハードウェアプロセッサを介して、モデルチェックのために前記抽象化コードを提供することと
を含む、プロセッサ実施方法。 - 前記ループの前記ループ制御ステートメントをなくすことは、
前記ループの前記ループタイプが前記完全ループであると判断することと、
前記ループ制御ステートメントをif(真)ステートメントで置換することと
を含む、請求項1に記載の方法。 - 前記ループの前記ループ制御ステートメントをなくすことは、
前記ループの前記ループタイプが前記部分ループであると判断することと、
前記ループ制御ステートメントをif(非決定論的)ステートメントで置換することと
を含む、請求項1に記載の方法。 - 前記データ構造アクセスの発生ロケーションを特定することを更に含み、前記ロケーションは、前記ソースコードのステートメントの左辺(LHS)及び右辺(RHS)のうちの一方である、請求項1に記載の方法。
- 前記データ構造アクセスの前記発生ロケーションが前記ソースコードの前記ステートメントの前記右辺(RHS)であると判断された場合に、
前記アクセスされる要素が、前記ループの反復と異なる反復に関連付けられている場合、前記1つ又は複数のデータ構造アクセスを非決定論的値で置換することと
を更に含む、請求項4に記載の方法。 - 前記データ構造アクセスの前記発生ロケーションが前記ソースコードの前記ステートメントの前記左辺であると判断される場合に、前記1つ又は複数のデータ構造アクセスを前記データ構造の代表的な要素で置換することを更に含む、請求項4に記載の方法。
- 前記ループ本体の前記冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ代入を追加する前に、
前記ステートメントの前記左辺での前記ループ本体内の非データ構造変数を識別することと、
非決定論的値を前記非データ構造変数に代入することと
を更に含む、請求項4に記載の方法。 - ソースコードのモデルチェックのための前記ソースコードでのデータ構造抽象化のシステムであって、
1つ又は複数のメモリと、
1つ又は複数のハードウェアプロセッサであって、前記1つ又は複数のメモリは前記1つ又は複数のハードウェアプロセッサに接続される、1つ又は複数のハードウェアプロセッサと
を含み、前記1つ又は複数のハードウェアプロセッサは、前記1つ又は複数のメモリに記憶されたプログラム命令を実行して、
抽象化するソースコードを受信することと、
前記ソースコード内の1つ又は複数のデータ構造アクセスを識別することであって、前記1つ又は複数のデータ構造アクセスは、前記ソースコード内のデータ構造にアクセスするために、データ構造の要素を参照する表現を含み、前記1つ又は複数のデータ構造アクセスのうちのデータ構造アクセスは、アレイ、ハッシュテーブル、グラフ、ツリー、クラス、セット、及びマップのうちの1つを含む、識別することと、
前記1つ又は複数のデータ構造アクセスを含む1つ又は複数のループを識別することであって、前記1つ又は複数のループは、制御ステートメント及びループ本体を含み、前記ループは、前記ループ本体を前記制御ステートメントに基づいて繰り返し実行させる、識別することと、
前記1つ又は複数のループのループタイプを識別することであって、前記ループタイプは完全ループ及び部分ループを含み、完全ループは、前記データ構造の要素の全てにわたり繰り返されるループを含み、及び部分ループは、前記データ構造の要素のサブセットにわたり繰り返されるループを含む、識別することと、
少なくとも前記ループタイプに基づいて抽象化コードを生成することであって、前記抽象化コードは、前記データ構造を抽象化することが可能であり、前記データ構造を抽象化することは、前記1つ又は複数のループの各ループについて、
前記ループの反復でアクセスされる前記データ構造の要素に基づいて、前記1つ又は複数のデータ構造アクセスを前記ループの前記ループ本体内の非決定論的値又は、前記データ構造の代表的な要素で置換すること、
前記ループのループタイプに基づいて、前記データ構造の前記要素に作用する前記ループのループ制御ステートメントをなくすこと、及び
前記ループ本体の冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ代入を追加すること
を実行することを含む、生成することと、
モデルチェックのために前記抽象化コードを提供することと
を実行することが可能である、システム。 - 前記ループの前記ループ制御ステートメントをなくすために、前記1つ又は複数のハードウェアプロセッサは、
前記ループの前記ループタイプが前記完全ループであると判断するプログラム命令と、
前記ループ制御ステートメントをif(真)ステートメントで置換するプログラム命令と
を実行することが可能である、請求項8に記載のシステム。 - 前記ループの前記ループ制御ステートメントをなくすために、前記1つ又は複数のハードウェアプロセッサは、
前記ループの前記ループタイプが前記部分ループであると判断するプログラム命令と、
前記ループ制御ステートメントをif(非決定論的)ステートメントで置換するプログラム命令と
を実行することが可能である、請求項8に記載のシステム。 - 前記1つ又は複数のハードウェアプロセッサは、前記データ構造アクセスの発生ロケーションを特定するプログラム命令を実行することが可能であり、前記ロケーションは、前記ソースコードのステートメントの左辺(LHS)及び右辺(RHS)のうちの一方である、請求項8に記載のシステム。
- 前記データ構造アクセスの前記発生ロケーションが、前記ソースコードの前記ステートメントの前記右辺(RHS)であると判断された場合に、前記1つ又は複数のハードウェアプロセッサは、
前記アクセスされる要素が、前記ループの反復と異なる反復に関連付けられている場合、前記1つ又は複数のデータ構造アクセスを非決定論的値で置換するプログラム命令と
を実行することが可能である、請求項11に記載のシステム。 - 前記データ構造アクセスの前記発生ロケーションが、前記ソースコードの前記ステートメントの前記左辺であると判断される場合に、前記1つ又は複数のハードウェアプロセッサは、前記1つ又は複数のデータ構造アクセスを前記データ構造の代表的な要素で置換するプログラム命令を実行することが可能である、請求項11に記載のシステム。
- 前記ループ本体の前記冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ代入を追加する前に、前記1つ又は複数のハードウェアプロセッサは、
前記ステートメントの前記左辺での前記ループ本体内の非データ構造変数を識別するプログラム命令と、
非決定論的値を前記非データ構造変数に代入するプログラム命令と
を実行することが可能である、請求項11に記載のシステム。 - 非一時的コンピュータ可読媒体であって、ソースコード内のデータ構造抽象化の方法を実行するコンピュータプログラムを具現した非一時的コンピュータ可読媒体であって、前記方法は、
抽象化するソースコードを受信することと、
前記ソースコード内の1つ又は複数のデータ構造アクセスを識別することであって、前記1つ又は複数のデータ構造アクセスは、前記ソースコード内のデータ構造にアクセスするために、前記データ構造の要素を参照する表現を含み、前記1つ又は複数のデータ構造アクセスのうちのデータ構造アクセスは、アレイ、ハッシュテーブル、グラフ、ツリー、クラス、セット、及びマップのうちの1つを含む、識別することと、
前記1つ又は複数のデータ構造アクセスを含む1つ又は複数のループを識別することであって、前記1つ又は複数のループは、制御ステートメント及びループ本体を含み、前記ループは、前記ループ本体を前記制御ステートメントに基づいて繰り返し実行させる、識別することと、
前記1つ又は複数のループのループタイプを識別することと、
少なくとも前記ループタイプに基づいて抽象化コードを生成することであって、前記抽象化コードは、前記データ構造を抽象化することが可能であり、前記データ構造を抽象化することは、前記1つ又は複数のループの各ループについて、
前記ループの反復でアクセスされる前記データ構造の要素に基づいて、前記ループの前記ループ本体内の非決定論的値又は、前記データ構造の代表的な要素で前記1つ又は複数のデータ構造アクセスを置換すること、
前記ループのループタイプに基づいて、前記データ構造の前記要素に作用する前記ループのループ制御ステートメントをなくすこと、及び
前記ループ本体の冒頭及び前記ソースコードの前記ループ本体の後に、複数の非アレイ代入を追加すること
を実行することを含む、生成することと、
モデルチェックのために前記抽象化コードを提供することと
を含む、非一時的コンピュータ可読媒体。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| IN201621008284 | 2016-03-09 | ||
| IN201621008284 | 2016-03-09 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2017174418A JP2017174418A (ja) | 2017-09-28 |
| JP6976064B2 true JP6976064B2 (ja) | 2021-12-01 |
Family
ID=58261510
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017042840A Active JP6976064B2 (ja) | 2016-03-09 | 2017-03-07 | モデルチェックのためのデータ構造抽象化 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US10534689B2 (ja) |
| EP (1) | EP3217284B1 (ja) |
| JP (1) | JP6976064B2 (ja) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3493051A1 (en) * | 2017-11-30 | 2019-06-05 | The MathWorks, Inc. | System and methods for evaluating compliance of implementation code with a software architecture specification |
| DE102018003142A1 (de) | 2017-12-13 | 2019-06-13 | The Mathworks, Inc. | Automatische Einstellung von Multitasking-Konfigurationen für ein Codeprüfsystem |
| US10877870B2 (en) * | 2018-06-11 | 2020-12-29 | Tata Consultancy Services Limited | Method and system for verifying properties of source code |
| EP3859532B1 (en) * | 2020-01-31 | 2022-10-12 | Tata Consultancy Services Limited | Method and system for counter example guided loop abstraction refinement |
| US11755294B2 (en) | 2020-06-09 | 2023-09-12 | The Mathworks, Inc. | Systems and methods for generating service access points for RTE services in code or other RTE service information for use with the code |
| EP4530829B1 (en) * | 2023-09-29 | 2026-01-21 | Tata Consultancy Services Limited | Method and system for performing outer loop abstraction for efficient verification of reactive systems |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| NO984777L (no) * | 1998-04-06 | 1999-10-05 | Cable As V Knut Foseide Safety | Tyverivarslingskabel |
| US7058925B2 (en) | 2002-04-30 | 2006-06-06 | Microsoft Corporation | System and method for generating a predicate abstraction of a program |
| ATE526628T1 (de) | 2004-01-22 | 2011-10-15 | Nec Lab America Inc | System und verfahren zum modellieren, abstrahieren und analysieren von software |
| US7921411B2 (en) | 2006-10-20 | 2011-04-05 | International Business Machines Corporation | Model checking of non-terminating software programs |
| US8612938B2 (en) * | 2009-01-05 | 2013-12-17 | Tata Consultancy Services Limited | System and method for automatic generation of test data to satisfy modified condition decision coverage |
| US8627273B2 (en) | 2009-07-22 | 2014-01-07 | International Business Machines Corporation | Model checking of liveness property in a phase abstracted model |
| US8473883B2 (en) * | 2011-08-03 | 2013-06-25 | International Business Machines Corporation | Abstraction for arrays in integrated circuit models |
| JP5923636B2 (ja) * | 2014-02-27 | 2016-05-24 | タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited | モデル検査のためのループ抽象化 |
-
2017
- 2017-03-02 EP EP17158901.3A patent/EP3217284B1/en active Active
- 2017-03-02 US US15/448,097 patent/US10534689B2/en active Active
- 2017-03-07 JP JP2017042840A patent/JP6976064B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| EP3217284B1 (en) | 2022-06-08 |
| US20170262356A1 (en) | 2017-09-14 |
| EP3217284A1 (en) | 2017-09-13 |
| JP2017174418A (ja) | 2017-09-28 |
| US10534689B2 (en) | 2020-01-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6976064B2 (ja) | モデルチェックのためのデータ構造抽象化 | |
| US8732669B2 (en) | Efficient model checking technique for finding software defects | |
| US11650905B2 (en) | Testing source code changes | |
| US8516443B2 (en) | Context-sensitive analysis framework using value flows | |
| US11720334B2 (en) | Inductive equivalence in machine-based instruction editing | |
| US8549502B2 (en) | Compiler with user-defined type inference rules | |
| US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
| JP6264964B2 (ja) | ソフトウェア検証方法及びプロセッサ | |
| CN111782207B (zh) | 任务流代码生成方法、装置、设备及存储介质 | |
| US9158506B2 (en) | Loop abstraction for model checking | |
| Delgado‐Pérez et al. | Performance mutation testing | |
| US20110145799A1 (en) | Path-sensitive dataflow analysis including path refinement | |
| WO2015130675A2 (en) | Apparatus and method for testing computer program implementation against a design model | |
| Monteiro et al. | Bounded model checking of C++ programs based on the Qt cross‐platform framework | |
| CN115686467A (zh) | 动态语言中的类型推断 | |
| US11442845B2 (en) | Systems and methods for automatic test generation | |
| CN105760292A (zh) | 一种用于单元测试的断言验证方法和装置 | |
| US20150020056A1 (en) | Methods and systems for file processing | |
| US10528691B1 (en) | Method and system for automated selection of a subset of plurality of validation tests | |
| EP3859532B1 (en) | Method and system for counter example guided loop abstraction refinement | |
| CN117785645A (zh) | 一种risc-v指令集的验证方法、装置和电子设备 | |
| CN106294130A (zh) | 一种单元测试方法及装置 | |
| CN119201564B (zh) | 循环单元的有界模型检测方法及装置 | |
| Brodeur et al. | tBPF: Testing Berkeley Packet Filter Programs Using User Mode Linux | |
| US20260119161A1 (en) | Managing service dependency using an attribute dependency graph |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200130 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210209 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210507 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210709 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210921 |
|
| 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: 20211015 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211109 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6976064 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |