On theorem proving for program checking - Historical perspective and recent developments