Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!pyramid!nsc!taux01!shahaf From: shahaf@taux01.UUCP (Shahaf Moshe) Newsgroups: comp.lang.prolog Subject: mine embarrassingly simple problem Message-ID: <500@taux01.UUCP> Date: 10 Mar 88 11:15:07 GMT Reply-To: shahaf%taux01@nsc.UUCP (Shahaf Moshe) Organization: National Semiconductor (Israel) Ltd. Lines: 43 Hello, Can someone help me in the following: In translation from WATERLOO to Quintus code I need a !/1 predicate which does : !(P) - A search through the ancestors exactly as for ancestor and retry. If this search fails then the predicate fails. If the search succeeds then certain available choices are eliminated from an existing portion of the proof. All choice points are removed in the part of the proof from the point of selection of the given ancestor literal to the current point in the proof. Thus a call of the form /(*) has exactly the same effect as the simple nullary / call. Consider the following example: a:-b,c,d. b:-e. c:-f,g. e. f. g:-/(c),h. :-a. ... The implication tree has the following form when the unary cut is called: goal | a / | \ / | \ / | \ b c d / | \ / | \ e f g x x | \ | \ /(c) h All choice points from the selection of c:-f,g onward are eliminated. Thus if h fails an alternate proof for e will be attempted (and the subproof of c will be deleted). thanks a lot. shahaf%taux01@nsc.COM