Program Correctness through Self-Certification