Abstract
We look at the problem of deciding correctness of a programming assignment submitted by a student, with respect to a reference implementation provided by the teacher, the correctness property being output equivalence of the two programs. Typically, programming assignments are evaluated against a set of test-inputs. This checks for output equivalence, but is limited to the cases that have been tested for. One may compose the programs sequentially and assert at the end that the outputs must match. But verifying such programs is not easy; the proofs often require that the functionality of every component program be captured fully, making invariant inference a challenge. One may discover mismatches (i.e., bugs) using a bounded model checker, but their absence brings us back to the question of verification. In this paper, we show how a hypersafety verification technique can effectively be used for verifying correctness of programming assignments. This connects two seemingly unrelated problems, and opens up the possibility of employing tools and techniques being developed for the former to efficiently address the latter. We demonstrate the practicability of this approach by using a hypersafety verification tool named weaver and several sample assignment problems. CCS CONCEPTS • Software and its engineering \rightarrow Formal methods; Correctness; • Theory of computation \rightarrow Program reasoning.
Author supplied keywords
Cite
CITATION STYLE
Anil, J. K., Sumanth Prabhu, S., Madhukar, K., & Venkatesh, R. (2020). Using Hypersafety Verification for Proving Correctness of Programming Assignments. In Proceedings - 2020 ACM/IEEE 42nd International Conference on Software Engineering: New Ideas and Emerging Results, ICSE-NIER 2020 (pp. 81–84). Institute of Electrical and Electronics Engineers Inc. https://doi.org/10.1145/3377816.3381747
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.