The Implementation of Object Propositions: The Oprop Verification Tool

  • Ligia NistorEmail author
  • Jonathan Aldrich
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10487)


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, 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.


Formal Verification Oprop Object Propositions Linear Logic Java Boogie Translation Equivalence Proof Tool Web Service 


  1. 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. 2.
    Appel, A.W., Palsberg, J.: Modern Compiler Implementation in Java, 2nd edn. Cambridge University Press, New York (2003)Google Scholar
  3. 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 CrossRefGoogle Scholar
  4. 4.
    Bierhoff, K., Aldrich, J.: Permissions to specify the composite design pattern. In: Proceedings of SAVCBS 2008 (2008)Google Scholar
  5. 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 CrossRefGoogle Scholar
  6. 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 CrossRefGoogle Scholar
  7. 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 CrossRefGoogle Scholar
  8. 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 CrossRefGoogle Scholar
  9. 9.
    Fähndrich, M., DeLine, R.: Adoption and focus: practical linear types for imperative programming. In: PLDI, pp. 13–24 (2002)Google Scholar
  10. 10.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Boston (1994)zbMATHGoogle Scholar
  11. 11.
    Girard, J.-Y.: Linear logic. Theor. Comput. Sci. 50(1), 1–102 (1987)MathSciNetCrossRefzbMATHGoogle Scholar
  12. 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 CrossRefGoogle Scholar
  13. 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. 14.
    Jacobs, B., Smans, J., Piessens, F.: Verifying the composite pattern using separation logic. In: Proceedings of SAVCBS 2008 (2008)Google Scholar
  15. 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)CrossRefzbMATHGoogle Scholar
  16. 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 CrossRefGoogle Scholar
  17. 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 CrossRefGoogle Scholar
  18. 18.
    Leino, K.R.M.: This is boogie 2. Manuscript KRML 178 (2008)Google Scholar
  19. 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 CrossRefGoogle Scholar
  20. 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 zbMATHGoogle Scholar
  21. 21.
    Müller, P., Poetzsch-Heffter, A., Leavens, G.T.: Modular invariants for layered object structures. Sci. Comput. Program. 62(3), 253–286 (2006)MathSciNetCrossRefzbMATHGoogle Scholar
  22. 22.
    Nistor, L.: CMU Ph.D. thesis (in preparation).
  23. 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 CrossRefGoogle Scholar
  24. 24.
    Parkinson, M., Bierman, G.: Separation logic and abstraction. In: POPL, pp. 247–258 (2005)Google Scholar
  25. 25.
  26. 26.
    Reed, J.: A hybrid logical framework. Ph.D. thesis. Technical report CMU-CS-09-155 (2009)Google Scholar
  27. 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 CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  1. 1.School of Computer ScienceCarnegie Mellon UniversityPittsburghUSA

Personalised recommendations