LCF with realizing terms: a framework for the developement and verification of programs