Up
Go up to Question 1

Solution

eval(Exp,Val,Env) is true if expression Exp evaluates to Val in environment Env.
eval(N,N,E) <- 
   number(N).
eval(C,V,E) <- 
   member(val(C,V),E).
eval((X+Y),V,E) <-
   eval(X,XV,E)&
   eval(Y,YV,E)&
   V is XV+YV.
eval((X*Y),V,E) <-
   eval(X,XV,E)&
   eval(Y,YV,E)&
   V is XV*YV.
eval((X-Y),V,E) <-
   eval(X,XV,E)&
   eval(Y,YV,E)&
   V is XV-YV.
eval((X/Y),V,E) <-
   eval(X,XV,E)&
   eval(Y,YV,E)&
   V is XV/YV.
member(E,L) is true if E is a member of list L.
member(E,[E|R]).
member(E,[H|T]) <- 
   member(E,T).

David Poole

Up