Simple relational correctness proofs for static analyses and program transformations