Lean functions as both a programming language and an interactive proof assistant