state(X) :- hasP(X,_); sovereignState(X). people(Y) :- hasP(_,Y). sovereignState(X) :- hasS(X,_); nationState(X). sovereignty(Y) :- hasS(_,Y); via(Y,_); politicalSovereignty(Y); economicSovereignty(Y). system(X) :- via(_,X); politicalSystem(X); religiousSystem(X); economicSystem(X). %classification rule nationState(X) :- hasS(X,Y), politicalSovereignty(Y). hasP(canada,p2). %the next 2 lines are unnecessary. Why? state(canada). people(p2). hasS(canada,s2). % sovereignState(canada). should be Yes politicalSovereignty(s2). % nationState(canada) should be Yes hasP(us,p1). % state(us) should be Yes % people(p1) should be Yes hasS(us,s1). % sovereignState(us). should be Yes % nationState(us). should be NO :- unknown(_, fail).