JP6572668B2 - 検査方法 - Google Patents
検査方法 Download PDFInfo
- Publication number
- JP6572668B2 JP6572668B2 JP2015156088A JP2015156088A JP6572668B2 JP 6572668 B2 JP6572668 B2 JP 6572668B2 JP 2015156088 A JP2015156088 A JP 2015156088A JP 2015156088 A JP2015156088 A JP 2015156088A JP 6572668 B2 JP6572668 B2 JP 6572668B2
- Authority
- JP
- Japan
- Prior art keywords
- smt
- sat
- expression
- variable
- variables
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
複数のSMT変数を有するSMT式をプログラミングコードから取得する工程と、
複数の簡略化されたSMT変数を含む簡略化されたSMT式を前記SMT式から取得する工程と、
複数のSAT変数を含むSAT式を前記簡略化されたSMT式から取得する工程と、
前記簡略化されたSMT式を利用して、前記複数のSMT変数のうち何れが「ドントケア」変数であるかを判定する工程と、
簡略化されたSAT式を利用して、前記複数のSMT変数のうち何れが「ドントケア」変数であるかを判定する工程と、
を有する方法である。
プログラミングコードにおける「ドントケア(don’t care)」変数を確認するためのシステム及び方法が開示される。本方法は、複数のSMT変数を有するSMT式をプログラミングコードから取得する工程と、複数の簡略化されたSMT変数を含む簡略化されたSMT式を前記SMT式から取得する工程と、複数のSAT変数を含むSAT式を、簡略化されたSMT式から取得する工程と、前記簡略化されたSMT式により、前記複数のSMT変数のうちの何れが「ドントケア」変数であるかを判断する工程と、前記簡略化されたSAT式により、前記複数のSMT変数のうちの何れが「ドントケア」変数であるかを判断する工程とを有する。
本開示に関するこれら及び他の特徴、側面及び利点は、添付図面を参照しながら以下の詳細な説明を読むことにより更に理解される。
プログラミングコード内で発見される「ドントケア」変数を確認するためのシステム及び方法が開示される。例えば、検証、トラブルシューティング、最適化、品質保証、記号分析、プログラム検証、自動検査、セキュリティ検査等のような任意の様々な目的のための様々な検査が、コンピュータ又はソフトウェアプログラミングコードについて実行される。多くのプログラミングコードのサイズ及び範囲は、検査される必要がある非常に多数の変数をもたらす。ある状況では、いくつかの変数がそのプログラミングコードにとって冗長的であるかもしれない。例えば、「ドントケア」変数に対する変化は、プログラミングコードの実行経路(execution path)に対する変化を招かない結果となる。これらの変数は「ドントケア」変数と言及される。一群の「ドントケア」変数を確認することにより、様々な検査は「ドントケア」変数を無視してよく、これらの検査の効率が上昇する。本願で説明される或る実施形態のアプリケーションは、「ドントケア」変数を特定することにより変数の数を削減するために使用されてもよい。
p cnf 14 10
2 −7 −8 −9 −3 0
−2 3 0
−2 7 0
−2 9 0
−2 8 0
3 5 −6 0
−3 −5 0
−3 6 0
14 0
2 0
この特定の具体例において、以下は、DPLLアルゴリズムから作成された具体的なSATソリューションである:
2:真
14:真
3:真
7:真
9:真
8:真
5:偽
6:真
1:真
4:真
10:真
11:真
12:真
13:真
ソリューションマップは順序リストである。この例では、ブロック425及びブロック430の開始の際に、start=0, end=14, 及び mid=7 である。SATソリューションマップにおけるmid及びendの間のSAT変数のソリューショントレイルのSAT変数は、次のように、未定(undefined)に設定される。
14:真
3:真
7:真
9:真
8:真
5:偽
6:未定
1:未定
4:未定
10:未定
11:未定
12:未定
13:未定
この特定の具体例において、SAT変数のソリューションセットは、SAT変数のソリューションセットによっては充足されない。例えば、SAT変数のソリューションセットは変数6を必要とするが、この変数はSAT変数のソリューションセットにおいては未定として掲げられている。従って、ブロック435において、プロセス400はブロック445に移り、startはmidに等しくなるように設定される(start=7)。プロセス400はブロック450に進み、プロセス400はブロック430に進み、その理由は、end-start=15-7=7は1より大きいからである。ブロック430において、mid=(14+7)/2=10が設定され、SATソリューションマップにおけるmid及びendの間のSAT変数のソリューショントレイルのSAT変数は、次のように、未定に設定される。
14:真
3:真
7:真
9:真
8:真
5:偽
6:真
1:真
4:真
10:未定
11:未定
12:未定
13:未定
この例の場合、ブロック435において、SAT式は充足される。例えば、SAT式において、未定の項は使用されない。しかしながら、第1のSAT変数の位置はそれでも未知である。プロセス400はブロック440に進み、end=mid=10に設定される。次に、プロセス400はブロック450に進み、プロセスは終了すべきか否かが判定される。この場合、end-start=10-7=3は1より大きい。従って、プロセス400はブロック430に続く。ブロック430において、mid=(end+start)/2=(10+7)/2=8が設定される。SATソリューションマップにおけるmid及びendの間のSAT変数のソリューショントレイルのSAT変数は、次のように、未定に設定される。
14:真
3:真
7:真
9:真
8:真
5:偽
6:真
1:未定
4:未定
10:未定
11:未定
12:未定
13:未定
ブロック435において、SAT式において未定の項は必要とされていないので、SAT式は充足される、と判断されるべきである。そして、プロセス400はブロック445に移り、startはmidに等しくなるように設定される(start=8)。そして、プロセス400はブロック450に進み、プロセスは終了すべきか否かが判断される。この場合、end-start=10-8=2は1より大きい。従って、プロセス400はブロック430に続く。ブロック430において、mid=(end+start)/2=(10+8)/2=9が設定される。SATソリューションマップにおけるmid及びendの間のSAT変数のソリューショントレイルのSAT変数は、次のように、未定に設定される。
14:真
3:真
7:真
9:真
8:真
5:偽
6:真
1:真
4:未定
10:未定
11:真
12:真
13:真
ブロック435において、SAT式において未定の項は必要とされていないので、SAT式は充足される、と判断される。プロセス400はブロック445に移り、startはmidに等しくなるように設定される(start=9)。そして、プロセス400はブロック450に進み、プロセスは終了すべきか否かが判断される。この場合、end-start=10-9=1は1に等しいので、プロセス400はブロック455に移る。
510 プロセッサ
525 ストレージデバイス
515 入力デバイス
520 出力デバイス
530 通信サブシステム
535 ワーキングメモリ
540 オペレーティングシステム
545 アプリケーション
Claims (19)
- コンピュータにより実行される方法であって、前記方法は、前記コンピュータが、
複数のSMT変数を有するSMT式をプログラミングコードから取得する工程と、
複数の簡略化されたSMT変数を含む簡略化されたSMT式を前記SMT式から取得する工程と、
複数のSAT変数を含むSAT式を前記簡略化されたSMT式から取得する工程と、
前記簡略化されたSMT式を利用して、前記複数のSMT変数のうち何れが「ドントケア」変数であるかを判定する工程と、
前記SAT式を利用して、前記複数のSMT変数のうち何れが「ドントケア」変数であるかを判定する工程と、
を有する方法。 - 前記簡略化されたSMT式により、前記複数のSMT変数のうち何れが「ドントケア」変数であるかを判定する工程が、
SMT代替マップを作成する工程と、
前記簡略化されたSMT変数及び前記SMT代替マップの双方又は一方に何れのSMT変数が含まれていないかを判定する工程と、
前記簡略化されたSMT変数及び前記SMT代替マップの双方又は一方に含まれていない前記SMT変数を出力する工程と、
を更に有する請求項1に記載の方法。 - 前記SAT式により、前記複数のSMT変数のうち何れが「ドントケア」変数であるかを判定する工程が、
前記SAT式を解くことにより、前記SAT変数をSAT変数の順序リストに並べるSATソリューショントレイルを取得する工程と、
前記SAT式が解を有する場合に、前記SAT変数の順序リストのうち、前記SAT式から削除することが可能な第1のSAT変数を判定する工程と、
前記SAT式が解を有する場合に、前記SAT式から削除することが可能な残りのSAT変数を判定する工程と、
削除することが可能なSAT変数に関連する前記SMT変数を判定する工程と、
を有する請求項1に記載の方法。 - SATソリューショントレイルを取得する工程が、DPLLアルゴリズムを前記SAT式に適用する工程を更に有する、請求項3に記載の方法。
- 前記SAT式を取得することが、前記簡略化されたSMT式をビットブラストすることを更に含む、請求項1に記載の方法。
- 前記SMT式を簡略化することが、線形アレイソルバを前記SMT式に適用すること、及び/又は、アレイリード/ライト削除を前記SMT式に適用することを更に含む、請求項1に記載の方法。
- 前記コンピュータが、
前記「ドントケア」変数に基づいて、前記プログラミングコードにエラーが存在するか否かを判定する工程を更に有する請求項1に記載の方法。 - コンピュータにより実行される方法であって、前記方法は、前記コンピュータが、
プログラミングコードを受信する工程と、
複数のSMT変数を含むSMT式を前記プログラミングコードから取得する工程と、
前記SMT式を、複数の簡略化されたSMT変数を有する簡略化されたSMT式に簡略化する工程と、
SMT代替マップを作成する工程と、
前記簡略化されたSMT式及び前記SMT代替マップの双方又は一方に何れのSMT変数が含まれていないかを判定する工程と、
前記簡略化されたSMT式及び前記SMT代替マップの双方又は一方に含まれていない前記SMT変数を出力する工程と、
を有する方法。 - 前記SMT式を簡略化することが、線形アレイソルバを前記SMT式に適用すること、及び/又は、アレイリード/ライト削除を前記SMT式に適用することを更に含む、請求項8に記載の方法。
- 前記簡略化されたSMT式及び前記SMT代替マップの双方又は一方に何れのSMT変数が含まれていないかを判定する工程が、前記SMT変数の各々を通じて反復する反復工程を有する、請求項8に記載の方法。
- 前記簡略化されたSMT式及び前記SMT代替マップの双方又は一方に含まれていない前記SMT変数は、「ドントケア」変数である、請求項8に記載の方法。
- 前記簡略化されたSMT式及び前記SMT代替マップの双方又は一方に含まれていない前記SMT変数に基づいて、前記プログラミングコードにエラーが存在するか否かを判定する工程を更に有する請求項8に記載の方法。
- コンピュータにより実行される方法であって、前記方法は、前記コンピュータが、
SMT式を取得する工程と、
複数の簡略化されたSMT変数を含む簡略化されたSMT式を前記SMT式から取得する工程と、
複数のSAT変数を含むSAT式を前記簡略化されたSMT式から取得する工程と、
前記SAT式を解くことにより、前記SAT変数をSAT変数の順序リストに並べるSATソリューショントレイルを取得する工程と、
前記SAT式が解を有する場合に、前記SAT変数の順序リストのうち、前記SAT式から削除することが可能な第1のSAT変数を判定する工程と、
前記SAT式が解を有する場合に、前記SAT式から削除することが可能な残りのSAT変数を判定する工程と、
削除することが可能なSAT変数に関連する前記SMT変数を判定する工程と、
を有し、
SMT式を取得する工程が、
プログラミングコードを受信すること、及び
前記プログラミングコードから複数のSMT変数を有する前記SMT式を作成すること
を含む、
方法。 - 前記SAT式を取得することが、前記簡略化されたSMT式をビットブラストすることを更に含む、請求項13に記載の方法。
- SATソリューショントレイルを取得する工程が、DPLLアルゴリズムを前記SAT式に適用する工程を更に有する、請求項13に記載の方法。
- 前記SAT変数の順序リストのうち、前記SAT式から削除することが可能な第1のSAT変数を判定する工程が、前記SATソリューショントレイルの一部分のうち少なくとも半分の前記SAT変数を明らかにする反復工程を更に有する請求項13に記載の方法。
- 後の反復における前記SATソリューショントレイルの少なくとも一部分は、前の反復における前記SATソリューショントレイルの半分のサイズである、請求項16に記載の方法。
- 前記SMT式を簡略化することが、線形アレイソルバを前記SMT式に適用すること、及び/又は、アレイリード/ライト削除を前記SMT式に適用することを更に含む、請求項13に記載の方法。
- 前記コンピュータが、
削除することが可能なSAT変数に関連する前記SMT変数に基づいて、プログラミングコードにエラーが存在するか否かを判定する工程を更に有する請求項13に記載の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/477,735 US9767412B2 (en) | 2014-09-04 | 2014-09-04 | Test size reduction using don't care analysis |
| US14/477,735 | 2014-09-04 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2016058073A JP2016058073A (ja) | 2016-04-21 |
| JP6572668B2 true JP6572668B2 (ja) | 2019-09-11 |
Family
ID=55437805
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2015156088A Active JP6572668B2 (ja) | 2014-09-04 | 2015-08-06 | 検査方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US9767412B2 (ja) |
| JP (1) | JP6572668B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117573556B (zh) * | 2023-12-05 | 2024-06-21 | 中国科学院软件研究所 | 基于增量smt问题求解的软件断言验证方法、系统及设备 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6292916B1 (en) * | 1998-12-10 | 2001-09-18 | Lucent Technologies Inc. | Parallel backtracing for satisfiability on reconfigurable hardware |
| US8365152B2 (en) * | 2008-01-24 | 2013-01-29 | Nec Laboratories America, Inc. | Path-sensitive analysis through infeasible-path detection and syntactic language refinement |
| US8140459B2 (en) * | 2008-02-21 | 2012-03-20 | Microsoft Corporation | Relevancy propagation for efficient theory combination |
| US8131661B2 (en) * | 2008-03-03 | 2012-03-06 | Nec Laboratories America, Inc. | Efficient decision procedure for bounded integer non-linear operations using SMT(LIA) |
| JP2012003733A (ja) * | 2010-06-12 | 2012-01-05 | Koji Kobayashi | 論理式変換プログラム、及びsat解法プログラム |
| JP5673395B2 (ja) * | 2011-06-30 | 2015-02-18 | 富士通株式会社 | テストデータ生成プログラム、テストデータ生成方法、テストデータ生成装置 |
-
2014
- 2014-09-04 US US14/477,735 patent/US9767412B2/en active Active
-
2015
- 2015-08-06 JP JP2015156088A patent/JP6572668B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US9767412B2 (en) | 2017-09-19 |
| US20160071012A1 (en) | 2016-03-10 |
| JP2016058073A (ja) | 2016-04-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12182688B2 (en) | Hierarchical partitioning of operators | |
| TWI486810B (zh) | 在狀態機晶格中之計數器操作 | |
| KR101873619B1 (ko) | 상태 기계 격자에서의 불리언 로직 | |
| TWI515668B (zh) | 用於一狀態機中偵測之方法及系統 | |
| US11308396B2 (en) | Neural network layer-by-layer debugging | |
| CN106462393B (zh) | 用于统一应用编程接口和模型的系统和方法 | |
| US10176627B2 (en) | Tree-based graphics primitive rendering | |
| JP2019204482A (ja) | 並行脆弱性検出 | |
| KR102327026B1 (ko) | Gcn 기반의 어셈블리 코드 학습 장치 및 방법과 이를 이용한 보안 약점 탐지 장치 및 방법 | |
| US11163567B2 (en) | Multivalue reductions using serial initial reductions in multiple register spaces and parallel subsequent reductions in a single register space | |
| US11748622B1 (en) | Saving intermediate outputs of a neural network | |
| US11562554B1 (en) | Workload reduction for non-maximum suppression operation | |
| Oliveira | Towards a linear algebra of programming | |
| US10598526B2 (en) | Methods and systems for performing test and calibration of integrated sensors | |
| US20190278574A1 (en) | Techniques for transforming serial program code into kernels for execution on a parallel processor | |
| US11275661B1 (en) | Test generation of a distributed system | |
| US10990073B2 (en) | Program editing device, program editing method, and computer readable medium | |
| JP6572668B2 (ja) | 検査方法 | |
| US12400137B1 (en) | Bidirectional network on a data-flow centric processor | |
| US11354130B1 (en) | Efficient race-condition detection | |
| KR102325612B1 (ko) | 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체 | |
| WO2019142266A1 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
| US9697018B2 (en) | Synthesizing inputs to preserve functionality | |
| US20260050537A1 (en) | Techniques for generating code with integrated abstract syntax tree-based waveform tracing | |
| US20260050426A1 (en) | Techniques for generating code with integrated abstract syntax tree-based waveform tracing |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180413 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181227 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190115 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190318 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190423 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190617 |
|
| 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: 20190716 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190729 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6572668 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |