Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!philabs!mcnc!unc!ulysses!burl!clyde!cbosgd!ihnp4!alberta!ubc-vision!ubc-cs!andrews From: andrews@ubc-cs.UUCP (Jamie Andrews) Newsgroups: net.lang.prolog Subject: Cut, var, nonvar, and Goebel's stardom Message-ID: <270@ubc-cs.UUCP> Date: Fri, 6-Jun-86 14:00:08 EDT Article-I.D.: ubc-cs.270 Posted: Fri Jun 6 14:00:08 1986 Date-Received: Wed, 11-Jun-86 06:24:49 EDT References: <6500005@uicsl> <29700028@uiucdcs> Reply-To: andrews@ubc-cs.UUCP (Jamie Andrews) Organization: UBC Department of Computer Science, Vancouver, B.C., Canada Lines: 31 In article <29700028@uiucdcs> reddy@uiucdcs.CS.UIUC.EDU writes: > >To rggoebel@watdragon: > >You can try explaining cut, var and nonvar logically. If you do it >successfully, you could become a star of the logic programming community. Well, as far as cut is concerned: it's fairly easy to explain it "logically", though not as a predicate or a goal, which is what I assume you meant. A predicate definition in Prolog using cuts can be rewritten without cuts in a language closer to formal logic, such as RF-Maple (see Voda&Yu, 1984 Logic Programming conference proceedings). Such a rewriting is straightforward and in fact reads more like FOL. Var and nonvar are essentially the read and write annotations of Parlog and similar languages. Again it's difficult to explain them as predicates, but not as control primitives. They have been defined using all-solutions predicates, which are usually closely related to negation-as-failure, but as Naish points out many of the all-solutions implementations are faulty. Since Prolog's only language construct is the predicate call, a lot of things have been expressed as predicate calls which are really nothing of the kind. That's what usually destroys the declarative reading. But in any case, Randy Goebel is already a star! Didn't you catch him on the Carson show??? :-) --Jamie. ...!seismo!ubc-vision!ubc-cs!andrews "That was my Lo... and these are my lilies"