Nondeterministic programming languages