Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbosgd!ihnp4!inuxc!pur-ee!uiucdcs!reddy From: reddy@uiucdcs.CS.UIUC.EDU Newsgroups: net.lang.prolog Subject: Re: Standard behavior? Message-ID: <29700030@uiucdcs> Date: Sat, 7-Jun-86 20:19:00 EDT Article-I.D.: uiucdcs.29700030 Posted: Sat Jun 7 20:19:00 1986 Date-Received: Mon, 9-Jun-86 03:06:28 EDT References: <6500005@uicsl> Lines: 18 Nf-ID: #R:uicsl:6500005:uiucdcs:29700030:000:947 Nf-From: uiucdcs.CS.UIUC.EDU!reddy Jun 7 19:19:00 1986 /* Written 6:10 pm Jun 1, 1986 by blenko@burdvax.UUCP in uiucdcs:net.lang.prolog */ So the discussion reduces to establishing the logical or non-logical character of call() and negation-by-failure(). I will speculate that the meaning of call() can be captured by a suitable application of first-order logic, due to its definition in terms of constructive proofs (I have something along the lines of Perlis' AIJ (1985) article in mind here). I am side-stepping the problem of incompleteness of logic-programming interpreters w.r.t resolution. Tom /* End of text from uiucdcs:net.lang.prolog */ We should be careful about what we mean by negation-by-failure. If it is applied to ground atoms, it is certainly logical (see for example Lloyd's book). But when it is applied to non-ground atoms, it messes up with the quantification of variables in the atoms. Hence, it should not be surprising that it is possible to define cut etc using it.