(0) Obligation:
Clauses:
select(X, Y, Zs) :- ','(no(empty(Y)), ','(head(Y, X), tail(Y, Zs))).
select(X, Y, Z) :- ','(no(empty(Y)), ','(head(Y, H), ','(head(Z, H), ','(tail(Y, T), ','(tail(Z, Zs), select(X, T, Zs)))))).
head([], X1).
head(.(H, X2), H).
tail([], []).
tail(.(X3, T), T).
empty([]).
no(X) :- ','(X, ','(!, failure(a))).
no(X4).
failure(b).
Queries:
select(g,g,a).
(1) CutEliminatorProof (SOUND transformation)
Eliminated all cuts by simply ignoring them[PROLOG].
(2) Obligation:
Clauses:
select(X, Y, Zs) :- ','(no(empty(Y)), ','(head(Y, X), tail(Y, Zs))).
select(X, Y, Z) :- ','(no(empty(Y)), ','(head(Y, H), ','(head(Z, H), ','(tail(Y, T), ','(tail(Z, Zs), select(X, T, Zs)))))).
head([], X1).
head(.(H, X2), H).
tail([], []).
tail(.(X3, T), T).
empty([]).
no(X) :- ','(X, failure(a)).
no(X4).
failure(b).
Queries:
select(g,g,a).