Telefona gönder: Verifying Higher-Order Functional Programs with Pattern-Matching Algebraic Data Types