4.89/2.22 YES 5.02/2.23 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 5.02/2.23 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 5.02/2.23 5.02/2.23 5.02/2.23 Termination w.r.t. Q of the given QTRS could be proven: 5.02/2.23 5.02/2.23 (0) QTRS 5.02/2.23 (1) QTRSRRRProof [EQUIVALENT, 339 ms] 5.02/2.23 (2) QTRS 5.02/2.23 (3) QTRSRRRProof [EQUIVALENT, 25 ms] 5.02/2.23 (4) QTRS 5.02/2.23 (5) RisEmptyProof [EQUIVALENT, 0 ms] 5.02/2.23 (6) YES 5.02/2.23 5.02/2.23 5.02/2.23 ---------------------------------------- 5.02/2.23 5.02/2.23 (0) 5.02/2.23 Obligation: 5.02/2.23 Q restricted rewrite system: 5.02/2.23 The TRS R consists of the following rules: 5.02/2.23 5.02/2.23 a__U11(tt, V1, V2) -> a__U12(a__isNat(V1), V2) 5.02/2.23 a__U12(tt, V2) -> a__U13(a__isNat(V2)) 5.02/2.23 a__U13(tt) -> tt 5.02/2.23 a__U21(tt, V1) -> a__U22(a__isNat(V1)) 5.02/2.23 a__U22(tt) -> tt 5.02/2.23 a__U31(tt, N) -> mark(N) 5.02/2.23 a__U41(tt, M, N) -> s(a__plus(mark(N), mark(M))) 5.02/2.23 a__and(tt, X) -> mark(X) 5.02/2.23 a__isNat(0) -> tt 5.02/2.23 a__isNat(plus(V1, V2)) -> a__U11(a__and(a__isNatKind(V1), isNatKind(V2)), V1, V2) 5.02/2.23 a__isNat(s(V1)) -> a__U21(a__isNatKind(V1), V1) 5.02/2.23 a__isNatKind(0) -> tt 5.02/2.23 a__isNatKind(plus(V1, V2)) -> a__and(a__isNatKind(V1), isNatKind(V2)) 5.02/2.23 a__isNatKind(s(V1)) -> a__isNatKind(V1) 5.02/2.23 a__plus(N, 0) -> a__U31(a__and(a__isNat(N), isNatKind(N)), N) 5.02/2.23 a__plus(N, s(M)) -> a__U41(a__and(a__and(a__isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) 5.02/2.23 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 5.02/2.23 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 5.02/2.23 mark(isNat(X)) -> a__isNat(X) 5.02/2.23 mark(U13(X)) -> a__U13(mark(X)) 5.02/2.23 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 5.02/2.23 mark(U22(X)) -> a__U22(mark(X)) 5.02/2.23 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 5.02/2.23 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 5.02/2.23 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 5.02/2.23 mark(and(X1, X2)) -> a__and(mark(X1), X2) 5.02/2.23 mark(isNatKind(X)) -> a__isNatKind(X) 5.02/2.23 mark(tt) -> tt 5.02/2.23 mark(s(X)) -> s(mark(X)) 5.02/2.23 mark(0) -> 0 5.02/2.23 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 5.02/2.23 a__U12(X1, X2) -> U12(X1, X2) 5.02/2.23 a__isNat(X) -> isNat(X) 5.02/2.23 a__U13(X) -> U13(X) 5.02/2.23 a__U21(X1, X2) -> U21(X1, X2) 5.02/2.23 a__U22(X) -> U22(X) 5.02/2.23 a__U31(X1, X2) -> U31(X1, X2) 5.02/2.23 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 5.02/2.23 a__plus(X1, X2) -> plus(X1, X2) 5.02/2.23 a__and(X1, X2) -> and(X1, X2) 5.02/2.23 a__isNatKind(X) -> isNatKind(X) 5.02/2.23 5.02/2.23 The set Q consists of the following terms: 5.02/2.23 5.02/2.23 mark(U11(x0, x1, x2)) 5.02/2.23 mark(U12(x0, x1)) 5.02/2.23 mark(isNat(x0)) 5.02/2.23 mark(U13(x0)) 5.02/2.23 mark(U21(x0, x1)) 5.02/2.23 mark(U22(x0)) 5.02/2.23 mark(U31(x0, x1)) 5.02/2.23 mark(U41(x0, x1, x2)) 5.02/2.23 mark(plus(x0, x1)) 5.02/2.23 mark(and(x0, x1)) 5.02/2.23 mark(isNatKind(x0)) 5.02/2.23 mark(tt) 5.02/2.23 mark(s(x0)) 5.02/2.23 mark(0) 5.02/2.23 a__U11(x0, x1, x2) 5.02/2.23 a__U12(x0, x1) 5.02/2.23 a__isNat(x0) 5.02/2.23 a__U13(x0) 5.02/2.23 a__U21(x0, x1) 5.02/2.23 a__U22(x0) 5.02/2.23 a__U31(x0, x1) 5.02/2.23 a__U41(x0, x1, x2) 5.02/2.23 a__plus(x0, x1) 5.02/2.23 a__and(x0, x1) 5.02/2.23 a__isNatKind(x0) 5.02/2.23 5.02/2.23 5.02/2.23 ---------------------------------------- 5.02/2.23 5.02/2.23 (1) QTRSRRRProof (EQUIVALENT) 5.02/2.23 Used ordering: 5.02/2.23 a__U11/3(YES,YES,YES) 5.02/2.23 tt/0) 5.02/2.23 a__U12/2(YES,YES) 5.02/2.23 a__isNat/1(YES) 5.02/2.23 a__U13/1)YES( 5.02/2.23 a__U21/2(YES,YES) 5.02/2.23 a__U22/1)YES( 5.02/2.23 a__U31/2(YES,YES) 5.02/2.23 mark/1)YES( 5.02/2.23 a__U41/3(YES,YES,YES) 5.02/2.23 s/1(YES) 5.02/2.23 a__plus/2(YES,YES) 5.02/2.23 a__and/2(YES,YES) 5.02/2.23 0/0) 5.02/2.23 plus/2(YES,YES) 5.02/2.23 a__isNatKind/1)YES( 5.02/2.23 isNatKind/1)YES( 5.02/2.23 and/2(YES,YES) 5.02/2.23 isNat/1(YES) 5.02/2.23 U11/3(YES,YES,YES) 5.02/2.23 U12/2(YES,YES) 5.02/2.23 U13/1)YES( 5.02/2.23 U21/2(YES,YES) 5.02/2.23 U22/1)YES( 5.02/2.23 U31/2(YES,YES) 5.02/2.23 U41/3(YES,YES,YES) 5.02/2.23 5.02/2.23 Quasi precedence: 5.02/2.23 [a__U41_3, a__plus_2, plus_2, U41_3] > [a__U11_3, U11_3] > [a__U12_2, a__isNat_1, isNat_1, U12_2] 5.02/2.23 [a__U41_3, a__plus_2, plus_2, U41_3] > [a__U31_2, U31_2] 5.02/2.23 [a__U41_3, a__plus_2, plus_2, U41_3] > s_1 > [a__U21_2, U21_2] > [a__U12_2, a__isNat_1, isNat_1, U12_2] 5.02/2.23 [a__U41_3, a__plus_2, plus_2, U41_3] > s_1 > [a__and_2, and_2] 5.02/2.23 0 > tt > [a__U12_2, a__isNat_1, isNat_1, U12_2] 5.02/2.23 0 > [a__U31_2, U31_2] 5.02/2.23 0 > [a__and_2, and_2] 5.02/2.23 5.02/2.23 5.02/2.23 Status: 5.02/2.23 a__U11_3: multiset status 5.02/2.23 tt: multiset status 5.02/2.23 a__U12_2: multiset status 5.02/2.23 a__isNat_1: multiset status 5.02/2.23 a__U21_2: multiset status 5.02/2.23 a__U31_2: multiset status 5.02/2.23 a__U41_3: [2,3,1] 5.02/2.23 s_1: multiset status 5.02/2.23 a__plus_2: [2,1] 5.02/2.23 a__and_2: multiset status 5.02/2.23 0: multiset status 5.02/2.23 plus_2: [2,1] 5.02/2.23 and_2: multiset status 5.02/2.23 isNat_1: multiset status 5.02/2.23 U11_3: multiset status 5.02/2.23 U12_2: multiset status 5.02/2.23 U21_2: multiset status 5.02/2.23 U31_2: multiset status 5.02/2.23 U41_3: [2,3,1] 5.02/2.23 5.02/2.23 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 5.02/2.23 5.02/2.23 a__U11(tt, V1, V2) -> a__U12(a__isNat(V1), V2) 5.02/2.23 a__U12(tt, V2) -> a__U13(a__isNat(V2)) 5.02/2.23 a__U21(tt, V1) -> a__U22(a__isNat(V1)) 5.02/2.23 a__U31(tt, N) -> mark(N) 5.02/2.23 a__U41(tt, M, N) -> s(a__plus(mark(N), mark(M))) 5.02/2.23 a__and(tt, X) -> mark(X) 5.02/2.23 a__isNat(0) -> tt 5.02/2.23 a__isNat(plus(V1, V2)) -> a__U11(a__and(a__isNatKind(V1), isNatKind(V2)), V1, V2) 5.02/2.23 a__isNat(s(V1)) -> a__U21(a__isNatKind(V1), V1) 5.02/2.23 a__isNatKind(0) -> tt 5.02/2.23 a__isNatKind(plus(V1, V2)) -> a__and(a__isNatKind(V1), isNatKind(V2)) 5.02/2.23 a__isNatKind(s(V1)) -> a__isNatKind(V1) 5.02/2.23 a__plus(N, 0) -> a__U31(a__and(a__isNat(N), isNatKind(N)), N) 5.02/2.23 a__plus(N, s(M)) -> a__U41(a__and(a__and(a__isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) 5.02/2.23 5.02/2.23 5.02/2.23 5.02/2.23 5.02/2.23 ---------------------------------------- 5.02/2.23 5.02/2.23 (2) 5.02/2.23 Obligation: 5.02/2.23 Q restricted rewrite system: 5.02/2.23 The TRS R consists of the following rules: 5.02/2.23 5.02/2.23 a__U13(tt) -> tt 5.02/2.23 a__U22(tt) -> tt 5.02/2.23 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 5.02/2.23 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 5.02/2.23 mark(isNat(X)) -> a__isNat(X) 5.02/2.23 mark(U13(X)) -> a__U13(mark(X)) 5.02/2.23 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 5.02/2.23 mark(U22(X)) -> a__U22(mark(X)) 5.02/2.23 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 5.02/2.23 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 5.02/2.23 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 5.02/2.23 mark(and(X1, X2)) -> a__and(mark(X1), X2) 5.02/2.23 mark(isNatKind(X)) -> a__isNatKind(X) 5.02/2.23 mark(tt) -> tt 5.02/2.23 mark(s(X)) -> s(mark(X)) 5.02/2.23 mark(0) -> 0 5.02/2.23 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 5.02/2.23 a__U12(X1, X2) -> U12(X1, X2) 5.02/2.23 a__isNat(X) -> isNat(X) 5.02/2.23 a__U13(X) -> U13(X) 5.02/2.23 a__U21(X1, X2) -> U21(X1, X2) 5.02/2.23 a__U22(X) -> U22(X) 5.02/2.23 a__U31(X1, X2) -> U31(X1, X2) 5.02/2.23 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 5.02/2.23 a__plus(X1, X2) -> plus(X1, X2) 5.02/2.23 a__and(X1, X2) -> and(X1, X2) 5.02/2.23 a__isNatKind(X) -> isNatKind(X) 5.02/2.23 5.02/2.23 The set Q consists of the following terms: 5.02/2.23 5.02/2.23 mark(U11(x0, x1, x2)) 5.02/2.23 mark(U12(x0, x1)) 5.02/2.23 mark(isNat(x0)) 5.02/2.23 mark(U13(x0)) 5.02/2.23 mark(U21(x0, x1)) 5.02/2.23 mark(U22(x0)) 5.02/2.23 mark(U31(x0, x1)) 5.02/2.23 mark(U41(x0, x1, x2)) 5.02/2.23 mark(plus(x0, x1)) 5.02/2.23 mark(and(x0, x1)) 5.02/2.23 mark(isNatKind(x0)) 5.02/2.23 mark(tt) 5.02/2.23 mark(s(x0)) 5.02/2.23 mark(0) 5.02/2.23 a__U11(x0, x1, x2) 5.02/2.23 a__U12(x0, x1) 5.02/2.23 a__isNat(x0) 5.02/2.23 a__U13(x0) 5.02/2.23 a__U21(x0, x1) 5.02/2.23 a__U22(x0) 5.02/2.23 a__U31(x0, x1) 5.02/2.23 a__U41(x0, x1, x2) 5.02/2.23 a__plus(x0, x1) 5.02/2.23 a__and(x0, x1) 5.02/2.23 a__isNatKind(x0) 5.02/2.23 5.02/2.23 5.02/2.23 ---------------------------------------- 5.02/2.23 5.02/2.23 (3) QTRSRRRProof (EQUIVALENT) 5.02/2.23 Used ordering: 5.02/2.23 Knuth-Bendix order [KBO] with precedence:mark_1 > a__U11_3 > tt > 0 > s_1 > a__isNatKind_1 > U11_3 > a__U12_2 > a__U41_3 > a__U22_1 > U22_1 > U41_3 > isNatKind_1 > a__isNat_1 > U12_2 > a__U13_1 > U13_1 > a__plus_2 > a__U21_2 > a__U31_2 > U21_2 > a__and_2 > and_2 > plus_2 > U31_2 > isNat_1 5.02/2.23 5.02/2.23 and weight map: 5.02/2.23 5.02/2.23 tt=1 5.02/2.23 0=1 5.02/2.23 a__U13_1=1 5.02/2.23 a__U22_1=1 5.02/2.23 mark_1=0 5.02/2.23 isNat_1=1 5.02/2.23 a__isNat_1=1 5.02/2.23 U13_1=1 5.02/2.23 U22_1=1 5.02/2.23 isNatKind_1=1 5.02/2.23 a__isNatKind_1=1 5.02/2.23 s_1=1 5.02/2.23 U11_3=0 5.02/2.23 a__U11_3=0 5.02/2.23 U12_2=0 5.02/2.23 a__U12_2=0 5.02/2.23 U21_2=0 5.02/2.23 a__U21_2=0 5.02/2.23 U31_2=0 5.02/2.23 a__U31_2=0 5.02/2.23 U41_3=0 5.02/2.23 a__U41_3=0 5.02/2.23 plus_2=0 5.02/2.23 a__plus_2=0 5.02/2.23 and_2=0 5.02/2.23 a__and_2=0 5.02/2.23 5.02/2.23 The variable weight is 1With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 5.02/2.23 5.02/2.23 a__U13(tt) -> tt 5.02/2.23 a__U22(tt) -> tt 5.02/2.23 mark(U11(X1, X2, X3)) -> a__U11(mark(X1), X2, X3) 5.02/2.23 mark(U12(X1, X2)) -> a__U12(mark(X1), X2) 5.02/2.23 mark(isNat(X)) -> a__isNat(X) 5.02/2.23 mark(U13(X)) -> a__U13(mark(X)) 5.02/2.23 mark(U21(X1, X2)) -> a__U21(mark(X1), X2) 5.02/2.23 mark(U22(X)) -> a__U22(mark(X)) 5.02/2.23 mark(U31(X1, X2)) -> a__U31(mark(X1), X2) 5.02/2.23 mark(U41(X1, X2, X3)) -> a__U41(mark(X1), X2, X3) 5.02/2.23 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 5.02/2.23 mark(and(X1, X2)) -> a__and(mark(X1), X2) 5.02/2.23 mark(isNatKind(X)) -> a__isNatKind(X) 5.02/2.23 mark(tt) -> tt 5.02/2.23 mark(s(X)) -> s(mark(X)) 5.02/2.23 mark(0) -> 0 5.02/2.23 a__U11(X1, X2, X3) -> U11(X1, X2, X3) 5.02/2.23 a__U12(X1, X2) -> U12(X1, X2) 5.02/2.23 a__isNat(X) -> isNat(X) 5.02/2.23 a__U13(X) -> U13(X) 5.02/2.23 a__U21(X1, X2) -> U21(X1, X2) 5.02/2.23 a__U22(X) -> U22(X) 5.02/2.23 a__U31(X1, X2) -> U31(X1, X2) 5.02/2.23 a__U41(X1, X2, X3) -> U41(X1, X2, X3) 5.02/2.23 a__plus(X1, X2) -> plus(X1, X2) 5.02/2.24 a__and(X1, X2) -> and(X1, X2) 5.02/2.24 a__isNatKind(X) -> isNatKind(X) 5.02/2.24 5.02/2.24 5.02/2.24 5.02/2.24 5.02/2.24 ---------------------------------------- 5.02/2.24 5.02/2.24 (4) 5.02/2.24 Obligation: 5.02/2.24 Q restricted rewrite system: 5.02/2.24 R is empty. 5.02/2.24 The set Q consists of the following terms: 5.02/2.24 5.02/2.24 mark(U11(x0, x1, x2)) 5.02/2.24 mark(U12(x0, x1)) 5.02/2.24 mark(isNat(x0)) 5.02/2.24 mark(U13(x0)) 5.02/2.24 mark(U21(x0, x1)) 5.02/2.24 mark(U22(x0)) 5.02/2.24 mark(U31(x0, x1)) 5.02/2.24 mark(U41(x0, x1, x2)) 5.02/2.24 mark(plus(x0, x1)) 5.02/2.24 mark(and(x0, x1)) 5.02/2.24 mark(isNatKind(x0)) 5.02/2.24 mark(tt) 5.02/2.24 mark(s(x0)) 5.02/2.24 mark(0) 5.02/2.24 a__U11(x0, x1, x2) 5.02/2.24 a__U12(x0, x1) 5.02/2.24 a__isNat(x0) 5.02/2.24 a__U13(x0) 5.02/2.24 a__U21(x0, x1) 5.02/2.24 a__U22(x0) 5.02/2.24 a__U31(x0, x1) 5.02/2.24 a__U41(x0, x1, x2) 5.02/2.24 a__plus(x0, x1) 5.02/2.24 a__and(x0, x1) 5.02/2.24 a__isNatKind(x0) 5.02/2.24 5.02/2.24 5.02/2.24 ---------------------------------------- 5.02/2.24 5.02/2.24 (5) RisEmptyProof (EQUIVALENT) 5.02/2.24 The TRS R is empty. Hence, termination is trivially proven. 5.02/2.24 ---------------------------------------- 5.02/2.24 5.02/2.24 (6) 5.02/2.24 YES 5.02/2.26 EOF