This paper presents techniques developed to check program equivalences in the context of cryptographic software development,
where specifications are typically reference implementations. The techniques allow for the integration of interactive proof
techniques (required given the difficulty and generality of the results sought) in a verification infrastructure that is capable
of discharging many verification conditions automatically. To this end, the difficult results in the verification process
(to be proved interactively) are isolated as a set of lemmas. The fundamental notion of natural invariant is used to link
the specification level and the interactive proof construction process.
This work was partially supported by the European Union under the FP7-STREP project CACE (Project Number 216499), and by the
FCT-funded RESCUE project (PTDC/EIA/65862/2006).