np(S1,S2) :- det(S1,S3), noun(S3,S2).
vp(S1,S2) :- verb(S1,S2).
vp(S1,S2) :- verb(S1,S3), prep(S3,S2).
det([a|S],S).
adj([big|S],S).
adj([small|S],S).
noun([ball|S],S).
verb([takes|S],S).
prep([to|S],S).
prep([on|S],S).
prep([into|S],S).
