Hi Alex,

Thanks for your help!

holds(A,S) :- restoreSitArg(A,S,F), F ;
           \+ restoreSitArg(A,S,F), isAtom(A), A.

What I really want is this:

(be holds (@A @S)
   (or
     ((restoreSitArg @A @S @F) @F)
     ((not (restoreSitArg @A @S @F)) (isAtom @A) @A) ) )

But the above (with a @F or @A for a clause) doesn't work. :-(  

This -

(be holds (@A @S)
   (or
     ((restoreSitArg @A @S @F) (@ -> @F))
     ((not (restoreSitArg @A @S @F)) (isAtom @A)  (@ -> @A)) ) )

gives me the same results as using the (@ solve (list (-> @F))) clause. Neither 
that nor (@ -> @F) seem to unify variables in @F (which is bound to a clause)

:  (solve '((holds (On @N) s0)))
-> (T)

Solves, but it also should tell me @N is bound to 3


Cheers,

Doug



--- On Thu, 6/30/11, Alexander Burger <[email protected]> wrote:

> From: Alexander Burger <[email protected]>
> Subject: Re: pilog: unification in variables that are clauses
> To: [email protected]
> Date: Thursday, June 30, 2011, 12:27 AM
> On Thu, Jun 30, 2011 at 09:20:43AM
> +0200, Alexander Burger wrote:
> > At least, a simple (@ . @A) should work. Doesn't it?
> 
> Wait ... probably not a good idea.
> 
> But this should work: (@ -> @A)
> -- 
> UNSUBSCRIBE: mailto:[email protected]?subject=Unsubscribe
> 
-- 
UNSUBSCRIBE: mailto:[email protected]?subject=Unsubscribe

Reply via email to