F*: A Higher-Order Effectful Language Designed for Program Verification