/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 21 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) QDP (6) UsableRulesProof [EQUIVALENT, 0 ms] (7) QDP (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] (9) YES (10) QDP (11) UsableRulesProof [EQUIVALENT, 0 ms] (12) QDP (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] (14) YES (15) QDP (16) UsableRulesProof [EQUIVALENT, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) QDP (21) UsableRulesProof [EQUIVALENT, 0 ms] (22) QDP (23) QDPSizeChangeProof [EQUIVALENT, 0 ms] (24) YES (25) QDP (26) UsableRulesProof [EQUIVALENT, 0 ms] (27) QDP (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] (29) YES (30) QDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) QDP (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] (34) YES (35) QDP (36) UsableRulesProof [EQUIVALENT, 0 ms] (37) QDP (38) QDPSizeChangeProof [EQUIVALENT, 0 ms] (39) YES (40) QDP (41) QDPSizeChangeProof [EQUIVALENT, 0 ms] (42) YES (43) QDP (44) UsableRulesProof [EQUIVALENT, 0 ms] (45) QDP (46) MRRProof [EQUIVALENT, 2 ms] (47) QDP (48) PisEmptyProof [EQUIVALENT, 0 ms] (49) YES (50) QDP (51) UsableRulesProof [EQUIVALENT, 0 ms] (52) QDP (53) MRRProof [EQUIVALENT, 3 ms] (54) QDP (55) PisEmptyProof [EQUIVALENT, 0 ms] (56) YES (57) QDP (58) UsableRulesProof [EQUIVALENT, 0 ms] (59) QDP (60) QDPSizeChangeProof [EQUIVALENT, 0 ms] (61) YES (62) QDP (63) QDPSizeChangeProof [EQUIVALENT, 0 ms] (64) YES (65) QDP (66) UsableRulesProof [EQUIVALENT, 0 ms] (67) QDP (68) QDPSizeChangeProof [EQUIVALENT, 0 ms] (69) YES (70) QDP (71) UsableRulesProof [EQUIVALENT, 0 ms] (72) QDP (73) QDPSizeChangeProof [EQUIVALENT, 0 ms] (74) YES ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. ---------------------------------------- (1) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (2) Obligation: Q DP problem: The TRS P consists of the following rules: +^1(0(x), 0(y)) -> 0^1(+(x, y)) +^1(0(x), 0(y)) -> +^1(x, y) +^1(0(x), 1(y)) -> +^1(x, y) +^1(1(x), 0(y)) -> +^1(x, y) +^1(1(x), 1(y)) -> 0^1(+(+(x, y), 1(#))) +^1(1(x), 1(y)) -> +^1(+(x, y), 1(#)) +^1(1(x), 1(y)) -> +^1(x, y) +^1(+(x, y), z) -> +^1(x, +(y, z)) +^1(+(x, y), z) -> +^1(y, z) -^1(0(x), 0(y)) -> 0^1(-(x, y)) -^1(0(x), 0(y)) -> -^1(x, y) -^1(0(x), 1(y)) -> -^1(-(x, y), 1(#)) -^1(0(x), 1(y)) -> -^1(x, y) -^1(1(x), 0(y)) -> -^1(x, y) -^1(1(x), 1(y)) -> 0^1(-(x, y)) -^1(1(x), 1(y)) -> -^1(x, y) EQ(#, 0(y)) -> EQ(#, y) EQ(0(x), #) -> EQ(x, #) EQ(1(x), 1(y)) -> EQ(x, y) EQ(0(x), 0(y)) -> EQ(x, y) GE(0(x), 0(y)) -> GE(x, y) GE(0(x), 1(y)) -> NOT(ge(y, x)) GE(0(x), 1(y)) -> GE(y, x) GE(1(x), 0(y)) -> GE(x, y) GE(1(x), 1(y)) -> GE(x, y) GE(#, 0(x)) -> GE(#, x) LOG(x) -> -^1(log'(x), 1(#)) LOG(x) -> LOG'(x) LOG'(1(x)) -> +^1(log'(x), 1(#)) LOG'(1(x)) -> LOG'(x) LOG'(0(x)) -> IF(ge(x, 1(#)), +(log'(x), 1(#)), #) LOG'(0(x)) -> GE(x, 1(#)) LOG'(0(x)) -> +^1(log'(x), 1(#)) LOG'(0(x)) -> LOG'(x) *^1(0(x), y) -> 0^1(*(x, y)) *^1(0(x), y) -> *^1(x, y) *^1(1(x), y) -> +^1(0(*(x, y)), y) *^1(1(x), y) -> 0^1(*(x, y)) *^1(1(x), y) -> *^1(x, y) *^1(*(x, y), z) -> *^1(x, *(y, z)) *^1(*(x, y), z) -> *^1(y, z) *^1(x, +(y, z)) -> +^1(*(x, y), *(x, z)) *^1(x, +(y, z)) -> *^1(x, y) *^1(x, +(y, z)) -> *^1(x, z) APP(cons(x, l1), l2) -> APP(l1, l2) SUM(nil) -> 0^1(#) SUM(cons(x, l)) -> +^1(x, sum(l)) SUM(cons(x, l)) -> SUM(l) SUM(app(l1, l2)) -> +^1(sum(l1), sum(l2)) SUM(app(l1, l2)) -> SUM(l1) SUM(app(l1, l2)) -> SUM(l2) PROD(cons(x, l)) -> *^1(x, prod(l)) PROD(cons(x, l)) -> PROD(l) PROD(app(l1, l2)) -> *^1(prod(l1), prod(l2)) PROD(app(l1, l2)) -> PROD(l1) PROD(app(l1, l2)) -> PROD(l2) MEM(x, cons(y, l)) -> IF(eq(x, y), true, mem(x, l)) MEM(x, cons(y, l)) -> EQ(x, y) MEM(x, cons(y, l)) -> MEM(x, l) INTER(app(l1, l2), l3) -> APP(inter(l1, l3), inter(l2, l3)) INTER(app(l1, l2), l3) -> INTER(l1, l3) INTER(app(l1, l2), l3) -> INTER(l2, l3) INTER(l1, app(l2, l3)) -> APP(inter(l1, l2), inter(l1, l3)) INTER(l1, app(l2, l3)) -> INTER(l1, l2) INTER(l1, app(l2, l3)) -> INTER(l1, l3) INTER(cons(x, l1), l2) -> IFINTER(mem(x, l2), x, l1, l2) INTER(cons(x, l1), l2) -> MEM(x, l2) INTER(l1, cons(x, l2)) -> IFINTER(mem(x, l1), x, l2, l1) INTER(l1, cons(x, l2)) -> MEM(x, l1) IFINTER(true, x, l1, l2) -> INTER(l1, l2) IFINTER(false, x, l1, l2) -> INTER(l1, l2) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (3) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 14 SCCs with 26 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Q DP problem: The TRS P consists of the following rules: APP(cons(x, l1), l2) -> APP(l1, l2) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (6) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (7) Obligation: Q DP problem: The TRS P consists of the following rules: APP(cons(x, l1), l2) -> APP(l1, l2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (8) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *APP(cons(x, l1), l2) -> APP(l1, l2) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (9) YES ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: GE(#, 0(x)) -> GE(#, x) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: GE(#, 0(x)) -> GE(#, x) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *GE(#, 0(x)) -> GE(#, x) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (14) YES ---------------------------------------- (15) Obligation: Q DP problem: The TRS P consists of the following rules: GE(0(x), 1(y)) -> GE(y, x) GE(0(x), 0(y)) -> GE(x, y) GE(1(x), 0(y)) -> GE(x, y) GE(1(x), 1(y)) -> GE(x, y) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (16) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: GE(0(x), 1(y)) -> GE(y, x) GE(0(x), 0(y)) -> GE(x, y) GE(1(x), 0(y)) -> GE(x, y) GE(1(x), 1(y)) -> GE(x, y) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *GE(0(x), 1(y)) -> GE(y, x) The graph contains the following edges 2 > 1, 1 > 2 *GE(0(x), 0(y)) -> GE(x, y) The graph contains the following edges 1 > 1, 2 > 2 *GE(1(x), 0(y)) -> GE(x, y) The graph contains the following edges 1 > 1, 2 > 2 *GE(1(x), 1(y)) -> GE(x, y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(0(x), #) -> EQ(x, #) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(0(x), #) -> EQ(x, #) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *EQ(0(x), #) -> EQ(x, #) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(#, 0(y)) -> EQ(#, y) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (26) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(#, 0(y)) -> EQ(#, y) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *EQ(#, 0(y)) -> EQ(#, y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(0(x), 0(y)) -> EQ(x, y) EQ(1(x), 1(y)) -> EQ(x, y) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (31) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(0(x), 0(y)) -> EQ(x, y) EQ(1(x), 1(y)) -> EQ(x, y) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (33) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *EQ(0(x), 0(y)) -> EQ(x, y) The graph contains the following edges 1 > 1, 2 > 2 *EQ(1(x), 1(y)) -> EQ(x, y) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: MEM(x, cons(y, l)) -> MEM(x, l) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (36) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (37) Obligation: Q DP problem: The TRS P consists of the following rules: MEM(x, cons(y, l)) -> MEM(x, l) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (38) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *MEM(x, cons(y, l)) -> MEM(x, l) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (39) YES ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: INTER(app(l1, l2), l3) -> INTER(l2, l3) INTER(app(l1, l2), l3) -> INTER(l1, l3) INTER(l1, app(l2, l3)) -> INTER(l1, l2) INTER(l1, app(l2, l3)) -> INTER(l1, l3) INTER(cons(x, l1), l2) -> IFINTER(mem(x, l2), x, l1, l2) IFINTER(true, x, l1, l2) -> INTER(l1, l2) INTER(l1, cons(x, l2)) -> IFINTER(mem(x, l1), x, l2, l1) IFINTER(false, x, l1, l2) -> INTER(l1, l2) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (41) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *INTER(app(l1, l2), l3) -> INTER(l2, l3) The graph contains the following edges 1 > 1, 2 >= 2 *INTER(app(l1, l2), l3) -> INTER(l1, l3) The graph contains the following edges 1 > 1, 2 >= 2 *INTER(l1, app(l2, l3)) -> INTER(l1, l2) The graph contains the following edges 1 >= 1, 2 > 2 *INTER(l1, app(l2, l3)) -> INTER(l1, l3) The graph contains the following edges 1 >= 1, 2 > 2 *INTER(cons(x, l1), l2) -> IFINTER(mem(x, l2), x, l1, l2) The graph contains the following edges 1 > 2, 1 > 3, 2 >= 4 *INTER(l1, cons(x, l2)) -> IFINTER(mem(x, l1), x, l2, l1) The graph contains the following edges 2 > 2, 2 > 3, 1 >= 4 *IFINTER(true, x, l1, l2) -> INTER(l1, l2) The graph contains the following edges 3 >= 1, 4 >= 2 *IFINTER(false, x, l1, l2) -> INTER(l1, l2) The graph contains the following edges 3 >= 1, 4 >= 2 ---------------------------------------- (42) YES ---------------------------------------- (43) Obligation: Q DP problem: The TRS P consists of the following rules: -^1(0(x), 1(y)) -> -^1(-(x, y), 1(#)) -^1(0(x), 1(y)) -> -^1(x, y) -^1(0(x), 0(y)) -> -^1(x, y) -^1(1(x), 0(y)) -> -^1(x, y) -^1(1(x), 1(y)) -> -^1(x, y) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (44) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (45) Obligation: Q DP problem: The TRS P consists of the following rules: -^1(0(x), 1(y)) -> -^1(-(x, y), 1(#)) -^1(0(x), 1(y)) -> -^1(x, y) -^1(0(x), 0(y)) -> -^1(x, y) -^1(1(x), 0(y)) -> -^1(x, y) -^1(1(x), 1(y)) -> -^1(x, y) The TRS R consists of the following rules: -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) 0(#) -> # Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (46) MRRProof (EQUIVALENT) 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. Strictly oriented dependency pairs: -^1(0(x), 1(y)) -> -^1(-(x, y), 1(#)) -^1(0(x), 1(y)) -> -^1(x, y) -^1(0(x), 0(y)) -> -^1(x, y) -^1(1(x), 0(y)) -> -^1(x, y) -^1(1(x), 1(y)) -> -^1(x, y) Strictly oriented rules of the TRS R: -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) 0(#) -> # Used ordering: Knuth-Bendix order [KBO] with precedence:-_2 > -^1_2 > 0_1 > 1_1 > # and weight map: #=2 0_1=5 1_1=3 -_2=0 -^1_2=0 The variable weight is 1 ---------------------------------------- (47) Obligation: Q DP problem: P is empty. R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (48) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (49) YES ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: +^1(0(x), 1(y)) -> +^1(x, y) +^1(0(x), 0(y)) -> +^1(x, y) +^1(1(x), 0(y)) -> +^1(x, y) +^1(1(x), 1(y)) -> +^1(+(x, y), 1(#)) +^1(1(x), 1(y)) -> +^1(x, y) +^1(+(x, y), z) -> +^1(x, +(y, z)) +^1(+(x, y), z) -> +^1(y, z) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (51) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: +^1(0(x), 1(y)) -> +^1(x, y) +^1(0(x), 0(y)) -> +^1(x, y) +^1(1(x), 0(y)) -> +^1(x, y) +^1(1(x), 1(y)) -> +^1(+(x, y), 1(#)) +^1(1(x), 1(y)) -> +^1(x, y) +^1(+(x, y), z) -> +^1(x, +(y, z)) +^1(+(x, y), z) -> +^1(y, z) The TRS R consists of the following rules: +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) 0(#) -> # Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (53) MRRProof (EQUIVALENT) 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. Strictly oriented dependency pairs: +^1(0(x), 1(y)) -> +^1(x, y) +^1(0(x), 0(y)) -> +^1(x, y) +^1(1(x), 0(y)) -> +^1(x, y) +^1(1(x), 1(y)) -> +^1(+(x, y), 1(#)) +^1(1(x), 1(y)) -> +^1(x, y) +^1(+(x, y), z) -> +^1(x, +(y, z)) +^1(+(x, y), z) -> +^1(y, z) Strictly oriented rules of the TRS R: +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) 0(#) -> # Used ordering: Knuth-Bendix order [KBO] with precedence:# > +_2 > 1_1 > 0_1 > +^1_2 and weight map: #=2 0_1=1 1_1=3 +_2=0 +^1_2=0 The variable weight is 1 ---------------------------------------- (54) Obligation: Q DP problem: P is empty. R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (55) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (56) YES ---------------------------------------- (57) Obligation: Q DP problem: The TRS P consists of the following rules: SUM(app(l1, l2)) -> SUM(l1) SUM(cons(x, l)) -> SUM(l) SUM(app(l1, l2)) -> SUM(l2) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (58) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (59) Obligation: Q DP problem: The TRS P consists of the following rules: SUM(app(l1, l2)) -> SUM(l1) SUM(cons(x, l)) -> SUM(l) SUM(app(l1, l2)) -> SUM(l2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (60) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *SUM(app(l1, l2)) -> SUM(l1) The graph contains the following edges 1 > 1 *SUM(cons(x, l)) -> SUM(l) The graph contains the following edges 1 > 1 *SUM(app(l1, l2)) -> SUM(l2) The graph contains the following edges 1 > 1 ---------------------------------------- (61) YES ---------------------------------------- (62) Obligation: Q DP problem: The TRS P consists of the following rules: *^1(1(x), y) -> *^1(x, y) *^1(0(x), y) -> *^1(x, y) *^1(*(x, y), z) -> *^1(x, *(y, z)) *^1(*(x, y), z) -> *^1(y, z) *^1(x, +(y, z)) -> *^1(x, y) *^1(x, +(y, z)) -> *^1(x, z) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (63) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: **^1(1(x), y) -> *^1(x, y) The graph contains the following edges 1 > 1, 2 >= 2 **^1(0(x), y) -> *^1(x, y) The graph contains the following edges 1 > 1, 2 >= 2 **^1(*(x, y), z) -> *^1(x, *(y, z)) The graph contains the following edges 1 > 1 **^1(*(x, y), z) -> *^1(y, z) The graph contains the following edges 1 > 1, 2 >= 2 **^1(x, +(y, z)) -> *^1(x, y) The graph contains the following edges 1 >= 1, 2 > 2 **^1(x, +(y, z)) -> *^1(x, z) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (64) YES ---------------------------------------- (65) Obligation: Q DP problem: The TRS P consists of the following rules: PROD(app(l1, l2)) -> PROD(l1) PROD(cons(x, l)) -> PROD(l) PROD(app(l1, l2)) -> PROD(l2) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (66) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (67) Obligation: Q DP problem: The TRS P consists of the following rules: PROD(app(l1, l2)) -> PROD(l1) PROD(cons(x, l)) -> PROD(l) PROD(app(l1, l2)) -> PROD(l2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (68) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *PROD(app(l1, l2)) -> PROD(l1) The graph contains the following edges 1 > 1 *PROD(cons(x, l)) -> PROD(l) The graph contains the following edges 1 > 1 *PROD(app(l1, l2)) -> PROD(l2) The graph contains the following edges 1 > 1 ---------------------------------------- (69) YES ---------------------------------------- (70) Obligation: Q DP problem: The TRS P consists of the following rules: LOG'(0(x)) -> LOG'(x) LOG'(1(x)) -> LOG'(x) The TRS R consists of the following rules: 0(#) -> # +(x, #) -> x +(#, x) -> x +(0(x), 0(y)) -> 0(+(x, y)) +(0(x), 1(y)) -> 1(+(x, y)) +(1(x), 0(y)) -> 1(+(x, y)) +(1(x), 1(y)) -> 0(+(+(x, y), 1(#))) +(+(x, y), z) -> +(x, +(y, z)) -(#, x) -> # -(x, #) -> x -(0(x), 0(y)) -> 0(-(x, y)) -(0(x), 1(y)) -> 1(-(-(x, y), 1(#))) -(1(x), 0(y)) -> 1(-(x, y)) -(1(x), 1(y)) -> 0(-(x, y)) not(true) -> false not(false) -> true if(true, x, y) -> x if(false, x, y) -> y eq(#, #) -> true eq(#, 1(y)) -> false eq(1(x), #) -> false eq(#, 0(y)) -> eq(#, y) eq(0(x), #) -> eq(x, #) eq(1(x), 1(y)) -> eq(x, y) eq(0(x), 1(y)) -> false eq(1(x), 0(y)) -> false eq(0(x), 0(y)) -> eq(x, y) ge(0(x), 0(y)) -> ge(x, y) ge(0(x), 1(y)) -> not(ge(y, x)) ge(1(x), 0(y)) -> ge(x, y) ge(1(x), 1(y)) -> ge(x, y) ge(x, #) -> true ge(#, 0(x)) -> ge(#, x) ge(#, 1(x)) -> false log(x) -> -(log'(x), 1(#)) log'(#) -> # log'(1(x)) -> +(log'(x), 1(#)) log'(0(x)) -> if(ge(x, 1(#)), +(log'(x), 1(#)), #) *(#, x) -> # *(0(x), y) -> 0(*(x, y)) *(1(x), y) -> +(0(*(x, y)), y) *(*(x, y), z) -> *(x, *(y, z)) *(x, +(y, z)) -> +(*(x, y), *(x, z)) app(nil, l) -> l app(cons(x, l1), l2) -> cons(x, app(l1, l2)) sum(nil) -> 0(#) sum(cons(x, l)) -> +(x, sum(l)) sum(app(l1, l2)) -> +(sum(l1), sum(l2)) prod(nil) -> 1(#) prod(cons(x, l)) -> *(x, prod(l)) prod(app(l1, l2)) -> *(prod(l1), prod(l2)) mem(x, nil) -> false mem(x, cons(y, l)) -> if(eq(x, y), true, mem(x, l)) inter(x, nil) -> nil inter(nil, x) -> nil inter(app(l1, l2), l3) -> app(inter(l1, l3), inter(l2, l3)) inter(l1, app(l2, l3)) -> app(inter(l1, l2), inter(l1, l3)) inter(cons(x, l1), l2) -> ifinter(mem(x, l2), x, l1, l2) inter(l1, cons(x, l2)) -> ifinter(mem(x, l1), x, l2, l1) ifinter(true, x, l1, l2) -> cons(x, inter(l1, l2)) ifinter(false, x, l1, l2) -> inter(l1, l2) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (71) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (72) Obligation: Q DP problem: The TRS P consists of the following rules: LOG'(0(x)) -> LOG'(x) LOG'(1(x)) -> LOG'(x) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (73) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *LOG'(0(x)) -> LOG'(x) The graph contains the following edges 1 > 1 *LOG'(1(x)) -> LOG'(x) The graph contains the following edges 1 > 1 ---------------------------------------- (74) YES