Methods for verifying programs written in a higher level programming language are devised and implemented. The system can verify programs written in a subset of PASCAL, which may have data structures such as ARRAY, POINTER, and RECORD and control structures such as WHILE, REPEAT, FOR, PROCEDURE, FUNCTION and COROUTINE. The process of creation of verification conditions is an extension of the work done by lgarashi, London and Luckham (1972) which is based on the deductive theory by Hoare (1969). Verification conditions are proved using specialized simplification and proof techniques, which consist of an arithmetic simplifier, equality replacement rules, fast algorithm for simplifying formulas using propositional truth value evaluation, and a depth first proof search process. The basis of deduction mechanism used in this prover is Gentzen-type formal system. Several sorting programs including Floyd's TREESORT3 and Hoare's FIND are verified. It is shown that the resulting array is not only ordered but also a permutation of the input array This research was supported in part by the Advanced Research Projects Agency of the Office of the Secretary of Defence under contract DAHC 15-73-C-0435.