Reasoning about Functional Programs door