Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/978-3-642-54013-4_9guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Cascade 2.0

Published: 19 January 2014 Publication History

Abstract

Cascade is a program static analysis tool developed at New York University. Cascade takes as input a program and a control file. The control file specifies one or more assertions to be checked together with restrictions on program behaviors. The tool generates verification conditions for the specified assertions and checks them using an SMT solver which either produces a proof or gives a concrete trace showing how an assertion can fail. Version 2.0 supports the majority of standard C features except for floating point. It can be used to verify both memory safety as well as user-defined assertions. In this paper, we describe the Cascade system including some of its distinguishing features such as its support for different memory models trading off precision for scalability and its ability to reason about linked data structures.

References

[1]
Barnett, M., Leino, K.R.M., Schulte, W.: The spec# programming system: An overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. eds. CASSIS 2004. LNCS, vol. 3362, pp. 49---69. Springer, Heidelberg 2005
[2]
Barrett, C., Conway, C.L., Deters, M., Hadarean, L., Jovanović, D., King, T., Reynolds, A., Tinelli, C.: CVC4. In: Gopalakrishnan, G., Qadeer, S. eds. CAV 2011. LNCS, vol. 6806, pp. 171---177. Springer, Heidelberg 2011
[3]
Biere, A., Cimatti, A., Clarke, E.M., Fujita, M., Zhu, Y.: Symbolic model checking using SAT procedures instead of BDDs. In: Proceedings of Design Automation Conference DAC 1999, vol. 317, pp. 226---320 1999
[4]
Böhme, S., Moskal, M.: Heaps and data structures: A challenge for automated provers. In: BjØrner, N., Sofronie-Stokkermans, V. eds. CADE 2011. LNCS, vol. 6803, pp. 177---191. Springer, Heidelberg 2011
[5]
Brand, D., Joyner, W.H.: Verification of protocols using symbolic execution. Comput. Networks 2, 351 1978
[6]
Burstall, R.M.: Some techniques for proving correctness of programs which alter data structures. Machine Intelligence 7, 23---50 1972
[7]
Cadar, C., Dunbar, D., Engler, D.R.: KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In: Proc. OSDI 2008, pp. 209---224 2008
[8]
Chatterjee, S., Lahiri, S.K., Qadeer, S., Rakamarić, Z.: A reachability predicate for analyzing low-level software. In: Grumberg, O., Huth, M. eds. TACAS 2007. LNCS, vol. 4424, pp. 19---33. Springer, Heidelberg 2007
[9]
Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. eds. TACAS 2004. LNCS, vol. 2988, pp. 168---176. Springer, Heidelberg 2004
[10]
Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: A practical system for verifying concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. eds. TPHOLs 2009. LNCS, vol. 5674, pp. 23---42. Springer, Heidelberg 2009
[11]
Cohen, E., Moskal, M., Tobies, S., Schulte, W.: A precise yet efficient memory model for c. ENTCS 254, 85---103 2009
[12]
Cordeiro, L., Fischer, B., Marques-Silva, J.: SMT-based bounded model checking for embedded ansi-c software. In: ASE, pp. 137---148 2009
[13]
Cuoq, P., Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-c a software analysis perspective 2012
[14]
de Moura, L., BjØrner, N.: Z3: An efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. eds. TACAS 2008. LNCS, vol. 4963, pp. 337---340. Springer, Heidelberg 2008
[15]
Filliâtre, J.-C., Marché, C.: Multi-prover verification of C programs. In: Davies, J., Schulte, W., Barnett, M. eds. ICFEM 2004. LNCS, vol. 3308, pp. 15---29. Springer, Heidelberg 2004
[16]
Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: Programming Language Design and Implementation PLDI, pp. 234---245 2002
[17]
Grimm, R.: Rats!, a parser generator supporting extensible syntax 2009
[18]
King, J.C.: Symbolic execution and program testing. Communications of the ACM 385, 226---394 1976
[19]
Lahiri, S.K., Qadeer, S.: Back to the future. Revisting precise program verification using SMT solvers. In: POPL, pp. 171---182 2008
[20]
Lal, A., Qadeer, S., Lahiri, S.K.: A solver for reachability modulo theories. In: Madhusudan, P., Seshia, S.A. eds. CAV 2012. LNCS, vol. 7358, pp. 427---443. Springer, Heidelberg 2012
[21]
Rakamarić, Z., Bingham, J.D., Hu, A.J.: An inference-rule-based decision procedure for verification of heap-manipulating programs with mutable data and cyclic data structures. In: Cook, B., Podelski, A. eds. VMCAI 2007. LNCS, vol. 4349, pp. 106---121. Springer, Heidelberg 2007
[22]
Rakamarić, Z., Hu, A.J.: A scalable memory model for low-level code. In: Jones, N.D., Müller-Olm, M. eds. VMCAI 2009. LNCS, vol. 5403, pp. 290---304. Springer, Heidelberg 2009
[23]
Sankaranarayanan, S.: Necla static analysis benchmarks 2009
[24]
Sethi, N., Barrett, C.W.: Cascade: C assertion checker and deductive engine. In: Ball, T., Jones, R.B. eds. CAV 2006. LNCS, vol. 4144, pp. 166---169. Springer, Heidelberg 2006
[25]
Sofronie-Stokkermans, V.: Interpolation in local theory extensions. Logical Methods in Computer Science 4, 4 2008
[26]
Steensgaard, B.: Points-to analysis in almost linear time. In: ACM Symposium on Principles of Programming Languages, pp. 32---41 1996
[27]
Stump, A., Barrett, C.W., Dill, D.L., Levitt, J.: A decision procedure for an extensional theory of arrays. In: Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science, p. 29 2001
[28]
Totla, N., Wies, T.: Complete instantiation-based interpolation. In: POPL 2013
[29]
Vujošević-Janiă ić, M., Kuncak, V.: Development and evaluation of LAV: An SMT-based error finding platform. In: Joshi, R., Müller, P., Podelski, A. eds. VSTTE 2012. LNCS, vol. 7152, pp. 98---113. Springer, Heidelberg 2012
[30]
Zitser, M., Lippmann, R., Leek, T.: Testing static analysis tools using exploitable buffer overflows from open source code. SIGSOFT Softw. Eng., 29 2004

Cited By

View all
  • (2021)Model checking boot code from AWS data centersFormal Methods in System Design10.1007/s10703-020-00344-257:1(34-52)Online publication date: 1-Jul-2021
  • (2021)Abstract Interpretation of LLVM with a Region-Based Memory ModelSoftware Verification10.1007/978-3-030-95561-8_8(122-144)Online publication date: 18-Jul-2021
  • (2020)Leveraging Compiler Intermediate Representation for Multi- and Cross-Language VerificationVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-39322-9_5(90-111)Online publication date: 16-Jan-2020

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
VMCAI 2014: Proceedings of the 15th International Conference on Verification, Model Checking, and Abstract Interpretation - Volume 8318
January 2014
491 pages
ISBN:9783642540127
  • Editors:
  • Kenneth Mcmillan,
  • Xavier Rival

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 19 January 2014

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2021)Model checking boot code from AWS data centersFormal Methods in System Design10.1007/s10703-020-00344-257:1(34-52)Online publication date: 1-Jul-2021
  • (2021)Abstract Interpretation of LLVM with a Region-Based Memory ModelSoftware Verification10.1007/978-3-030-95561-8_8(122-144)Online publication date: 18-Jul-2021
  • (2020)Leveraging Compiler Intermediate Representation for Multi- and Cross-Language VerificationVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-39322-9_5(90-111)Online publication date: 16-Jan-2020

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media