John Hughes, John O'Donnell: Expressing and Reasoning About Non-Deterministic Functional Programs. Functional Programming 1989: 308-328