module path. kind node type. type adj node -> node -> o. type path node -> node -> o. type a node. type b node. type c node. type d node. type e node. type f node. adj a b. adj a c. adj b c. adj c d. adj e d. path X Y :- adj X Y. path X Z :- adj X Y, path Y Z. % You can also write % path X Z :- sigma y\(adj X Y, path Y Z). % but don't write % path X Z :- path X Y, path Y Z.