
domains
s=string
a=s*
predicates
sen (a)
np(a).
vp(a).
pp(a).
noun(s).
del(s).
verb(s).
pre(s).
append(a,a,a).
clauses
sen(S):-np(S1),write(S1),!,vp(S2),write(S2),!,append(S1,S2,S3),write(S3),!,pp(S4),write(S4),!,append(S3,S4,S),write("the statement is True").
np(X):- del(X1),noun(X2),append([X1],[X2],X).
vp(X):-verb(X1),np(X2),append([X1],X2,X).
pp(X):-pre(X1),np(X2),append([X1],X2,X).
del("the").
noun("boy"):-!.
noun("ball"):-!.
noun("window"):-!.
verb("throw").
pre("through").

append([],L,L).
append([H|T],L,[H|T1]):-append(T,L,T1).
