JP5072889B2 - 事前条件生成装置および事後条件生成装置、ならびにこれらの方法 - Google Patents
事前条件生成装置および事後条件生成装置、ならびにこれらの方法 Download PDFInfo
- Publication number
- JP5072889B2 JP5072889B2 JP2009063253A JP2009063253A JP5072889B2 JP 5072889 B2 JP5072889 B2 JP 5072889B2 JP 2009063253 A JP2009063253 A JP 2009063253A JP 2009063253 A JP2009063253 A JP 2009063253A JP 5072889 B2 JP5072889 B2 JP 5072889B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- condition
- storage unit
- proposition
- satisfied
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事後条件を記憶する事後条件記憶部と、
前記事後条件が成立するために前記プログラムの実行直前において少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
前記論理式集合記憶部から選択した1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成部と、
前記候補条件の論理積が成り立つときに前記プログラムが実行された直後に前記事後条件が成立するという命題が成立するか否かを、前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する第1の判定部と、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事前条件として出力する出力部と、
を備える。
命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事前条件を記憶する事前条件記憶部と、
前記事前条件が成立するときに前記プログラムが実行された直後に少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
前記論理式集合記憶部から選択して組み合わせた1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成部と、
前記事前条件が成り立つときに前記プログラムが実行されたならば前記候補条件の論理積が成立するという命題が成立するか否かを前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する判定する第1の判定部と、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事後条件として出力する出力部と、
を備える。
命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事後条件を記憶する事後条件記憶部と、
前記事後条件が成立するために前記プログラムの実行直前において少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
にアクセスするステップと、
前記論理式集合記憶部から選択した1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成ステップと、
前記候補条件の論理積が成り立つときに前記プログラムが実行された直後に前記事後条件が成立するという命題が成立するか否かを、前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する第1の判定ステップと、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事前条件として出力する出力ステップと、
を備える。
命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事前条件を記憶する事前条件記憶部と、
前記事前条件が成立するときに前記プログラムが実行された直後に少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
にアクセスするステップと、
前記論理式集合記憶部から選択して組み合わせた1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成ステップと、
前記事前条件が成り立つときに前記プログラムが実行されたならば前記候補条件の論理積が成立するという命題が成立するか否かを前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する判定する第1の判定ステップと、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事後条件として出力する出力ステップと、
を備える。
論理式P が成り立っている状態でプログラムCを実行し、実行が終了した場合には終了状態で常に論理式Qが成り立っているとする(プログラムCが終了することは要求されていない)。このとき、論理式PをプログラムCの事前条件、論理式QをプログラムCの事後条件と呼ぶ。また、この関係(命題)がなりたっていることを {P} C {Q} と記述する。
論理式Qが与えられているとする。論理式集合 S の部分集合Xに関して、{∧ (S-X)} C {Q} が成り立たないときに、部分集合Xは必須条件と呼ぶ。
a:x≦5
b:x≦10
c:10≦x
d:-5≦x
まず以下のように前処理を行うことにより必須条件を登録する。
12:小規模部分集合Z生成部(部分集合生成部)
13:S-Z事後条件成立判定部(第2の判定部)
14:必須条件集合記憶部(必須条件記憶部)
15:プログラム記憶部
16:部分集合列挙部(候補条件生成部)
17:矛盾性検査部(候補条件生成部)
18:事後条件成立判定部(第1の判定部)
19:枝狩り用集合記憶部
20:事後条件記憶部
21:出力部
Claims (10)
- 命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事後条件を記憶する事後条件記憶部と、
前記事後条件が成立するために前記プログラムの実行直前において少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
前記論理式集合記憶部から選択した1つ以上の前記論理式の論理積である候補条件を前記必須条件との共通要素を持つように生成する候補条件生成部と、
前記候補条件の論理積が成り立つときに前記プログラムが実行された直後に前記事後条件が成立するという命題が成立するか否かを、前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する第1の判定部と、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事前条件として出力する出力部と、
を備えた事前条件生成装置。 - 前記論理式集合記憶部内の論理式を1つ以上組み合わせることにより部分集合Zを生成する部分集合生成部と、
前記論理式集合記憶部内の全論理式の集合Sから前記部分集合Zを除外した部分集合S−Zの論理積が成り立つときに前記プログラムが実行された直後に前記事後条件が成立するという命題が成立するか否かを前記命題の反例が存在するか否かを検査することにより判定する第2の判定部と、をさらに備え、
前記必須条件記憶部は、前記第2の判定部により前記命題が成立しないと判定された前記部分集合Zを前記必須条件として記憶する
ことを特徴とする請求項1に記載の事前条件生成装置。 - 前記プログラムを一部に含む第2のプログラムを実行し、
前記第2のプログラムに含まれる変数の値の推移であるログを記録し、
前記ログに基づいて前記プログラムの実行直前および直後において成立する不変条件を生成し、
前記プログラムの実行直後において成立する不変条件を前記事後条件として前記事後条件記憶部に格納し、
前記プログラムの実行直前において成立する不変条件を前記論理式として前記論理式集合記憶部に格納する
解析処理部
をさらに備えたことを特徴とする請求項1又は2に記載の事前条件生成装置。 - 前記プログラムを一部に含む第3のプログラムを記憶する親プログラム記憶部と、
前記第3のプログラムの事前条件および事後条件を記憶する親プログラム仕様記憶部と、
前記第3のプログラムの事前条件が成り立つときに前記第3のプログラムが実行された直後に前記第3のプログラムの事後条件が成立するという命題が成立するか否かを、前記命題の反例が存在するか否かを検査することにより判定するプログラム検査部と、を備え、
前記プログラム検査部は、前記第3のプログラムに含まれる前記プログラムは前記出力部により出力される事前条件、および前記事後条件記憶部内の事後条件を満たすことを仮定して検査を行う
ことを特徴とする請求項1ないし3のいずれか一項に記載の事前条件生成装置。 - 命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事前条件を記憶する事前条件記憶部と、
前記事前条件が成立するときに前記プログラムが実行された直後に少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
前記論理式集合記憶部から選択して組み合わせた1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成部と、
前記事前条件が成り立つときに前記プログラムが実行されたならば前記候補条件の論理積が成立するという命題が成立するか否かを前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する判定する第1の判定部と、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事後条件として出力する出力部と、
を備えた事後条件生成装置。 - 前記論理式集合記憶部内の論理式を1つ以上組み合わせることにより部分集合Zを生成する部分集合生成部と、
前記事前条件が成り立つときに前記プログラムが実行された直後に、前記論理式集合記憶部内の全論理式の集合Sから前記部分集合Zを除外した部分集合S−Zの論理積が成り立つという命題が成立するか否かを前記命題の反例が存在するか否かを検査することにより判定する第2の判定部と、をさらに備え、
前記必須条件記憶部は、前記第2の判定部により前記命題が成立しないと判定された前記第2の部分集合Zを前記必須条件として記憶する
ことを特徴とする請求項5に記載の事後条件生成装置。 - 前記プログラムを一部に含む第2のプログラムを実行し、
前記第2のプログラムに含まれる変数の値の推移であるログを記録し、
前記ログに基づいて前記プログラムの実行直前および直後において成立する不変条件を生成し、
前記プログラムの実行直後において成立する不変条件を前記論理式として前記論理式集合記憶部に格納し、
前記プログラムの実行直前において成立する不変条件を前記事前条件として前記事前条件記憶部に格納する
解析処理部
をさらに備えたことを特徴とする請求項5又は6に記載の事後条件生成装置。 - 前記プログラムを一部に含む第3のプログラムを記憶する親プログラム記憶部と、
前記第3のプログラムの事前条件および事後条件を記憶する親プログラム仕様記憶部と、
前記第3のプログラムの事前条件が成り立つときに前記第3のプログラムが実行された直後に前記第3のプログラムの事後条件が成立するという命題が成立するか否かを、前記命題の反例が存在するか否かを検査することにより判定するプログラム検査部と、を備え、
前記プログラム検査部は、前記第3のプログラムに含まれる前記プログラムは前記事前条件記憶部内の事前条件、および前記出力部により出力される事後条件、を満たすことを仮定して検査を行う
ことを特徴とする請求項5ないし7のいずれか一項に記載の事後条件生成装置。 - 命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事後条件を記憶する事後条件記憶部と、
前記事後条件が成立するために前記プログラムの実行直前において少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
にアクセスするステップと、
前記論理式集合記憶部から選択した1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成ステップと、
前記候補条件の論理積が成り立つときに前記プログラムが実行された直後に前記事後条件が成立するという命題が成立するか否かを、前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する第1の判定ステップと、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事前条件として出力する出力ステップと、
を備えた事前条件生成方法。 - 命令型プログラミング言語によって記述されたプログラムを記憶するプログラム記憶部と、
1つ以上の論理式の論理積である、前記プログラムの事前条件を記憶する事前条件記憶部と、
前記事前条件が成立するときに前記プログラムが実行された直後に少なくともその要素の一つが満たされる必要のある、1つ以上の論理式の集合である必須条件を複数記憶する必須条件記憶部と、
複数の論理式を記憶する論理式集合記憶部と、
にアクセスするステップと、
前記論理式集合記憶部から選択して組み合わせた1つ以上の前記論理式の集合である候補条件を前記必須条件と共通要素を持つように生成する候補条件生成ステップと、
前記事前条件が成り立つときに前記プログラムが実行されたならば前記候補条件が成立するという命題が成立するか否かを前記命題の反例が存在するか否かを検査することにより判定し、前記命題の反例が存在しないとき前記命題が成立し、前記命題の反例が存在するとき前記命題が成立しないことを決定する判定する第1の判定ステップと、
前記命題が成立すると決定された前記候補条件の論理積を、前記プログラムの事後条件として出力する出力ステップと、
を備えた事後条件生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063253A JP5072889B2 (ja) | 2009-03-16 | 2009-03-16 | 事前条件生成装置および事後条件生成装置、ならびにこれらの方法 |
US12/721,749 US8584093B2 (en) | 2009-03-16 | 2010-03-11 | Pre-condition generation device, post-condition generation device, and method for generating these conditions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063253A JP5072889B2 (ja) | 2009-03-16 | 2009-03-16 | 事前条件生成装置および事後条件生成装置、ならびにこれらの方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010218148A JP2010218148A (ja) | 2010-09-30 |
JP5072889B2 true JP5072889B2 (ja) | 2012-11-14 |
Family
ID=42731746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009063253A Expired - Fee Related JP5072889B2 (ja) | 2009-03-16 | 2009-03-16 | 事前条件生成装置および事後条件生成装置、ならびにこれらの方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8584093B2 (ja) |
JP (1) | JP5072889B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5468615B2 (ja) | 2009-10-26 | 2014-04-09 | 株式会社東芝 | 事前条件生成装置およびその方法、ならびにプログラム |
JP6102448B2 (ja) * | 2013-04-10 | 2017-03-29 | 富士通株式会社 | 検証支援プログラム、検証支援装置、および検証支援方法 |
JP6248008B2 (ja) * | 2014-07-29 | 2017-12-13 | 日立オートモティブシステムズ株式会社 | ソフトウェア検証システムおよび制御装置 |
US20190026107A1 (en) * | 2015-12-30 | 2019-01-24 | Mitsubishi Electric Corporation | Source code comparison apparatus and computer readable recording medium |
US10733074B1 (en) * | 2018-01-30 | 2020-08-04 | Amazon Technologies, Inc. | Deductive verification for programs using functional programming features |
CN110377513A (zh) * | 2019-07-12 | 2019-10-25 | 南京理工大学紫金学院 | 基于机器学习的循环不变式自动生成方法 |
CN112527629A (zh) * | 2020-11-16 | 2021-03-19 | 南京理工大学紫金学院 | 基于后置条件的循环不变式自动生成方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0686916A1 (en) * | 1994-06-07 | 1995-12-13 | Digital Equipment Corporation | Method and apparatus for testing software |
JP3952544B2 (ja) * | 1996-09-17 | 2007-08-01 | 株式会社東芝 | 分散システム |
US20020112201A1 (en) * | 2000-12-04 | 2002-08-15 | Flanagan Cormac Andrias | Method and apparatus for automatically inferring annotations for an extended static checker |
US7243086B2 (en) | 2003-12-19 | 2007-07-10 | Fuji Xerox Co., Ltd. | Methods and systems for automatically generating provably correct computer program code |
US20060150160A1 (en) * | 2004-06-14 | 2006-07-06 | Sofcheck, Inc. | Software analyzer |
JP2006107339A (ja) * | 2004-10-08 | 2006-04-20 | Matsushita Electric Ind Co Ltd | プログラム処理装置 |
US7624256B2 (en) * | 2005-04-14 | 2009-11-24 | Qualcomm Incorporated | System and method wherein conditional instructions unconditionally provide output |
US7665072B2 (en) * | 2005-04-21 | 2010-02-16 | Microsoft Corporation | Generating test cases for software with complex preconditions |
US8191045B2 (en) | 2007-09-04 | 2012-05-29 | Nec Laboratories America, Inc. | Mining library specifications using inductive learning |
US8660905B2 (en) * | 2007-10-31 | 2014-02-25 | Sap Ag | Method and system for validating process models |
JP5434908B2 (ja) * | 2008-03-28 | 2014-03-05 | 富士通株式会社 | システム運用管理装置,システム運用管理方法及びシステム運用管理プログラム |
US8402439B2 (en) * | 2008-06-27 | 2013-03-19 | Microsoft Corporation | Program analysis as constraint solving |
US8271404B2 (en) * | 2008-10-02 | 2012-09-18 | Microsoft Corporation | Template based approach to discovering disjunctive and quantified invariants over predicate abstraction |
JP5149225B2 (ja) * | 2009-03-16 | 2013-02-20 | 株式会社東芝 | テストケース生成装置およびテストケース生成方法 |
JP5468615B2 (ja) * | 2009-10-26 | 2014-04-09 | 株式会社東芝 | 事前条件生成装置およびその方法、ならびにプログラム |
-
2009
- 2009-03-16 JP JP2009063253A patent/JP5072889B2/ja not_active Expired - Fee Related
-
2010
- 2010-03-11 US US12/721,749 patent/US8584093B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8584093B2 (en) | 2013-11-12 |
JP2010218148A (ja) | 2010-09-30 |
US20100235818A1 (en) | 2010-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5072889B2 (ja) | 事前条件生成装置および事後条件生成装置、ならびにこれらの方法 | |
Schäfer et al. | An empirical evaluation of using large language models for automated unit test generation | |
Beyer et al. | Correctness witnesses: Exchanging verification results between verifiers | |
Zaks et al. | CoVaC: Compiler validation by program analysis of the cross-product | |
McMillan | Lazy annotation for program testing and verification | |
González et al. | Atltest: A white-box test generation approach for ATL transformations | |
US7971193B2 (en) | Methods for performining cross module context-sensitive security analysis | |
CN102598001B (zh) | 用于执行对逻辑设计的分析的方法和系统 | |
Suleiman et al. | A survey on prioritization regression testing test case | |
Xia et al. | Agentless: Demystifying llm-based software engineering agents | |
Muram et al. | A model checking based approach for containment checking of uml sequence diagrams | |
Mijatov et al. | Testing functional requirements in UML activity diagrams | |
Lyu et al. | Prompt Fuzzing for Fuzz Driver Generation | |
Mateescu et al. | Quantifying the parallelism in BPMN processes using model checking | |
US20130239093A1 (en) | Parallelizing top-down interprocedural analysis | |
Colin et al. | Preamble computation in automated test case generation using constraint logic programming | |
Park et al. | BENZENE: A Practical Root Cause Analysis System with an Under-Constrained State Mutation | |
Bouzenia et al. | TraceFixer: Execution trace-driven program repair | |
Binalialhag et al. | Static slicing of Use Case Maps requirements models | |
Heidbrink et al. | Joint Analysis of Program Data Representations using Machine Learning for Improved Software Assurance and Development Capabilities | |
Parsa et al. | Finding causes of software failure using ridge regression and association rule generation methods | |
Korel et al. | Assertion-based validation of modified programs | |
Constant et al. | Automatic test generation from interprocedural specifications | |
Triki et al. | Model-based filtering of combinatorial test suites | |
Li et al. | Towards an Effective and Interpretable Refinement Approach for DNN Verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110331 |
|
TRDD | Decision of grant or rejection written | ||
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120718 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120724 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120821 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150831 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |