Programming and Reasoning with Partial Observability