took an existing Fortran program (finds roots of arbitrary function, given a segment), and reversed engineered it to find its specification and proof. basic method was to break the program into clean components and then specify and prove each component.