(0) Obligation:

Clauses:

delete(X, tree(X, void, Right), Right).
delete(X, tree(X, Left, void), Left).
delete(X, tree(X, Left, Right), tree(Y, Left, Right1)) :- delmin(Right, Y, Right1).
delete(X, tree(Y, Left, Right), tree(Y, Left1, Right)) :- ','(less(X, Y), delete(X, Left, Left1)).
delete(X, tree(Y, Left, Right), tree(Y, Left, Right1)) :- ','(less(Y, X), delete(X, Right, Right1)).
delmin(tree(Y, void, Right), Y, Right).
delmin(tree(X, Left, X1), Y, tree(X, Left1, X2)) :- delmin(Left, Y, Left1).
less(0, s(X3)).
less(s(X), s(Y)) :- less(X, Y).

Query: delmin(g,a,a)

(1) PrologToTRSTransformerProof (SOUND transformation)

Transformed Prolog program to TRS.

(2) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

f2_in(tree(T12, void, T13)) → f2_out1(T12)
f2_in(tree(T26, T27, T28)) → U1(f2_in(T27), tree(T26, T27, T28))
U1(f2_out1(T32), tree(T26, T27, T28)) → f2_out1(T32)

Q is empty.

(3) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(U1(x1, x2)) = x1 + x2   
POL(f2_in(x1)) = 2·x1   
POL(f2_out1(x1)) = 2·x1   
POL(tree(x1, x2, x3)) = 1 + 2·x1 + 2·x2 + x3   
POL(void) = 2   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

f2_in(tree(T12, void, T13)) → f2_out1(T12)
f2_in(tree(T26, T27, T28)) → U1(f2_in(T27), tree(T26, T27, T28))
U1(f2_out1(T32), tree(T26, T27, T28)) → f2_out1(T32)


(4) Obligation:

Q restricted rewrite system:
R is empty.
Q is empty.

(5) RisEmptyProof (EQUIVALENT transformation)

The TRS R is empty. Hence, termination is trivially proven.

(6) YES