Programming and proving in Isabelle