5.50/2.23 YES 5.50/2.25 proof of /export/starexec/sandbox/benchmark/theBenchmark.pl 5.50/2.25 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 5.50/2.25 5.50/2.25 5.50/2.25 Left Termination of the query pattern 5.50/2.25 5.50/2.25 search_tree(g) 5.50/2.25 5.50/2.25 w.r.t. the given Prolog program could successfully be proven: 5.50/2.25 5.50/2.25 (0) Prolog 5.50/2.25 (1) PrologToPiTRSProof [SOUND, 0 ms] 5.50/2.25 (2) PiTRS 5.50/2.25 (3) DependencyPairsProof [EQUIVALENT, 3 ms] 5.50/2.25 (4) PiDP 5.50/2.25 (5) DependencyGraphProof [EQUIVALENT, 2 ms] 5.50/2.25 (6) AND 5.50/2.25 (7) PiDP 5.50/2.25 (8) UsableRulesProof [EQUIVALENT, 0 ms] 5.50/2.25 (9) PiDP 5.50/2.25 (10) PiDPToQDPProof [EQUIVALENT, 0 ms] 5.50/2.25 (11) QDP 5.50/2.25 (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] 5.50/2.25 (13) YES 5.50/2.25 (14) PiDP 5.50/2.25 (15) UsableRulesProof [EQUIVALENT, 0 ms] 5.50/2.25 (16) PiDP 5.50/2.25 (17) PiDPToQDPProof [SOUND, 9 ms] 5.50/2.25 (18) QDP 5.50/2.25 (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] 5.50/2.25 (20) YES 5.50/2.25 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (0) 5.50/2.25 Obligation: 5.50/2.25 Clauses: 5.50/2.25 5.50/2.25 search_tree(void). 5.50/2.25 search_tree(T) :- search_tree(T, X1, X2). 5.50/2.25 search_tree(tree(X, void, void), X, X). 5.50/2.25 search_tree(tree(X, void, Right), X, Max) :- ','(search_tree(Right, Min, Max), less(X, Min)). 5.50/2.25 search_tree(tree(X, Left, void), Min, X) :- ','(search_tree(Left, Min, Max), less(Max, X)). 5.50/2.25 search_tree(tree(X, Left, Right), Min1, Max2) :- ','(search_tree(Left, Min1, Max1), ','(less(Max1, X), ','(search_tree(Right, Min2, Max2), less(X, Min2)))). 5.50/2.25 less(0, s(X3)). 5.50/2.25 less(s(X), s(Y)) :- less(X, Y). 5.50/2.25 5.50/2.25 5.50/2.25 Query: search_tree(g) 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (1) PrologToPiTRSProof (SOUND) 5.50/2.25 We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes: 5.50/2.25 5.50/2.25 search_tree_in_1: (b) 5.50/2.25 5.50/2.25 search_tree_in_3: (b,f,f) 5.50/2.25 5.50/2.25 less_in_2: (b,b) 5.50/2.25 5.50/2.25 Transforming Prolog into the following Term Rewriting System: 5.50/2.25 5.50/2.25 Pi-finite rewrite system: 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_g(void) -> search_tree_out_g(void) 5.50/2.25 search_tree_in_g(T) -> U1_g(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U1_g(T, search_tree_out_gaa(T, X1, X2)) -> search_tree_out_g(T) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 search_tree_in_g(x1) = search_tree_in_g(x1) 5.50/2.25 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_out_g(x1) = search_tree_out_g 5.50/2.25 5.50/2.25 U1_g(x1, x2) = U1_g(x2) 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 5.50/2.25 5.50/2.25 5.50/2.25 5.50/2.25 Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog 5.50/2.25 5.50/2.25 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (2) 5.50/2.25 Obligation: 5.50/2.25 Pi-finite rewrite system: 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_g(void) -> search_tree_out_g(void) 5.50/2.25 search_tree_in_g(T) -> U1_g(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U1_g(T, search_tree_out_gaa(T, X1, X2)) -> search_tree_out_g(T) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 search_tree_in_g(x1) = search_tree_in_g(x1) 5.50/2.25 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_out_g(x1) = search_tree_out_g 5.50/2.25 5.50/2.25 U1_g(x1, x2) = U1_g(x2) 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (3) DependencyPairsProof (EQUIVALENT) 5.50/2.25 Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem: 5.50/2.25 Pi DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_G(T) -> U1_G(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 SEARCH_TREE_IN_G(T) -> SEARCH_TREE_IN_GAA(T, X1, X2) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right), X, Max) -> U2_GAA(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right), X, Max) -> SEARCH_TREE_IN_GAA(Right, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void), Min, X) -> U4_GAA(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void), Min, X) -> SEARCH_TREE_IN_GAA(Left, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> U6_GAA(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> SEARCH_TREE_IN_GAA(Left, Min1, Max1) 5.50/2.25 U6_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_GAA(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 U6_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> LESS_IN_GG(Max1, X) 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> U10_GG(X, Y, less_in_gg(X, Y)) 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> LESS_IN_GG(X, Y) 5.50/2.25 U7_GAA(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_GAA(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U7_GAA(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> SEARCH_TREE_IN_GAA(Right, Min2, Max2) 5.50/2.25 U8_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_GAA(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U8_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> LESS_IN_GG(X, Min2) 5.50/2.25 U4_GAA(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_GAA(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U4_GAA(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> LESS_IN_GG(Max, X) 5.50/2.25 U2_GAA(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_GAA(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U2_GAA(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> LESS_IN_GG(X, Min) 5.50/2.25 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_g(void) -> search_tree_out_g(void) 5.50/2.25 search_tree_in_g(T) -> U1_g(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U1_g(T, search_tree_out_gaa(T, X1, X2)) -> search_tree_out_g(T) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 search_tree_in_g(x1) = search_tree_in_g(x1) 5.50/2.25 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_out_g(x1) = search_tree_out_g 5.50/2.25 5.50/2.25 U1_g(x1, x2) = U1_g(x2) 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_G(x1) = SEARCH_TREE_IN_G(x1) 5.50/2.25 5.50/2.25 U1_G(x1, x2) = U1_G(x2) 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(x1, x2, x3) = SEARCH_TREE_IN_GAA(x1) 5.50/2.25 5.50/2.25 U2_GAA(x1, x2, x3, x4) = U2_GAA(x1, x4) 5.50/2.25 5.50/2.25 U4_GAA(x1, x2, x3, x4) = U4_GAA(x1, x4) 5.50/2.25 5.50/2.25 U6_GAA(x1, x2, x3, x4, x5, x6) = U6_GAA(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_GAA(x1, x2, x3, x4, x5, x6, x7) = U7_GAA(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 LESS_IN_GG(x1, x2) = LESS_IN_GG(x1, x2) 5.50/2.25 5.50/2.25 U10_GG(x1, x2, x3) = U10_GG(x3) 5.50/2.25 5.50/2.25 U8_GAA(x1, x2, x3, x4, x5, x6) = U8_GAA(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_GAA(x1, x2, x3, x4, x5, x6) = U9_GAA(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_GAA(x1, x2, x3, x4) = U5_GAA(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_GAA(x1, x2, x3, x4) = U3_GAA(x1, x3, x4) 5.50/2.25 5.50/2.25 5.50/2.25 We have to consider all (P,R,Pi)-chains 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (4) 5.50/2.25 Obligation: 5.50/2.25 Pi DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_G(T) -> U1_G(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 SEARCH_TREE_IN_G(T) -> SEARCH_TREE_IN_GAA(T, X1, X2) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right), X, Max) -> U2_GAA(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right), X, Max) -> SEARCH_TREE_IN_GAA(Right, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void), Min, X) -> U4_GAA(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void), Min, X) -> SEARCH_TREE_IN_GAA(Left, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> U6_GAA(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> SEARCH_TREE_IN_GAA(Left, Min1, Max1) 5.50/2.25 U6_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_GAA(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 U6_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> LESS_IN_GG(Max1, X) 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> U10_GG(X, Y, less_in_gg(X, Y)) 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> LESS_IN_GG(X, Y) 5.50/2.25 U7_GAA(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_GAA(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U7_GAA(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> SEARCH_TREE_IN_GAA(Right, Min2, Max2) 5.50/2.25 U8_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_GAA(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U8_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> LESS_IN_GG(X, Min2) 5.50/2.25 U4_GAA(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_GAA(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U4_GAA(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> LESS_IN_GG(Max, X) 5.50/2.25 U2_GAA(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_GAA(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U2_GAA(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> LESS_IN_GG(X, Min) 5.50/2.25 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_g(void) -> search_tree_out_g(void) 5.50/2.25 search_tree_in_g(T) -> U1_g(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U1_g(T, search_tree_out_gaa(T, X1, X2)) -> search_tree_out_g(T) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 search_tree_in_g(x1) = search_tree_in_g(x1) 5.50/2.25 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_out_g(x1) = search_tree_out_g 5.50/2.25 5.50/2.25 U1_g(x1, x2) = U1_g(x2) 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_G(x1) = SEARCH_TREE_IN_G(x1) 5.50/2.25 5.50/2.25 U1_G(x1, x2) = U1_G(x2) 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(x1, x2, x3) = SEARCH_TREE_IN_GAA(x1) 5.50/2.25 5.50/2.25 U2_GAA(x1, x2, x3, x4) = U2_GAA(x1, x4) 5.50/2.25 5.50/2.25 U4_GAA(x1, x2, x3, x4) = U4_GAA(x1, x4) 5.50/2.25 5.50/2.25 U6_GAA(x1, x2, x3, x4, x5, x6) = U6_GAA(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_GAA(x1, x2, x3, x4, x5, x6, x7) = U7_GAA(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 LESS_IN_GG(x1, x2) = LESS_IN_GG(x1, x2) 5.50/2.25 5.50/2.25 U10_GG(x1, x2, x3) = U10_GG(x3) 5.50/2.25 5.50/2.25 U8_GAA(x1, x2, x3, x4, x5, x6) = U8_GAA(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_GAA(x1, x2, x3, x4, x5, x6) = U9_GAA(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_GAA(x1, x2, x3, x4) = U5_GAA(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_GAA(x1, x2, x3, x4) = U3_GAA(x1, x3, x4) 5.50/2.25 5.50/2.25 5.50/2.25 We have to consider all (P,R,Pi)-chains 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (5) DependencyGraphProof (EQUIVALENT) 5.50/2.25 The approximation of the Dependency Graph [LOPSTR] contains 2 SCCs with 13 less nodes. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (6) 5.50/2.25 Complex Obligation (AND) 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (7) 5.50/2.25 Obligation: 5.50/2.25 Pi DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> LESS_IN_GG(X, Y) 5.50/2.25 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_g(void) -> search_tree_out_g(void) 5.50/2.25 search_tree_in_g(T) -> U1_g(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U1_g(T, search_tree_out_gaa(T, X1, X2)) -> search_tree_out_g(T) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 search_tree_in_g(x1) = search_tree_in_g(x1) 5.50/2.25 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_out_g(x1) = search_tree_out_g 5.50/2.25 5.50/2.25 U1_g(x1, x2) = U1_g(x2) 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 LESS_IN_GG(x1, x2) = LESS_IN_GG(x1, x2) 5.50/2.25 5.50/2.25 5.50/2.25 We have to consider all (P,R,Pi)-chains 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (8) UsableRulesProof (EQUIVALENT) 5.50/2.25 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (9) 5.50/2.25 Obligation: 5.50/2.25 Pi DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> LESS_IN_GG(X, Y) 5.50/2.25 5.50/2.25 R is empty. 5.50/2.25 Pi is empty. 5.50/2.25 We have to consider all (P,R,Pi)-chains 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (10) PiDPToQDPProof (EQUIVALENT) 5.50/2.25 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (11) 5.50/2.25 Obligation: 5.50/2.25 Q DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 LESS_IN_GG(s(X), s(Y)) -> LESS_IN_GG(X, Y) 5.50/2.25 5.50/2.25 R is empty. 5.50/2.25 Q is empty. 5.50/2.25 We have to consider all (P,Q,R)-chains. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (12) QDPSizeChangeProof (EQUIVALENT) 5.50/2.25 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 5.50/2.25 5.50/2.25 From the DPs we obtained the following set of size-change graphs: 5.50/2.25 *LESS_IN_GG(s(X), s(Y)) -> LESS_IN_GG(X, Y) 5.50/2.25 The graph contains the following edges 1 > 1, 2 > 2 5.50/2.25 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (13) 5.50/2.25 YES 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (14) 5.50/2.25 Obligation: 5.50/2.25 Pi DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void), Min, X) -> SEARCH_TREE_IN_GAA(Left, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right), X, Max) -> SEARCH_TREE_IN_GAA(Right, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> U6_GAA(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_GAA(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 U7_GAA(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> SEARCH_TREE_IN_GAA(Right, Min2, Max2) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> SEARCH_TREE_IN_GAA(Left, Min1, Max1) 5.50/2.25 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_g(void) -> search_tree_out_g(void) 5.50/2.25 search_tree_in_g(T) -> U1_g(T, search_tree_in_gaa(T, X1, X2)) 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U1_g(T, search_tree_out_gaa(T, X1, X2)) -> search_tree_out_g(T) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 search_tree_in_g(x1) = search_tree_in_g(x1) 5.50/2.25 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_out_g(x1) = search_tree_out_g 5.50/2.25 5.50/2.25 U1_g(x1, x2) = U1_g(x2) 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(x1, x2, x3) = SEARCH_TREE_IN_GAA(x1) 5.50/2.25 5.50/2.25 U6_GAA(x1, x2, x3, x4, x5, x6) = U6_GAA(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_GAA(x1, x2, x3, x4, x5, x6, x7) = U7_GAA(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 5.50/2.25 We have to consider all (P,R,Pi)-chains 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (15) UsableRulesProof (EQUIVALENT) 5.50/2.25 For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (16) 5.50/2.25 Obligation: 5.50/2.25 Pi DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void), Min, X) -> SEARCH_TREE_IN_GAA(Left, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right), X, Max) -> SEARCH_TREE_IN_GAA(Right, Min, Max) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> U6_GAA(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 U6_GAA(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_GAA(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 U7_GAA(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> SEARCH_TREE_IN_GAA(Right, Min2, Max2) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right), Min1, Max2) -> SEARCH_TREE_IN_GAA(Left, Min1, Max1) 5.50/2.25 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_gaa(tree(X, void, void), X, X) -> search_tree_out_gaa(tree(X, void, void), X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right), X, Max) -> U2_gaa(X, Right, Max, search_tree_in_gaa(Right, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void), Min, X) -> U4_gaa(X, Left, Min, search_tree_in_gaa(Left, Min, Max)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right), Min1, Max2) -> U6_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Left, Min1, Max1)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg(0, s(X3)) 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(X, Y, less_in_gg(X, Y)) 5.50/2.25 U2_gaa(X, Right, Max, search_tree_out_gaa(Right, Min, Max)) -> U3_gaa(X, Right, Max, less_in_gg(X, Min)) 5.50/2.25 U4_gaa(X, Left, Min, search_tree_out_gaa(Left, Min, Max)) -> U5_gaa(X, Left, Min, less_in_gg(Max, X)) 5.50/2.25 U6_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Left, Min1, Max1)) -> U7_gaa(X, Left, Right, Min1, Max2, Max1, less_in_gg(Max1, X)) 5.50/2.25 U10_gg(X, Y, less_out_gg(X, Y)) -> less_out_gg(s(X), s(Y)) 5.50/2.25 U3_gaa(X, Right, Max, less_out_gg(X, Min)) -> search_tree_out_gaa(tree(X, void, Right), X, Max) 5.50/2.25 U5_gaa(X, Left, Min, less_out_gg(Max, X)) -> search_tree_out_gaa(tree(X, Left, void), Min, X) 5.50/2.25 U7_gaa(X, Left, Right, Min1, Max2, Max1, less_out_gg(Max1, X)) -> U8_gaa(X, Left, Right, Min1, Max2, search_tree_in_gaa(Right, Min2, Max2)) 5.50/2.25 U8_gaa(X, Left, Right, Min1, Max2, search_tree_out_gaa(Right, Min2, Max2)) -> U9_gaa(X, Left, Right, Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(X, Left, Right, Min1, Max2, less_out_gg(X, Min2)) -> search_tree_out_gaa(tree(X, Left, Right), Min1, Max2) 5.50/2.25 5.50/2.25 The argument filtering Pi contains the following mapping: 5.50/2.25 void = void 5.50/2.25 5.50/2.25 search_tree_in_gaa(x1, x2, x3) = search_tree_in_gaa(x1) 5.50/2.25 5.50/2.25 tree(x1, x2, x3) = tree(x1, x2, x3) 5.50/2.25 5.50/2.25 search_tree_out_gaa(x1, x2, x3) = search_tree_out_gaa(x2, x3) 5.50/2.25 5.50/2.25 U2_gaa(x1, x2, x3, x4) = U2_gaa(x1, x4) 5.50/2.25 5.50/2.25 U4_gaa(x1, x2, x3, x4) = U4_gaa(x1, x4) 5.50/2.25 5.50/2.25 U6_gaa(x1, x2, x3, x4, x5, x6) = U6_gaa(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_gaa(x1, x2, x3, x4, x5, x6, x7) = U7_gaa(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 less_in_gg(x1, x2) = less_in_gg(x1, x2) 5.50/2.25 5.50/2.25 0 = 0 5.50/2.25 5.50/2.25 s(x1) = s(x1) 5.50/2.25 5.50/2.25 less_out_gg(x1, x2) = less_out_gg 5.50/2.25 5.50/2.25 U10_gg(x1, x2, x3) = U10_gg(x3) 5.50/2.25 5.50/2.25 U8_gaa(x1, x2, x3, x4, x5, x6) = U8_gaa(x1, x4, x6) 5.50/2.25 5.50/2.25 U9_gaa(x1, x2, x3, x4, x5, x6) = U9_gaa(x4, x5, x6) 5.50/2.25 5.50/2.25 U5_gaa(x1, x2, x3, x4) = U5_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 U3_gaa(x1, x2, x3, x4) = U3_gaa(x1, x3, x4) 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(x1, x2, x3) = SEARCH_TREE_IN_GAA(x1) 5.50/2.25 5.50/2.25 U6_GAA(x1, x2, x3, x4, x5, x6) = U6_GAA(x1, x3, x6) 5.50/2.25 5.50/2.25 U7_GAA(x1, x2, x3, x4, x5, x6, x7) = U7_GAA(x1, x3, x4, x7) 5.50/2.25 5.50/2.25 5.50/2.25 We have to consider all (P,R,Pi)-chains 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (17) PiDPToQDPProof (SOUND) 5.50/2.25 Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (18) 5.50/2.25 Obligation: 5.50/2.25 Q DP problem: 5.50/2.25 The TRS P consists of the following rules: 5.50/2.25 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, void)) -> SEARCH_TREE_IN_GAA(Left) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, void, Right)) -> SEARCH_TREE_IN_GAA(Right) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right)) -> U6_GAA(X, Right, search_tree_in_gaa(Left)) 5.50/2.25 U6_GAA(X, Right, search_tree_out_gaa(Min1, Max1)) -> U7_GAA(X, Right, Min1, less_in_gg(Max1, X)) 5.50/2.25 U7_GAA(X, Right, Min1, less_out_gg) -> SEARCH_TREE_IN_GAA(Right) 5.50/2.25 SEARCH_TREE_IN_GAA(tree(X, Left, Right)) -> SEARCH_TREE_IN_GAA(Left) 5.50/2.25 5.50/2.25 The TRS R consists of the following rules: 5.50/2.25 5.50/2.25 search_tree_in_gaa(tree(X, void, void)) -> search_tree_out_gaa(X, X) 5.50/2.25 search_tree_in_gaa(tree(X, void, Right)) -> U2_gaa(X, search_tree_in_gaa(Right)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, void)) -> U4_gaa(X, search_tree_in_gaa(Left)) 5.50/2.25 search_tree_in_gaa(tree(X, Left, Right)) -> U6_gaa(X, Right, search_tree_in_gaa(Left)) 5.50/2.25 less_in_gg(0, s(X3)) -> less_out_gg 5.50/2.25 less_in_gg(s(X), s(Y)) -> U10_gg(less_in_gg(X, Y)) 5.50/2.25 U2_gaa(X, search_tree_out_gaa(Min, Max)) -> U3_gaa(X, Max, less_in_gg(X, Min)) 5.50/2.25 U4_gaa(X, search_tree_out_gaa(Min, Max)) -> U5_gaa(X, Min, less_in_gg(Max, X)) 5.50/2.25 U6_gaa(X, Right, search_tree_out_gaa(Min1, Max1)) -> U7_gaa(X, Right, Min1, less_in_gg(Max1, X)) 5.50/2.25 U10_gg(less_out_gg) -> less_out_gg 5.50/2.25 U3_gaa(X, Max, less_out_gg) -> search_tree_out_gaa(X, Max) 5.50/2.25 U5_gaa(X, Min, less_out_gg) -> search_tree_out_gaa(Min, X) 5.50/2.25 U7_gaa(X, Right, Min1, less_out_gg) -> U8_gaa(X, Min1, search_tree_in_gaa(Right)) 5.50/2.25 U8_gaa(X, Min1, search_tree_out_gaa(Min2, Max2)) -> U9_gaa(Min1, Max2, less_in_gg(X, Min2)) 5.50/2.25 U9_gaa(Min1, Max2, less_out_gg) -> search_tree_out_gaa(Min1, Max2) 5.50/2.25 5.50/2.25 The set Q consists of the following terms: 5.50/2.25 5.50/2.25 search_tree_in_gaa(x0) 5.50/2.25 less_in_gg(x0, x1) 5.50/2.25 U2_gaa(x0, x1) 5.50/2.25 U4_gaa(x0, x1) 5.50/2.25 U6_gaa(x0, x1, x2) 5.50/2.25 U10_gg(x0) 5.50/2.25 U3_gaa(x0, x1, x2) 5.50/2.25 U5_gaa(x0, x1, x2) 5.50/2.25 U7_gaa(x0, x1, x2, x3) 5.50/2.25 U8_gaa(x0, x1, x2) 5.50/2.25 U9_gaa(x0, x1, x2) 5.50/2.25 5.50/2.25 We have to consider all (P,Q,R)-chains. 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (19) QDPSizeChangeProof (EQUIVALENT) 5.50/2.25 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 5.50/2.25 5.50/2.25 From the DPs we obtained the following set of size-change graphs: 5.50/2.25 *SEARCH_TREE_IN_GAA(tree(X, Left, Right)) -> U6_GAA(X, Right, search_tree_in_gaa(Left)) 5.50/2.25 The graph contains the following edges 1 > 1, 1 > 2 5.50/2.25 5.50/2.25 5.50/2.25 *U7_GAA(X, Right, Min1, less_out_gg) -> SEARCH_TREE_IN_GAA(Right) 5.50/2.25 The graph contains the following edges 2 >= 1 5.50/2.25 5.50/2.25 5.50/2.25 *U6_GAA(X, Right, search_tree_out_gaa(Min1, Max1)) -> U7_GAA(X, Right, Min1, less_in_gg(Max1, X)) 5.50/2.25 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 5.50/2.25 5.50/2.25 5.50/2.25 *SEARCH_TREE_IN_GAA(tree(X, Left, void)) -> SEARCH_TREE_IN_GAA(Left) 5.50/2.25 The graph contains the following edges 1 > 1 5.50/2.25 5.50/2.25 5.50/2.25 *SEARCH_TREE_IN_GAA(tree(X, void, Right)) -> SEARCH_TREE_IN_GAA(Right) 5.50/2.25 The graph contains the following edges 1 > 1 5.50/2.25 5.50/2.25 5.50/2.25 *SEARCH_TREE_IN_GAA(tree(X, Left, Right)) -> SEARCH_TREE_IN_GAA(Left) 5.50/2.25 The graph contains the following edges 1 > 1 5.50/2.25 5.50/2.25 5.50/2.25 ---------------------------------------- 5.50/2.25 5.50/2.25 (20) 5.50/2.25 YES 5.50/2.28 EOF