s(L1,L2):- np(L1,L3), vp(L3,L2). np(L1,L2):- pname(L1,L2). np(L1,L2):- det(L1,L3), noun(L3,L2). vp(L1,L2):- verb(L1,L3), np(L3,L2). pname([john|T],T). pname([mary|T],T). det([the|T],T). det([a|T],T). noun([politician|T],T). noun([child|T],T). noun([book|T],T). verb([likes|T],T). verb([hates|T],T).