F*: A general-purpose proof-oriented programming language