From moeller@ebi.ac.uk  Tue Jun 15 22:06:05 1999
Received: from alpha1.ebi.ac.uk (root@alpha1.ebi.ac.uk [193.62.196.122])
	by swi.swi.psy.uva.nl (8.9.3/8.9.3) with ESMTP id WAA29762
	for <prolog@swi.psy.uva.nl>; Tue, 15 Jun 1999 22:06:04 +0200 (MET DST)
Received: from mozart.ebi.ac.uk (mozart.ebi.ac.uk [193.62.196.62])
	by alpha1.ebi.ac.uk (8.8.7/8.8.7) with ESMTP id VAA01485;
	Tue, 15 Jun 1999 21:06:06 +0100 (BST)
Date: Tue, 15 Jun 1999 21:06:06 +0100 (BST)
From: Steffen Moeller <moeller@ebi.ac.uk>
To: Hongmei Chi <hcc8471@garnet.acns.fsu.edu>
cc: prolog@swi.psy.uva.nl
Subject: Re: Help
In-Reply-To: <199906151935.PAA68860@garnet2.acns.fsu.edu>
Message-ID: <Pine.OSF.4.05.9906152104360.10633-100000@mozart.ebi.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> 
> I try to write a simple program to define a plus by myself. 
> 
> sum(X,0,X).
> sum(W, f(Y), f(Z)):-sum(W,Y,Z).
> 
> This doesnot work and just keep telling me to refine sum.
> Please tell me the reason.


sum(X,0,X).
sum(0,X,X).
sum(f(X),Y,f(Z)):-sum(X,Y,Z).
sum(X,f(Y),f(Z)):-sum(X,Y,Z).

Seems to work.

?- sum(f(0),f(0),f(f(0))).

Yes
?- sum(f(0),X,f(f(0))).

X = f(0)

Yes
?- sum(0,f(0),f(f(0))).

No
?- sum(X,f(0),f(f(f(f(0))))).

X = f(f(f(0))) ; 

