3.74/1.75 YES 3.74/1.76 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 3.74/1.76 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.74/1.76 3.74/1.76 3.74/1.76 Termination w.r.t. Q of the given QTRS could be proven: 3.74/1.76 3.74/1.76 (0) QTRS 3.74/1.76 (1) QTRSRRRProof [EQUIVALENT, 119 ms] 3.74/1.76 (2) QTRS 3.74/1.76 (3) QTRSRRRProof [EQUIVALENT, 0 ms] 3.74/1.76 (4) QTRS 3.74/1.76 (5) RisEmptyProof [EQUIVALENT, 0 ms] 3.74/1.76 (6) YES 3.74/1.76 3.74/1.76 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (0) 3.74/1.76 Obligation: 3.74/1.76 Q restricted rewrite system: 3.74/1.76 The TRS R consists of the following rules: 3.74/1.76 3.74/1.76 a__eq(0, 0) -> true 3.74/1.76 a__eq(s(X), s(Y)) -> a__eq(X, Y) 3.74/1.76 a__eq(X, Y) -> false 3.74/1.76 a__inf(X) -> cons(X, inf(s(X))) 3.74/1.76 a__take(0, X) -> nil 3.74/1.76 a__take(s(X), cons(Y, L)) -> cons(Y, take(X, L)) 3.74/1.76 a__length(nil) -> 0 3.74/1.76 a__length(cons(X, L)) -> s(length(L)) 3.74/1.76 mark(eq(X1, X2)) -> a__eq(X1, X2) 3.74/1.76 mark(inf(X)) -> a__inf(mark(X)) 3.74/1.76 mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) 3.74/1.76 mark(length(X)) -> a__length(mark(X)) 3.74/1.76 mark(0) -> 0 3.74/1.76 mark(true) -> true 3.74/1.76 mark(s(X)) -> s(X) 3.74/1.76 mark(false) -> false 3.74/1.76 mark(cons(X1, X2)) -> cons(X1, X2) 3.74/1.76 mark(nil) -> nil 3.74/1.76 a__eq(X1, X2) -> eq(X1, X2) 3.74/1.76 a__inf(X) -> inf(X) 3.74/1.76 a__take(X1, X2) -> take(X1, X2) 3.74/1.76 a__length(X) -> length(X) 3.74/1.76 3.74/1.76 The set Q consists of the following terms: 3.74/1.76 3.74/1.76 a__eq(x0, x1) 3.74/1.76 a__inf(x0) 3.74/1.76 mark(eq(x0, x1)) 3.74/1.76 mark(inf(x0)) 3.74/1.76 mark(take(x0, x1)) 3.74/1.76 mark(length(x0)) 3.74/1.76 mark(0) 3.74/1.76 mark(true) 3.74/1.76 mark(s(x0)) 3.74/1.76 mark(false) 3.74/1.76 mark(cons(x0, x1)) 3.74/1.76 mark(nil) 3.74/1.76 a__take(x0, x1) 3.74/1.76 a__length(x0) 3.74/1.76 3.74/1.76 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (1) QTRSRRRProof (EQUIVALENT) 3.74/1.76 Used ordering: 3.74/1.76 Quasi precedence: 3.74/1.76 [a__eq_2, a__length_1, length_1, mark_1] > true > [s_1, cons_2, inf_1] 3.74/1.76 [a__eq_2, a__length_1, length_1, mark_1] > false > [s_1, cons_2, inf_1] 3.74/1.76 [a__eq_2, a__length_1, length_1, mark_1] > a__inf_1 > [s_1, cons_2, inf_1] 3.74/1.76 [a__eq_2, a__length_1, length_1, mark_1] > a__take_2 > nil > 0 > [s_1, cons_2, inf_1] 3.74/1.76 [a__eq_2, a__length_1, length_1, mark_1] > a__take_2 > take_2 > [s_1, cons_2, inf_1] 3.74/1.76 [a__eq_2, a__length_1, length_1, mark_1] > eq_2 > [s_1, cons_2, inf_1] 3.74/1.76 3.74/1.76 3.74/1.76 Status: 3.74/1.76 a__eq_2: multiset status 3.74/1.76 0: multiset status 3.74/1.76 true: multiset status 3.74/1.76 s_1: multiset status 3.74/1.76 false: multiset status 3.74/1.76 a__inf_1: multiset status 3.74/1.76 cons_2: multiset status 3.74/1.76 inf_1: multiset status 3.74/1.76 a__take_2: multiset status 3.74/1.76 nil: multiset status 3.74/1.76 take_2: multiset status 3.74/1.76 a__length_1: multiset status 3.74/1.76 length_1: multiset status 3.74/1.76 mark_1: multiset status 3.74/1.76 eq_2: multiset status 3.74/1.76 3.74/1.76 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.74/1.76 3.74/1.76 a__eq(0, 0) -> true 3.74/1.76 a__eq(s(X), s(Y)) -> a__eq(X, Y) 3.74/1.76 a__eq(X, Y) -> false 3.74/1.76 a__inf(X) -> cons(X, inf(s(X))) 3.74/1.76 a__take(0, X) -> nil 3.74/1.76 a__take(s(X), cons(Y, L)) -> cons(Y, take(X, L)) 3.74/1.76 a__length(nil) -> 0 3.74/1.76 a__length(cons(X, L)) -> s(length(L)) 3.74/1.76 mark(eq(X1, X2)) -> a__eq(X1, X2) 3.74/1.76 mark(inf(X)) -> a__inf(mark(X)) 3.74/1.76 mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) 3.74/1.76 mark(0) -> 0 3.74/1.76 mark(true) -> true 3.74/1.76 mark(s(X)) -> s(X) 3.74/1.76 mark(false) -> false 3.74/1.76 mark(cons(X1, X2)) -> cons(X1, X2) 3.74/1.76 mark(nil) -> nil 3.74/1.76 a__eq(X1, X2) -> eq(X1, X2) 3.74/1.76 a__inf(X) -> inf(X) 3.74/1.76 a__take(X1, X2) -> take(X1, X2) 3.74/1.76 3.74/1.76 3.74/1.76 3.74/1.76 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (2) 3.74/1.76 Obligation: 3.74/1.76 Q restricted rewrite system: 3.74/1.76 The TRS R consists of the following rules: 3.74/1.76 3.74/1.76 mark(length(X)) -> a__length(mark(X)) 3.74/1.76 a__length(X) -> length(X) 3.74/1.76 3.74/1.76 The set Q consists of the following terms: 3.74/1.76 3.74/1.76 a__eq(x0, x1) 3.74/1.76 a__inf(x0) 3.74/1.76 mark(eq(x0, x1)) 3.74/1.76 mark(inf(x0)) 3.74/1.76 mark(take(x0, x1)) 3.74/1.76 mark(length(x0)) 3.74/1.76 mark(0) 3.74/1.76 mark(true) 3.74/1.76 mark(s(x0)) 3.74/1.76 mark(false) 3.74/1.76 mark(cons(x0, x1)) 3.74/1.76 mark(nil) 3.74/1.76 a__take(x0, x1) 3.74/1.76 a__length(x0) 3.74/1.76 3.74/1.76 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (3) QTRSRRRProof (EQUIVALENT) 3.74/1.76 Used ordering: 3.74/1.76 Knuth-Bendix order [KBO] with precedence:mark_1 > a__length_1 > length_1 3.74/1.76 3.74/1.76 and weight map: 3.74/1.76 3.74/1.76 mark_1=2 3.74/1.76 length_1=1 3.74/1.76 a__length_1=1 3.74/1.76 3.74/1.76 The variable weight is 1With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.74/1.76 3.74/1.76 mark(length(X)) -> a__length(mark(X)) 3.74/1.76 a__length(X) -> length(X) 3.74/1.76 3.74/1.76 3.74/1.76 3.74/1.76 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (4) 3.74/1.76 Obligation: 3.74/1.76 Q restricted rewrite system: 3.74/1.76 R is empty. 3.74/1.76 The set Q consists of the following terms: 3.74/1.76 3.74/1.76 a__eq(x0, x1) 3.74/1.76 a__inf(x0) 3.74/1.76 mark(eq(x0, x1)) 3.74/1.76 mark(inf(x0)) 3.74/1.76 mark(take(x0, x1)) 3.74/1.76 mark(length(x0)) 3.74/1.76 mark(0) 3.74/1.76 mark(true) 3.74/1.76 mark(s(x0)) 3.74/1.76 mark(false) 3.74/1.76 mark(cons(x0, x1)) 3.74/1.76 mark(nil) 3.74/1.76 a__take(x0, x1) 3.74/1.76 a__length(x0) 3.74/1.76 3.74/1.76 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (5) RisEmptyProof (EQUIVALENT) 3.74/1.76 The TRS R is empty. Hence, termination is trivially proven. 3.74/1.76 ---------------------------------------- 3.74/1.76 3.74/1.76 (6) 3.74/1.76 YES 3.74/1.79 EOF