p(X, Y) --> q(X), r(X, Y), s(Y).
p(X, Y, Start, End) :- q(X, Start, A), r(X, Y, A, B), s(Y, B, End).
assign(X,Y,Start,End) :- left(X, Start, A), A=[:=|B], right(Y, B, C), C=[;|End].
assign(X,Y,Start,End) :- left(X, Start, A), A=[:=|B], right(Y0, B, C), Y is Y0, C=[;|End].
List is neither a list nor a partial list | type_error(list, List) | ||
Remainder is neither a list nor a partial list | type_error(list, Remainder) | ||