sentenca(X, S0, S) :- sujeito(X, S0, S1), predicado(X, S1, S).

sujeito(X, S0, S) :- artigo(X, S0, S1), substantivo(X, S1, S).

predicado(X, S0, S) :- verbo(X, S0, S).
predicado(X, S0, S) :- verbo(X, S0, S1), objeto(_, S1, S).

artigo(singularmasc, [o|S], S).
artigo(singularfem, [a|S], S).
artigo(pluralmasc, [os|S], S).
artigo(pluralfem, [as|S], S).

substantivo(singularfem, [pera|S], S).
substantivo(singularmasc, [homem|S], S).
substantivo(pluralfem, [peras|S], S).
substantivo(pluralmasc, [homens|S], S).

verbo(singularmasc, [come|S], S).
verbo(singularfem, [come|S], S).
verbo(singularmasc, [canta|S], S).
verbo(singularfem, [canta|S], S).
verbo(pluralmasc, [comem|S], S).
verbo(pluralfem, [comem|S], S).
verbo(pluralmasc, [cantam|S], S).
verbo(pluralfem, [cantam|S], S).

objeto(X, S0, S) :- artigo(X, S0, S1), substantivo(X, S1, S).
