snt --> det(F, Number), adjs(F), noun(Number), verb(Number). det(F, sing) --> [a], { F = consonant } ; [an], { F = vowel }. det(_, plur) --> [the]. adjs(F) --> adjs(F, 0). adjs(F, Count) --> adj(F) ; { Count < 1, NewCount is Count + 1}, adj(F), adjs(_, NewCount). adj(F) --> [spotted], { F = consonant } ; [endangered], { F = vowel } ; [poison_arrow], { F = consonant }. noun(Num) --> [frog], { Num = sing } ; [owl], { Num = sing } ; [frogs], { Num = plur } ; [owls], { Num = plur }. verb(Num) --> [hops], { Num = sing } ; [hop], { Num = plur } ; [swims], { Num = sing } ; [swim], { Num = plur } ; [hunts], { Num = sing } ; [hunt], { Num = plur } ; [flies], { Num = sing } ; [fly], { Num = plur }.