A Formal Treatment of Non-Deterministic Dataflow Streams in Intensional Logic Programming Mehmet A. Orgun William W. Wadge Abstract Intensional logic programming is an alternative to concurrent logic programming languages which employ infinitary data structures such as streams to specify non-terminating computa- tions. Wadge has proposed a logical extension to intensional logic programming, i.e., choice predicates, though which dataflow-style computations can be naturally expressed. This paper discusses the model-theoretical semantics of intensional logic programs with choice predicates, and introduces the notion of constructible minimal models which characterizes the operational semantics of such programs. 1 Introduction Intensional logic programming (ILP) is an alternative to concurrent logic programming languages which employ infinitary data structures such as streams to specify non-terminating computations. Intensional logic [14] studies formulas/expressions whose meaning depends on an implicit context (time or other). Temporal logic programming languages such as Chronolog [20, 12, 10, 21] and Templog [1, 3, 4] can be considered as instances of ILP, whose underlying logic incorporates time as the implicit context. In ILP, a stream can be represented by a predicate over a set of possible worlds, such as a collection of moments in time. But ILP languages are non-deterministic in the sense that each predicate defined in an intensional logic program does not necessarily specify a unique stream of ground terms, because programmers are not allowed to make arbitrary but definite choices. Then a problem emerges in connection with a dataflow style of (stream-oriented) communication such as that of the dataflow language Lucid [22]. Let us first consider stream-oriented input/output, and designate two unary predicates, input and output , as playing a special rˆ ole in the underlying intensional language. The predicate input is supplied by the implementation, and should not appear in the heads of any clause in an intensional logic program. At any possible world w, there in only one ground instance of input (X) which succeeds—namely that in which X is instantiated to the corresponding input item indexed by w in the input stream of ground terms. In this way the input predicate represents a stream of input values over the set of possible worlds in the underlying intensional logic. On the other hand, the output predicate is axiomatized by the programmer. In the simplest case, the program should ensure that at any given world w, there is exactly one ground instance of output (X) which succeeds. Then the unique ground term which X instantiates to is produced by the implementation as the output item indexed by w in the output stream of ground terms. The problems arise when at a given world the output predicate does not specify a unique ground term. And there is no reason that it should—perhaps the problem specification itself does not constrain the programmer to produce one particular output stream. In that case it would be completely against the spirit of logic programming to force the programmer to complicate the programmer by making it unnecessarily specific. Clearly, the implementation should choose one of the possible instantiations as the output. * Presented to the 1989 International Symposium on Lucid and Intensional Programming, Arizona State Uni- versity, Tempe, Arizona, USA, 8 May 1989. 1