↳ PROLOG
↳ UnrequestedClauseRemoverProof
The clauses
delete3(X, tree3(X, void0, Right), Right).
delete3(X, tree3(X, Left, void0), Left).
delete3(X, tree3(X, Left, Right), tree3(Y, Left, Right1)) :- delmin3(Right, Y, Right1).
delete3(X, tree3(Y, Left, Right), tree3(Y, Left1, Right)) :- less2(X, Y), delete3(X, Left, Left1).
delete3(X, tree3(Y, Left, Right), tree3(Y, Left, Right1)) :- less2(Y, X), delete3(X, Right, Right1).
less2(00, s1(underscore2)).
less2(s1(X), s1(Y)) :- less2(X, Y).
can be ignored, as they are not needed by any of the given querys.
Deleting these clauses results in the following prolog program:
delmin3(tree3(Y, void0, Right), Y, Right).
delmin3(tree3(X, Left, underscore), Y, tree3(X, Left1, underscore1)) :- delmin3(Left, Y, Left1).
↳ PROLOG
↳ UnrequestedClauseRemoverProof
↳ PROLOG
↳ PrologToPiTRSProof
With regard to the inferred argument filtering the predicates were used in the following modes:
delmin3: (b,f,f)
Transforming PROLOG into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:
delmin_3_in_gaa3(tree_33(Y, void_0, Right), Y, Right) -> delmin_3_out_gaa3(tree_33(Y, void_0, Right), Y, Right)
delmin_3_in_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_out_gaa3(Left, Y, Left1)) -> delmin_3_out_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of PROLOG
↳ PROLOG
↳ UnrequestedClauseRemoverProof
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
delmin_3_in_gaa3(tree_33(Y, void_0, Right), Y, Right) -> delmin_3_out_gaa3(tree_33(Y, void_0, Right), Y, Right)
delmin_3_in_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_out_gaa3(Left, Y, Left1)) -> delmin_3_out_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1))
DELMIN_3_IN_GAA3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> IF_DELMIN_3_IN_1_GAA7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
DELMIN_3_IN_GAA3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> DELMIN_3_IN_GAA3(Left, Y, Left1)
delmin_3_in_gaa3(tree_33(Y, void_0, Right), Y, Right) -> delmin_3_out_gaa3(tree_33(Y, void_0, Right), Y, Right)
delmin_3_in_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_out_gaa3(Left, Y, Left1)) -> delmin_3_out_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1))
↳ PROLOG
↳ UnrequestedClauseRemoverProof
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
DELMIN_3_IN_GAA3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> IF_DELMIN_3_IN_1_GAA7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
DELMIN_3_IN_GAA3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> DELMIN_3_IN_GAA3(Left, Y, Left1)
delmin_3_in_gaa3(tree_33(Y, void_0, Right), Y, Right) -> delmin_3_out_gaa3(tree_33(Y, void_0, Right), Y, Right)
delmin_3_in_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_out_gaa3(Left, Y, Left1)) -> delmin_3_out_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1))
↳ PROLOG
↳ UnrequestedClauseRemoverProof
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
DELMIN_3_IN_GAA3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> DELMIN_3_IN_GAA3(Left, Y, Left1)
delmin_3_in_gaa3(tree_33(Y, void_0, Right), Y, Right) -> delmin_3_out_gaa3(tree_33(Y, void_0, Right), Y, Right)
delmin_3_in_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_in_gaa3(Left, Y, Left1))
if_delmin_3_in_1_gaa7(X, Left, underscore, Y, Left1, underscore1, delmin_3_out_gaa3(Left, Y, Left1)) -> delmin_3_out_gaa3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1))
↳ PROLOG
↳ UnrequestedClauseRemoverProof
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
DELMIN_3_IN_GAA3(tree_33(X, Left, underscore), Y, tree_33(X, Left1, underscore1)) -> DELMIN_3_IN_GAA3(Left, Y, Left1)
↳ PROLOG
↳ UnrequestedClauseRemoverProof
↳ PROLOG
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
DELMIN_3_IN_GAA1(tree_32(X, Left)) -> DELMIN_3_IN_GAA1(Left)
From the DPs we obtained the following set of size-change graphs: