Skip navigation

DSpace

機構典藏 DSpace 系統致力於保存各式數位資料(如:文字、圖片、PDF)並使其易於取用。

點此認識 DSpace
DSpace logo
English
中文
  • 瀏覽論文
    • 校院系所
    • 出版年
    • 作者
    • 標題
    • 關鍵字
    • 指導教授
  • 搜尋 TDR
  • 授權 Q&A
    • 我的頁面
    • 接受 E-mail 通知
    • 編輯個人資料
  1. NTU Theses and Dissertations Repository
  2. 電機資訊學院
  3. 電子工程學研究所
請用此 Handle URI 來引用此文件: http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/54099
完整後設資料紀錄
DC 欄位值語言
dc.contributor.advisor王凡(Farn Wang)
dc.contributor.authorChiao Hsiehen
dc.contributor.author謝橋zh_TW
dc.date.accessioned2021-06-16T02:39:57Z-
dc.date.available2015-07-24
dc.date.copyright2015-07-24
dc.date.issued2015
dc.date.submitted2015-07-22
dc.identifier.citation[1] E. M. Clarke, H. Jain, and N. Sinha, “Grand challenge: model check software,” in Proc. the NATO Advanced Research Workshop on Verification of Infinite State Systems with Applications to Security (VISSAS 2005), Timi﹐soara, România, 2005, pp. 55–68.
[2] D. Beyer and M. E. Keremoglu, “CPAchecker: A tool for configurable software verification,” in Proc. CAV’11, Snowbird, UT, USA, 2011, pp. 184–190.
[3] D. Beyer, “Status report on software verification - (competition summary SV-COMP 2014),” in Proc. TACAS’14, Grenoble, France, 2014, pp. 373–388. [Online]. Available: http://sv-comp.sosy-lab.org/2014/.
[4] Y. Chen, C. Hsieh, M. Tsai, B. Wang, and F. Wang, “Verifying recursive programs using intraprocedural analyzers,” in Proc. SAS’14, Munich, Germany, 2014, pp. 118–133.
[5] D. Beyer, “Software verification and verifiable witnesses - (report on SV-COMP 2015),” in Proc. TACAS’15, London, UK, 2015, pp. 401–416. [Online]. Available: http://sv-comp.sosy-lab.org/2015/.
[6] Y. Chen, C. Hsieh, M. Tsai, B. Wang, and F. Wang, “CPArec: Verifying recursive programs via source-to-source program transformation - (competition contribution),” in Proc. TACAS’15, London, UK, 2015, pp. 426–428.
[7] D. Beyer, T. A. Henzinger, R. Jhala, and R. Majumdar, “The software model checker Blast,” Int. J. Software Tools for Technology Transfer, vol. 9, no. 5-6, pp. 505–525, Sep. 2007.
[8] A. Albarghouthi, Y. Li, A. Gurfinkel, and M. Chechik, “Ufo: A framework for abstraction- and interpolation-based software verification,” in Proc. CAV’12, Berkeley, CA, USA, 2012, pp. 672–678.
[9] T.W. Reps, S. Horwitz, and S. Sagiv, “Precise interprocedural dataflow analysis via graph reachability,” in Proc. POPL’95, San Francisco, CA, USA, 1995, pp. 49–61.
[10] T. Ball and S. K. Rajamani, “The SLAM toolkit,” in Proc. CAV’01, Paris, France, 2001, pp. 260–264.
[11] P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival, “The ASTREÉ analyzer,” in Proc. ESOP’05, Edinburgh, UK, 2005, pp. 21–30.
[12] P. Cuoq, F. Kirchner, N. Kosmatov, V. Prevosto, J. Signoles, and B. Yakobowski, “Frama-C: A software analysis perspective,” in Proc. SEFM’12, Thessaloniki, Greece, 2012, pp. 233–247.
[13] (2015). Coverity, Coverity, Inc., [Online]. Available: http://www.coverity.com/.
[14] (2015). Polyspace, The MathWorks, Inc., [Online]. Available: http://www.mathworks.com/products/polyspace/.
[15] E. M. Clarke, D. Kroening, and F. Lerda, “A tool for checking ANSI-C programs,” in Proc. TACAS’04, Barcelona, Spain, 2004, pp. 168–176.
[16] M. Heizmann, J. Christ, D. Dietsch, E. Ermis, J. Hoenicke, M. Lindenmann, A. Nutz, C. Schilling, and A. Podelski, “Ultimate Automizer with SMTInterpol - (competition contribution),” in Proc. TACAS’13, Rome, Italy, 2013, pp. 641–643.
[17] E. Ermis, A. Nutz, D. Dietsch, J. Hoenicke, and A. Podelski, “Ultimate Kojak - (competition contribution),” in Proc. TACAS’14, Grenoble, France, 2014, pp. 421– 423.
[18] A. Albarghouthi, A. Gurfinkel, and M. Chechik, “Whale: An interpolation-based algorithm for inter-procedural verification,” in Proc. VMCAI’12, Philadelphia, PA, USA, 2012, pp. 39–55.
[19] D. von Oheimb, “Hoare logic for mutual recursion and local variables,” in Proc. FSTTCS, Chennai, India, 1999, pp. 168–180.
[20] A. Lal and T. W. Reps, “Reducing concurrent analysis under a context bound to sequential analysis,” in Proc. CAV’08, Princeton, NJ, USA, 2008, pp. 37–51.
[21] ——, “Reducing concurrent analysis under a context bound to sequential analysis,” Formal Methods in System Design, vol. 35, no. 1, pp. 73–97, Aug. 2009.
[22] F. Nielson, H. R. Nielson, and C. Hankin, Principles of Program Analysis. Secaucus, NJ, USA: Springer-Verlag, 1999.
[23] T. Ball and S. K. Rajamani, “Bebop: A symbolic model checker for boolean programs,” in Proc. SPIN, Stanford, CA, USA, 2000, pp. 113–130.
[24] Z. Manna and A. Pnueli, “Formalization of properties of functional programs,” J. ACM, vol. 17, no. 3, pp. 555–569, Jul. 1970.
[25] H. R. Nielson and F. Nielson, Semantics with Applications: An Appetizer, ser. Undergraduate Topics in Computer Science. London, UK: Springer-Verlag, 2007.
[26] G. Tan and A. W. Appel, “A compositional logic for control flow,” in Proc. VMCAI’06, Charleston, SC, USA, 2006, pp. 80–94.
[27] G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer, “CIL: Intermediate language and tools for analysis and transformation of C programs,” in Proc. CC’02, Grenoble, France, 2002, pp. 213–228.
[28] (2015). C Intermediate Language, [Online]. Available: http://kerneis.github.io/cil/.
[29] A. Dolzmann and T. Sturm, “REDLOG: Computer algebra meets computer logic,” SIGSAM Bull., vol. 31, no. 2, pp. 2–9, Jun. 1997.
[30] (2015). Redlog, [Online]. Available: http://www.redlog.eu/.
[31] M. Dangl, S. Löwe, and P. Wendler, “CPAchecker with support for recursive programs and floating-point arithmetic - (competition contribution),” in Proc. TACAS’15, London, UK, 2015, pp. 423–425.
[32] J. C. Reynolds, “Separation Logic: A logic for shared mutable data structures,” in Proc. LICS’02, Copenhagen, Denmark, 2002, pp. 55–74.
[33] S. Magill, M. Tsai, P. Lee, and Y. Tsay, “THOR: A tool for reasoning about shape and arithmetic,” in Proc. CAV’08, Princeton, NJ, USA, 2008, pp. 428–432.
[34] Proc. 20th Int. Conf. Computer Aided Verification (CAV’08), Princeton, NJ, USA, 2008.
[35] Proc. 21st Int. Conf. Tools and Algorithms for the Construction and Analysis of Systems (TACAS’15), London, UK, 2015.
[36] Proc. 20th Int. Conf. Tools and Algorithms for the Construction and Analysis of Systems (TACAS’14), Grenoble, France, 2014.
dc.identifier.urihttp://tdr.lib.ntu.edu.tw/jspui/handle/123456789/54099-
dc.description.abstract在程序分析(Program Analysis) 領域中,分析遞迴程式(Recursive Program) 是一項難以處理的課題。現有程式分析工具往往因為無法處理程式中的遞迴函式,既而忽略部分程式碼不進行分析,或甚至拒絕檢驗遞迴程式。本篇論文針對遞迴程式的分析提出新的觀點與分析方法;作者認為與其重新設計演算法且實作新的分析器,不如改進現有的程式分析工具。但更改他人實作的軟體工具並非易事,因此本文提出的方法將現有的工具視為黑箱不做任何更動,反而是利用程式變換方法(Program Transformation) 將待分析的遞迴程式轉換成無遞迴的程式,再交給黑箱分析工具進行檢驗;並使用黑箱工具提供被分析程式中的不變量(Invariants),進而證明原遞迴程式的正確性。
本篇作者與實驗室團隊受惠於程式分析工具CPAchecker,實作出此演算法的雛型CPArec,且參與2015年度軟體驗證競賽(Competition on Software Verification);和其它頂尖實驗室所開發工具相較,我們的工具針對遞迴程式進行分析時,亦表現出相當的效率及效能,獲得第三名的佳績。
關鍵字:軟體驗證、程序分析、靜態分析、遞迴程式、程式變換方法
zh_TW
dc.description.abstractRecursion can complicate program analysis significantly. Some program analyzers simply ignore recursion or even refuse to check recursive programs. In this paper, we propose an algorithm that uses a recursion-free program analyzer as a black box to check recursive programs. With extended program constructs for assumptions, assertions, and non-deterministic values, our algorithm computes function summaries from inductive invariants computed by the underlying program analyzer. Such function summaries enable our algorithm to check recursive programs. We implement a prototype named CPArec using the recursion-free program analyzer CPAchecker. Under the comparison with other program analyzers on the benchmarks in the 2014 and 2015 Competitions on Software Verification, our tool shows competitive efficiency and effectiveness on verifying programs with recursion.
Key words: CPArec, Software Verification, Program Analysis, Static Analysis, Recursion, Program Transformation
en
dc.description.provenanceMade available in DSpace on 2021-06-16T02:39:57Z (GMT). No. of bitstreams: 1
ntu-104-R02943142-1.pdf: 1807815 bytes, checksum: 541b3b9bed6b377396ca33aa413f9c61 (MD5)
Previous issue date: 2015
en
dc.description.tableofcontents口試委員會審定書 i
Oral Examination Approval Form ii
Acknowledgements iii
摘要 iv
Abstract v
1 Introduction 1
2 Related Works 4
3 Preliminaries 5
3.1 Program Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Hoare Logic and Program Analysis . . . . . . . . . . . . . . . . . . . . . 7
4 Overview 9
5 Proving via Transformation 13
5.1 Unwinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.1.1 Function Inlining Method . . . . . . . . . . . . . . . . . . . . . 14
5.1.2 Function Duplicating Method . . . . . . . . . . . . . . . . . . . 15
5.2 Under-approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2.1 Approximating Functions . . . . . . . . . . . . . . . . . . . . . 18
5.2.2 Approximating Programs from Function Inlining Method . . . . . 19
5.2.3 Approximating Programs from Function Duplicating Method . . 19
5.3 Computing Summaries . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.4 Checking Summaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.5 Correctness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6 Experiments 26
6.1 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2 Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7 Conclusion 32
dc.language.isoen
dc.subject程序分析zh_TW
dc.subject軟體驗證zh_TW
dc.subject靜態分析zh_TW
dc.subject遞迴程式zh_TW
dc.subject程式變換方法zh_TW
dc.subject軟體驗證zh_TW
dc.subject程序分析zh_TW
dc.subject靜態分析zh_TW
dc.subject遞迴程式zh_TW
dc.subject程式變換方法zh_TW
dc.subjectStatic Analysisen
dc.subjectSoftware Verificationen
dc.subjectCPArecen
dc.subjectProgram Transformationen
dc.subjectRecursionen
dc.subjectStatic Analysisen
dc.subjectProgram Analysisen
dc.subjectProgram Transformationen
dc.subjectRecursionen
dc.subjectCPArecen
dc.subjectSoftware Verificationen
dc.subjectProgram Analysisen
dc.title以程式變換方法協助程式分析器驗證遞迴程式zh_TW
dc.titleVerifying Recursive Program via Source-to-Source Program Transformationen
dc.typeThesis
dc.date.schoolyear103-2
dc.description.degree碩士
dc.contributor.oralexamcommittee王柏堯(Bow-Yaw Wang),戴顯權(Shen-Chuan Tai),江介宏(Jie-Hong Jiang),陳郁方(Yu-Fang Chen)
dc.subject.keyword軟體驗證,程序分析,靜態分析,遞迴程式,程式變換方法,zh_TW
dc.subject.keywordCPArec,Software Verification,Program Analysis,Static Analysis,Recursion,Program Transformation,en
dc.relation.page38
dc.rights.note有償授權
dc.date.accepted2015-07-23
dc.contributor.author-college電機資訊學院zh_TW
dc.contributor.author-dept電子工程學研究所zh_TW
顯示於系所單位:電子工程學研究所

文件中的檔案:
檔案 大小格式 
ntu-104-1.pdf
  未授權公開取用
1.77 MBAdobe PDF
顯示文件簡單紀錄


系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。

社群連結
聯絡資訊
10617臺北市大安區羅斯福路四段1號
No.1 Sec.4, Roosevelt Rd., Taipei, Taiwan, R.O.C. 106
Tel: (02)33662353
Email: ntuetds@ntu.edu.tw
意見箱
相關連結
館藏目錄
國內圖書館整合查詢 MetaCat
臺大學術典藏 NTU Scholars
臺大圖書館數位典藏館
本站聲明
© NTU Library All Rights Reserved