Skip to main content

The Implementation of Object Propositions: The Oprop Verification Tool

  • Conference paper
  • First Online:
Formal Aspects of Component Software (FACS 2017)

Abstract

In this paper we present Oprop, a tool that implements the theory of object propositions. We have recently introduced object propositions as a modular verification technique that combines abstract predicates and fractional permissions. The Oprop tool, found as a web application at lowcost-env.ynzf2j4byc.us-west-2.elasticbeanstalk.com, verifies programs written in a simplified version of Java augmented with the object propositions specifications. Our tool parses the input files and automatically translates them into the intermediate verification language Boogie, which is verified by the Boogie verifier that we use as a back end. We present the details of our implementation, the rules of our translation and how they are applied on an example. We describe an instance of the challenging Composite design pattern, that we have automatically verified using the Oprop tool, and prove the equivalence between formulas in Oprop and their translation into Boogie.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

References

  1. Ahrendt, W., Beckert, B., Bubel, R., Hähnle, R., Schmitt, P.H., Ulbrich, M. (eds.): Deductive Software Verification - The KeY Book - From Theory to Practice. Programming and Software Engineering, vol. 10001. Springer, Heidelberg (2016)

    Google Scholar 

  2. Appel, A.W., Palsberg, J.: Modern Compiler Implementation in Java, 2nd edn. Cambridge University Press, New York (2003)

    Google Scholar 

  3. Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: a modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006). doi:10.1007/11804192_17

    Chapter  Google Scholar 

  4. Bierhoff, K., Aldrich, J.: Permissions to specify the composite design pattern. In: Proceedings of SAVCBS 2008 (2008)

    Google Scholar 

  5. Boyland, J.: Checking interference with fractional permissions. In: Cousot, R. (ed.) SAS 2003. LNCS, vol. 2694, pp. 55–72. Springer, Heidelberg (2003). doi:10.1007/3-540-44898-5_4

    Chapter  Google Scholar 

  6. Cohen, E., Moskal, M., Schulte, W., Tobies, S.: Local verification of global invariants in concurrent programs. In: Touili, T., Cook, B., Jackson, P. (eds.) CAV 2010. LNCS, vol. 6174, pp. 480–494. Springer, Heidelberg (2010). doi:10.1007/978-3-642-14295-6_42

    Chapter  Google Scholar 

  7. 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). doi:10.1007/978-3-540-78800-3_24

    Chapter  Google Scholar 

  8. DeLine, R., Fähndrich, M.: Typestates for objects. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 465–490. Springer, Heidelberg (2004). doi:10.1007/978-3-540-24851-4_21

    Chapter  Google Scholar 

  9. Fähndrich, M., DeLine, R.: Adoption and focus: practical linear types for imperative programming. In: PLDI, pp. 13–24 (2002)

    Google Scholar 

  10. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Boston (1994)

    MATH  Google Scholar 

  11. Girard, J.-Y.: Linear logic. Theor. Comput. Sci. 50(1), 1–102 (1987)

    Article  MathSciNet  MATH  Google Scholar 

  12. Heule, S., Kassios, I.T., Müller, P., Summers, A.J.: Verification condition generation for permission logics with abstract predicates and abstraction functions. In: Castagna, G. (ed.) ECOOP 2013. LNCS, vol. 7920, pp. 451–476. Springer, Heidelberg (2013). doi:10.1007/978-3-642-39038-8_19

    Chapter  Google Scholar 

  13. Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: a minimal core calculus for Java and GJ, pp. 132–146 (2001)

    Google Scholar 

  14. Jacobs, B., Smans, J., Piessens, F.: Verifying the composite pattern using separation logic. In: Proceedings of SAVCBS 2008 (2008)

    Google Scholar 

  15. Leavens, G.T., Rustan, K., Leino, M., Müller, P.: Specification and verification challenges for sequential object-oriented programs. Form. Asp. Comput. 19(2), 159–189 (2007)

    Article  MATH  Google Scholar 

  16. Leino, K.R.M., Müller, P.: A basis for verifying multi-threaded programs. In: Castagna, G. (ed.) ESOP 2009. LNCS, vol. 5502, pp. 378–393. Springer, Heidelberg (2009). doi:10.1007/978-3-642-00590-9_27

    Chapter  Google Scholar 

  17. Leino, K.R.M.: Dafny: an automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR 2010. LNCS, vol. 6355, pp. 348–370. Springer, Heidelberg (2010). doi:10.1007/978-3-642-17511-4_20

    Chapter  Google Scholar 

  18. Leino, K.R.M.: This is boogie 2. Manuscript KRML 178 (2008)

    Google Scholar 

  19. Müller, P., Schwerhoff, M., Summers, A.J.: Viper: a verification infrastructure for permission-based reasoning. In: Jobstmann, B., Leino, K.R.M. (eds.) VMCAI 2016. LNCS, vol. 9583, pp. 41–62. Springer, Heidelberg (2016). doi:10.1007/978-3-662-49122-5_2

    Chapter  Google Scholar 

  20. Müller, P. (ed.): Modular Specification and Verification of Object-Oriented Programs. LNCS, vol. 2262. Springer, Heidelberg (2002). doi:10.1007/3-540-45651-1

    MATH  Google Scholar 

  21. Müller, P., Poetzsch-Heffter, A., Leavens, G.T.: Modular invariants for layered object structures. Sci. Comput. Program. 62(3), 253–286 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  22. Nistor, L.: CMU Ph.D. thesis (in preparation). http://www.cs.cmu.edu/~lnistor/thesis.pdf

  23. Nistor, L., Aldrich, J., Balzer, S., Mehnert, H.: Object propositions. In: Jones, C., Pihlajasaari, P., Sun, J. (eds.) FM 2014. LNCS, vol. 8442, pp. 497–513. Springer, Cham (2014). doi:10.1007/978-3-319-06410-9_34

    Chapter  Google Scholar 

  24. Parkinson, M., Bierman, G.: Separation logic and abstraction. In: POPL, pp. 247–258 (2005)

    Google Scholar 

  25. Pfenning, F.: (2012). http://www.cs.cmu.edu/~fp/courses/15816-s12/

  26. Reed, J.: A hybrid logical framework. Ph.D. thesis. Technical report CMU-CS-09-155 (2009)

    Google Scholar 

  27. Summers, A.J., Drossopoulou, S.: Considerate reasoning and the composite design pattern. In: Barthe, G., Hermenegildo, M. (eds.) VMCAI 2010. LNCS, vol. 5944, pp. 328–344. Springer, Heidelberg (2010). doi:10.1007/978-3-642-11319-2_24

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ligia Nistor .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer International Publishing AG

About this paper

Cite this paper

Nistor, L., Aldrich, J. (2017). The Implementation of Object Propositions: The Oprop Verification Tool. In: Proença, J., Lumpe, M. (eds) Formal Aspects of Component Software. FACS 2017. Lecture Notes in Computer Science(), vol 10487. Springer, Cham. https://doi.org/10.1007/978-3-319-68034-7_11

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-68034-7_11

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-68033-0

  • Online ISBN: 978-3-319-68034-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics