TY - GEN
T1 - On Using VeriFast, VerCors, Plural, and KeY to Check Object Usage
AU - Mota, João
AU - Giunti, Marco
AU - Ravara, António
N1 - Funding Information:
info:eu-repo/grantAgreement/EC/H2020/778233/EU#
info:eu-repo/grantAgreement/FCT/6817 - DCRRNI ID/UIDB%2F04516%2F2020/PT#
info:eu-repo/grantAgreement/FCT/OE/2021.05297.BD/PT#
Marco Giunti: Partially supported by Dstl, reference: ACC2028868.
Publisher Copyright:
© João Mota Marco Giunti and António Ravara;
PY - 2023/7
Y1 - 2023/7
N2 - Typestates are a notion of behavioral types that describe protocols for stateful objects, specifying the available methods for each state. Ensuring methods are called in the correct order (protocol compliance), and that, if and when the program terminates, all objects are in the final state (protocol completion) is crucial to write better and safer programs. Objects of this kind are commonly shared among different clients or stored in collections, which may also be shared. However, statically checking protocol compliance and completion when objects are shared is challenging. To evaluate the support given by state of the art verification tools in checking the correct use of shared objects with protocol, we present a survey on four tools for Java: VeriFast, VerCors, Plural, and KeY. We describe the implementation of a file reader, linked-list, and iterator, check for each tool its ability to statically guarantee protocol compliance and completion, even when objects are shared in collections, and evaluate the programmer’s effort in making the code acceptable to these tools. With this study, we motivate the need for lightweight methods to verify the presented kinds of programs.
AB - Typestates are a notion of behavioral types that describe protocols for stateful objects, specifying the available methods for each state. Ensuring methods are called in the correct order (protocol compliance), and that, if and when the program terminates, all objects are in the final state (protocol completion) is crucial to write better and safer programs. Objects of this kind are commonly shared among different clients or stored in collections, which may also be shared. However, statically checking protocol compliance and completion when objects are shared is challenging. To evaluate the support given by state of the art verification tools in checking the correct use of shared objects with protocol, we present a survey on four tools for Java: VeriFast, VerCors, Plural, and KeY. We describe the implementation of a file reader, linked-list, and iterator, check for each tool its ability to statically guarantee protocol compliance and completion, even when objects are shared in collections, and evaluate the programmer’s effort in making the code acceptable to these tools. With this study, we motivate the need for lightweight methods to verify the presented kinds of programs.
KW - Java
KW - KeY
KW - Plural
KW - Typestates
KW - VerCors
KW - VeriFast
UR - http://www.scopus.com/inward/record.url?scp=85168874138&partnerID=8YFLogxK
U2 - 10.4230/LIPIcs.ECOOP.2023.40
DO - 10.4230/LIPIcs.ECOOP.2023.40
M3 - Conference contribution
AN - SCOPUS:85168874138
SN - 978-3-95977-281-5
T3 - Leibniz International Proceedings in Informatics, LIPIcs
BT - 37th European Conference on Object-Oriented Programming, ECOOP 2023
A2 - Ali, Karim
A2 - Salvaneschi, Guido
PB - Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
CY - Dagstuhl
T2 - 37th European Conference on Object-Oriented Programming, ECOOP 2023
Y2 - 17 July 2023 through 21 July 2023
ER -