2
votes

Hello , i have a simple Homework in Prolog and i am getting this error :

ERROR: toplevel: Undefined procedure: root/1 (DWIM could not correct goal)

The Tree Image

code in file :

 node(3).
 node(1).
 node(2).
 node(6).
 node(5).
 edge(3,1).
 edge(1,2).
 edge(3,6).
 edge(6,5). 
 root(X ):- node( X ),not edge(X , _).
 leaf(X):- node(X) ,not edge(X, _ ).
 internal_node( X ):- edge( X , _ ),  edge( _ , X ).

i am getting the error when : root(3). leaf(5). but not when: internal_node(1).

Thank you,

1
Sure you did not get an error message like Syntax error: Operator expected for using not? Replace it by \+ twice. - false
no syntax error , i replaced it : root(X ):- node( X ),\+ edge(X , _). same error. - Leon Orlinski

1 Answers

2
votes

You had a logic mistake in the first declaration , try this it should work :

 root(X ):- node( X ),\+ edge(_ , X).
      leaf(X):- node(X) ,\+ edge(X, _ ).
      internal_node( X ):- edge( X , _ ),  edge( _ , X ).