4.52/1.96 YES 4.52/1.97 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 4.52/1.97 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.52/1.97 4.52/1.97 4.52/1.97 Termination w.r.t. Q of the given QTRS could be proven: 4.52/1.97 4.52/1.97 (0) QTRS 4.52/1.97 (1) QTRSRRRProof [EQUIVALENT, 230 ms] 4.52/1.97 (2) QTRS 4.52/1.97 (3) QTRSRRRProof [EQUIVALENT, 3 ms] 4.52/1.97 (4) QTRS 4.52/1.97 (5) RisEmptyProof [EQUIVALENT, 0 ms] 4.52/1.97 (6) YES 4.52/1.97 4.52/1.97 4.52/1.97 ---------------------------------------- 4.52/1.97 4.52/1.97 (0) 4.52/1.97 Obligation: 4.52/1.97 Q restricted rewrite system: 4.52/1.97 The TRS R consists of the following rules: 4.52/1.97 4.52/1.97 a__U11(tt, N) -> mark(N) 4.52/1.97 a__U21(tt, M, N) -> s(a__plus(mark(N), mark(M))) 4.52/1.97 a__U31(tt) -> 0 4.52/1.97 a__U41(tt, M, N) -> a__plus(a__x(mark(N), mark(M)), mark(N)) 4.52/1.97 a__and(tt, X) -> mark(X) 4.52/1.97 a__isNat(0) -> tt 4.52/1.97 a__isNat(plus(V1, V2)) -> a__and(a__isNat(V1), isNat(V2)) 4.52/1.97 a__isNat(s(V1)) -> a__isNat(V1) 4.52/1.97 a__isNat(x(V1, V2)) -> a__and(a__isNat(V1), isNat(V2)) 4.52/1.97 a__plus(N, 0) -> a__U11(a__isNat(N), N) 4.52/1.97 a__plus(N, s(M)) -> a__U21(a__and(a__isNat(M), isNat(N)), M, N) 4.52/1.97 a__x(N, 0) -> a__U31(a__isNat(N)) 4.52/1.97 a__x(N, s(M)) -> a__U41(a__and(a__isNat(M), isNat(N)), M, N) 4.52/1.97 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 4.52/1.97 mark(U21(X1, X2, X3)) -> a__U21(mark(X1), X2, X3) 4.52/1.97 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 4.52/1.97 mark(U31(X)) -> a__U31(mark(X)) 4.52/1.97 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 4.52/1.97 mark(x(X1, X2)) -> a__x(mark(X1), mark(X2)) 4.52/1.97 mark(and(X1, X2)) -> a__and(mark(X1), X2) 4.52/1.97 mark(isNat(X)) -> a__isNat(X) 4.52/1.97 mark(tt) -> tt 4.52/1.97 mark(s(X)) -> s(mark(X)) 4.52/1.97 mark(0) -> 0 4.52/1.97 a__U11(X1, X2) -> U11(X1, X2) 4.52/1.97 a__U21(X1, X2, X3) -> U21(X1, X2, X3) 4.52/1.97 a__plus(X1, X2) -> plus(X1, X2) 4.52/1.97 a__U31(X) -> U31(X) 4.52/1.97 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 4.52/1.97 a__x(X1, X2) -> x(X1, X2) 4.52/1.97 a__and(X1, X2) -> and(X1, X2) 4.52/1.97 a__isNat(X) -> isNat(X) 4.52/1.97 4.52/1.97 The set Q consists of the following terms: 4.52/1.97 4.52/1.97 mark(U11(x0, x1)) 4.52/1.97 mark(U21(x0, x1, x2)) 4.52/1.97 mark(plus(x0, x1)) 4.52/1.97 mark(U31(x0)) 4.52/1.97 mark(U41(x0, x1, x2)) 4.52/1.97 mark(x(x0, x1)) 4.52/1.97 mark(and(x0, x1)) 4.52/1.97 mark(isNat(x0)) 4.52/1.97 mark(tt) 4.52/1.97 mark(s(x0)) 4.52/1.97 mark(0) 4.52/1.97 a__U11(x0, x1) 4.52/1.97 a__U21(x0, x1, x2) 4.52/1.97 a__plus(x0, x1) 4.52/1.97 a__U31(x0) 4.52/1.97 a__U41(x0, x1, x2) 4.52/1.97 a__x(x0, x1) 4.52/1.97 a__and(x0, x1) 4.52/1.97 a__isNat(x0) 4.52/1.97 4.52/1.97 4.52/1.97 ---------------------------------------- 4.52/1.97 4.52/1.97 (1) QTRSRRRProof (EQUIVALENT) 4.52/1.97 Used ordering: 4.52/1.97 a__U11/2(YES,YES) 4.52/1.97 tt/0) 4.52/1.97 mark/1)YES( 4.52/1.97 a__U21/3(YES,YES,YES) 4.52/1.97 s/1(YES) 4.52/1.97 a__plus/2(YES,YES) 4.52/1.97 a__U31/1)YES( 4.52/1.97 0/0) 4.52/1.97 a__U41/3(YES,YES,YES) 4.52/1.97 a__x/2(YES,YES) 4.52/1.97 a__and/2(YES,YES) 4.52/1.97 a__isNat/1)YES( 4.52/1.97 plus/2(YES,YES) 4.52/1.97 isNat/1)YES( 4.52/1.97 x/2(YES,YES) 4.52/1.97 U11/2(YES,YES) 4.52/1.97 U21/3(YES,YES,YES) 4.52/1.97 U31/1)YES( 4.52/1.97 U41/3(YES,YES,YES) 4.52/1.97 and/2(YES,YES) 4.52/1.97 4.52/1.97 Quasi precedence: 4.52/1.97 [tt, 0] > [a__U21_3, a__plus_2, plus_2, U21_3] > [a__U11_2, U11_2] 4.52/1.97 [tt, 0] > [a__U21_3, a__plus_2, plus_2, U21_3] > [s_1, a__and_2, and_2] 4.52/1.97 [a__U41_3, a__x_2, x_2, U41_3] > [a__U21_3, a__plus_2, plus_2, U21_3] > [a__U11_2, U11_2] 4.52/1.97 [a__U41_3, a__x_2, x_2, U41_3] > [a__U21_3, a__plus_2, plus_2, U21_3] > [s_1, a__and_2, and_2] 4.52/1.97 4.52/1.97 4.52/1.97 Status: 4.52/1.97 a__U11_2: multiset status 4.52/1.97 tt: multiset status 4.52/1.97 a__U21_3: [2,3,1] 4.52/1.97 s_1: multiset status 4.52/1.97 a__plus_2: [2,1] 4.52/1.97 0: multiset status 4.52/1.97 a__U41_3: [2,3,1] 4.52/1.97 a__x_2: [2,1] 4.52/1.97 a__and_2: multiset status 4.52/1.97 plus_2: [2,1] 4.52/1.97 x_2: [2,1] 4.52/1.97 U11_2: multiset status 4.52/1.97 U21_3: [2,3,1] 4.52/1.97 U41_3: [2,3,1] 4.52/1.97 and_2: multiset status 4.52/1.97 4.52/1.97 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.52/1.97 4.52/1.97 a__U11(tt, N) -> mark(N) 4.52/1.97 a__U21(tt, M, N) -> s(a__plus(mark(N), mark(M))) 4.52/1.97 a__U41(tt, M, N) -> a__plus(a__x(mark(N), mark(M)), mark(N)) 4.52/1.97 a__and(tt, X) -> mark(X) 4.52/1.97 a__isNat(plus(V1, V2)) -> a__and(a__isNat(V1), isNat(V2)) 4.52/1.97 a__isNat(s(V1)) -> a__isNat(V1) 4.52/1.97 a__isNat(x(V1, V2)) -> a__and(a__isNat(V1), isNat(V2)) 4.52/1.97 a__plus(N, 0) -> a__U11(a__isNat(N), N) 4.52/1.97 a__plus(N, s(M)) -> a__U21(a__and(a__isNat(M), isNat(N)), M, N) 4.52/1.97 a__x(N, 0) -> a__U31(a__isNat(N)) 4.52/1.97 a__x(N, s(M)) -> a__U41(a__and(a__isNat(M), isNat(N)), M, N) 4.52/1.97 4.52/1.97 4.52/1.97 4.52/1.97 4.52/1.97 ---------------------------------------- 4.52/1.97 4.52/1.97 (2) 4.52/1.97 Obligation: 4.52/1.97 Q restricted rewrite system: 4.52/1.97 The TRS R consists of the following rules: 4.52/1.97 4.52/1.97 a__U31(tt) -> 0 4.52/1.97 a__isNat(0) -> tt 4.52/1.97 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 4.52/1.97 mark(U21(X1, X2, X3)) -> a__U21(mark(X1), X2, X3) 4.52/1.97 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 4.52/1.97 mark(U31(X)) -> a__U31(mark(X)) 4.52/1.97 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 4.52/1.97 mark(x(X1, X2)) -> a__x(mark(X1), mark(X2)) 4.52/1.97 mark(and(X1, X2)) -> a__and(mark(X1), X2) 4.52/1.97 mark(isNat(X)) -> a__isNat(X) 4.52/1.97 mark(tt) -> tt 4.52/1.97 mark(s(X)) -> s(mark(X)) 4.52/1.97 mark(0) -> 0 4.52/1.97 a__U11(X1, X2) -> U11(X1, X2) 4.52/1.97 a__U21(X1, X2, X3) -> U21(X1, X2, X3) 4.52/1.97 a__plus(X1, X2) -> plus(X1, X2) 4.52/1.97 a__U31(X) -> U31(X) 4.52/1.97 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 4.52/1.97 a__x(X1, X2) -> x(X1, X2) 4.52/1.97 a__and(X1, X2) -> and(X1, X2) 4.52/1.97 a__isNat(X) -> isNat(X) 4.52/1.97 4.52/1.97 The set Q consists of the following terms: 4.52/1.97 4.52/1.97 mark(U11(x0, x1)) 4.52/1.97 mark(U21(x0, x1, x2)) 4.52/1.97 mark(plus(x0, x1)) 4.52/1.97 mark(U31(x0)) 4.52/1.97 mark(U41(x0, x1, x2)) 4.52/1.97 mark(x(x0, x1)) 4.52/1.97 mark(and(x0, x1)) 4.52/1.97 mark(isNat(x0)) 4.52/1.97 mark(tt) 4.52/1.97 mark(s(x0)) 4.52/1.97 mark(0) 4.52/1.97 a__U11(x0, x1) 4.52/1.97 a__U21(x0, x1, x2) 4.52/1.97 a__plus(x0, x1) 4.52/1.97 a__U31(x0) 4.52/1.97 a__U41(x0, x1, x2) 4.52/1.97 a__x(x0, x1) 4.52/1.97 a__and(x0, x1) 4.52/1.97 a__isNat(x0) 4.52/1.97 4.52/1.97 4.52/1.97 ---------------------------------------- 4.52/1.97 4.52/1.97 (3) QTRSRRRProof (EQUIVALENT) 4.52/1.97 Used ordering: 4.52/1.97 Knuth-Bendix order [KBO] with precedence:mark_1 > s_1 > a__and_2 > and_2 > a__plus_2 > plus_2 > a__U31_1 > a__U41_3 > U41_3 > a__isNat_1 > U31_1 > isNat_1 > a__x_2 > x_2 > tt > a__U21_3 > U21_3 > a__U11_2 > U11_2 > 0 4.52/1.97 4.52/1.97 and weight map: 4.52/1.97 4.52/1.97 tt=2 4.52/1.97 0=1 4.52/1.97 a__U31_1=1 4.52/1.97 a__isNat_1=1 4.52/1.97 mark_1=0 4.52/1.97 U31_1=1 4.52/1.97 isNat_1=1 4.52/1.97 s_1=1 4.52/1.97 U11_2=0 4.52/1.97 a__U11_2=0 4.52/1.97 U21_3=0 4.52/1.97 a__U21_3=0 4.52/1.97 plus_2=0 4.52/1.97 a__plus_2=0 4.52/1.97 U41_3=0 4.52/1.97 a__U41_3=0 4.52/1.97 x_2=0 4.52/1.97 a__x_2=0 4.52/1.97 and_2=0 4.52/1.97 a__and_2=0 4.52/1.97 4.52/1.97 The variable weight is 1With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.52/1.97 4.52/1.97 a__U31(tt) -> 0 4.52/1.97 a__isNat(0) -> tt 4.52/1.97 mark(U11(X1, X2)) -> a__U11(mark(X1), X2) 4.52/1.97 mark(U21(X1, X2, X3)) -> a__U21(mark(X1), X2, X3) 4.52/1.97 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 4.52/1.97 mark(U31(X)) -> a__U31(mark(X)) 4.52/1.97 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 4.52/1.97 mark(x(X1, X2)) -> a__x(mark(X1), mark(X2)) 4.52/1.97 mark(and(X1, X2)) -> a__and(mark(X1), X2) 4.52/1.97 mark(isNat(X)) -> a__isNat(X) 4.52/1.97 mark(tt) -> tt 4.52/1.97 mark(s(X)) -> s(mark(X)) 4.52/1.97 mark(0) -> 0 4.52/1.97 a__U11(X1, X2) -> U11(X1, X2) 4.52/1.97 a__U21(X1, X2, X3) -> U21(X1, X2, X3) 4.52/1.97 a__plus(X1, X2) -> plus(X1, X2) 4.52/1.97 a__U31(X) -> U31(X) 4.52/1.97 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 4.52/1.97 a__x(X1, X2) -> x(X1, X2) 4.52/1.97 a__and(X1, X2) -> and(X1, X2) 4.52/1.97 a__isNat(X) -> isNat(X) 4.52/1.97 4.52/1.97 4.52/1.97 4.52/1.97 4.52/1.97 ---------------------------------------- 4.52/1.97 4.52/1.97 (4) 4.52/1.97 Obligation: 4.52/1.97 Q restricted rewrite system: 4.52/1.97 R is empty. 4.52/1.97 The set Q consists of the following terms: 4.52/1.97 4.52/1.97 mark(U11(x0, x1)) 4.52/1.97 mark(U21(x0, x1, x2)) 4.52/1.97 mark(plus(x0, x1)) 4.52/1.97 mark(U31(x0)) 4.52/1.97 mark(U41(x0, x1, x2)) 4.52/1.97 mark(x(x0, x1)) 4.52/1.97 mark(and(x0, x1)) 4.52/1.97 mark(isNat(x0)) 4.52/1.97 mark(tt) 4.52/1.97 mark(s(x0)) 4.52/1.97 mark(0) 4.52/1.97 a__U11(x0, x1) 4.52/1.97 a__U21(x0, x1, x2) 4.52/1.97 a__plus(x0, x1) 4.52/1.97 a__U31(x0) 4.52/1.97 a__U41(x0, x1, x2) 4.52/1.97 a__x(x0, x1) 4.52/1.97 a__and(x0, x1) 4.52/1.97 a__isNat(x0) 4.52/1.97 4.52/1.97 4.52/1.97 ---------------------------------------- 4.52/1.97 4.52/1.97 (5) RisEmptyProof (EQUIVALENT) 4.52/1.97 The TRS R is empty. Hence, termination is trivially proven. 4.52/1.98 ---------------------------------------- 4.52/1.98 4.52/1.98 (6) 4.52/1.98 YES 4.67/2.01 EOF