| OCR Text |
Show us lions. Logic programs substitute unification between terms for parameter-passing between procedures, which leads to gross inefficiences for many numeric applications. Furthermore, the non-deterministic nature of logic programs, resulting from the possibility of unJfication failure, has no benefit for applications which are clearly deterministic; these include most purely-numerical applications. Logic programming has many of the same advantages as a model of parallel computation as functional programming. Like functional programs, logic programs are free from side-effects. Program segments can be considered by themselves apart from other parts of the program. Since logical variables are "write-once", Logic programs exhibit so-called referential transparency: the proof of a goal always produces the same set of variable bindings. Like functional programming, logic programming places no responsibility on the programmer for discovering parallelism in the program; like functional programming, also, providing automatic control of the inherent parallelism is difficult. 2.1.6 Prolog The programming language Prolog is the most widely-accepted logic language. The syntax presented earlier is derived from Prolog's and has become the de facto standard. Prolog is the language of choice for Japan's Fifth Generation Computer Project, and many versions of the language and its interpreters are in general circulation. Prolog adds several important features to the formal basis of logic programming and its procedural interpretation. One area of extension is to so-called meta-logical constructs, i.e., functional capabilities of the language which do not have an analog in FOPL. These constructs, expressed as logical predicates, include input and output, the ability to add (assert) and remove (retract) clauses during program execution, and the assignment of intrinsic meanings to some of the program symbols. Of greater impact on logic programming as a whole is Prolog's notion of program control. Control refers to the order in which actions in the procedural inter- |