260.28/73.04 YES 260.58/73.05 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 260.58/73.05 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 260.58/73.05 260.58/73.05 260.58/73.05 Outermost Termination of the given OTRS could be proven: 260.58/73.05 260.58/73.05 (0) OTRS 260.58/73.05 (1) Raffelsieper-Zantema-Transformation [SOUND, 0 ms] 260.58/73.05 (2) QTRS 260.58/73.05 (3) QTRSRRRProof [EQUIVALENT, 166 ms] 260.58/73.05 (4) QTRS 260.58/73.05 (5) QTRSRRRProof [EQUIVALENT, 65 ms] 260.58/73.05 (6) QTRS 260.58/73.05 (7) QTRSRRRProof [EQUIVALENT, 130 ms] 260.58/73.05 (8) QTRS 260.58/73.05 (9) DependencyPairsProof [EQUIVALENT, 0 ms] 260.58/73.05 (10) QDP 260.58/73.05 (11) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (12) AND 260.58/73.05 (13) QDP 260.58/73.05 (14) UsableRulesProof [EQUIVALENT, 0 ms] 260.58/73.05 (15) QDP 260.58/73.05 (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] 260.58/73.05 (17) YES 260.58/73.05 (18) QDP 260.58/73.05 (19) UsableRulesProof [EQUIVALENT, 6 ms] 260.58/73.05 (20) QDP 260.58/73.05 (21) TransformationProof [EQUIVALENT, 26 ms] 260.58/73.05 (22) QDP 260.58/73.05 (23) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (24) QDP 260.58/73.05 (25) QDPOrderProof [EQUIVALENT, 34 ms] 260.58/73.05 (26) QDP 260.58/73.05 (27) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (28) QDP 260.58/73.05 (29) QDPOrderProof [EQUIVALENT, 27 ms] 260.58/73.05 (30) QDP 260.58/73.05 (31) QDPOrderProof [EQUIVALENT, 32 ms] 260.58/73.05 (32) QDP 260.58/73.05 (33) QDPOrderProof [EQUIVALENT, 241 ms] 260.58/73.05 (34) QDP 260.58/73.05 (35) QDPOrderProof [EQUIVALENT, 518 ms] 260.58/73.05 (36) QDP 260.58/73.05 (37) QDPOrderProof [EQUIVALENT, 286 ms] 260.58/73.05 (38) QDP 260.58/73.05 (39) QDPOrderProof [EQUIVALENT, 272 ms] 260.58/73.05 (40) QDP 260.58/73.05 (41) QDPOrderProof [EQUIVALENT, 241 ms] 260.58/73.05 (42) QDP 260.58/73.05 (43) QDPOrderProof [EQUIVALENT, 287 ms] 260.58/73.05 (44) QDP 260.58/73.05 (45) QDPOrderProof [EQUIVALENT, 334 ms] 260.58/73.05 (46) QDP 260.58/73.05 (47) QDPOrderProof [EQUIVALENT, 260 ms] 260.58/73.05 (48) QDP 260.58/73.05 (49) SplitQDPProof [EQUIVALENT, 0 ms] 260.58/73.05 (50) AND 260.58/73.05 (51) QDP 260.58/73.05 (52) SemLabProof [SOUND, 0 ms] 260.58/73.05 (53) QDP 260.58/73.05 (54) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (55) QDP 260.58/73.05 (56) MRRProof [EQUIVALENT, 34 ms] 260.58/73.05 (57) QDP 260.58/73.05 (58) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (59) QDP 260.58/73.05 (60) UsableRulesReductionPairsProof [EQUIVALENT, 0 ms] 260.58/73.05 (61) QDP 260.58/73.05 (62) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (63) QDP 260.58/73.05 (64) MRRProof [EQUIVALENT, 19 ms] 260.58/73.05 (65) QDP 260.58/73.05 (66) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (67) QDP 260.58/73.05 (68) MRRProof [EQUIVALENT, 0 ms] 260.58/73.05 (69) QDP 260.58/73.05 (70) DependencyGraphProof [EQUIVALENT, 0 ms] 260.58/73.05 (71) QDP 260.58/73.05 (72) PisEmptyProof [SOUND, 0 ms] 260.58/73.05 (73) TRUE 260.58/73.05 (74) QDP 260.58/73.05 (75) QDPOrderProof [EQUIVALENT, 8176 ms] 260.58/73.05 (76) QDP 260.58/73.05 (77) PisEmptyProof [EQUIVALENT, 0 ms] 260.58/73.05 (78) YES 260.58/73.05 260.58/73.05 260.58/73.05 ---------------------------------------- 260.58/73.05 260.58/73.05 (0) 260.58/73.05 Obligation: 260.58/73.05 Term rewrite system R: 260.58/73.05 The TRS R consists of the following rules: 260.58/73.05 260.58/73.05 nats -> cons(0, n__incr(n__nats)) 260.58/73.05 pairs -> cons(0, n__incr(n__odds)) 260.58/73.05 odds -> incr(pairs) 260.58/73.05 incr(cons(X, XS)) -> cons(s(X), n__incr(activate(XS))) 260.58/73.06 head(cons(X, XS)) -> X 260.58/73.06 tail(cons(X, XS)) -> activate(XS) 260.58/73.06 incr(X) -> n__incr(X) 260.58/73.06 nats -> n__nats 260.58/73.06 odds -> n__odds 260.58/73.06 activate(n__incr(X)) -> incr(activate(X)) 260.58/73.06 activate(n__nats) -> nats 260.58/73.06 activate(n__odds) -> odds 260.58/73.06 activate(X) -> X 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 Outermost Strategy. 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (1) Raffelsieper-Zantema-Transformation (SOUND) 260.58/73.06 We applied the Raffelsieper-Zantema transformation to transform the outermost TRS to a standard TRS. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (2) 260.58/73.06 Obligation: 260.58/73.06 Q restricted rewrite system: 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(head(cons(X, XS))) -> up(X) 260.58/73.06 down(tail(cons(X, XS))) -> up(activate(XS)) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 incr_flat(up(x_1)) -> up(incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 activate_flat(up(x_1)) -> up(activate(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (3) QTRSRRRProof (EQUIVALENT) 260.58/73.06 Used ordering: 260.58/73.06 Polynomial interpretation [POLO]: 260.58/73.06 260.58/73.06 POL(0) = 0 260.58/73.06 POL(activate(x_1)) = x_1 260.58/73.06 POL(activate_flat(x_1)) = 1 + x_1 260.58/73.06 POL(block(x_1)) = 2*x_1 260.58/73.06 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 260.58/73.06 POL(cons_flat(x_1, x_2)) = 2*x_1 + 2*x_2 260.58/73.06 POL(down(x_1)) = 2*x_1 260.58/73.06 POL(fresh_constant) = 0 260.58/73.06 POL(head(x_1)) = x_1 260.58/73.06 POL(head_flat(x_1)) = x_1 260.58/73.06 POL(incr(x_1)) = 2*x_1 260.58/73.06 POL(incr_flat(x_1)) = 2 + 2*x_1 260.58/73.06 POL(n__incr(x_1)) = 2*x_1 260.58/73.06 POL(n__incr_flat(x_1)) = 2*x_1 260.58/73.06 POL(n__nats) = 0 260.58/73.06 POL(n__odds) = 0 260.58/73.06 POL(nats) = 0 260.58/73.06 POL(odds) = 0 260.58/73.06 POL(pairs) = 0 260.58/73.06 POL(s(x_1)) = 2*x_1 260.58/73.06 POL(s_flat(x_1)) = 2*x_1 260.58/73.06 POL(tail(x_1)) = 2*x_1 260.58/73.06 POL(tail_flat(x_1)) = 2*x_1 260.58/73.06 POL(top(x_1)) = x_1 260.58/73.06 POL(up(x_1)) = 2*x_1 260.58/73.06 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 260.58/73.06 260.58/73.06 incr_flat(up(x_1)) -> up(incr(x_1)) 260.58/73.06 activate_flat(up(x_1)) -> up(activate(x_1)) 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (4) 260.58/73.06 Obligation: 260.58/73.06 Q restricted rewrite system: 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(head(cons(X, XS))) -> up(X) 260.58/73.06 down(tail(cons(X, XS))) -> up(activate(XS)) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (5) QTRSRRRProof (EQUIVALENT) 260.58/73.06 Used ordering: 260.58/73.06 Polynomial interpretation [POLO]: 260.58/73.06 260.58/73.06 POL(0) = 0 260.58/73.06 POL(activate(x_1)) = x_1 260.58/73.06 POL(block(x_1)) = 2*x_1 260.58/73.06 POL(cons(x_1, x_2)) = x_1 + 2*x_2 260.58/73.06 POL(cons_flat(x_1, x_2)) = x_1 + 2*x_2 260.58/73.06 POL(down(x_1)) = 2*x_1 260.58/73.06 POL(fresh_constant) = 0 260.58/73.06 POL(head(x_1)) = 1 + 2*x_1 260.58/73.06 POL(head_flat(x_1)) = 2 + 2*x_1 260.58/73.06 POL(incr(x_1)) = 2*x_1 260.58/73.06 POL(n__incr(x_1)) = 2*x_1 260.58/73.06 POL(n__incr_flat(x_1)) = 2*x_1 260.58/73.06 POL(n__nats) = 0 260.58/73.06 POL(n__odds) = 0 260.58/73.06 POL(nats) = 0 260.58/73.06 POL(odds) = 0 260.58/73.06 POL(pairs) = 0 260.58/73.06 POL(s(x_1)) = 2*x_1 260.58/73.06 POL(s_flat(x_1)) = 2*x_1 260.58/73.06 POL(tail(x_1)) = 2*x_1 260.58/73.06 POL(tail_flat(x_1)) = 2*x_1 260.58/73.06 POL(top(x_1)) = x_1 260.58/73.06 POL(up(x_1)) = 2*x_1 260.58/73.06 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 260.58/73.06 260.58/73.06 down(head(cons(X, XS))) -> up(X) 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (6) 260.58/73.06 Obligation: 260.58/73.06 Q restricted rewrite system: 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(tail(cons(X, XS))) -> up(activate(XS)) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (7) QTRSRRRProof (EQUIVALENT) 260.58/73.06 Used ordering: 260.58/73.06 Polynomial interpretation [POLO]: 260.58/73.06 260.58/73.06 POL(0) = 0 260.58/73.06 POL(activate(x_1)) = x_1 260.58/73.06 POL(block(x_1)) = 2*x_1 260.58/73.06 POL(cons(x_1, x_2)) = x_1 + 2*x_2 260.58/73.06 POL(cons_flat(x_1, x_2)) = x_1 + 2*x_2 260.58/73.06 POL(down(x_1)) = 2*x_1 260.58/73.06 POL(fresh_constant) = 0 260.58/73.06 POL(head(x_1)) = 2*x_1 260.58/73.06 POL(head_flat(x_1)) = 2*x_1 260.58/73.06 POL(incr(x_1)) = x_1 260.58/73.06 POL(n__incr(x_1)) = x_1 260.58/73.06 POL(n__incr_flat(x_1)) = x_1 260.58/73.06 POL(n__nats) = 0 260.58/73.06 POL(n__odds) = 0 260.58/73.06 POL(nats) = 0 260.58/73.06 POL(odds) = 0 260.58/73.06 POL(pairs) = 0 260.58/73.06 POL(s(x_1)) = x_1 260.58/73.06 POL(s_flat(x_1)) = x_1 260.58/73.06 POL(tail(x_1)) = 1 + x_1 260.58/73.06 POL(tail_flat(x_1)) = 2 + x_1 260.58/73.06 POL(top(x_1)) = x_1 260.58/73.06 POL(up(x_1)) = 2*x_1 260.58/73.06 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 260.58/73.06 260.58/73.06 down(tail(cons(X, XS))) -> up(activate(XS)) 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (8) 260.58/73.06 Obligation: 260.58/73.06 Q restricted rewrite system: 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (9) DependencyPairsProof (EQUIVALENT) 260.58/73.06 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (10) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(x)) -> TOP(down(x)) 260.58/73.06 TOP(up(x)) -> DOWN(x) 260.58/73.06 DOWN(cons(y0, y1)) -> CONS_FLAT(down(y0), block(y1)) 260.58/73.06 DOWN(cons(y0, y1)) -> DOWN(y0) 260.58/73.06 DOWN(cons(y0, y1)) -> CONS_FLAT(block(y0), down(y1)) 260.58/73.06 DOWN(cons(y0, y1)) -> DOWN(y1) 260.58/73.06 DOWN(n__incr(y2)) -> N__INCR_FLAT(down(y2)) 260.58/73.06 DOWN(n__incr(y2)) -> DOWN(y2) 260.58/73.06 DOWN(s(y4)) -> S_FLAT(down(y4)) 260.58/73.06 DOWN(s(y4)) -> DOWN(y4) 260.58/73.06 DOWN(head(nats)) -> HEAD_FLAT(down(nats)) 260.58/73.06 DOWN(head(nats)) -> DOWN(nats) 260.58/73.06 DOWN(head(0)) -> HEAD_FLAT(down(0)) 260.58/73.06 DOWN(head(0)) -> DOWN(0) 260.58/73.06 DOWN(head(n__incr(y11))) -> HEAD_FLAT(down(n__incr(y11))) 260.58/73.06 DOWN(head(n__incr(y11))) -> DOWN(n__incr(y11)) 260.58/73.06 DOWN(head(n__nats)) -> HEAD_FLAT(down(n__nats)) 260.58/73.06 DOWN(head(n__nats)) -> DOWN(n__nats) 260.58/73.06 DOWN(head(pairs)) -> HEAD_FLAT(down(pairs)) 260.58/73.06 DOWN(head(pairs)) -> DOWN(pairs) 260.58/73.06 DOWN(head(n__odds)) -> HEAD_FLAT(down(n__odds)) 260.58/73.06 DOWN(head(n__odds)) -> DOWN(n__odds) 260.58/73.06 DOWN(head(odds)) -> HEAD_FLAT(down(odds)) 260.58/73.06 DOWN(head(odds)) -> DOWN(odds) 260.58/73.06 DOWN(head(incr(y12))) -> HEAD_FLAT(down(incr(y12))) 260.58/73.06 DOWN(head(incr(y12))) -> DOWN(incr(y12)) 260.58/73.06 DOWN(head(s(y13))) -> HEAD_FLAT(down(s(y13))) 260.58/73.06 DOWN(head(s(y13))) -> DOWN(s(y13)) 260.58/73.06 DOWN(head(activate(y14))) -> HEAD_FLAT(down(activate(y14))) 260.58/73.06 DOWN(head(activate(y14))) -> DOWN(activate(y14)) 260.58/73.06 DOWN(head(head(y15))) -> HEAD_FLAT(down(head(y15))) 260.58/73.06 DOWN(head(head(y15))) -> DOWN(head(y15)) 260.58/73.06 DOWN(head(tail(y16))) -> HEAD_FLAT(down(tail(y16))) 260.58/73.06 DOWN(head(tail(y16))) -> DOWN(tail(y16)) 260.58/73.06 DOWN(head(fresh_constant)) -> HEAD_FLAT(down(fresh_constant)) 260.58/73.06 DOWN(head(fresh_constant)) -> DOWN(fresh_constant) 260.58/73.06 DOWN(tail(nats)) -> TAIL_FLAT(down(nats)) 260.58/73.06 DOWN(tail(nats)) -> DOWN(nats) 260.58/73.06 DOWN(tail(0)) -> TAIL_FLAT(down(0)) 260.58/73.06 DOWN(tail(0)) -> DOWN(0) 260.58/73.06 DOWN(tail(n__incr(y20))) -> TAIL_FLAT(down(n__incr(y20))) 260.58/73.06 DOWN(tail(n__incr(y20))) -> DOWN(n__incr(y20)) 260.58/73.06 DOWN(tail(n__nats)) -> TAIL_FLAT(down(n__nats)) 260.58/73.06 DOWN(tail(n__nats)) -> DOWN(n__nats) 260.58/73.06 DOWN(tail(pairs)) -> TAIL_FLAT(down(pairs)) 260.58/73.06 DOWN(tail(pairs)) -> DOWN(pairs) 260.58/73.06 DOWN(tail(n__odds)) -> TAIL_FLAT(down(n__odds)) 260.58/73.06 DOWN(tail(n__odds)) -> DOWN(n__odds) 260.58/73.06 DOWN(tail(odds)) -> TAIL_FLAT(down(odds)) 260.58/73.06 DOWN(tail(odds)) -> DOWN(odds) 260.58/73.06 DOWN(tail(incr(y21))) -> TAIL_FLAT(down(incr(y21))) 260.58/73.06 DOWN(tail(incr(y21))) -> DOWN(incr(y21)) 260.58/73.06 DOWN(tail(s(y22))) -> TAIL_FLAT(down(s(y22))) 260.58/73.06 DOWN(tail(s(y22))) -> DOWN(s(y22)) 260.58/73.06 DOWN(tail(activate(y23))) -> TAIL_FLAT(down(activate(y23))) 260.58/73.06 DOWN(tail(activate(y23))) -> DOWN(activate(y23)) 260.58/73.06 DOWN(tail(head(y24))) -> TAIL_FLAT(down(head(y24))) 260.58/73.06 DOWN(tail(head(y24))) -> DOWN(head(y24)) 260.58/73.06 DOWN(tail(tail(y25))) -> TAIL_FLAT(down(tail(y25))) 260.58/73.06 DOWN(tail(tail(y25))) -> DOWN(tail(y25)) 260.58/73.06 DOWN(tail(fresh_constant)) -> TAIL_FLAT(down(fresh_constant)) 260.58/73.06 DOWN(tail(fresh_constant)) -> DOWN(fresh_constant) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (11) DependencyGraphProof (EQUIVALENT) 260.58/73.06 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 49 less nodes. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (12) 260.58/73.06 Complex Obligation (AND) 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (13) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 DOWN(cons(y0, y1)) -> DOWN(y1) 260.58/73.06 DOWN(cons(y0, y1)) -> DOWN(y0) 260.58/73.06 DOWN(n__incr(y2)) -> DOWN(y2) 260.58/73.06 DOWN(s(y4)) -> DOWN(y4) 260.58/73.06 DOWN(head(n__incr(y11))) -> DOWN(n__incr(y11)) 260.58/73.06 DOWN(head(s(y13))) -> DOWN(s(y13)) 260.58/73.06 DOWN(head(head(y15))) -> DOWN(head(y15)) 260.58/73.06 DOWN(head(tail(y16))) -> DOWN(tail(y16)) 260.58/73.06 DOWN(tail(n__incr(y20))) -> DOWN(n__incr(y20)) 260.58/73.06 DOWN(tail(s(y22))) -> DOWN(s(y22)) 260.58/73.06 DOWN(tail(head(y24))) -> DOWN(head(y24)) 260.58/73.06 DOWN(tail(tail(y25))) -> DOWN(tail(y25)) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (14) UsableRulesProof (EQUIVALENT) 260.58/73.06 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. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (15) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 DOWN(cons(y0, y1)) -> DOWN(y1) 260.58/73.06 DOWN(cons(y0, y1)) -> DOWN(y0) 260.58/73.06 DOWN(n__incr(y2)) -> DOWN(y2) 260.58/73.06 DOWN(s(y4)) -> DOWN(y4) 260.58/73.06 DOWN(head(n__incr(y11))) -> DOWN(n__incr(y11)) 260.58/73.06 DOWN(head(s(y13))) -> DOWN(s(y13)) 260.58/73.06 DOWN(head(head(y15))) -> DOWN(head(y15)) 260.58/73.06 DOWN(head(tail(y16))) -> DOWN(tail(y16)) 260.58/73.06 DOWN(tail(n__incr(y20))) -> DOWN(n__incr(y20)) 260.58/73.06 DOWN(tail(s(y22))) -> DOWN(s(y22)) 260.58/73.06 DOWN(tail(head(y24))) -> DOWN(head(y24)) 260.58/73.06 DOWN(tail(tail(y25))) -> DOWN(tail(y25)) 260.58/73.06 260.58/73.06 R is empty. 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (16) QDPSizeChangeProof (EQUIVALENT) 260.58/73.06 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. 260.58/73.06 260.58/73.06 From the DPs we obtained the following set of size-change graphs: 260.58/73.06 *DOWN(n__incr(y2)) -> DOWN(y2) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(s(y4)) -> DOWN(y4) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(head(n__incr(y11))) -> DOWN(n__incr(y11)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(tail(n__incr(y20))) -> DOWN(n__incr(y20)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(head(s(y13))) -> DOWN(s(y13)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(tail(s(y22))) -> DOWN(s(y22)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(head(head(y15))) -> DOWN(head(y15)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(tail(head(y24))) -> DOWN(head(y24)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(head(tail(y16))) -> DOWN(tail(y16)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(tail(tail(y25))) -> DOWN(tail(y25)) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(cons(y0, y1)) -> DOWN(y1) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 *DOWN(cons(y0, y1)) -> DOWN(y0) 260.58/73.06 The graph contains the following edges 1 > 1 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (17) 260.58/73.06 YES 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (18) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(x)) -> TOP(down(x)) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 top(up(x)) -> top(down(x)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (19) UsableRulesProof (EQUIVALENT) 260.58/73.06 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. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (20) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(x)) -> TOP(down(x)) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (21) TransformationProof (EQUIVALENT) 260.58/73.06 By narrowing [LPAR04] the rule TOP(up(x)) -> TOP(down(x)) at position [0] we obtained the following new rules [LPAR04]: 260.58/73.06 260.58/73.06 (TOP(up(nats)) -> TOP(up(cons(0, n__incr(n__nats)))),TOP(up(nats)) -> TOP(up(cons(0, n__incr(n__nats))))) 260.58/73.06 (TOP(up(pairs)) -> TOP(up(cons(0, n__incr(n__odds)))),TOP(up(pairs)) -> TOP(up(cons(0, n__incr(n__odds))))) 260.58/73.06 (TOP(up(odds)) -> TOP(up(incr(pairs))),TOP(up(odds)) -> TOP(up(incr(pairs)))) 260.58/73.06 (TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1))))),TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1)))))) 260.58/73.06 (TOP(up(incr(x0))) -> TOP(up(n__incr(x0))),TOP(up(incr(x0))) -> TOP(up(n__incr(x0)))) 260.58/73.06 (TOP(up(nats)) -> TOP(up(n__nats)),TOP(up(nats)) -> TOP(up(n__nats))) 260.58/73.06 (TOP(up(odds)) -> TOP(up(n__odds)),TOP(up(odds)) -> TOP(up(n__odds))) 260.58/73.06 (TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0)))),TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0))))) 260.58/73.06 (TOP(up(activate(n__nats))) -> TOP(up(nats)),TOP(up(activate(n__nats))) -> TOP(up(nats))) 260.58/73.06 (TOP(up(activate(n__odds))) -> TOP(up(odds)),TOP(up(activate(n__odds))) -> TOP(up(odds))) 260.58/73.06 (TOP(up(activate(x0))) -> TOP(up(x0)),TOP(up(activate(x0))) -> TOP(up(x0))) 260.58/73.06 (TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))),TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1)))) 260.58/73.06 (TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))),TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1)))) 260.58/73.06 (TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))),TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0)))) 260.58/73.06 (TOP(up(s(x0))) -> TOP(s_flat(down(x0))),TOP(up(s(x0))) -> TOP(s_flat(down(x0)))) 260.58/73.06 (TOP(up(head(nats))) -> TOP(head_flat(down(nats))),TOP(up(head(nats))) -> TOP(head_flat(down(nats)))) 260.58/73.06 (TOP(up(head(0))) -> TOP(head_flat(down(0))),TOP(up(head(0))) -> TOP(head_flat(down(0)))) 260.58/73.06 (TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))),TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0))))) 260.58/73.06 (TOP(up(head(n__nats))) -> TOP(head_flat(down(n__nats))),TOP(up(head(n__nats))) -> TOP(head_flat(down(n__nats)))) 260.58/73.06 (TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))),TOP(up(head(pairs))) -> TOP(head_flat(down(pairs)))) 260.58/73.06 (TOP(up(head(n__odds))) -> TOP(head_flat(down(n__odds))),TOP(up(head(n__odds))) -> TOP(head_flat(down(n__odds)))) 260.58/73.06 (TOP(up(head(odds))) -> TOP(head_flat(down(odds))),TOP(up(head(odds))) -> TOP(head_flat(down(odds)))) 260.58/73.06 (TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))),TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0))))) 260.58/73.06 (TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))),TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0))))) 260.58/73.06 (TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))),TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0))))) 260.58/73.06 (TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))),TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0))))) 260.58/73.06 (TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))),TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0))))) 260.58/73.06 (TOP(up(head(fresh_constant))) -> TOP(head_flat(down(fresh_constant))),TOP(up(head(fresh_constant))) -> TOP(head_flat(down(fresh_constant)))) 260.58/73.06 (TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))),TOP(up(tail(nats))) -> TOP(tail_flat(down(nats)))) 260.58/73.06 (TOP(up(tail(0))) -> TOP(tail_flat(down(0))),TOP(up(tail(0))) -> TOP(tail_flat(down(0)))) 260.58/73.06 (TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))),TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0))))) 260.58/73.06 (TOP(up(tail(n__nats))) -> TOP(tail_flat(down(n__nats))),TOP(up(tail(n__nats))) -> TOP(tail_flat(down(n__nats)))) 260.58/73.06 (TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))),TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs)))) 260.58/73.06 (TOP(up(tail(n__odds))) -> TOP(tail_flat(down(n__odds))),TOP(up(tail(n__odds))) -> TOP(tail_flat(down(n__odds)))) 260.58/73.06 (TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))),TOP(up(tail(odds))) -> TOP(tail_flat(down(odds)))) 260.58/73.06 (TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))),TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0))))) 260.58/73.06 (TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))),TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0))))) 260.58/73.06 (TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))),TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0))))) 260.58/73.06 (TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))),TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0))))) 260.58/73.06 (TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))),TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0))))) 260.58/73.06 (TOP(up(tail(fresh_constant))) -> TOP(tail_flat(down(fresh_constant))),TOP(up(tail(fresh_constant))) -> TOP(tail_flat(down(fresh_constant)))) 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (22) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(nats)) -> TOP(up(cons(0, n__incr(n__nats)))) 260.58/73.06 TOP(up(pairs)) -> TOP(up(cons(0, n__incr(n__odds)))) 260.58/73.06 TOP(up(odds)) -> TOP(up(incr(pairs))) 260.58/73.06 TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1))))) 260.58/73.06 TOP(up(incr(x0))) -> TOP(up(n__incr(x0))) 260.58/73.06 TOP(up(nats)) -> TOP(up(n__nats)) 260.58/73.06 TOP(up(odds)) -> TOP(up(n__odds)) 260.58/73.06 TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0)))) 260.58/73.06 TOP(up(activate(n__nats))) -> TOP(up(nats)) 260.58/73.06 TOP(up(activate(n__odds))) -> TOP(up(odds)) 260.58/73.06 TOP(up(activate(x0))) -> TOP(up(x0)) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.06 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.06 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.06 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.06 TOP(up(head(0))) -> TOP(head_flat(down(0))) 260.58/73.06 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(head(n__nats))) -> TOP(head_flat(down(n__nats))) 260.58/73.06 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.06 TOP(up(head(n__odds))) -> TOP(head_flat(down(n__odds))) 260.58/73.06 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.06 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.06 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.06 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.06 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.06 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.06 TOP(up(head(fresh_constant))) -> TOP(head_flat(down(fresh_constant))) 260.58/73.06 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.06 TOP(up(tail(0))) -> TOP(tail_flat(down(0))) 260.58/73.06 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(tail(n__nats))) -> TOP(tail_flat(down(n__nats))) 260.58/73.06 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.06 TOP(up(tail(n__odds))) -> TOP(tail_flat(down(n__odds))) 260.58/73.06 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.06 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.06 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.06 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.06 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.06 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.06 TOP(up(tail(fresh_constant))) -> TOP(tail_flat(down(fresh_constant))) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (23) DependencyGraphProof (EQUIVALENT) 260.58/73.06 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 10 less nodes. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (24) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.06 TOP(up(nats)) -> TOP(up(cons(0, n__incr(n__nats)))) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.06 TOP(up(pairs)) -> TOP(up(cons(0, n__incr(n__odds)))) 260.58/73.06 TOP(up(odds)) -> TOP(up(incr(pairs))) 260.58/73.06 TOP(up(incr(x0))) -> TOP(up(n__incr(x0))) 260.58/73.06 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.06 TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1))))) 260.58/73.06 TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0)))) 260.58/73.06 TOP(up(activate(n__nats))) -> TOP(up(nats)) 260.58/73.06 TOP(up(activate(n__odds))) -> TOP(up(odds)) 260.58/73.06 TOP(up(activate(x0))) -> TOP(up(x0)) 260.58/73.06 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.06 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.06 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.06 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.06 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.06 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.06 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.06 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.06 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.06 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.06 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.06 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.06 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.06 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.06 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.06 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.06 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (25) QDPOrderProof (EQUIVALENT) 260.58/73.06 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.06 260.58/73.06 260.58/73.06 The following pairs can be oriented strictly and are deleted. 260.58/73.06 260.58/73.06 TOP(up(nats)) -> TOP(up(cons(0, n__incr(n__nats)))) 260.58/73.06 TOP(up(pairs)) -> TOP(up(cons(0, n__incr(n__odds)))) 260.58/73.06 TOP(up(odds)) -> TOP(up(incr(pairs))) 260.58/73.06 The remaining pairs can at least be oriented weakly. 260.58/73.06 Used ordering: Polynomial interpretation [POLO]: 260.58/73.06 260.58/73.06 POL(0) = 0 260.58/73.06 POL(TOP(x_1)) = x_1 260.58/73.06 POL(activate(x_1)) = x_1 260.58/73.06 POL(block(x_1)) = x_1 260.58/73.06 POL(cons(x_1, x_2)) = 0 260.58/73.06 POL(cons_flat(x_1, x_2)) = 0 260.58/73.06 POL(down(x_1)) = 0 260.58/73.06 POL(fresh_constant) = 0 260.58/73.06 POL(head(x_1)) = 0 260.58/73.06 POL(head_flat(x_1)) = 0 260.58/73.06 POL(incr(x_1)) = 0 260.58/73.06 POL(n__incr(x_1)) = 0 260.58/73.06 POL(n__incr_flat(x_1)) = 0 260.58/73.06 POL(n__nats) = 1 260.58/73.06 POL(n__odds) = 1 260.58/73.06 POL(nats) = 1 260.58/73.06 POL(odds) = 1 260.58/73.06 POL(pairs) = 1 260.58/73.06 POL(s(x_1)) = 0 260.58/73.06 POL(s_flat(x_1)) = 0 260.58/73.06 POL(tail(x_1)) = 0 260.58/73.06 POL(tail_flat(x_1)) = 0 260.58/73.06 POL(up(x_1)) = x_1 260.58/73.06 260.58/73.06 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.06 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (26) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.06 TOP(up(incr(x0))) -> TOP(up(n__incr(x0))) 260.58/73.06 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.06 TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1))))) 260.58/73.06 TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0)))) 260.58/73.06 TOP(up(activate(n__nats))) -> TOP(up(nats)) 260.58/73.06 TOP(up(activate(n__odds))) -> TOP(up(odds)) 260.58/73.06 TOP(up(activate(x0))) -> TOP(up(x0)) 260.58/73.06 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.06 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.06 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.06 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.06 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.06 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.06 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.06 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.06 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.06 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.06 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.06 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.06 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.06 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.06 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.06 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.06 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (27) DependencyGraphProof (EQUIVALENT) 260.58/73.06 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (28) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1))))) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.06 TOP(up(incr(x0))) -> TOP(up(n__incr(x0))) 260.58/73.06 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.06 TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0)))) 260.58/73.06 TOP(up(activate(x0))) -> TOP(up(x0)) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.06 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.06 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.06 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.06 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.06 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.06 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.06 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.06 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.06 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.06 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.06 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.06 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.06 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.06 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.06 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.06 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.06 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (29) QDPOrderProof (EQUIVALENT) 260.58/73.06 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.06 260.58/73.06 260.58/73.06 The following pairs can be oriented strictly and are deleted. 260.58/73.06 260.58/73.06 TOP(up(incr(cons(x0, x1)))) -> TOP(up(cons(s(x0), n__incr(activate(x1))))) 260.58/73.06 TOP(up(activate(n__incr(x0)))) -> TOP(up(incr(activate(x0)))) 260.58/73.06 TOP(up(activate(x0))) -> TOP(up(x0)) 260.58/73.06 The remaining pairs can at least be oriented weakly. 260.58/73.06 Used ordering: Polynomial interpretation [POLO]: 260.58/73.06 260.58/73.06 POL(0) = 0 260.58/73.06 POL(TOP(x_1)) = x_1 260.58/73.06 POL(activate(x_1)) = 1 + x_1 260.58/73.06 POL(block(x_1)) = x_1 260.58/73.06 POL(cons(x_1, x_2)) = 0 260.58/73.06 POL(cons_flat(x_1, x_2)) = 0 260.58/73.06 POL(down(x_1)) = 0 260.58/73.06 POL(fresh_constant) = 0 260.58/73.06 POL(head(x_1)) = 0 260.58/73.06 POL(head_flat(x_1)) = 0 260.58/73.06 POL(incr(x_1)) = 1 260.58/73.06 POL(n__incr(x_1)) = 1 260.58/73.06 POL(n__incr_flat(x_1)) = 1 260.58/73.06 POL(n__nats) = 0 260.58/73.06 POL(n__odds) = 0 260.58/73.06 POL(nats) = 0 260.58/73.06 POL(odds) = 0 260.58/73.06 POL(pairs) = 0 260.58/73.06 POL(s(x_1)) = 0 260.58/73.06 POL(s_flat(x_1)) = 0 260.58/73.06 POL(tail(x_1)) = 0 260.58/73.06 POL(tail_flat(x_1)) = 0 260.58/73.06 POL(up(x_1)) = x_1 260.58/73.06 260.58/73.06 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.06 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (30) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.06 TOP(up(incr(x0))) -> TOP(up(n__incr(x0))) 260.58/73.06 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.06 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.06 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.06 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.06 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.06 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.06 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.06 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.06 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.06 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.06 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.06 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.06 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.06 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.06 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.06 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.06 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.06 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.06 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.06 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.06 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.06 down(head(odds)) -> head_flat(down(odds)) 260.58/73.06 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.06 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.06 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.06 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.06 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.06 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.06 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.06 down(tail(0)) -> tail_flat(down(0)) 260.58/73.06 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.06 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.06 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.06 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.06 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.06 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.06 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.06 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.06 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.06 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.06 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 260.58/73.06 Q is empty. 260.58/73.06 We have to consider all minimal (P,Q,R)-chains. 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (31) QDPOrderProof (EQUIVALENT) 260.58/73.06 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.06 260.58/73.06 260.58/73.06 The following pairs can be oriented strictly and are deleted. 260.58/73.06 260.58/73.06 TOP(up(incr(x0))) -> TOP(up(n__incr(x0))) 260.58/73.06 The remaining pairs can at least be oriented weakly. 260.58/73.06 Used ordering: Polynomial interpretation [POLO]: 260.58/73.06 260.58/73.06 POL(0) = 0 260.58/73.06 POL(TOP(x_1)) = x_1 260.58/73.06 POL(activate(x_1)) = 0 260.58/73.06 POL(block(x_1)) = x_1 260.58/73.06 POL(cons(x_1, x_2)) = 0 260.58/73.06 POL(cons_flat(x_1, x_2)) = 0 260.58/73.06 POL(down(x_1)) = 0 260.58/73.06 POL(fresh_constant) = 0 260.58/73.06 POL(head(x_1)) = 0 260.58/73.06 POL(head_flat(x_1)) = 0 260.58/73.06 POL(incr(x_1)) = 1 260.58/73.06 POL(n__incr(x_1)) = 0 260.58/73.06 POL(n__incr_flat(x_1)) = 0 260.58/73.06 POL(n__nats) = 0 260.58/73.06 POL(n__odds) = 0 260.58/73.06 POL(nats) = 0 260.58/73.06 POL(odds) = 0 260.58/73.06 POL(pairs) = 0 260.58/73.06 POL(s(x_1)) = 0 260.58/73.06 POL(s_flat(x_1)) = 0 260.58/73.06 POL(tail(x_1)) = 0 260.58/73.06 POL(tail_flat(x_1)) = 0 260.58/73.06 POL(up(x_1)) = x_1 260.58/73.06 260.58/73.06 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.06 260.58/73.06 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.06 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.06 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.06 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.06 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.06 260.58/73.06 260.58/73.06 ---------------------------------------- 260.58/73.06 260.58/73.06 (32) 260.58/73.06 Obligation: 260.58/73.06 Q DP problem: 260.58/73.06 The TRS P consists of the following rules: 260.58/73.06 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.06 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.06 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.06 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.06 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.06 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.06 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.06 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.06 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.06 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.06 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.06 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.06 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.06 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.06 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.06 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.06 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.06 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.06 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.06 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.06 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.06 260.58/73.06 The TRS R consists of the following rules: 260.58/73.06 260.58/73.06 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.06 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.06 down(odds) -> up(incr(pairs)) 260.58/73.06 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.06 down(incr(X)) -> up(n__incr(X)) 260.58/73.06 down(nats) -> up(n__nats) 260.58/73.06 down(odds) -> up(n__odds) 260.58/73.06 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.06 down(activate(n__nats)) -> up(nats) 260.58/73.06 down(activate(n__odds)) -> up(odds) 260.58/73.06 down(activate(X)) -> up(X) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.06 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.06 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.06 down(s(y4)) -> s_flat(down(y4)) 260.58/73.06 down(head(nats)) -> head_flat(down(nats)) 260.58/73.06 down(head(0)) -> head_flat(down(0)) 260.58/73.06 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 260.58/73.07 Q is empty. 260.58/73.07 We have to consider all minimal (P,Q,R)-chains. 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (33) QDPOrderProof (EQUIVALENT) 260.58/73.07 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.07 260.58/73.07 260.58/73.07 The following pairs can be oriented strictly and are deleted. 260.58/73.07 260.58/73.07 TOP(up(tail(pairs))) -> TOP(tail_flat(down(pairs))) 260.58/73.07 The remaining pairs can at least be oriented weakly. 260.58/73.07 Used ordering: Matrix interpretation [MATRO]: 260.58/73.07 260.58/73.07 Non-tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( pairs ) = [[1], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( activate_1(x_1) ) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_1(x_1) ) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( down_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( 0 ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( fresh_constant ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( up_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_flat_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 Tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( TOP_1(x_1) ) = [[0]] + [[1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 Matrix type: 260.58/73.07 260.58/73.07 We used a basic matrix type which is not further parametrizeable. 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.07 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 260.58/73.07 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (34) 260.58/73.07 Obligation: 260.58/73.07 Q DP problem: 260.58/73.07 The TRS P consists of the following rules: 260.58/73.07 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.07 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.07 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.07 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.07 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.07 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.07 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.07 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.07 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.07 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.07 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.07 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.07 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.07 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.07 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.07 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.07 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.07 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.07 260.58/73.07 The TRS R consists of the following rules: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 260.58/73.07 Q is empty. 260.58/73.07 We have to consider all minimal (P,Q,R)-chains. 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (35) QDPOrderProof (EQUIVALENT) 260.58/73.07 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.07 260.58/73.07 260.58/73.07 The following pairs can be oriented strictly and are deleted. 260.58/73.07 260.58/73.07 TOP(up(head(nats))) -> TOP(head_flat(down(nats))) 260.58/73.07 TOP(up(head(pairs))) -> TOP(head_flat(down(pairs))) 260.58/73.07 TOP(up(head(odds))) -> TOP(head_flat(down(odds))) 260.58/73.07 The remaining pairs can at least be oriented weakly. 260.58/73.07 Used ordering: Matrix interpretation [MATRO]: 260.58/73.07 260.58/73.07 Non-tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( nats ) = [[0], [1]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( pairs ) = [[0], [1]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( activate_1(x_1) ) = [[1], [1]] + [[0, 1], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( down_1(x_1) ) = [[0], [0]] + [[0, 1], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( 0 ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( fresh_constant ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( up_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( odds ) = [[0], [1]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 1], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 Tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( TOP_1(x_1) ) = [[0]] + [[1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 Matrix type: 260.58/73.07 260.58/73.07 We used a basic matrix type which is not further parametrizeable. 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.07 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 260.58/73.07 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (36) 260.58/73.07 Obligation: 260.58/73.07 Q DP problem: 260.58/73.07 The TRS P consists of the following rules: 260.58/73.07 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.07 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.07 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.07 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.07 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.07 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.07 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.07 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.07 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.07 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.07 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.07 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.07 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.07 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.07 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.07 260.58/73.07 The TRS R consists of the following rules: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 260.58/73.07 Q is empty. 260.58/73.07 We have to consider all minimal (P,Q,R)-chains. 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (37) QDPOrderProof (EQUIVALENT) 260.58/73.07 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.07 260.58/73.07 260.58/73.07 The following pairs can be oriented strictly and are deleted. 260.58/73.07 260.58/73.07 TOP(up(tail(activate(x0)))) -> TOP(tail_flat(down(activate(x0)))) 260.58/73.07 The remaining pairs can at least be oriented weakly. 260.58/73.07 Used ordering: Matrix interpretation [MATRO]: 260.58/73.07 260.58/73.07 Non-tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( pairs ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( activate_1(x_1) ) = [[1], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_1(x_1) ) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( down_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( 0 ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( fresh_constant ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( up_1(x_1) ) = [[0], [0]] + [[0, 0], [1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 Tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( TOP_1(x_1) ) = [[0]] + [[0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 Matrix type: 260.58/73.07 260.58/73.07 We used a basic matrix type which is not further parametrizeable. 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.07 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 260.58/73.07 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (38) 260.58/73.07 Obligation: 260.58/73.07 Q DP problem: 260.58/73.07 The TRS P consists of the following rules: 260.58/73.07 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.07 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.07 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.07 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.07 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.07 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.07 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.07 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.07 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.07 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.07 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.07 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.07 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.07 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.07 260.58/73.07 The TRS R consists of the following rules: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 260.58/73.07 Q is empty. 260.58/73.07 We have to consider all minimal (P,Q,R)-chains. 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (39) QDPOrderProof (EQUIVALENT) 260.58/73.07 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.07 260.58/73.07 260.58/73.07 The following pairs can be oriented strictly and are deleted. 260.58/73.07 260.58/73.07 TOP(up(tail(nats))) -> TOP(tail_flat(down(nats))) 260.58/73.07 The remaining pairs can at least be oriented weakly. 260.58/73.07 Used ordering: Matrix interpretation [MATRO]: 260.58/73.07 260.58/73.07 Non-tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( nats ) = [[1], [1]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( pairs ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( activate_1(x_1) ) = [[0], [1]] + [[0, 0], [1, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__nats ) = [[0], [1]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_1(x_1) ) = [[0], [0]] + [[0, 0], [1, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( down_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( 0 ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( fresh_constant ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( up_1(x_1) ) = [[0], [0]] + [[0, 0], [1, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 Tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( TOP_1(x_1) ) = [[0]] + [[0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 Matrix type: 260.58/73.07 260.58/73.07 We used a basic matrix type which is not further parametrizeable. 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.07 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 260.58/73.07 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (40) 260.58/73.07 Obligation: 260.58/73.07 Q DP problem: 260.58/73.07 The TRS P consists of the following rules: 260.58/73.07 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.07 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.07 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.07 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.07 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.07 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.07 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.07 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.07 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.07 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.07 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.07 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.07 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.07 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.07 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.07 260.58/73.07 The TRS R consists of the following rules: 260.58/73.07 260.58/73.07 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.07 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.07 down(odds) -> up(incr(pairs)) 260.58/73.07 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.07 down(incr(X)) -> up(n__incr(X)) 260.58/73.07 down(nats) -> up(n__nats) 260.58/73.07 down(odds) -> up(n__odds) 260.58/73.07 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.07 down(activate(n__nats)) -> up(nats) 260.58/73.07 down(activate(n__odds)) -> up(odds) 260.58/73.07 down(activate(X)) -> up(X) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.07 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.07 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.07 down(s(y4)) -> s_flat(down(y4)) 260.58/73.07 down(head(nats)) -> head_flat(down(nats)) 260.58/73.07 down(head(0)) -> head_flat(down(0)) 260.58/73.07 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.07 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.07 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.07 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.07 down(head(odds)) -> head_flat(down(odds)) 260.58/73.07 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.07 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.07 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.07 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.07 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.07 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.07 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.07 down(tail(0)) -> tail_flat(down(0)) 260.58/73.07 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.07 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.07 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.07 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.07 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.07 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.07 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.07 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.07 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.07 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.07 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.07 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.07 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.07 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.07 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.07 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.07 260.58/73.07 Q is empty. 260.58/73.07 We have to consider all minimal (P,Q,R)-chains. 260.58/73.07 ---------------------------------------- 260.58/73.07 260.58/73.07 (41) QDPOrderProof (EQUIVALENT) 260.58/73.07 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.07 260.58/73.07 260.58/73.07 The following pairs can be oriented strictly and are deleted. 260.58/73.07 260.58/73.07 TOP(up(tail(odds))) -> TOP(tail_flat(down(odds))) 260.58/73.07 The remaining pairs can at least be oriented weakly. 260.58/73.07 Used ordering: Matrix interpretation [MATRO]: 260.58/73.07 260.58/73.07 Non-tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( pairs ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( activate_1(x_1) ) = [[1], [1]] + [[0, 1], [1, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__nats ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( down_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( 0 ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( fresh_constant ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( up_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( n__odds ) = [[0], [0]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( odds ) = [[0], [1]] 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( tail_flat_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 <<< 260.58/73.07 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 Tuple symbols: 260.58/73.07 <<< 260.58/73.07 M( TOP_1(x_1) ) = [[0]] + [[1, 0]] * x_1 260.58/73.07 >>> 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 Matrix type: 260.58/73.07 260.58/73.07 We used a basic matrix type which is not further parametrizeable. 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 260.58/73.07 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.07 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (42) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.08 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.08 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.08 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.08 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.08 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.08 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.08 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.08 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.08 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.08 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.08 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (43) QDPOrderProof (EQUIVALENT) 260.58/73.08 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.08 260.58/73.08 260.58/73.08 The following pairs can be oriented strictly and are deleted. 260.58/73.08 260.58/73.08 TOP(up(head(activate(x0)))) -> TOP(head_flat(down(activate(x0)))) 260.58/73.08 The remaining pairs can at least be oriented weakly. 260.58/73.08 Used ordering: Matrix interpretation [MATRO]: 260.58/73.08 260.58/73.08 Non-tuple symbols: 260.58/73.08 <<< 260.58/73.08 M( nats ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( pairs ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( head_1(x_1) ) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( activate_1(x_1) ) = [[1], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__nats ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( tail_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( down_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( 0 ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( fresh_constant ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( up_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__odds ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( odds ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( tail_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( head_flat_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 Tuple symbols: 260.58/73.08 <<< 260.58/73.08 M( TOP_1(x_1) ) = [[0]] + [[1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 Matrix type: 260.58/73.08 260.58/73.08 We used a basic matrix type which is not further parametrizeable. 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.08 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (44) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.08 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.08 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.08 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.08 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.08 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.08 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.08 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.08 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.08 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.08 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (45) QDPOrderProof (EQUIVALENT) 260.58/73.08 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.08 260.58/73.08 260.58/73.08 The following pairs can be oriented strictly and are deleted. 260.58/73.08 260.58/73.08 TOP(up(head(incr(x0)))) -> TOP(head_flat(down(incr(x0)))) 260.58/73.08 The remaining pairs can at least be oriented weakly. 260.58/73.08 Used ordering: Matrix interpretation [MATRO]: 260.58/73.08 260.58/73.08 Non-tuple symbols: 260.58/73.08 <<< 260.58/73.08 M( nats ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( pairs ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( head_1(x_1) ) = [[1], [1]] + [[1, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( incr_1(x_1) ) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( activate_1(x_1) ) = [[1], [1]] + [[1, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__nats ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( tail_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( down_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( 0 ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( fresh_constant ) = [[1], [1]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( up_1(x_1) ) = [[0], [0]] + [[0, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__odds ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( odds ) = [[1], [1]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( tail_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( head_flat_1(x_1) ) = [[0], [1]] + [[0, 0], [0, 1]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 Tuple symbols: 260.58/73.08 <<< 260.58/73.08 M( TOP_1(x_1) ) = [[0]] + [[0, 1]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 Matrix type: 260.58/73.08 260.58/73.08 We used a basic matrix type which is not further parametrizeable. 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.08 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (46) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.08 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.08 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.08 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.08 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.08 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.08 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.08 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.08 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.08 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (47) QDPOrderProof (EQUIVALENT) 260.58/73.08 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.08 260.58/73.08 260.58/73.08 The following pairs can be oriented strictly and are deleted. 260.58/73.08 260.58/73.08 TOP(up(tail(incr(x0)))) -> TOP(tail_flat(down(incr(x0)))) 260.58/73.08 The remaining pairs can at least be oriented weakly. 260.58/73.08 Used ordering: Matrix interpretation [MATRO]: 260.58/73.08 260.58/73.08 Non-tuple symbols: 260.58/73.08 <<< 260.58/73.08 M( nats ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( s_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( pairs ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( head_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( incr_1(x_1) ) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( activate_1(x_1) ) = [[1], [1]] + [[1, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__nats ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( s_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( tail_1(x_1) ) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__incr_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( down_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( 0 ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( fresh_constant ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( up_1(x_1) ) = [[0], [0]] + [[0, 0], [1, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( n__odds ) = [[0], [0]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( odds ) = [[1], [1]] 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( tail_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [1, 1]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 <<< 260.58/73.08 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 Tuple symbols: 260.58/73.08 <<< 260.58/73.08 M( TOP_1(x_1) ) = [[0]] + [[0, 1]] * x_1 260.58/73.08 >>> 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 Matrix type: 260.58/73.08 260.58/73.08 We used a basic matrix type which is not further parametrizeable. 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 260.58/73.08 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.08 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (48) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.08 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.08 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.08 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.08 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.08 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.08 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.08 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.08 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (49) SplitQDPProof (EQUIVALENT) 260.58/73.08 We show in the first subproof that some pairs and rules can be removed, afterwards, we continue with the remaining DP-Problem 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (50) 260.58/73.08 Complex Obligation (AND) 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (51) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.08 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.08 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.08 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.08 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.08 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.08 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.08 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.08 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.08 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.08 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.08 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.08 down(odds) -> up(incr(pairs)) 260.58/73.08 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.08 down(incr(X)) -> up(n__incr(X)) 260.58/73.08 down(nats) -> up(n__nats) 260.58/73.08 down(odds) -> up(n__odds) 260.58/73.08 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.08 down(activate(n__nats)) -> up(nats) 260.58/73.08 down(activate(n__odds)) -> up(odds) 260.58/73.08 down(activate(X)) -> up(X) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.08 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.08 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.08 down(s(y4)) -> s_flat(down(y4)) 260.58/73.08 down(head(nats)) -> head_flat(down(nats)) 260.58/73.08 down(head(0)) -> head_flat(down(0)) 260.58/73.08 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.08 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.08 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.08 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.08 down(head(odds)) -> head_flat(down(odds)) 260.58/73.08 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.08 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.08 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.08 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.08 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.08 down(head(fresh_constant)) -> head_flat(down(fresh_constant)) 260.58/73.08 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.08 down(tail(0)) -> tail_flat(down(0)) 260.58/73.08 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.08 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.08 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.08 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.08 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.08 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.08 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.08 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.08 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.08 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.08 down(tail(fresh_constant)) -> tail_flat(down(fresh_constant)) 260.58/73.08 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.08 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.08 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.08 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.08 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (52) SemLabProof (SOUND) 260.58/73.08 We found the following model for the rules of the TRSs R and P. 260.58/73.08 Interpretation over the domain with elements from 0 to 1. 260.58/73.08 s_flat: 0 260.58/73.08 nats: 0 260.58/73.08 pairs: 0 260.58/73.08 block: 0 260.58/73.08 n__incr_flat: 0 260.58/73.08 head: 0 260.58/73.08 cons_flat: 0 260.58/73.08 incr: 0 260.58/73.08 activate: 0 260.58/73.08 TOP: 0 260.58/73.08 n__nats: 0 260.58/73.08 s: 0 260.58/73.08 tail: 0 260.58/73.08 n__incr: 0 260.58/73.08 down: 0 260.58/73.08 0: 0 260.58/73.08 fresh_constant: 1 260.58/73.08 up: 0 260.58/73.08 n__odds: 0 260.58/73.08 odds: 0 260.58/73.08 tail_flat: 0 260.58/73.08 cons: 0 260.58/73.08 head_flat: 0 260.58/73.08 By semantic labelling [SEMLAB] we obtain the following labelled QDP problem. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (53) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.1(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.1(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.1(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-1(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.1(x1))) 260.58/73.08 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(n__incr.1(x0))) -> TOP.0(n__incr_flat.0(down.1(x0))) 260.58/73.08 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(s.1(x0))) -> TOP.0(s_flat.0(down.1(x0))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.1(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.1(x0)))) -> TOP.0(head_flat.0(down.0(tail.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.1(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.1(x0)))) -> TOP.0(tail_flat.0(down.0(tail.1(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.08 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.08 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.08 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(cons.1-0(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.1-1(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.08 down.0(incr.1(X)) -> up.0(n__incr.1(X)) 260.58/73.08 down.0(nats.) -> up.0(n__nats.) 260.58/73.08 down.0(odds.) -> up.0(n__odds.) 260.58/73.08 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.08 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.08 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.08 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.08 down.0(activate.0(X)) -> up.0(X) 260.58/73.08 down.0(activate.1(X)) -> up.1(X) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(down.1(y0), block.0(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(down.1(y0), block.1(y1)) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(block.0(y0), down.1(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(block.1(y0), down.1(y1)) 260.58/73.08 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.08 down.0(n__incr.1(y2)) -> n__incr_flat.0(down.1(y2)) 260.58/73.08 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.08 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.08 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.08 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.08 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.08 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.08 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.08 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.08 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.08 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.08 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.08 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.08 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.08 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.08 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.08 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.08 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.08 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.08 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.08 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.08 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.08 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.08 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.08 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.08 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.08 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.08 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.08 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.08 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.08 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.08 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.08 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.08 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.08 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.08 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.08 down.0(tail.1(fresh_constant.)) -> tail_flat.0(down.1(fresh_constant.)) 260.58/73.08 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.08 tail_flat.0(up.1(x_1)) -> up.0(tail.1(x_1)) 260.58/73.08 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.08 head_flat.0(up.1(x_1)) -> up.0(head.1(x_1)) 260.58/73.08 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.08 s_flat.0(up.1(x_1)) -> up.0(s.1(x_1)) 260.58/73.08 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.08 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.1(x_2)) -> up.0(cons.1-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.1(x_2)) -> up.0(cons.1-1(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (54) DependencyGraphProof (EQUIVALENT) 260.58/73.08 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 6 less nodes. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (55) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.1(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.1(x0)))) -> TOP.0(head_flat.0(down.0(tail.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.1(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.1(x0)))) -> TOP.0(tail_flat.0(down.0(tail.1(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.08 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.08 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.08 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(cons.1-0(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.1-1(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.08 down.0(incr.1(X)) -> up.0(n__incr.1(X)) 260.58/73.08 down.0(nats.) -> up.0(n__nats.) 260.58/73.08 down.0(odds.) -> up.0(n__odds.) 260.58/73.08 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.08 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.08 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.08 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.08 down.0(activate.0(X)) -> up.0(X) 260.58/73.08 down.0(activate.1(X)) -> up.1(X) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(down.1(y0), block.0(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(down.1(y0), block.1(y1)) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(block.0(y0), down.1(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(block.1(y0), down.1(y1)) 260.58/73.08 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.08 down.0(n__incr.1(y2)) -> n__incr_flat.0(down.1(y2)) 260.58/73.08 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.08 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.08 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.08 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.08 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.08 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.08 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.08 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.08 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.08 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.08 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.08 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.08 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.08 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.08 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.08 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.08 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.08 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.08 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.08 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.08 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.08 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.08 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.08 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.08 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.08 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.08 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.08 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.08 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.08 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.08 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.08 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.08 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.08 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.08 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.08 down.0(tail.1(fresh_constant.)) -> tail_flat.0(down.1(fresh_constant.)) 260.58/73.08 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.08 tail_flat.0(up.1(x_1)) -> up.0(tail.1(x_1)) 260.58/73.08 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.08 head_flat.0(up.1(x_1)) -> up.0(head.1(x_1)) 260.58/73.08 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.08 s_flat.0(up.1(x_1)) -> up.0(s.1(x_1)) 260.58/73.08 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.08 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.1(x_2)) -> up.0(cons.1-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.1(x_2)) -> up.0(cons.1-1(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (56) MRRProof (EQUIVALENT) 260.58/73.08 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. 260.58/73.08 260.58/73.08 260.58/73.08 Strictly oriented rules of the TRS R: 260.58/73.08 260.58/73.08 down.0(incr.0(cons.1-0(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(down.1(y0), block.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(block.0(y0), down.1(y1)) 260.58/73.08 down.0(n__incr.1(y2)) -> n__incr_flat.0(down.1(y2)) 260.58/73.08 tail_flat.0(up.1(x_1)) -> up.0(tail.1(x_1)) 260.58/73.08 head_flat.0(up.1(x_1)) -> up.0(head.1(x_1)) 260.58/73.08 s_flat.0(up.1(x_1)) -> up.0(s.1(x_1)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.1(x_2)) -> up.0(cons.1-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.1(x_2)) -> up.0(cons.1-1(x_1, x_2)) 260.58/73.08 260.58/73.08 Used ordering: Polynomial interpretation [POLO]: 260.58/73.08 260.58/73.08 POL(0.) = 0 260.58/73.08 POL(TOP.0(x_1)) = x_1 260.58/73.08 POL(activate.0(x_1)) = x_1 260.58/73.08 POL(activate.1(x_1)) = 1 + x_1 260.58/73.08 POL(block.0(x_1)) = x_1 260.58/73.08 POL(block.1(x_1)) = 1 + x_1 260.58/73.08 POL(cons.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.08 POL(cons.0-1(x_1, x_2)) = 1 + x_1 + x_2 260.58/73.08 POL(cons.1-0(x_1, x_2)) = 1 + x_1 + x_2 260.58/73.08 POL(cons.1-1(x_1, x_2)) = 1 + x_1 + x_2 260.58/73.08 POL(cons_flat.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.08 POL(down.0(x_1)) = x_1 260.58/73.08 POL(down.1(x_1)) = x_1 260.58/73.08 POL(fresh_constant.) = 0 260.58/73.08 POL(head.0(x_1)) = x_1 260.58/73.08 POL(head.1(x_1)) = x_1 260.58/73.08 POL(head_flat.0(x_1)) = x_1 260.58/73.08 POL(incr.0(x_1)) = x_1 260.58/73.08 POL(incr.1(x_1)) = 1 + x_1 260.58/73.08 POL(n__incr.0(x_1)) = x_1 260.58/73.08 POL(n__incr.1(x_1)) = 1 + x_1 260.58/73.08 POL(n__incr_flat.0(x_1)) = x_1 260.58/73.08 POL(n__nats.) = 0 260.58/73.08 POL(n__odds.) = 0 260.58/73.08 POL(nats.) = 0 260.58/73.08 POL(odds.) = 0 260.58/73.08 POL(pairs.) = 0 260.58/73.08 POL(s.0(x_1)) = x_1 260.58/73.08 POL(s.1(x_1)) = x_1 260.58/73.08 POL(s_flat.0(x_1)) = x_1 260.58/73.08 POL(tail.0(x_1)) = x_1 260.58/73.08 POL(tail.1(x_1)) = x_1 260.58/73.08 POL(tail_flat.0(x_1)) = x_1 260.58/73.08 POL(up.0(x_1)) = x_1 260.58/73.08 POL(up.1(x_1)) = 1 + x_1 260.58/73.08 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (57) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.1(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.1(x0)))) -> TOP.0(head_flat.0(down.0(tail.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.1(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.1(x0)))) -> TOP.0(tail_flat.0(down.0(tail.1(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.08 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.08 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.08 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(cons.1-1(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.08 down.0(incr.1(X)) -> up.0(n__incr.1(X)) 260.58/73.08 down.0(nats.) -> up.0(n__nats.) 260.58/73.08 down.0(odds.) -> up.0(n__odds.) 260.58/73.08 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.08 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.08 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.08 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.08 down.0(activate.0(X)) -> up.0(X) 260.58/73.08 down.0(activate.1(X)) -> up.1(X) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(down.1(y0), block.1(y1)) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(block.1(y0), down.1(y1)) 260.58/73.08 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.08 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.08 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.08 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.08 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.08 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.08 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.08 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.08 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.08 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.08 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.08 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.08 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.08 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.08 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.08 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.08 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.08 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.08 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.08 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.08 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.08 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.08 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.08 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.08 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.08 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.08 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.08 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.08 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.08 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.08 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.08 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.08 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.08 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.08 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.08 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.08 down.0(tail.1(fresh_constant.)) -> tail_flat.0(down.1(fresh_constant.)) 260.58/73.08 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.08 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.08 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.08 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.08 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (58) DependencyGraphProof (EQUIVALENT) 260.58/73.08 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (59) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.1(x0)))) -> TOP.0(head_flat.0(down.0(tail.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.1(x0)))) -> TOP.0(tail_flat.0(down.0(tail.1(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.08 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.08 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.08 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(cons.1-1(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.08 down.0(incr.1(X)) -> up.0(n__incr.1(X)) 260.58/73.08 down.0(nats.) -> up.0(n__nats.) 260.58/73.08 down.0(odds.) -> up.0(n__odds.) 260.58/73.08 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.08 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.08 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.08 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.08 down.0(activate.0(X)) -> up.0(X) 260.58/73.08 down.0(activate.1(X)) -> up.1(X) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(down.1(y0), block.1(y1)) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(block.1(y0), down.1(y1)) 260.58/73.08 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.08 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.08 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.08 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.08 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.08 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.08 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.08 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.08 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.08 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.08 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.08 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.08 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.08 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.08 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.08 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.08 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.08 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.08 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.08 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.08 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.08 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.08 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.08 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.08 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.08 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.08 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.08 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.08 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.08 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.08 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.08 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.08 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.08 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.08 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.08 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.08 down.0(tail.1(fresh_constant.)) -> tail_flat.0(down.1(fresh_constant.)) 260.58/73.08 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.08 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.08 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.08 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.08 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (60) UsableRulesReductionPairsProof (EQUIVALENT) 260.58/73.08 By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. 260.58/73.08 260.58/73.08 No dependency pairs are removed. 260.58/73.08 260.58/73.08 The following rules are removed from R: 260.58/73.08 260.58/73.08 down.0(incr.0(cons.1-1(X, XS))) -> up.0(cons.0-0(s.1(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.1(X)) -> up.0(n__incr.1(X)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(down.1(y0), block.1(y1)) 260.58/73.08 down.0(cons.1-1(y0, y1)) -> cons_flat.0-0(block.1(y0), down.1(y1)) 260.58/73.08 down.0(tail.1(fresh_constant.)) -> tail_flat.0(down.1(fresh_constant.)) 260.58/73.08 Used ordering: POLO with Polynomial interpretation [POLO]: 260.58/73.08 260.58/73.08 POL(0.) = 0 260.58/73.08 POL(TOP.0(x_1)) = x_1 260.58/73.08 POL(activate.0(x_1)) = x_1 260.58/73.08 POL(activate.1(x_1)) = x_1 260.58/73.08 POL(block.0(x_1)) = x_1 260.58/73.08 POL(block.1(x_1)) = x_1 260.58/73.08 POL(cons.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.08 POL(cons.0-1(x_1, x_2)) = x_1 + x_2 260.58/73.08 POL(cons.1-0(x_1, x_2)) = x_1 + x_2 260.58/73.08 POL(cons.1-1(x_1, x_2)) = 1 + x_1 + x_2 260.58/73.08 POL(cons_flat.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.08 POL(down.0(x_1)) = x_1 260.58/73.08 POL(down.1(x_1)) = x_1 260.58/73.08 POL(fresh_constant.) = 0 260.58/73.08 POL(head.0(x_1)) = 1 + x_1 260.58/73.08 POL(head.1(x_1)) = 1 + x_1 260.58/73.08 POL(head_flat.0(x_1)) = 1 + x_1 260.58/73.08 POL(incr.0(x_1)) = x_1 260.58/73.08 POL(incr.1(x_1)) = 1 + x_1 260.58/73.08 POL(n__incr.0(x_1)) = x_1 260.58/73.08 POL(n__incr.1(x_1)) = x_1 260.58/73.08 POL(n__incr_flat.0(x_1)) = x_1 260.58/73.08 POL(n__nats.) = 0 260.58/73.08 POL(n__odds.) = 0 260.58/73.08 POL(nats.) = 0 260.58/73.08 POL(odds.) = 0 260.58/73.08 POL(pairs.) = 0 260.58/73.08 POL(s.0(x_1)) = x_1 260.58/73.08 POL(s.1(x_1)) = x_1 260.58/73.08 POL(s_flat.0(x_1)) = x_1 260.58/73.08 POL(tail.0(x_1)) = x_1 260.58/73.08 POL(tail.1(x_1)) = 1 + x_1 260.58/73.08 POL(tail_flat.0(x_1)) = x_1 260.58/73.08 POL(up.0(x_1)) = x_1 260.58/73.08 POL(up.1(x_1)) = x_1 260.58/73.08 260.58/73.08 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (61) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.1(x0)))) -> TOP.0(head_flat.0(down.0(tail.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.1(x0)))) -> TOP.0(tail_flat.0(down.0(tail.1(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.08 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.08 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.08 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.08 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.08 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.08 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.08 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.08 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.08 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.08 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.08 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.08 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.08 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.08 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.08 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.08 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.08 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.08 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.08 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.08 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.08 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.08 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.08 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.08 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.08 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.08 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.08 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.08 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.08 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.08 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.08 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.08 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.08 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.08 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.08 down.0(activate.1(X)) -> up.1(X) 260.58/73.08 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.08 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.08 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.08 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.08 down.0(activate.0(X)) -> up.0(X) 260.58/73.08 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.08 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.08 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.08 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.08 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.08 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.08 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.08 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.08 down.0(nats.) -> up.0(n__nats.) 260.58/73.08 down.0(odds.) -> up.0(n__odds.) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.08 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.08 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.08 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.08 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.08 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.08 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.08 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.08 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.08 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.08 260.58/73.08 Q is empty. 260.58/73.08 We have to consider all minimal (P,Q,R)-chains. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (62) DependencyGraphProof (EQUIVALENT) 260.58/73.08 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 260.58/73.08 ---------------------------------------- 260.58/73.08 260.58/73.08 (63) 260.58/73.08 Obligation: 260.58/73.08 Q DP problem: 260.58/73.08 The TRS P consists of the following rules: 260.58/73.08 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.08 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.08 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.08 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.08 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.08 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.08 260.58/73.08 The TRS R consists of the following rules: 260.58/73.08 260.58/73.08 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.08 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.08 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.08 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.08 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.08 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.08 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.08 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.08 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.08 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.08 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.09 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.09 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.09 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.09 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.09 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.09 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.09 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.09 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.09 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.09 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.09 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.09 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.09 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.09 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.09 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.09 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.09 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.09 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.09 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.09 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.09 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.09 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.09 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.09 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.09 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.09 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.09 down.0(activate.1(X)) -> up.1(X) 260.58/73.09 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.09 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.09 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.09 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.09 down.0(activate.0(X)) -> up.0(X) 260.58/73.09 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.09 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.09 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.09 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.09 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.09 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.09 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.09 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.09 down.0(nats.) -> up.0(n__nats.) 260.58/73.09 down.0(odds.) -> up.0(n__odds.) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.09 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.09 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.09 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.09 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.09 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.09 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.09 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (64) MRRProof (EQUIVALENT) 260.58/73.09 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. 260.58/73.09 260.58/73.09 260.58/73.09 Strictly oriented rules of the TRS R: 260.58/73.09 260.58/73.09 down.0(head.1(fresh_constant.)) -> head_flat.0(down.1(fresh_constant.)) 260.58/73.09 260.58/73.09 Used ordering: Polynomial interpretation [POLO]: 260.58/73.09 260.58/73.09 POL(0.) = 0 260.58/73.09 POL(TOP.0(x_1)) = x_1 260.58/73.09 POL(activate.0(x_1)) = x_1 260.58/73.09 POL(activate.1(x_1)) = x_1 260.58/73.09 POL(block.0(x_1)) = x_1 260.58/73.09 POL(block.1(x_1)) = x_1 260.58/73.09 POL(cons.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(cons.0-1(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(cons.1-0(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(cons_flat.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(down.0(x_1)) = x_1 260.58/73.09 POL(down.1(x_1)) = x_1 260.58/73.09 POL(fresh_constant.) = 0 260.58/73.09 POL(head.0(x_1)) = x_1 260.58/73.09 POL(head.1(x_1)) = 1 + x_1 260.58/73.09 POL(head_flat.0(x_1)) = x_1 260.58/73.09 POL(incr.0(x_1)) = x_1 260.58/73.09 POL(incr.1(x_1)) = x_1 260.58/73.09 POL(n__incr.0(x_1)) = x_1 260.58/73.09 POL(n__incr.1(x_1)) = x_1 260.58/73.09 POL(n__incr_flat.0(x_1)) = x_1 260.58/73.09 POL(n__nats.) = 0 260.58/73.09 POL(n__odds.) = 0 260.58/73.09 POL(nats.) = 0 260.58/73.09 POL(odds.) = 0 260.58/73.09 POL(pairs.) = 0 260.58/73.09 POL(s.0(x_1)) = x_1 260.58/73.09 POL(s.1(x_1)) = x_1 260.58/73.09 POL(s_flat.0(x_1)) = x_1 260.58/73.09 POL(tail.0(x_1)) = x_1 260.58/73.09 POL(tail.1(x_1)) = x_1 260.58/73.09 POL(tail_flat.0(x_1)) = x_1 260.58/73.09 POL(up.0(x_1)) = x_1 260.58/73.09 POL(up.1(x_1)) = x_1 260.58/73.09 260.58/73.09 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (65) 260.58/73.09 Obligation: 260.58/73.09 Q DP problem: 260.58/73.09 The TRS P consists of the following rules: 260.58/73.09 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.09 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.09 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(head.1(x0)))) -> TOP.0(head_flat.0(down.0(head.1(x0)))) 260.58/73.09 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(head.1(x0)))) -> TOP.0(tail_flat.0(down.0(head.1(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.09 260.58/73.09 The TRS R consists of the following rules: 260.58/73.09 260.58/73.09 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.09 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.09 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.09 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.09 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.09 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.09 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.09 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.09 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.09 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.09 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.09 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.09 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.09 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.09 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.09 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.09 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.09 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.09 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.09 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.09 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.09 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.09 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.09 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.09 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.09 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.09 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.09 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.09 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.09 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.09 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.09 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.09 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.09 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.09 down.0(activate.1(X)) -> up.1(X) 260.58/73.09 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.09 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.09 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.09 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.09 down.0(activate.0(X)) -> up.0(X) 260.58/73.09 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.09 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.09 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.09 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.09 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.09 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.09 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.09 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.09 down.0(nats.) -> up.0(n__nats.) 260.58/73.09 down.0(odds.) -> up.0(n__odds.) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.09 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.09 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.09 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.09 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.09 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.09 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.09 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (66) DependencyGraphProof (EQUIVALENT) 260.58/73.09 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (67) 260.58/73.09 Obligation: 260.58/73.09 Q DP problem: 260.58/73.09 The TRS P consists of the following rules: 260.58/73.09 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.09 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.09 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.09 260.58/73.09 The TRS R consists of the following rules: 260.58/73.09 260.58/73.09 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.09 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.09 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.09 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.09 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.09 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.09 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.09 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.09 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.09 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.09 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.09 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.09 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.09 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.09 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.09 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.09 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.09 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.09 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.09 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.09 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.09 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.09 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.09 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.09 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.09 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.09 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.09 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.09 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.09 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.09 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.09 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.09 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.09 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.09 down.0(activate.1(X)) -> up.1(X) 260.58/73.09 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.09 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.09 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.09 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.09 down.0(activate.0(X)) -> up.0(X) 260.58/73.09 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.09 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.09 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.09 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.09 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.09 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.09 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.09 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.09 down.0(nats.) -> up.0(n__nats.) 260.58/73.09 down.0(odds.) -> up.0(n__odds.) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.09 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.09 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.09 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.09 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.09 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.09 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.09 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (68) MRRProof (EQUIVALENT) 260.58/73.09 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. 260.58/73.09 260.58/73.09 260.58/73.09 Strictly oriented rules of the TRS R: 260.58/73.09 260.58/73.09 down.0(s.1(y4)) -> s_flat.0(down.1(y4)) 260.58/73.09 260.58/73.09 Used ordering: Polynomial interpretation [POLO]: 260.58/73.09 260.58/73.09 POL(0.) = 0 260.58/73.09 POL(TOP.0(x_1)) = x_1 260.58/73.09 POL(activate.0(x_1)) = x_1 260.58/73.09 POL(activate.1(x_1)) = x_1 260.58/73.09 POL(block.0(x_1)) = x_1 260.58/73.09 POL(block.1(x_1)) = x_1 260.58/73.09 POL(cons.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(cons.0-1(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(cons.1-0(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(cons_flat.0-0(x_1, x_2)) = x_1 + x_2 260.58/73.09 POL(down.0(x_1)) = x_1 260.58/73.09 POL(down.1(x_1)) = x_1 260.58/73.09 POL(head.0(x_1)) = x_1 260.58/73.09 POL(head.1(x_1)) = x_1 260.58/73.09 POL(head_flat.0(x_1)) = x_1 260.58/73.09 POL(incr.0(x_1)) = x_1 260.58/73.09 POL(incr.1(x_1)) = x_1 260.58/73.09 POL(n__incr.0(x_1)) = x_1 260.58/73.09 POL(n__incr.1(x_1)) = x_1 260.58/73.09 POL(n__incr_flat.0(x_1)) = x_1 260.58/73.09 POL(n__nats.) = 0 260.58/73.09 POL(n__odds.) = 0 260.58/73.09 POL(nats.) = 0 260.58/73.09 POL(odds.) = 0 260.58/73.09 POL(pairs.) = 0 260.58/73.09 POL(s.0(x_1)) = x_1 260.58/73.09 POL(s.1(x_1)) = 1 + x_1 260.58/73.09 POL(s_flat.0(x_1)) = x_1 260.58/73.09 POL(tail.0(x_1)) = x_1 260.58/73.09 POL(tail.1(x_1)) = x_1 260.58/73.09 POL(tail_flat.0(x_1)) = x_1 260.58/73.09 POL(up.0(x_1)) = x_1 260.58/73.09 POL(up.1(x_1)) = x_1 260.58/73.09 260.58/73.09 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (69) 260.58/73.09 Obligation: 260.58/73.09 Q DP problem: 260.58/73.09 The TRS P consists of the following rules: 260.58/73.09 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.09 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.1(x0)))) -> TOP.0(head_flat.0(down.0(s.1(x0)))) 260.58/73.09 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.1(x0)))) -> TOP.0(tail_flat.0(down.0(s.1(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.09 260.58/73.09 The TRS R consists of the following rules: 260.58/73.09 260.58/73.09 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.09 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.09 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.09 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.09 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.09 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.09 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.09 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.09 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.09 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.09 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.09 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.09 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.09 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.09 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.09 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.09 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.09 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.09 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.09 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.09 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.09 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.09 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.09 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.09 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.09 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.09 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.09 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.09 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.09 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.09 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.09 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.09 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.09 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.09 down.0(activate.1(X)) -> up.1(X) 260.58/73.09 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.09 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.09 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.09 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.09 down.0(activate.0(X)) -> up.0(X) 260.58/73.09 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.09 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.09 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.09 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.09 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.09 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.09 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.09 down.0(nats.) -> up.0(n__nats.) 260.58/73.09 down.0(odds.) -> up.0(n__odds.) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.09 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.09 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.09 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.09 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.09 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.09 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.09 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (70) DependencyGraphProof (EQUIVALENT) 260.58/73.09 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (71) 260.58/73.09 Obligation: 260.58/73.09 Q DP problem: 260.58/73.09 The TRS P consists of the following rules: 260.58/73.09 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.0(x1))) 260.58/73.09 TOP.0(up.0(cons.0-1(x0, x1))) -> TOP.0(cons_flat.0-0(down.0(x0), block.1(x1))) 260.58/73.09 TOP.0(up.0(cons.0-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.0(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(cons.1-0(x0, x1))) -> TOP.0(cons_flat.0-0(block.1(x0), down.0(x1))) 260.58/73.09 TOP.0(up.0(n__incr.0(x0))) -> TOP.0(n__incr_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(s.0(x0))) -> TOP.0(s_flat.0(down.0(x0))) 260.58/73.09 TOP.0(up.0(head.0(n__incr.0(x0)))) -> TOP.0(head_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(s.0(x0)))) -> TOP.0(head_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(head.0(x0)))) -> TOP.0(head_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(head.0(tail.0(x0)))) -> TOP.0(head_flat.0(down.0(tail.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(n__incr.0(x0)))) -> TOP.0(tail_flat.0(down.0(n__incr.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(s.0(x0)))) -> TOP.0(tail_flat.0(down.0(s.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(head.0(x0)))) -> TOP.0(tail_flat.0(down.0(head.0(x0)))) 260.58/73.09 TOP.0(up.0(tail.0(tail.0(x0)))) -> TOP.0(tail_flat.0(down.0(tail.0(x0)))) 260.58/73.09 260.58/73.09 The TRS R consists of the following rules: 260.58/73.09 260.58/73.09 tail_flat.0(up.0(x_1)) -> up.0(tail.0(x_1)) 260.58/73.09 down.0(tail.0(nats.)) -> tail_flat.0(down.0(nats.)) 260.58/73.09 down.0(tail.0(0.)) -> tail_flat.0(down.0(0.)) 260.58/73.09 down.0(tail.0(n__incr.0(y20))) -> tail_flat.0(down.0(n__incr.0(y20))) 260.58/73.09 down.0(tail.0(n__incr.1(y20))) -> tail_flat.0(down.0(n__incr.1(y20))) 260.58/73.09 down.0(tail.0(n__nats.)) -> tail_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(tail.0(pairs.)) -> tail_flat.0(down.0(pairs.)) 260.58/73.09 down.0(tail.0(n__odds.)) -> tail_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(tail.0(odds.)) -> tail_flat.0(down.0(odds.)) 260.58/73.09 down.0(tail.0(incr.0(y21))) -> tail_flat.0(down.0(incr.0(y21))) 260.58/73.09 down.0(tail.0(incr.1(y21))) -> tail_flat.0(down.0(incr.1(y21))) 260.58/73.09 down.0(tail.0(s.0(y22))) -> tail_flat.0(down.0(s.0(y22))) 260.58/73.09 down.0(tail.0(s.1(y22))) -> tail_flat.0(down.0(s.1(y22))) 260.58/73.09 down.0(tail.0(activate.0(y23))) -> tail_flat.0(down.0(activate.0(y23))) 260.58/73.09 down.0(tail.0(activate.1(y23))) -> tail_flat.0(down.0(activate.1(y23))) 260.58/73.09 down.0(tail.0(head.0(y24))) -> tail_flat.0(down.0(head.0(y24))) 260.58/73.09 down.0(tail.0(head.1(y24))) -> tail_flat.0(down.0(head.1(y24))) 260.58/73.09 down.0(tail.0(tail.0(y25))) -> tail_flat.0(down.0(tail.0(y25))) 260.58/73.09 down.0(tail.0(tail.1(y25))) -> tail_flat.0(down.0(tail.1(y25))) 260.58/73.09 down.0(head.0(nats.)) -> head_flat.0(down.0(nats.)) 260.58/73.09 down.0(head.0(0.)) -> head_flat.0(down.0(0.)) 260.58/73.09 down.0(head.0(n__incr.0(y11))) -> head_flat.0(down.0(n__incr.0(y11))) 260.58/73.09 down.0(head.0(n__incr.1(y11))) -> head_flat.0(down.0(n__incr.1(y11))) 260.58/73.09 down.0(head.0(n__nats.)) -> head_flat.0(down.0(n__nats.)) 260.58/73.09 down.0(head.0(pairs.)) -> head_flat.0(down.0(pairs.)) 260.58/73.09 down.0(head.0(n__odds.)) -> head_flat.0(down.0(n__odds.)) 260.58/73.09 down.0(head.0(odds.)) -> head_flat.0(down.0(odds.)) 260.58/73.09 down.0(head.0(incr.0(y12))) -> head_flat.0(down.0(incr.0(y12))) 260.58/73.09 down.0(head.0(incr.1(y12))) -> head_flat.0(down.0(incr.1(y12))) 260.58/73.09 down.0(head.0(s.0(y13))) -> head_flat.0(down.0(s.0(y13))) 260.58/73.09 down.0(head.0(s.1(y13))) -> head_flat.0(down.0(s.1(y13))) 260.58/73.09 down.0(head.0(activate.0(y14))) -> head_flat.0(down.0(activate.0(y14))) 260.58/73.09 down.0(head.0(activate.1(y14))) -> head_flat.0(down.0(activate.1(y14))) 260.58/73.09 down.0(head.0(head.0(y15))) -> head_flat.0(down.0(head.0(y15))) 260.58/73.09 down.0(head.0(head.1(y15))) -> head_flat.0(down.0(head.1(y15))) 260.58/73.09 down.0(head.0(tail.0(y16))) -> head_flat.0(down.0(tail.0(y16))) 260.58/73.09 down.0(head.0(tail.1(y16))) -> head_flat.0(down.0(tail.1(y16))) 260.58/73.09 head_flat.0(up.0(x_1)) -> up.0(head.0(x_1)) 260.58/73.09 down.0(activate.1(X)) -> up.1(X) 260.58/73.09 down.0(activate.0(n__incr.0(X))) -> up.0(incr.0(activate.0(X))) 260.58/73.09 down.0(activate.0(n__incr.1(X))) -> up.0(incr.0(activate.1(X))) 260.58/73.09 down.0(activate.0(n__nats.)) -> up.0(nats.) 260.58/73.09 down.0(activate.0(n__odds.)) -> up.0(odds.) 260.58/73.09 down.0(activate.0(X)) -> up.0(X) 260.58/73.09 down.0(s.0(y4)) -> s_flat.0(down.0(y4)) 260.58/73.09 down.0(nats.) -> up.0(cons.0-0(0., n__incr.0(n__nats.))) 260.58/73.09 down.0(pairs.) -> up.0(cons.0-0(0., n__incr.0(n__odds.))) 260.58/73.09 down.0(odds.) -> up.0(incr.0(pairs.)) 260.58/73.09 down.0(incr.0(cons.0-0(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.0(XS)))) 260.58/73.09 down.0(incr.0(cons.0-1(X, XS))) -> up.0(cons.0-0(s.0(X), n__incr.0(activate.1(XS)))) 260.58/73.09 down.0(incr.0(X)) -> up.0(n__incr.0(X)) 260.58/73.09 down.0(nats.) -> up.0(n__nats.) 260.58/73.09 down.0(odds.) -> up.0(n__odds.) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(down.0(y0), block.0(y1)) 260.58/73.09 down.0(cons.0-1(y0, y1)) -> cons_flat.0-0(down.0(y0), block.1(y1)) 260.58/73.09 down.0(cons.0-0(y0, y1)) -> cons_flat.0-0(block.0(y0), down.0(y1)) 260.58/73.09 down.0(cons.1-0(y0, y1)) -> cons_flat.0-0(block.1(y0), down.0(y1)) 260.58/73.09 down.0(n__incr.0(y2)) -> n__incr_flat.0(down.0(y2)) 260.58/73.09 s_flat.0(up.0(x_1)) -> up.0(s.0(x_1)) 260.58/73.09 n__incr_flat.0(up.0(x_1)) -> up.0(n__incr.0(x_1)) 260.58/73.09 n__incr_flat.0(up.1(x_1)) -> up.0(n__incr.1(x_1)) 260.58/73.09 cons_flat.0-0(block.1(x_1), up.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(block.0(x_1), up.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.1(x_2)) -> up.0(cons.0-1(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.0(x_1), block.0(x_2)) -> up.0(cons.0-0(x_1, x_2)) 260.58/73.09 cons_flat.0-0(up.1(x_1), block.0(x_2)) -> up.0(cons.1-0(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (72) PisEmptyProof (SOUND) 260.58/73.09 The TRS P is empty. Hence, there is no (P,Q,R) chain. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (73) 260.58/73.09 TRUE 260.58/73.09 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (74) 260.58/73.09 Obligation: 260.58/73.09 Q DP problem: 260.58/73.09 The TRS P consists of the following rules: 260.58/73.09 260.58/73.09 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.09 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.09 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.09 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.09 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.09 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.09 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.09 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.09 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.09 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.09 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.09 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.09 260.58/73.09 The TRS R consists of the following rules: 260.58/73.09 260.58/73.09 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.09 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.09 down(tail(0)) -> tail_flat(down(0)) 260.58/73.09 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.09 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.09 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.09 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.09 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.09 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.09 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.09 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.09 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.09 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.09 down(head(nats)) -> head_flat(down(nats)) 260.58/73.09 down(head(0)) -> head_flat(down(0)) 260.58/73.09 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.09 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.09 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.09 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.09 down(head(odds)) -> head_flat(down(odds)) 260.58/73.09 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.09 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.09 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.09 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.09 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.09 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.09 down(activate(X)) -> up(X) 260.58/73.09 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.09 down(activate(n__nats)) -> up(nats) 260.58/73.09 down(activate(n__odds)) -> up(odds) 260.58/73.09 down(s(y4)) -> s_flat(down(y4)) 260.58/73.09 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.09 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.09 down(odds) -> up(incr(pairs)) 260.58/73.09 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.09 down(incr(X)) -> up(n__incr(X)) 260.58/73.09 down(nats) -> up(n__nats) 260.58/73.09 down(odds) -> up(n__odds) 260.58/73.09 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.09 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.09 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.09 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.09 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.09 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.09 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (75) QDPOrderProof (EQUIVALENT) 260.58/73.09 We use the reduction pair processor [LPAR04,JAR06]. 260.58/73.09 260.58/73.09 260.58/73.09 The following pairs can be oriented strictly and are deleted. 260.58/73.09 260.58/73.09 TOP(up(cons(x0, x1))) -> TOP(cons_flat(down(x0), block(x1))) 260.58/73.09 TOP(up(cons(x0, x1))) -> TOP(cons_flat(block(x0), down(x1))) 260.58/73.09 TOP(up(n__incr(x0))) -> TOP(n__incr_flat(down(x0))) 260.58/73.09 TOP(up(s(x0))) -> TOP(s_flat(down(x0))) 260.58/73.09 TOP(up(head(n__incr(x0)))) -> TOP(head_flat(down(n__incr(x0)))) 260.58/73.09 TOP(up(head(s(x0)))) -> TOP(head_flat(down(s(x0)))) 260.58/73.09 TOP(up(head(head(x0)))) -> TOP(head_flat(down(head(x0)))) 260.58/73.09 TOP(up(head(tail(x0)))) -> TOP(head_flat(down(tail(x0)))) 260.58/73.09 TOP(up(tail(n__incr(x0)))) -> TOP(tail_flat(down(n__incr(x0)))) 260.58/73.09 TOP(up(tail(s(x0)))) -> TOP(tail_flat(down(s(x0)))) 260.58/73.09 TOP(up(tail(head(x0)))) -> TOP(tail_flat(down(head(x0)))) 260.58/73.09 TOP(up(tail(tail(x0)))) -> TOP(tail_flat(down(tail(x0)))) 260.58/73.09 The remaining pairs can at least be oriented weakly. 260.58/73.09 Used ordering: Matrix interpretation [MATRO]: 260.58/73.09 260.58/73.09 Non-tuple symbols: 260.58/73.09 <<< 260.58/73.09 M( nats ) = [[1], [0]] 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( s_flat_1(x_1) ) = [[1], [0]] + [[1, 1], [1, 1]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( pairs ) = [[1], [0]] 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( block_1(x_1) ) = [[0], [0]] + [[0, 0], [2, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( head_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( n__incr_flat_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( cons_flat_2(x_1, x_2) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 + [[0, 1], [0, 1]] * x_2 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( incr_1(x_1) ) = [[1], [0]] + [[1, 2], [0, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( activate_1(x_1) ) = [[1], [0]] + [[1, 1], [0, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( n__nats ) = [[0], [1]] 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( tail_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( s_1(x_1) ) = [[1], [0]] + [[2, 0], [0, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( n__incr_1(x_1) ) = [[0], [2]] + [[1, 0], [0, 1]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( down_1(x_1) ) = [[1], [1]] + [[2, 0], [2, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( 0 ) = [[0], [0]] 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( n__odds ) = [[0], [3]] 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( odds ) = [[3], [0]] 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( up_1(x_1) ) = [[2], [2]] + [[2, 0], [2, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( tail_flat_1(x_1) ) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( cons_2(x_1, x_2) ) = [[0], [2]] + [[1, 0], [2, 0]] * x_1 + [[1, 0], [0, 2]] * x_2 260.58/73.09 >>> 260.58/73.09 260.58/73.09 <<< 260.58/73.09 M( head_flat_1(x_1) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 Tuple symbols: 260.58/73.09 <<< 260.58/73.09 M( TOP_1(x_1) ) = [[0]] + [[0, 2]] * x_1 260.58/73.09 >>> 260.58/73.09 260.58/73.09 260.58/73.09 260.58/73.09 Matrix type: 260.58/73.09 260.58/73.09 We used a basic matrix type which is not further parametrizeable. 260.58/73.09 260.58/73.09 260.58/73.09 260.58/73.09 260.58/73.09 260.58/73.09 As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. 260.58/73.09 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 260.58/73.09 260.58/73.09 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.09 down(tail(0)) -> tail_flat(down(0)) 260.58/73.09 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.09 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.09 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.09 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.09 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.09 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.09 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.09 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.09 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.09 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.09 down(head(nats)) -> head_flat(down(nats)) 260.58/73.09 down(head(0)) -> head_flat(down(0)) 260.58/73.09 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.09 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.09 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.09 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.09 down(head(odds)) -> head_flat(down(odds)) 260.58/73.09 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.09 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.09 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.09 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.09 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.09 down(activate(X)) -> up(X) 260.58/73.09 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.09 down(activate(n__nats)) -> up(nats) 260.58/73.09 down(activate(n__odds)) -> up(odds) 260.58/73.09 down(s(y4)) -> s_flat(down(y4)) 260.58/73.09 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.09 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.09 down(odds) -> up(incr(pairs)) 260.58/73.09 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.09 down(incr(X)) -> up(n__incr(X)) 260.58/73.09 down(nats) -> up(n__nats) 260.58/73.09 down(odds) -> up(n__odds) 260.58/73.09 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.09 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.09 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.09 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.09 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.09 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.09 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.09 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.09 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.09 260.58/73.09 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (76) 260.58/73.09 Obligation: 260.58/73.09 Q DP problem: 260.58/73.09 P is empty. 260.58/73.09 The TRS R consists of the following rules: 260.58/73.09 260.58/73.09 tail_flat(up(x_1)) -> up(tail(x_1)) 260.58/73.09 down(tail(nats)) -> tail_flat(down(nats)) 260.58/73.09 down(tail(0)) -> tail_flat(down(0)) 260.58/73.09 down(tail(n__incr(y20))) -> tail_flat(down(n__incr(y20))) 260.58/73.09 down(tail(n__nats)) -> tail_flat(down(n__nats)) 260.58/73.09 down(tail(pairs)) -> tail_flat(down(pairs)) 260.58/73.09 down(tail(n__odds)) -> tail_flat(down(n__odds)) 260.58/73.09 down(tail(odds)) -> tail_flat(down(odds)) 260.58/73.09 down(tail(incr(y21))) -> tail_flat(down(incr(y21))) 260.58/73.09 down(tail(s(y22))) -> tail_flat(down(s(y22))) 260.58/73.09 down(tail(activate(y23))) -> tail_flat(down(activate(y23))) 260.58/73.09 down(tail(head(y24))) -> tail_flat(down(head(y24))) 260.58/73.09 down(tail(tail(y25))) -> tail_flat(down(tail(y25))) 260.58/73.09 down(head(nats)) -> head_flat(down(nats)) 260.58/73.09 down(head(0)) -> head_flat(down(0)) 260.58/73.09 down(head(n__incr(y11))) -> head_flat(down(n__incr(y11))) 260.58/73.09 down(head(n__nats)) -> head_flat(down(n__nats)) 260.58/73.09 down(head(pairs)) -> head_flat(down(pairs)) 260.58/73.09 down(head(n__odds)) -> head_flat(down(n__odds)) 260.58/73.09 down(head(odds)) -> head_flat(down(odds)) 260.58/73.09 down(head(incr(y12))) -> head_flat(down(incr(y12))) 260.58/73.09 down(head(s(y13))) -> head_flat(down(s(y13))) 260.58/73.09 down(head(activate(y14))) -> head_flat(down(activate(y14))) 260.58/73.09 down(head(head(y15))) -> head_flat(down(head(y15))) 260.58/73.09 down(head(tail(y16))) -> head_flat(down(tail(y16))) 260.58/73.09 head_flat(up(x_1)) -> up(head(x_1)) 260.58/73.09 down(activate(X)) -> up(X) 260.58/73.09 down(activate(n__incr(X))) -> up(incr(activate(X))) 260.58/73.09 down(activate(n__nats)) -> up(nats) 260.58/73.09 down(activate(n__odds)) -> up(odds) 260.58/73.09 down(s(y4)) -> s_flat(down(y4)) 260.58/73.09 down(nats) -> up(cons(0, n__incr(n__nats))) 260.58/73.09 down(pairs) -> up(cons(0, n__incr(n__odds))) 260.58/73.09 down(odds) -> up(incr(pairs)) 260.58/73.09 down(incr(cons(X, XS))) -> up(cons(s(X), n__incr(activate(XS)))) 260.58/73.09 down(incr(X)) -> up(n__incr(X)) 260.58/73.09 down(nats) -> up(n__nats) 260.58/73.09 down(odds) -> up(n__odds) 260.58/73.09 down(cons(y0, y1)) -> cons_flat(down(y0), block(y1)) 260.58/73.09 down(cons(y0, y1)) -> cons_flat(block(y0), down(y1)) 260.58/73.09 down(n__incr(y2)) -> n__incr_flat(down(y2)) 260.58/73.09 s_flat(up(x_1)) -> up(s(x_1)) 260.58/73.09 n__incr_flat(up(x_1)) -> up(n__incr(x_1)) 260.58/73.09 cons_flat(block(x_1), up(x_2)) -> up(cons(x_1, x_2)) 260.58/73.09 cons_flat(up(x_1), block(x_2)) -> up(cons(x_1, x_2)) 260.58/73.09 260.58/73.09 Q is empty. 260.58/73.09 We have to consider all minimal (P,Q,R)-chains. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (77) PisEmptyProof (EQUIVALENT) 260.58/73.09 The TRS P is empty. Hence, there is no (P,Q,R) chain. 260.58/73.09 ---------------------------------------- 260.58/73.09 260.58/73.09 (78) 260.58/73.09 YES 260.77/73.16 EOF