(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