5.46/2.19 YES 5.46/2.20 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 5.46/2.20 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 5.46/2.20 5.46/2.20 5.46/2.20 Termination of the given CSR could be proven: 5.46/2.20 5.46/2.20 (0) CSR 5.46/2.20 (1) CSRRRRProof [EQUIVALENT, 57 ms] 5.46/2.20 (2) CSR 5.46/2.20 (3) CSRRRRProof [EQUIVALENT, 1 ms] 5.46/2.20 (4) CSR 5.46/2.20 (5) CSDependencyPairsProof [EQUIVALENT, 0 ms] 5.46/2.20 (6) QCSDP 5.46/2.20 (7) QCSDependencyGraphProof [EQUIVALENT, 0 ms] 5.46/2.20 (8) AND 5.46/2.20 (9) QCSDP 5.46/2.20 (10) QCSUsableRulesProof [EQUIVALENT, 0 ms] 5.46/2.20 (11) QCSDP 5.46/2.20 (12) QCSDPMuMonotonicPoloProof [EQUIVALENT, 0 ms] 5.46/2.20 (13) QCSDP 5.46/2.20 (14) QCSDependencyGraphProof [EQUIVALENT, 0 ms] 5.46/2.20 (15) AND 5.46/2.20 (16) QCSDP 5.46/2.20 (17) QCSDPMuMonotonicPoloProof [EQUIVALENT, 0 ms] 5.46/2.20 (18) QCSDP 5.46/2.20 (19) PIsEmptyProof [EQUIVALENT, 0 ms] 5.46/2.20 (20) YES 5.46/2.20 (21) QCSDP 5.46/2.20 (22) QCSDPMuMonotonicPoloProof [EQUIVALENT, 0 ms] 5.46/2.20 (23) QCSDP 5.46/2.20 (24) PIsEmptyProof [EQUIVALENT, 0 ms] 5.46/2.20 (25) YES 5.46/2.20 (26) QCSDP 5.46/2.20 (27) QCSDPSubtermProof [EQUIVALENT, 0 ms] 5.46/2.20 (28) QCSDP 5.46/2.20 (29) QCSDependencyGraphProof [EQUIVALENT, 0 ms] 5.46/2.20 (30) TRUE 5.46/2.20 (31) QCSDP 5.46/2.20 (32) QCSDPReductionPairProof [EQUIVALENT, 75 ms] 5.46/2.20 (33) QCSDP 5.46/2.20 (34) QCSDependencyGraphProof [EQUIVALENT, 0 ms] 5.46/2.20 (35) TRUE 5.46/2.20 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (0) 5.46/2.20 Obligation: 5.46/2.20 Context-sensitive rewrite system: 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(0, IL) -> uTake1(isNatIList(IL)) 5.46/2.20 uTake1(tt) -> nil 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 The replacement map contains the following entries: 5.46/2.20 5.46/2.20 and: {1, 2} 5.46/2.20 tt: empty set 5.46/2.20 isNatIList: empty set 5.46/2.20 isNatList: empty set 5.46/2.20 isNat: empty set 5.46/2.20 0: empty set 5.46/2.20 s: {1} 5.46/2.20 length: {1} 5.46/2.20 zeros: empty set 5.46/2.20 cons: {1} 5.46/2.20 nil: empty set 5.46/2.20 take: {1, 2} 5.46/2.20 uTake1: {1} 5.46/2.20 uTake2: {1} 5.46/2.20 uLength: {1} 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (1) CSRRRRProof (EQUIVALENT) 5.46/2.20 The following CSR is given: Context-sensitive rewrite system: 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(0, IL) -> uTake1(isNatIList(IL)) 5.46/2.20 uTake1(tt) -> nil 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 The replacement map contains the following entries: 5.46/2.20 5.46/2.20 and: {1, 2} 5.46/2.20 tt: empty set 5.46/2.20 isNatIList: empty set 5.46/2.20 isNatList: empty set 5.46/2.20 isNat: empty set 5.46/2.20 0: empty set 5.46/2.20 s: {1} 5.46/2.20 length: {1} 5.46/2.20 zeros: empty set 5.46/2.20 cons: {1} 5.46/2.20 nil: empty set 5.46/2.20 take: {1, 2} 5.46/2.20 uTake1: {1} 5.46/2.20 uTake2: {1} 5.46/2.20 uLength: {1} 5.46/2.20 Used ordering: 5.46/2.20 Polynomial interpretation [POLO]: 5.46/2.20 5.46/2.20 POL(0) = 0 5.46/2.20 POL(and(x_1, x_2)) = x_1 + x_2 5.46/2.20 POL(cons(x_1, x_2)) = x_1 + x_2 5.46/2.20 POL(isNat(x_1)) = 0 5.46/2.20 POL(isNatIList(x_1)) = 0 5.46/2.20 POL(isNatList(x_1)) = 0 5.46/2.20 POL(length(x_1)) = 1 + x_1 5.46/2.20 POL(nil) = 0 5.46/2.20 POL(s(x_1)) = x_1 5.46/2.20 POL(take(x_1, x_2)) = 1 + x_1 + x_2 5.46/2.20 POL(tt) = 0 5.46/2.20 POL(uLength(x_1, x_2)) = 1 + x_1 + x_2 5.46/2.20 POL(uTake1(x_1)) = 1 + x_1 5.46/2.20 POL(uTake2(x_1, x_2, x_3, x_4)) = 1 + x_1 + x_2 + x_3 + x_4 5.46/2.20 POL(zeros) = 0 5.46/2.20 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 5.46/2.20 5.46/2.20 uTake1(tt) -> nil 5.46/2.20 5.46/2.20 5.46/2.20 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (2) 5.46/2.20 Obligation: 5.46/2.20 Context-sensitive rewrite system: 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(0, IL) -> uTake1(isNatIList(IL)) 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 The replacement map contains the following entries: 5.46/2.20 5.46/2.20 and: {1, 2} 5.46/2.20 tt: empty set 5.46/2.20 isNatIList: empty set 5.46/2.20 isNatList: empty set 5.46/2.20 isNat: empty set 5.46/2.20 0: empty set 5.46/2.20 s: {1} 5.46/2.20 length: {1} 5.46/2.20 zeros: empty set 5.46/2.20 cons: {1} 5.46/2.20 nil: empty set 5.46/2.20 take: {1, 2} 5.46/2.20 uTake1: {1} 5.46/2.20 uTake2: {1} 5.46/2.20 uLength: {1} 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (3) CSRRRRProof (EQUIVALENT) 5.46/2.20 The following CSR is given: Context-sensitive rewrite system: 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(0, IL) -> uTake1(isNatIList(IL)) 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 The replacement map contains the following entries: 5.46/2.20 5.46/2.20 and: {1, 2} 5.46/2.20 tt: empty set 5.46/2.20 isNatIList: empty set 5.46/2.20 isNatList: empty set 5.46/2.20 isNat: empty set 5.46/2.20 0: empty set 5.46/2.20 s: {1} 5.46/2.20 length: {1} 5.46/2.20 zeros: empty set 5.46/2.20 cons: {1} 5.46/2.20 nil: empty set 5.46/2.20 take: {1, 2} 5.46/2.20 uTake1: {1} 5.46/2.20 uTake2: {1} 5.46/2.20 uLength: {1} 5.46/2.20 Used ordering: 5.46/2.20 Polynomial interpretation [POLO]: 5.46/2.20 5.46/2.20 POL(0) = 0 5.46/2.20 POL(and(x_1, x_2)) = x_1 + x_2 5.46/2.20 POL(cons(x_1, x_2)) = x_1 + x_2 5.46/2.20 POL(isNat(x_1)) = 0 5.46/2.20 POL(isNatIList(x_1)) = 0 5.46/2.20 POL(isNatList(x_1)) = 0 5.46/2.20 POL(length(x_1)) = 1 + x_1 5.46/2.20 POL(nil) = 0 5.46/2.20 POL(s(x_1)) = x_1 5.46/2.20 POL(take(x_1, x_2)) = 1 + x_1 + x_2 5.46/2.20 POL(tt) = 0 5.46/2.20 POL(uLength(x_1, x_2)) = 1 + x_1 + x_2 5.46/2.20 POL(uTake1(x_1)) = x_1 5.46/2.20 POL(uTake2(x_1, x_2, x_3, x_4)) = 1 + x_1 + x_2 + x_3 + x_4 5.46/2.20 POL(zeros) = 0 5.46/2.20 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 5.46/2.20 5.46/2.20 take(0, IL) -> uTake1(isNatIList(IL)) 5.46/2.20 5.46/2.20 5.46/2.20 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (4) 5.46/2.20 Obligation: 5.46/2.20 Context-sensitive rewrite system: 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 The replacement map contains the following entries: 5.46/2.20 5.46/2.20 and: {1, 2} 5.46/2.20 tt: empty set 5.46/2.20 isNatIList: empty set 5.46/2.20 isNatList: empty set 5.46/2.20 isNat: empty set 5.46/2.20 0: empty set 5.46/2.20 s: {1} 5.46/2.20 length: {1} 5.46/2.20 zeros: empty set 5.46/2.20 cons: {1} 5.46/2.20 nil: empty set 5.46/2.20 take: {1, 2} 5.46/2.20 uTake2: {1} 5.46/2.20 uLength: {1} 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (5) CSDependencyPairsProof (EQUIVALENT) 5.46/2.20 Using Improved CS-DPs [LPAR08] we result in the following initial Q-CSDP problem. 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (6) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 The symbols in {and_2, s_1, length_1, take_2, AND_2, TAKE_2, LENGTH_1} are replacing on all positions. 5.46/2.20 For all symbols f in {cons_2, uTake2_4, uLength_2, UTAKE2_4, ULENGTH_2} we have mu(f) = {1}. 5.46/2.20 The symbols in {isNatIList_1, isNatList_1, isNat_1, ISNATLIST_1, ISNATILIST_1, ISNAT_1, U_1} are not replacing on any position. 5.46/2.20 5.46/2.20 The ordinary context-sensitive dependency pairs DP_o are: 5.46/2.20 ISNATILIST(IL) -> ISNATLIST(IL) 5.46/2.20 ISNAT(s(N)) -> ISNAT(N) 5.46/2.20 ISNAT(length(L)) -> ISNATLIST(L) 5.46/2.20 ISNATILIST(cons(N, IL)) -> AND(isNat(N), isNatIList(IL)) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 ISNATLIST(cons(N, L)) -> AND(isNat(N), isNatList(L)) 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNAT(N) 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNATLIST(L) 5.46/2.20 ISNATLIST(take(N, IL)) -> AND(isNat(N), isNatIList(IL)) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNATILIST(IL) 5.46/2.20 TAKE(s(M), cons(N, IL)) -> UTAKE2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 TAKE(s(M), cons(N, IL)) -> AND(isNat(M), and(isNat(N), isNatIList(IL))) 5.46/2.20 TAKE(s(M), cons(N, IL)) -> ISNAT(M) 5.46/2.20 TAKE(s(M), cons(N, IL)) -> AND(isNat(N), isNatIList(IL)) 5.46/2.20 TAKE(s(M), cons(N, IL)) -> ISNAT(N) 5.46/2.20 TAKE(s(M), cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 LENGTH(cons(N, L)) -> ULENGTH(and(isNat(N), isNatList(L)), L) 5.46/2.20 LENGTH(cons(N, L)) -> AND(isNat(N), isNatList(L)) 5.46/2.20 LENGTH(cons(N, L)) -> ISNAT(N) 5.46/2.20 LENGTH(cons(N, L)) -> ISNATLIST(L) 5.46/2.20 ULENGTH(tt, L) -> LENGTH(L) 5.46/2.20 5.46/2.20 The collapsing dependency pairs are DP_c: 5.46/2.20 UTAKE2(tt, M, N, IL) -> N 5.46/2.20 ULENGTH(tt, L) -> L 5.46/2.20 5.46/2.20 5.46/2.20 The hidden terms of R are: 5.46/2.20 5.46/2.20 zeros 5.46/2.20 take(x0, x1) 5.46/2.20 5.46/2.20 Every hiding context is built from: 5.46/2.20 aprove.DPFramework.CSDPProblem.QCSDPProblem$1@7d635eb2 5.46/2.20 5.46/2.20 Hence, the new unhiding pairs DP_u are : 5.46/2.20 UTAKE2(tt, M, N, IL) -> U(N) 5.46/2.20 ULENGTH(tt, L) -> U(L) 5.46/2.20 U(take(x_0, x_1)) -> U(x_0) 5.46/2.20 U(take(x_0, x_1)) -> U(x_1) 5.46/2.20 U(zeros) -> ZEROS 5.46/2.20 U(take(x0, x1)) -> TAKE(x0, x1) 5.46/2.20 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (7) QCSDependencyGraphProof (EQUIVALENT) 5.46/2.20 The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 3 SCCs with 13 less nodes. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (8) 5.46/2.20 Complex Obligation (AND) 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (9) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 The symbols in {and_2, s_1, length_1, take_2} are replacing on all positions. 5.46/2.20 For all symbols f in {cons_2, uTake2_4, uLength_2} we have mu(f) = {1}. 5.46/2.20 The symbols in {isNatIList_1, isNatList_1, isNat_1, ISNAT_1, ISNATLIST_1, ISNATILIST_1} are not replacing on any position. 5.46/2.20 5.46/2.20 The TRS P consists of the following rules: 5.46/2.20 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNAT(N) 5.46/2.20 ISNAT(s(N)) -> ISNAT(N) 5.46/2.20 ISNAT(length(L)) -> ISNATLIST(L) 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNATLIST(L) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNATILIST(IL) 5.46/2.20 ISNATILIST(IL) -> ISNATLIST(IL) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 5.46/2.20 The TRS R consists of the following rules: 5.46/2.20 5.46/2.20 and(tt, T) -> T 5.46/2.20 isNatIList(IL) -> isNatList(IL) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(N)) -> isNat(N) 5.46/2.20 isNat(length(L)) -> isNatList(L) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.20 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.20 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.20 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.20 uLength(tt, L) -> s(length(L)) 5.46/2.20 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (10) QCSUsableRulesProof (EQUIVALENT) 5.46/2.20 The following rules are not useable [DA_EMMES] and can be deleted: 5.46/2.20 5.46/2.20 and(tt, x0) -> x0 5.46/2.20 isNatIList(x0) -> isNatList(x0) 5.46/2.20 isNat(0) -> tt 5.46/2.20 isNat(s(x0)) -> isNat(x0) 5.46/2.20 isNat(length(x0)) -> isNatList(x0) 5.46/2.20 isNatIList(zeros) -> tt 5.46/2.20 isNatIList(cons(x0, x1)) -> and(isNat(x0), isNatIList(x1)) 5.46/2.20 isNatList(nil) -> tt 5.46/2.20 isNatList(cons(x0, x1)) -> and(isNat(x0), isNatList(x1)) 5.46/2.20 isNatList(take(x0, x1)) -> and(isNat(x0), isNatIList(x1)) 5.46/2.20 zeros -> cons(0, zeros) 5.46/2.20 take(s(x0), cons(x1, x2)) -> uTake2(and(isNat(x0), and(isNat(x1), isNatIList(x2))), x0, x1, x2) 5.46/2.20 uTake2(tt, x0, x1, x2) -> cons(x1, take(x0, x2)) 5.46/2.20 length(cons(x0, x1)) -> uLength(and(isNat(x0), isNatList(x1)), x1) 5.46/2.20 uLength(tt, x0) -> s(length(x0)) 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (11) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 The symbols in {s_1, length_1, take_2} are replacing on all positions. 5.46/2.20 For all symbols f in {cons_2} we have mu(f) = {1}. 5.46/2.20 The symbols in {ISNAT_1, ISNATLIST_1, ISNATILIST_1} are not replacing on any position. 5.46/2.20 5.46/2.20 The TRS P consists of the following rules: 5.46/2.20 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNAT(N) 5.46/2.20 ISNAT(s(N)) -> ISNAT(N) 5.46/2.20 ISNAT(length(L)) -> ISNATLIST(L) 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNATLIST(L) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNATILIST(IL) 5.46/2.20 ISNATILIST(IL) -> ISNATLIST(IL) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 5.46/2.20 R is empty. 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (12) QCSDPMuMonotonicPoloProof (EQUIVALENT) 5.46/2.20 By using the following mu-monotonic polynomial ordering [POLO], at least one Dependency Pair or term rewrite system rule of this Q-CSDP problem can be strictly oriented and thus deleted. 5.46/2.20 5.46/2.20 Strictly oriented dependency pairs: 5.46/2.20 5.46/2.20 ISNAT(s(N)) -> ISNAT(N) 5.46/2.20 ISNAT(length(L)) -> ISNATLIST(L) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNAT(N) 5.46/2.20 ISNATLIST(take(N, IL)) -> ISNATILIST(IL) 5.46/2.20 ISNATILIST(IL) -> ISNATLIST(IL) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNAT(N) 5.46/2.20 5.46/2.20 5.46/2.20 Used ordering: POLO with Polynomial interpretation [POLO]: 5.46/2.20 5.46/2.20 POL(ISNAT(x_1)) = 1 + x_1 5.46/2.20 POL(ISNATILIST(x_1)) = 2 + 2*x_1 5.46/2.20 POL(ISNATLIST(x_1)) = 1 + 2*x_1 5.46/2.20 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 5.46/2.20 POL(length(x_1)) = 1 + 2*x_1 5.46/2.20 POL(s(x_1)) = 2 + 2*x_1 5.46/2.20 POL(take(x_1, x_2)) = 2 + 2*x_1 + x_2 5.46/2.20 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (13) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 For all symbols f in {cons_2} we have mu(f) = {1}. 5.46/2.20 The symbols in {ISNAT_1, ISNATLIST_1, ISNATILIST_1} are not replacing on any position. 5.46/2.20 5.46/2.20 The TRS P consists of the following rules: 5.46/2.20 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNAT(N) 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNATLIST(L) 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 5.46/2.20 R is empty. 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (14) QCSDependencyGraphProof (EQUIVALENT) 5.46/2.20 The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 2 SCCs with 1 less node. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (15) 5.46/2.20 Complex Obligation (AND) 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (16) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 For all symbols f in {cons_2} we have mu(f) = {1}. 5.46/2.20 The symbols in {ISNATILIST_1} are not replacing on any position. 5.46/2.20 5.46/2.20 The TRS P consists of the following rules: 5.46/2.20 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 5.46/2.20 R is empty. 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (17) QCSDPMuMonotonicPoloProof (EQUIVALENT) 5.46/2.20 By using the following mu-monotonic polynomial ordering [POLO], at least one Dependency Pair or term rewrite system rule of this Q-CSDP problem can be strictly oriented and thus deleted. 5.46/2.20 5.46/2.20 Strictly oriented dependency pairs: 5.46/2.20 5.46/2.20 ISNATILIST(cons(N, IL)) -> ISNATILIST(IL) 5.46/2.20 5.46/2.20 5.46/2.20 Used ordering: POLO with Polynomial interpretation [POLO]: 5.46/2.20 5.46/2.20 POL(ISNATILIST(x_1)) = 2*x_1 5.46/2.20 POL(cons(x_1, x_2)) = 1 + x_1 + x_2 5.46/2.20 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (18) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 5.46/2.20 The TRS P consists of the following rules: 5.46/2.20 none 5.46/2.20 5.46/2.20 R is empty. 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (19) PIsEmptyProof (EQUIVALENT) 5.46/2.20 The TRS P is empty. Hence, there is no (P,Q,R,mu)-chain. 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (20) 5.46/2.20 YES 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (21) 5.46/2.20 Obligation: 5.46/2.20 Q-restricted context-sensitive dependency pair problem: 5.46/2.20 For all symbols f in {cons_2} we have mu(f) = {1}. 5.46/2.20 The symbols in {ISNATLIST_1} are not replacing on any position. 5.46/2.20 5.46/2.20 The TRS P consists of the following rules: 5.46/2.20 5.46/2.20 ISNATLIST(cons(N, L)) -> ISNATLIST(L) 5.46/2.20 5.46/2.20 R is empty. 5.46/2.20 Q is empty. 5.46/2.20 5.46/2.20 ---------------------------------------- 5.46/2.20 5.46/2.20 (22) QCSDPMuMonotonicPoloProof (EQUIVALENT) 5.46/2.21 By using the following mu-monotonic polynomial ordering [POLO], at least one Dependency Pair or term rewrite system rule of this Q-CSDP problem can be strictly oriented and thus deleted. 5.46/2.21 5.46/2.21 Strictly oriented dependency pairs: 5.46/2.21 5.46/2.21 ISNATLIST(cons(N, L)) -> ISNATLIST(L) 5.46/2.21 5.46/2.21 5.46/2.21 Used ordering: POLO with Polynomial interpretation [POLO]: 5.46/2.21 5.46/2.21 POL(ISNATLIST(x_1)) = 2*x_1 5.46/2.21 POL(cons(x_1, x_2)) = 1 + x_1 + x_2 5.46/2.21 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (23) 5.46/2.21 Obligation: 5.46/2.21 Q-restricted context-sensitive dependency pair problem: 5.46/2.21 5.46/2.21 The TRS P consists of the following rules: 5.46/2.21 none 5.46/2.21 5.46/2.21 R is empty. 5.46/2.21 Q is empty. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (24) PIsEmptyProof (EQUIVALENT) 5.46/2.21 The TRS P is empty. Hence, there is no (P,Q,R,mu)-chain. 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (25) 5.46/2.21 YES 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (26) 5.46/2.21 Obligation: 5.46/2.21 Q-restricted context-sensitive dependency pair problem: 5.46/2.21 The symbols in {and_2, s_1, length_1, take_2, TAKE_2} are replacing on all positions. 5.46/2.21 For all symbols f in {cons_2, uTake2_4, uLength_2, UTAKE2_4} we have mu(f) = {1}. 5.46/2.21 The symbols in {isNatIList_1, isNatList_1, isNat_1, U_1} are not replacing on any position. 5.46/2.21 5.46/2.21 The TRS P consists of the following rules: 5.46/2.21 5.46/2.21 TAKE(s(M), cons(N, IL)) -> UTAKE2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 UTAKE2(tt, M, N, IL) -> U(N) 5.46/2.21 U(take(x_0, x_1)) -> U(x_0) 5.46/2.21 U(take(x_0, x_1)) -> U(x_1) 5.46/2.21 U(take(x0, x1)) -> TAKE(x0, x1) 5.46/2.21 5.46/2.21 The TRS R consists of the following rules: 5.46/2.21 5.46/2.21 and(tt, T) -> T 5.46/2.21 isNatIList(IL) -> isNatList(IL) 5.46/2.21 isNat(0) -> tt 5.46/2.21 isNat(s(N)) -> isNat(N) 5.46/2.21 isNat(length(L)) -> isNatList(L) 5.46/2.21 isNatIList(zeros) -> tt 5.46/2.21 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 isNatList(nil) -> tt 5.46/2.21 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.21 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 zeros -> cons(0, zeros) 5.46/2.21 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.21 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.21 uLength(tt, L) -> s(length(L)) 5.46/2.21 5.46/2.21 Q is empty. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (27) QCSDPSubtermProof (EQUIVALENT) 5.46/2.21 We use the subterm processor [DA_EMMES]. 5.46/2.21 5.46/2.21 5.46/2.21 The following pairs can be oriented strictly and are deleted. 5.46/2.21 5.46/2.21 TAKE(s(M), cons(N, IL)) -> UTAKE2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 U(take(x_0, x_1)) -> U(x_0) 5.46/2.21 U(take(x_0, x_1)) -> U(x_1) 5.46/2.21 U(take(x0, x1)) -> TAKE(x0, x1) 5.46/2.21 The remaining pairs can at least be oriented weakly. 5.46/2.21 5.46/2.21 UTAKE2(tt, M, N, IL) -> U(N) 5.46/2.21 Used ordering: Combined order from the following AFS and order. 5.46/2.21 UTAKE2(x1, x2, x3, x4) = x3 5.46/2.21 5.46/2.21 TAKE(x1, x2) = x2 5.46/2.21 5.46/2.21 U(x1) = x1 5.46/2.21 5.46/2.21 5.46/2.21 Subterm Order 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (28) 5.46/2.21 Obligation: 5.46/2.21 Q-restricted context-sensitive dependency pair problem: 5.46/2.21 The symbols in {and_2, s_1, length_1, take_2} are replacing on all positions. 5.46/2.21 For all symbols f in {cons_2, uTake2_4, uLength_2, UTAKE2_4} we have mu(f) = {1}. 5.46/2.21 The symbols in {isNatIList_1, isNatList_1, isNat_1, U_1} are not replacing on any position. 5.46/2.21 5.46/2.21 The TRS P consists of the following rules: 5.46/2.21 5.46/2.21 UTAKE2(tt, M, N, IL) -> U(N) 5.46/2.21 5.46/2.21 The TRS R consists of the following rules: 5.46/2.21 5.46/2.21 and(tt, T) -> T 5.46/2.21 isNatIList(IL) -> isNatList(IL) 5.46/2.21 isNat(0) -> tt 5.46/2.21 isNat(s(N)) -> isNat(N) 5.46/2.21 isNat(length(L)) -> isNatList(L) 5.46/2.21 isNatIList(zeros) -> tt 5.46/2.21 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 isNatList(nil) -> tt 5.46/2.21 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.21 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 zeros -> cons(0, zeros) 5.46/2.21 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.21 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.21 uLength(tt, L) -> s(length(L)) 5.46/2.21 5.46/2.21 Q is empty. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (29) QCSDependencyGraphProof (EQUIVALENT) 5.46/2.21 The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 0 SCCs with 1 less node. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (30) 5.46/2.21 TRUE 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (31) 5.46/2.21 Obligation: 5.46/2.21 Q-restricted context-sensitive dependency pair problem: 5.46/2.21 The symbols in {and_2, s_1, length_1, take_2, LENGTH_1} are replacing on all positions. 5.46/2.21 For all symbols f in {cons_2, uTake2_4, uLength_2, ULENGTH_2} we have mu(f) = {1}. 5.46/2.21 The symbols in {isNatIList_1, isNatList_1, isNat_1} are not replacing on any position. 5.46/2.21 5.46/2.21 The TRS P consists of the following rules: 5.46/2.21 5.46/2.21 ULENGTH(tt, L) -> LENGTH(L) 5.46/2.21 LENGTH(cons(N, L)) -> ULENGTH(and(isNat(N), isNatList(L)), L) 5.46/2.21 5.46/2.21 The TRS R consists of the following rules: 5.46/2.21 5.46/2.21 and(tt, T) -> T 5.46/2.21 isNatIList(IL) -> isNatList(IL) 5.46/2.21 isNat(0) -> tt 5.46/2.21 isNat(s(N)) -> isNat(N) 5.46/2.21 isNat(length(L)) -> isNatList(L) 5.46/2.21 isNatIList(zeros) -> tt 5.46/2.21 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 isNatList(nil) -> tt 5.46/2.21 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.21 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 zeros -> cons(0, zeros) 5.46/2.21 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.21 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.21 uLength(tt, L) -> s(length(L)) 5.46/2.21 5.46/2.21 Q is empty. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (32) QCSDPReductionPairProof (EQUIVALENT) 5.46/2.21 Using the order 5.46/2.21 5.46/2.21 Matrix interpretation [MATRO]: 5.46/2.21 5.46/2.21 Non-tuple symbols: 5.46/2.21 <<< 5.46/2.21 M( isNat_1(x_1) ) = [[1], [1]] + [[1, 0], [0, 0]] * x_1 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( isNatIList_1(x_1) ) = [[1], [1]] + [[1, 0], [0, 0]] * x_1 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( and_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [0, 1]] * x_2 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( tt ) = [[1], [1]] 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( uLength_2(x_1, x_2) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( nil ) = [[1], [1]] 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( s_1(x_1) ) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( uTake2_4(x_1, ..., x_4) ) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 + [[0, 0], [1, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 + [[1, 0], [1, 1]] * x_4 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( length_1(x_1) ) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( take_2(x_1, x_2) ) = [[1], [0]] + [[0, 0], [1, 0]] * x_1 + [[1, 0], [0, 1]] * x_2 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( zeros ) = [[0], [0]] 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( 0 ) = [[0], [0]] 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( cons_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [1, 1]] * x_2 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( isNatList_1(x_1) ) = [[0], [1]] + [[1, 0], [0, 0]] * x_1 5.46/2.21 >>> 5.46/2.21 5.46/2.21 Tuple symbols: 5.46/2.21 <<< 5.46/2.21 M( LENGTH_1(x_1) ) = [[1]] + [[0, 1]] * x_1 5.46/2.21 >>> 5.46/2.21 5.46/2.21 <<< 5.46/2.21 M( ULENGTH_2(x_1, x_2) ) = [[0]] + [[1, 0]] * x_1 + [[0, 1]] * x_2 5.46/2.21 >>> 5.46/2.21 5.46/2.21 5.46/2.21 5.46/2.21 Matrix type: 5.46/2.21 5.46/2.21 We used a basic matrix type which is not further parametrizeable. 5.46/2.21 5.46/2.21 5.46/2.21 5.46/2.21 5.46/2.21 5.46/2.21 the following usable rules 5.46/2.21 5.46/2.21 5.46/2.21 and(tt, T) -> T 5.46/2.21 isNat(0) -> tt 5.46/2.21 isNat(s(N)) -> isNat(N) 5.46/2.21 isNat(length(L)) -> isNatList(L) 5.46/2.21 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.21 uLength(tt, L) -> s(length(L)) 5.46/2.21 isNatList(nil) -> tt 5.46/2.21 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.21 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.21 isNatIList(IL) -> isNatList(IL) 5.46/2.21 isNatIList(zeros) -> tt 5.46/2.21 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 zeros -> cons(0, zeros) 5.46/2.21 5.46/2.21 5.46/2.21 could all be oriented weakly. 5.46/2.21 5.46/2.21 Furthermore, the pairs 5.46/2.21 5.46/2.21 5.46/2.21 LENGTH(cons(N, L)) -> ULENGTH(and(isNat(N), isNatList(L)), L) 5.46/2.21 5.46/2.21 5.46/2.21 could be oriented strictly and thus removed by the CS-Reduction Pair Processor [LPAR08,DA_EMMES]. 5.46/2.21 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (33) 5.46/2.21 Obligation: 5.46/2.21 Q-restricted context-sensitive dependency pair problem: 5.46/2.21 The symbols in {and_2, s_1, length_1, take_2, LENGTH_1} are replacing on all positions. 5.46/2.21 For all symbols f in {cons_2, uTake2_4, uLength_2, ULENGTH_2} we have mu(f) = {1}. 5.46/2.21 The symbols in {isNatIList_1, isNatList_1, isNat_1} are not replacing on any position. 5.46/2.21 5.46/2.21 The TRS P consists of the following rules: 5.46/2.21 5.46/2.21 ULENGTH(tt, L) -> LENGTH(L) 5.46/2.21 5.46/2.21 The TRS R consists of the following rules: 5.46/2.21 5.46/2.21 and(tt, T) -> T 5.46/2.21 isNatIList(IL) -> isNatList(IL) 5.46/2.21 isNat(0) -> tt 5.46/2.21 isNat(s(N)) -> isNat(N) 5.46/2.21 isNat(length(L)) -> isNatList(L) 5.46/2.21 isNatIList(zeros) -> tt 5.46/2.21 isNatIList(cons(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 isNatList(nil) -> tt 5.46/2.21 isNatList(cons(N, L)) -> and(isNat(N), isNatList(L)) 5.46/2.21 isNatList(take(N, IL)) -> and(isNat(N), isNatIList(IL)) 5.46/2.21 zeros -> cons(0, zeros) 5.46/2.21 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) 5.46/2.21 uTake2(tt, M, N, IL) -> cons(N, take(M, IL)) 5.46/2.21 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(L)), L) 5.46/2.21 uLength(tt, L) -> s(length(L)) 5.46/2.21 5.46/2.21 Q is empty. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (34) QCSDependencyGraphProof (EQUIVALENT) 5.46/2.21 The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 0 SCCs with 1 less node. 5.46/2.21 5.46/2.21 ---------------------------------------- 5.46/2.21 5.46/2.21 (35) 5.46/2.21 TRUE 5.78/2.23 EOF