Relational program logics are used to prove that a desired relationship holds between the execution of multiple programs. Existing relational program logics have focused on verifying that all runs of a collection of programs do not fall outside a desired set of behaviors. Several important relational properties, including refinement and noninterference, do not fit into this category, as they require the existence of specific desirable executions. This paper presents RHLE, a logic for verifying a class of relational properties which we term $\forall\exists$ properties. $\forall\exists$ properties assert that for all executions of a collection of programs, there exist executions of another set of programs exhibiting some intended behavior. Importantly, RHLE can reason modularly about programs which make library calls, ensuring that $\forall\exists$ properties are preserved when the programs are linked with any valid implementation of the library. To achieve this, we develop a novel form of function specification that requires the existence of certain behaviors in valid implementations. We have built a tool based on RHLE which we use to verify a diverse set of relational properties drawn from the literature, including refinement and generalized noninterference.
翻译:使用关系程序逻辑来证明执行多个程序之间有理想的关系。 现有的关系程序逻辑侧重于核实所有一个程序集的运行过程都不属于预期的行为范围。 一些重要的关系属性, 包括完善和不干涉, 并不符合这一类别, 因为它们要求存在特定的适当处决。 本文展示了RHLE, 一种核查一类关系属性的逻辑, 我们称之为 $\ forall\ existive $ propertyal. $forall\ dive pressive practices precifical precifical precifical practices, 我们用 RHLE 来核查从文献中提取的一套不同关系属性, 包括完善和普遍互不干涉。