We give extensional and intensional characterizations of functional programs with nondeterminism: as structure preserving functions between biorders, and as nondeterministic sequential algorithms on ordered concrete data structures which compute them. A fundamental result establishes that these extensional and intensional representations are equivalent, by showing how to construct the unique sequential algorithm which computes a given monotone and stable function, and describing the conditions on sequential algorithms which correspond to continuity with respect to each order. We illustrate by defining may-testing and must-testing denotational semantics for sequential functional languages with bounded and unbounded choice operators. We prove that these are computationally adequate, despite the non-continuity of the must-testing semantics of unbounded nondeterminism. In the bounded case, we prove that our continuous models are fully abstract with respect to may-testing and must-testing by identifying a simple universal type, which may also form the basis for models of the untyped {\lambda}-calculus. In the unbounded case we observe that our model contains computable functions which are not denoted by terms, by identifying a further "weak continuity" property of the definable elements, and use this to establish that it is not fully abstract.
翻译:我们用非决定性的扩展和强化特征描述功能程序:作为保持两极之间功能的结构,以及作为定购具体数据结构的不确定性顺序算法,以计算这些功能。一个基本结果证明,这些扩展和强化的表达方式是等效的,方法是展示如何构建计算给定单体和稳定功能的独特序列算法,描述符合每个顺序连续性的顺序算法的条件。我们通过界定可能测试和必须测试与约束和无约束的选择操作者相继功能语言的注释性语义来说明。我们证明,这些算法是充分的,尽管必须测试非约束和不确定非约束的语义。在受约束的情况下,我们证明我们的连续模型在可能测试和测试方面是完全抽象的,并且必须通过确定一个简单的通用类型来测试。这也可能构成非类型撒标的功能的模型的基础。在不受约束的案例中,我们发现这些功能是计算不连续的,我们用这个模型来确定一个不完全的参数。