311.78/291.52 WORST_CASE(Omega(n^1), ?) 311.86/291.53 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 311.86/291.53 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 311.86/291.53 311.86/291.53 311.86/291.53 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 311.86/291.53 311.86/291.53 (0) CpxTRS 311.86/291.53 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 311.86/291.53 (2) CpxTRS 311.86/291.53 (3) SlicingProof [LOWER BOUND(ID), 0 ms] 311.86/291.53 (4) CpxTRS 311.86/291.53 (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 311.86/291.53 (6) typed CpxTrs 311.86/291.53 (7) OrderProof [LOWER BOUND(ID), 0 ms] 311.86/291.53 (8) typed CpxTrs 311.86/291.53 (9) RewriteLemmaProof [LOWER BOUND(ID), 325 ms] 311.86/291.53 (10) BEST 311.86/291.53 (11) proven lower bound 311.86/291.53 (12) LowerBoundPropagationProof [FINISHED, 0 ms] 311.86/291.53 (13) BOUNDS(n^1, INF) 311.86/291.53 (14) typed CpxTrs 311.86/291.53 (15) RewriteLemmaProof [LOWER BOUND(ID), 42 ms] 311.86/291.53 (16) typed CpxTrs 311.86/291.53 (17) RewriteLemmaProof [LOWER BOUND(ID), 27 ms] 311.86/291.53 (18) typed CpxTrs 311.86/291.53 (19) RewriteLemmaProof [LOWER BOUND(ID), 0 ms] 311.86/291.53 (20) typed CpxTrs 311.86/291.53 (21) RewriteLemmaProof [LOWER BOUND(ID), 5 ms] 311.86/291.53 (22) typed CpxTrs 311.86/291.53 (23) RewriteLemmaProof [LOWER BOUND(ID), 2225 ms] 311.86/291.53 (24) typed CpxTrs 311.86/291.53 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (0) 311.86/291.53 Obligation: 311.86/291.53 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 311.86/291.53 311.86/291.53 311.86/291.53 The TRS R consists of the following rules: 311.86/291.53 311.86/291.53 fstsplit(0, x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0, x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0, m) -> true 311.86/291.53 leq(s(n), 0) -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(pid, nil) -> nil 311.86/291.53 map_f(pid, cons(h, t)) -> app(f(pid, h), map_f(pid, t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 S is empty. 311.86/291.53 Rewrite Strategy: FULL 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 311.86/291.53 Renamed function symbols to avoid clashes with predefined symbol. 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (2) 311.86/291.53 Obligation: 311.86/291.53 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 311.86/291.53 311.86/291.53 311.86/291.53 The TRS R consists of the following rules: 311.86/291.53 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(pid, nil) -> nil 311.86/291.53 map_f(pid, cons(h, t)) -> app(f(pid, h), map_f(pid, t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 S is empty. 311.86/291.53 Rewrite Strategy: FULL 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (3) SlicingProof (LOWER BOUND(ID)) 311.86/291.53 Sliced the following arguments: 311.86/291.53 map_f/0 311.86/291.53 f/0 311.86/291.53 f/1 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (4) 311.86/291.53 Obligation: 311.86/291.53 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 311.86/291.53 311.86/291.53 311.86/291.53 The TRS R consists of the following rules: 311.86/291.53 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 S is empty. 311.86/291.53 Rewrite Strategy: FULL 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 311.86/291.53 Infered types. 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (6) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (7) OrderProof (LOWER BOUND(ID)) 311.86/291.53 Heuristically decided to analyse the following defined symbols: 311.86/291.53 fstsplit, sndsplit, leq, length, app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 fstsplit < ring 311.86/291.53 sndsplit < ring 311.86/291.53 leq < ring 311.86/291.53 length < ring 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (8) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 fstsplit, sndsplit, leq, length, app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 fstsplit < ring 311.86/291.53 sndsplit < ring 311.86/291.53 leq < ring 311.86/291.53 length < ring 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (9) RewriteLemmaProof (LOWER BOUND(ID)) 311.86/291.53 Proved the following rewrite lemma: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 311.86/291.53 Induction Base: 311.86/291.53 fstsplit(gen_0':s6_0(0), gen_nil:cons:f5_0(0)) ->_R^Omega(1) 311.86/291.53 nil 311.86/291.53 311.86/291.53 Induction Step: 311.86/291.53 fstsplit(gen_0':s6_0(+(n8_0, 1)), gen_nil:cons:f5_0(+(n8_0, 1))) ->_R^Omega(1) 311.86/291.53 cons(nil, fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0))) ->_IH 311.86/291.53 cons(nil, gen_nil:cons:f5_0(c9_0)) 311.86/291.53 311.86/291.53 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (10) 311.86/291.53 Complex Obligation (BEST) 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (11) 311.86/291.53 Obligation: 311.86/291.53 Proved the lower bound n^1 for the following obligation: 311.86/291.53 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 fstsplit, sndsplit, leq, length, app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 fstsplit < ring 311.86/291.53 sndsplit < ring 311.86/291.53 leq < ring 311.86/291.53 length < ring 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (12) LowerBoundPropagationProof (FINISHED) 311.86/291.53 Propagated lower bound. 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (13) 311.86/291.53 BOUNDS(n^1, INF) 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (14) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Lemmas: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 sndsplit, leq, length, app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 sndsplit < ring 311.86/291.53 leq < ring 311.86/291.53 length < ring 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (15) RewriteLemmaProof (LOWER BOUND(ID)) 311.86/291.53 Proved the following rewrite lemma: 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) -> gen_nil:cons:f5_0(0), rt in Omega(1 + n638_0) 311.86/291.53 311.86/291.53 Induction Base: 311.86/291.53 sndsplit(gen_0':s6_0(0), gen_nil:cons:f5_0(0)) ->_R^Omega(1) 311.86/291.53 gen_nil:cons:f5_0(0) 311.86/291.53 311.86/291.53 Induction Step: 311.86/291.53 sndsplit(gen_0':s6_0(+(n638_0, 1)), gen_nil:cons:f5_0(+(n638_0, 1))) ->_R^Omega(1) 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) ->_IH 311.86/291.53 gen_nil:cons:f5_0(0) 311.86/291.53 311.86/291.53 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (16) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Lemmas: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) -> gen_nil:cons:f5_0(0), rt in Omega(1 + n638_0) 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 leq, length, app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 leq < ring 311.86/291.53 length < ring 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (17) RewriteLemmaProof (LOWER BOUND(ID)) 311.86/291.53 Proved the following rewrite lemma: 311.86/291.53 leq(gen_0':s6_0(n1339_0), gen_0':s6_0(n1339_0)) -> true, rt in Omega(1 + n1339_0) 311.86/291.53 311.86/291.53 Induction Base: 311.86/291.53 leq(gen_0':s6_0(0), gen_0':s6_0(0)) ->_R^Omega(1) 311.86/291.53 true 311.86/291.53 311.86/291.53 Induction Step: 311.86/291.53 leq(gen_0':s6_0(+(n1339_0, 1)), gen_0':s6_0(+(n1339_0, 1))) ->_R^Omega(1) 311.86/291.53 leq(gen_0':s6_0(n1339_0), gen_0':s6_0(n1339_0)) ->_IH 311.86/291.53 true 311.86/291.53 311.86/291.53 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (18) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Lemmas: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) -> gen_nil:cons:f5_0(0), rt in Omega(1 + n638_0) 311.86/291.53 leq(gen_0':s6_0(n1339_0), gen_0':s6_0(n1339_0)) -> true, rt in Omega(1 + n1339_0) 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 length, app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 length < ring 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (19) RewriteLemmaProof (LOWER BOUND(ID)) 311.86/291.53 Proved the following rewrite lemma: 311.86/291.53 length(gen_nil:cons:f5_0(n1752_0)) -> gen_0':s6_0(n1752_0), rt in Omega(1 + n1752_0) 311.86/291.53 311.86/291.53 Induction Base: 311.86/291.53 length(gen_nil:cons:f5_0(0)) ->_R^Omega(1) 311.86/291.53 0' 311.86/291.53 311.86/291.53 Induction Step: 311.86/291.53 length(gen_nil:cons:f5_0(+(n1752_0, 1))) ->_R^Omega(1) 311.86/291.53 s(length(gen_nil:cons:f5_0(n1752_0))) ->_IH 311.86/291.53 s(gen_0':s6_0(c1753_0)) 311.86/291.53 311.86/291.53 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (20) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Lemmas: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) -> gen_nil:cons:f5_0(0), rt in Omega(1 + n638_0) 311.86/291.53 leq(gen_0':s6_0(n1339_0), gen_0':s6_0(n1339_0)) -> true, rt in Omega(1 + n1339_0) 311.86/291.53 length(gen_nil:cons:f5_0(n1752_0)) -> gen_0':s6_0(n1752_0), rt in Omega(1 + n1752_0) 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 app, map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 app < map_f 311.86/291.53 app < ring 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (21) RewriteLemmaProof (LOWER BOUND(ID)) 311.86/291.53 Proved the following rewrite lemma: 311.86/291.53 app(gen_nil:cons:f5_0(n2110_0), gen_nil:cons:f5_0(b)) -> gen_nil:cons:f5_0(+(n2110_0, b)), rt in Omega(1 + n2110_0) 311.86/291.53 311.86/291.53 Induction Base: 311.86/291.53 app(gen_nil:cons:f5_0(0), gen_nil:cons:f5_0(b)) ->_R^Omega(1) 311.86/291.53 gen_nil:cons:f5_0(b) 311.86/291.53 311.86/291.53 Induction Step: 311.86/291.53 app(gen_nil:cons:f5_0(+(n2110_0, 1)), gen_nil:cons:f5_0(b)) ->_R^Omega(1) 311.86/291.53 cons(nil, app(gen_nil:cons:f5_0(n2110_0), gen_nil:cons:f5_0(b))) ->_IH 311.86/291.53 cons(nil, gen_nil:cons:f5_0(+(b, c2111_0))) 311.86/291.53 311.86/291.53 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (22) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Lemmas: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) -> gen_nil:cons:f5_0(0), rt in Omega(1 + n638_0) 311.86/291.53 leq(gen_0':s6_0(n1339_0), gen_0':s6_0(n1339_0)) -> true, rt in Omega(1 + n1339_0) 311.86/291.53 length(gen_nil:cons:f5_0(n1752_0)) -> gen_0':s6_0(n1752_0), rt in Omega(1 + n1752_0) 311.86/291.53 app(gen_nil:cons:f5_0(n2110_0), gen_nil:cons:f5_0(b)) -> gen_nil:cons:f5_0(+(n2110_0, b)), rt in Omega(1 + n2110_0) 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 map_f, ring 311.86/291.53 311.86/291.53 They will be analysed ascendingly in the following order: 311.86/291.53 map_f < ring 311.86/291.53 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (23) RewriteLemmaProof (LOWER BOUND(ID)) 311.86/291.53 Proved the following rewrite lemma: 311.86/291.53 map_f(gen_nil:cons:f5_0(+(1, n3259_0))) -> *7_0, rt in Omega(n3259_0) 311.86/291.53 311.86/291.53 Induction Base: 311.86/291.53 map_f(gen_nil:cons:f5_0(+(1, 0))) 311.86/291.53 311.86/291.53 Induction Step: 311.86/291.53 map_f(gen_nil:cons:f5_0(+(1, +(n3259_0, 1)))) ->_R^Omega(1) 311.86/291.53 app(f, map_f(gen_nil:cons:f5_0(+(1, n3259_0)))) ->_IH 311.86/291.53 app(f, *7_0) 311.86/291.53 311.86/291.53 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 311.86/291.53 ---------------------------------------- 311.86/291.53 311.86/291.53 (24) 311.86/291.53 Obligation: 311.86/291.53 TRS: 311.86/291.53 Rules: 311.86/291.53 fstsplit(0', x) -> nil 311.86/291.53 fstsplit(s(n), nil) -> nil 311.86/291.53 fstsplit(s(n), cons(h, t)) -> cons(h, fstsplit(n, t)) 311.86/291.53 sndsplit(0', x) -> x 311.86/291.53 sndsplit(s(n), nil) -> nil 311.86/291.53 sndsplit(s(n), cons(h, t)) -> sndsplit(n, t) 311.86/291.53 empty(nil) -> true 311.86/291.53 empty(cons(h, t)) -> false 311.86/291.53 leq(0', m) -> true 311.86/291.53 leq(s(n), 0') -> false 311.86/291.53 leq(s(n), s(m)) -> leq(n, m) 311.86/291.53 length(nil) -> 0' 311.86/291.53 length(cons(h, t)) -> s(length(t)) 311.86/291.53 app(nil, x) -> x 311.86/291.53 app(cons(h, t), x) -> cons(h, app(t, x)) 311.86/291.53 map_f(nil) -> nil 311.86/291.53 map_f(cons(h, t)) -> app(f, map_f(t)) 311.86/291.53 head(cons(h, t)) -> h 311.86/291.53 tail(cons(h, t)) -> t 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) 311.86/291.53 if_1(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, true) -> if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) 311.86/291.53 if_3(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) 311.86/291.53 if_2(st_1, in_2, st_2, in_3, st_3, m, false) -> if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_2)), st_2)))) 311.86/291.53 if_4(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, tail(in_2), sndsplit(m, app(map_f(head(in_2)), st_2)), cons(fstsplit(m, app(map_f(head(in_2)), st_2)), in_3), st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_2)))) 311.86/291.53 if_5(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, tail(in_2), st_2, in_3, st_3, m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, true) -> if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) 311.86/291.53 if_7(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) 311.86/291.53 if_6(st_1, in_2, st_2, in_3, st_3, m, false) -> if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(head(in_3)), st_3)))) 311.86/291.53 if_8(st_1, in_2, st_2, in_3, st_3, m, false) -> ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(head(in_3)), st_3)), m) 311.86/291.53 ring(st_1, in_2, st_2, in_3, st_3, m) -> if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(head(in_3)))) 311.86/291.53 if_9(st_1, in_2, st_2, in_3, st_3, m, true) -> ring(st_1, in_2, st_2, tail(in_3), st_3, m) 311.86/291.53 311.86/291.53 Types: 311.86/291.53 fstsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 0' :: 0':s 311.86/291.53 nil :: nil:cons:f 311.86/291.53 s :: 0':s -> 0':s 311.86/291.53 cons :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 sndsplit :: 0':s -> nil:cons:f -> nil:cons:f 311.86/291.53 empty :: nil:cons:f -> true:false 311.86/291.53 true :: true:false 311.86/291.53 false :: true:false 311.86/291.53 leq :: 0':s -> 0':s -> true:false 311.86/291.53 length :: nil:cons:f -> 0':s 311.86/291.53 app :: nil:cons:f -> nil:cons:f -> nil:cons:f 311.86/291.53 map_f :: nil:cons:f -> nil:cons:f 311.86/291.53 f :: nil:cons:f 311.86/291.53 head :: nil:cons:f -> nil:cons:f 311.86/291.53 tail :: nil:cons:f -> nil:cons:f 311.86/291.53 ring :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_1 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_2 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_3 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_4 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_5 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_6 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_7 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_8 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 if_9 :: nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> nil:cons:f -> 0':s -> true:false -> ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 hole_nil:cons:f1_0 :: nil:cons:f 311.86/291.53 hole_0':s2_0 :: 0':s 311.86/291.53 hole_true:false3_0 :: true:false 311.86/291.53 hole_ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_94_0 :: ring:if_1:if_2:if_3:if_4:if_5:if_6:if_7:if_8:if_9 311.86/291.53 gen_nil:cons:f5_0 :: Nat -> nil:cons:f 311.86/291.53 gen_0':s6_0 :: Nat -> 0':s 311.86/291.53 311.86/291.53 311.86/291.53 Lemmas: 311.86/291.53 fstsplit(gen_0':s6_0(n8_0), gen_nil:cons:f5_0(n8_0)) -> gen_nil:cons:f5_0(n8_0), rt in Omega(1 + n8_0) 311.86/291.53 sndsplit(gen_0':s6_0(n638_0), gen_nil:cons:f5_0(n638_0)) -> gen_nil:cons:f5_0(0), rt in Omega(1 + n638_0) 311.86/291.53 leq(gen_0':s6_0(n1339_0), gen_0':s6_0(n1339_0)) -> true, rt in Omega(1 + n1339_0) 311.86/291.53 length(gen_nil:cons:f5_0(n1752_0)) -> gen_0':s6_0(n1752_0), rt in Omega(1 + n1752_0) 311.86/291.53 app(gen_nil:cons:f5_0(n2110_0), gen_nil:cons:f5_0(b)) -> gen_nil:cons:f5_0(+(n2110_0, b)), rt in Omega(1 + n2110_0) 311.86/291.53 map_f(gen_nil:cons:f5_0(+(1, n3259_0))) -> *7_0, rt in Omega(n3259_0) 311.86/291.53 311.86/291.53 311.86/291.53 Generator Equations: 311.86/291.53 gen_nil:cons:f5_0(0) <=> nil 311.86/291.53 gen_nil:cons:f5_0(+(x, 1)) <=> cons(nil, gen_nil:cons:f5_0(x)) 311.86/291.53 gen_0':s6_0(0) <=> 0' 311.86/291.53 gen_0':s6_0(+(x, 1)) <=> s(gen_0':s6_0(x)) 311.86/291.53 311.86/291.53 311.86/291.53 The following defined symbols remain to be analysed: 311.86/291.53 ring 311.86/291.57 EOF