3.36/1.59 YES 3.36/1.60 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 3.36/1.60 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.36/1.60 3.36/1.60 3.36/1.60 Outermost Termination of the given OTRS could be proven: 3.36/1.60 3.36/1.60 (0) OTRS 3.36/1.60 (1) Thiemann-SpecialC-Transformation [EQUIVALENT, 0 ms] 3.36/1.60 (2) QTRS 3.36/1.60 (3) DependencyPairsProof [EQUIVALENT, 0 ms] 3.36/1.60 (4) QDP 3.36/1.60 (5) DependencyGraphProof [EQUIVALENT, 0 ms] 3.36/1.60 (6) AND 3.36/1.60 (7) QDP 3.36/1.60 (8) UsableRulesProof [EQUIVALENT, 0 ms] 3.36/1.60 (9) QDP 3.36/1.60 (10) QReductionProof [EQUIVALENT, 0 ms] 3.36/1.60 (11) QDP 3.36/1.60 (12) MRRProof [EQUIVALENT, 12 ms] 3.36/1.60 (13) QDP 3.36/1.60 (14) PisEmptyProof [EQUIVALENT, 0 ms] 3.36/1.60 (15) YES 3.36/1.60 (16) QDP 3.36/1.60 (17) UsableRulesProof [EQUIVALENT, 0 ms] 3.36/1.60 (18) QDP 3.36/1.60 (19) QReductionProof [EQUIVALENT, 0 ms] 3.36/1.60 (20) QDP 3.36/1.60 (21) QDPOrderProof [EQUIVALENT, 30 ms] 3.36/1.60 (22) QDP 3.36/1.60 (23) PisEmptyProof [EQUIVALENT, 0 ms] 3.36/1.60 (24) YES 3.36/1.60 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (0) 3.36/1.60 Obligation: 3.36/1.60 Term rewrite system R: 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 f(x, x) -> g(f(x, x)) 3.36/1.60 g(x) -> a 3.36/1.60 3.36/1.60 3.36/1.60 3.36/1.60 Outermost Strategy. 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (1) Thiemann-SpecialC-Transformation (EQUIVALENT) 3.36/1.60 We applied the Thiemann-SpecialC transformation to transform the outermost TRS to an innermost TRS. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (2) 3.36/1.60 Obligation: 3.36/1.60 Q restricted rewrite system: 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 top(go_up(x)) -> top(reduce(x)) 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 check_g(redex_g(x_1)) -> in_g_1(reduce(x_1)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_g_1(go_up(x_1)) -> go_up(g(x_1)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (3) DependencyPairsProof (EQUIVALENT) 3.36/1.60 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (4) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 TOP(go_up(x)) -> TOP(reduce(x)) 3.36/1.60 TOP(go_up(x)) -> REDUCE(x) 3.36/1.60 REDUCE(f(x_1, x_2)) -> CHECK_F(redex_f(x_1, x_2)) 3.36/1.60 REDUCE(f(x_1, x_2)) -> REDEX_F(x_1, x_2) 3.36/1.60 REDUCE(g(x_1)) -> CHECK_G(redex_g(x_1)) 3.36/1.60 REDUCE(g(x_1)) -> REDEX_G(x_1) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> IN_F_1(reduce(x_1), x_2) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_1) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> IN_F_2(x_1, reduce(x_2)) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_2) 3.36/1.60 CHECK_G(redex_g(x_1)) -> IN_G_1(reduce(x_1)) 3.36/1.60 CHECK_G(redex_g(x_1)) -> REDUCE(x_1) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 top(go_up(x)) -> top(reduce(x)) 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 check_g(redex_g(x_1)) -> in_g_1(reduce(x_1)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_g_1(go_up(x_1)) -> go_up(g(x_1)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (5) DependencyGraphProof (EQUIVALENT) 3.36/1.60 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 8 less nodes. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (6) 3.36/1.60 Complex Obligation (AND) 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (7) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_1) 3.36/1.60 REDUCE(f(x_1, x_2)) -> CHECK_F(redex_f(x_1, x_2)) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_2) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 top(go_up(x)) -> top(reduce(x)) 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 check_g(redex_g(x_1)) -> in_g_1(reduce(x_1)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_g_1(go_up(x_1)) -> go_up(g(x_1)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (8) UsableRulesProof (EQUIVALENT) 3.36/1.60 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (9) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_1) 3.36/1.60 REDUCE(f(x_1, x_2)) -> CHECK_F(redex_f(x_1, x_2)) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_2) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (10) QReductionProof (EQUIVALENT) 3.36/1.60 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (11) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_1) 3.36/1.60 REDUCE(f(x_1, x_2)) -> CHECK_F(redex_f(x_1, x_2)) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_2) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 redex_f(x0, x0) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (12) MRRProof (EQUIVALENT) 3.36/1.60 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 3.36/1.60 3.36/1.60 Strictly oriented dependency pairs: 3.36/1.60 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_1) 3.36/1.60 REDUCE(f(x_1, x_2)) -> CHECK_F(redex_f(x_1, x_2)) 3.36/1.60 CHECK_F(redex_f(x_1, x_2)) -> REDUCE(x_2) 3.36/1.60 3.36/1.60 3.36/1.60 Used ordering: Polynomial interpretation [POLO]: 3.36/1.60 3.36/1.60 POL(CHECK_F(x_1)) = 1 + x_1 3.36/1.60 POL(REDUCE(x_1)) = 2*x_1 3.36/1.60 POL(f(x_1, x_2)) = 2 + x_1 + 2*x_2 3.36/1.60 POL(g(x_1)) = x_1 3.36/1.60 POL(redex_f(x_1, x_2)) = 2 + 2*x_1 + 2*x_2 3.36/1.60 POL(result_f(x_1)) = x_1 3.36/1.60 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (13) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 P is empty. 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 redex_f(x0, x0) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (14) PisEmptyProof (EQUIVALENT) 3.36/1.60 The TRS P is empty. Hence, there is no (P,Q,R) chain. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (15) 3.36/1.60 YES 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (16) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 TOP(go_up(x)) -> TOP(reduce(x)) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 top(go_up(x)) -> top(reduce(x)) 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 check_g(redex_g(x_1)) -> in_g_1(reduce(x_1)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_g_1(go_up(x_1)) -> go_up(g(x_1)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (17) UsableRulesProof (EQUIVALENT) 3.36/1.60 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (18) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 TOP(go_up(x)) -> TOP(reduce(x)) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (19) QReductionProof (EQUIVALENT) 3.36/1.60 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 3.36/1.60 3.36/1.60 top(go_up(x0)) 3.36/1.60 in_g_1(go_up(x0)) 3.36/1.60 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (20) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 The TRS P consists of the following rules: 3.36/1.60 3.36/1.60 TOP(go_up(x)) -> TOP(reduce(x)) 3.36/1.60 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (21) QDPOrderProof (EQUIVALENT) 3.36/1.60 We use the reduction pair processor [LPAR04,JAR06]. 3.36/1.60 3.36/1.60 3.36/1.60 The following pairs can be oriented strictly and are deleted. 3.36/1.60 3.36/1.60 TOP(go_up(x)) -> TOP(reduce(x)) 3.36/1.60 The remaining pairs can at least be oriented weakly. 3.36/1.60 Used ordering: Matrix interpretation [MATRO]: 3.36/1.60 3.36/1.60 Non-tuple symbols: 3.36/1.60 <<< 3.36/1.60 M( result_f_1(x_1) ) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( a ) = [[0], [0]] 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( reduce_1(x_1) ) = [[1], [0]] + [[0, 0], [1, 1]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( in_f_2_2(x_1, x_2) ) = [[0], [1]] + [[0, 0], [1, 1]] * x_1 + [[1, 0], [1, 1]] * x_2 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( redex_f_2(x_1, x_2) ) = [[1], [0]] + [[1, 1], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( check_f_1(x_1) ) = [[1], [1]] + [[0, 0], [1, 0]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( g_1(x_1) ) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( go_up_1(x_1) ) = [[1], [1]] + [[0, 0], [1, 1]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( result_g_1(x_1) ) = [[0], [1]] + [[0, 0], [1, 1]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( in_f_1_2(x_1, x_2) ) = [[0], [1]] + [[1, 0], [1, 1]] * x_1 + [[0, 0], [1, 1]] * x_2 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( f_2(x_1, x_2) ) = [[1], [1]] + [[0, 0], [1, 1]] * x_1 + [[1, 0], [0, 1]] * x_2 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( check_g_1(x_1) ) = [[1], [0]] + [[0, 0], [0, 1]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 <<< 3.36/1.60 M( redex_g_1(x_1) ) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 Tuple symbols: 3.36/1.60 <<< 3.36/1.60 M( TOP_1(x_1) ) = [[0]] + [[0, 1]] * x_1 3.36/1.60 >>> 3.36/1.60 3.36/1.60 3.36/1.60 3.36/1.60 Matrix type: 3.36/1.60 3.36/1.60 We used a basic matrix type which is not further parametrizeable. 3.36/1.60 3.36/1.60 3.36/1.60 3.36/1.60 3.36/1.60 3.36/1.60 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 3.36/1.60 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 3.36/1.60 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 3.36/1.60 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (22) 3.36/1.60 Obligation: 3.36/1.60 Q DP problem: 3.36/1.60 P is empty. 3.36/1.60 The TRS R consists of the following rules: 3.36/1.60 3.36/1.60 reduce(f(x_1, x_2)) -> check_f(redex_f(x_1, x_2)) 3.36/1.60 reduce(g(x_1)) -> check_g(redex_g(x_1)) 3.36/1.60 redex_g(x) -> result_g(a) 3.36/1.60 check_g(result_g(x)) -> go_up(x) 3.36/1.60 redex_f(x, x) -> result_f(g(f(x, x))) 3.36/1.60 check_f(result_f(x)) -> go_up(x) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_1(reduce(x_1), x_2) 3.36/1.60 check_f(redex_f(x_1, x_2)) -> in_f_2(x_1, reduce(x_2)) 3.36/1.60 in_f_2(x_1, go_up(x_2)) -> go_up(f(x_1, x_2)) 3.36/1.60 in_f_1(go_up(x_1), x_2) -> go_up(f(x_1, x_2)) 3.36/1.60 3.36/1.60 The set Q consists of the following terms: 3.36/1.60 3.36/1.60 reduce(f(x0, x1)) 3.36/1.60 reduce(g(x0)) 3.36/1.60 redex_f(x0, x0) 3.36/1.60 redex_g(x0) 3.36/1.60 check_f(result_f(x0)) 3.36/1.60 check_g(result_g(x0)) 3.36/1.60 check_f(redex_f(x0, x1)) 3.36/1.60 in_f_1(go_up(x0), x1) 3.36/1.60 in_f_2(x0, go_up(x1)) 3.36/1.60 3.36/1.60 We have to consider all minimal (P,Q,R)-chains. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (23) PisEmptyProof (EQUIVALENT) 3.36/1.60 The TRS P is empty. Hence, there is no (P,Q,R) chain. 3.36/1.60 ---------------------------------------- 3.36/1.60 3.36/1.60 (24) 3.36/1.60 YES 3.63/1.63 EOF