AIB 2008-06: A Framework for Proving Correctness of Adjoint Message Passing Programs