%% 2 uses %% pinyata has a handle to hold it and a container to store lollies in it with. %% twouses(pinyata,[[pinyata,handle],[pinyata,container]],[[handle,hold],[container,lollies]],Uses). Uses=[hold,lollies] %% 2 uses objection %% teeth may have a hole in them caused by eating lollies. %% infected(incisor,[[molar,healthy],[incisor,infected]],Condition).Condition=infected. infected(Tooth,TeethandCondition,Condition) :- member(ToothandCondition,TeethandCondition), ToothandCondition=[Tooth,Condition]. %% finduses(['ate', 'apple'], [[['ate', 'apple'], ['kicked', 'ball']], [['ate', 'apple'], ['climbed', 'step-ladder']]], Uses). finduses(Use, Pairs, Uses) :- finduses1(Use, Pairs, [], Uses), !. finduses1(_Use, [], Uses, Uses). finduses1(Use1, [Pair | Pairs], Uses1, Uses2) :- Pair = [Use1, Use2], append(Uses1, [Use2], Uses3), finduses1(Use1, Pairs, Uses3, Uses2). finduses1(Use, [_Pair | Pairs], Uses1, Uses2) :- finduses1(Use, Pairs, Uses1, Uses2).