Relational Test Tables: A Practical Specification Language for Evolution and Security
A wide range of interesting program properties are relational, i.e., they described a relation between two program runs. Two prominent relational properties are the regression verification (proving conditional program equivalence), and non-interference (proving the absence of information flow). The verification of relational properties is hardly accessible to engineers due to the lack of appropriate specification languages for relational properties. In previous work, we introduced the concept of generalized test tables: a table-based specification language, which allows the tight temporal specification of functional (non-relational)properties for reactive systems. We introduce relational test tables – an extension of generalized test tables for the specification of relational properties. Relational test tables support specification of $k$-safety properties (a superset of relational properties) between $k\geq 2$ program runs. We show the applicability of relational test tables by specifying and verifying change scenarios and information flow of reactive systems. We provide an implementation of the verification pipeline for programs following the IEC 61131-3 coding standard.