4.50/1.92 YES 4.50/1.94 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 4.50/1.94 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.50/1.94 4.50/1.94 4.50/1.94 Termination of the given CSR could be proven: 4.50/1.94 4.50/1.94 (0) CSR 4.50/1.94 (1) CSRRRRProof [EQUIVALENT, 55 ms] 4.50/1.94 (2) CSR 4.50/1.94 (3) CSRRRRProof [EQUIVALENT, 23 ms] 4.50/1.94 (4) CSR 4.50/1.94 (5) CSRRRRProof [EQUIVALENT, 0 ms] 4.50/1.94 (6) CSR 4.50/1.94 (7) CSRRRRProof [EQUIVALENT, 11 ms] 4.50/1.94 (8) CSR 4.50/1.94 (9) CSRRRRProof [EQUIVALENT, 0 ms] 4.50/1.94 (10) CSR 4.50/1.94 (11) CSRRRRProof [EQUIVALENT, 20 ms] 4.50/1.94 (12) CSR 4.50/1.94 (13) CSRRRRProof [EQUIVALENT, 0 ms] 4.50/1.94 (14) CSR 4.50/1.94 (15) CSRRRRProof [EQUIVALENT, 7 ms] 4.50/1.94 (16) CSR 4.50/1.94 (17) CSRRRRProof [EQUIVALENT, 0 ms] 4.50/1.94 (18) CSR 4.50/1.94 (19) CSRRRRProof [EQUIVALENT, 0 ms] 4.50/1.94 (20) CSR 4.50/1.94 (21) CSRRRRProof [EQUIVALENT, 5 ms] 4.50/1.94 (22) CSR 4.50/1.94 (23) RisEmptyProof [EQUIVALENT, 0 ms] 4.50/1.94 (24) YES 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (0) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(nil) -> tt 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(nil) -> 0 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 nil: empty set 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (1) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(nil) -> tt 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(nil) -> 0 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 nil: empty set 4.50/1.94 Used ordering: 4.50/1.94 Polynomial interpretation [POLO]: 4.50/1.94 4.50/1.94 POL(0) = 0 4.50/1.94 POL(U11(x_1)) = x_1 4.50/1.94 POL(U21(x_1)) = x_1 4.50/1.94 POL(U31(x_1)) = x_1 4.50/1.94 POL(U41(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(U42(x_1)) = x_1 4.50/1.94 POL(U51(x_1, x_2)) = x_1 4.50/1.94 POL(U52(x_1)) = x_1 4.50/1.94 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 + x_3 4.50/1.94 POL(U62(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(cons(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(isNat(x_1)) = 1 4.50/1.94 POL(isNatIList(x_1)) = 1 + x_1 4.50/1.94 POL(isNatList(x_1)) = 1 4.50/1.94 POL(length(x_1)) = 1 + x_1 4.50/1.94 POL(nil) = 1 4.50/1.94 POL(s(x_1)) = x_1 4.50/1.94 POL(tt) = 1 4.50/1.94 POL(zeros) = 0 4.50/1.94 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.94 4.50/1.94 length(nil) -> 0 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (2) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(nil) -> tt 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 nil: empty set 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (3) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(nil) -> tt 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 nil: empty set 4.50/1.94 Used ordering: 4.50/1.94 Polynomial interpretation [POLO]: 4.50/1.94 4.50/1.94 POL(0) = 0 4.50/1.94 POL(U11(x_1)) = x_1 4.50/1.94 POL(U21(x_1)) = x_1 4.50/1.94 POL(U31(x_1)) = x_1 4.50/1.94 POL(U41(x_1, x_2)) = 2*x_1 + 2*x_2 4.50/1.94 POL(U42(x_1)) = 2*x_1 4.50/1.94 POL(U51(x_1, x_2)) = x_1 + 2*x_2 4.50/1.94 POL(U52(x_1)) = x_1 4.50/1.94 POL(U61(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 4.50/1.94 POL(U62(x_1, x_2)) = x_1 + 2*x_2 4.50/1.94 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 4.50/1.94 POL(isNat(x_1)) = x_1 4.50/1.94 POL(isNatIList(x_1)) = x_1 4.50/1.94 POL(isNatList(x_1)) = x_1 4.50/1.94 POL(length(x_1)) = 2*x_1 4.50/1.94 POL(nil) = 2 4.50/1.94 POL(s(x_1)) = x_1 4.50/1.94 POL(tt) = 0 4.50/1.94 POL(zeros) = 0 4.50/1.94 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.94 4.50/1.94 isNatList(nil) -> tt 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (4) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (5) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 Used ordering: 4.50/1.94 Polynomial interpretation [POLO]: 4.50/1.94 4.50/1.94 POL(0) = 0 4.50/1.94 POL(U11(x_1)) = x_1 4.50/1.94 POL(U21(x_1)) = x_1 4.50/1.94 POL(U31(x_1)) = x_1 4.50/1.94 POL(U41(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(U42(x_1)) = x_1 4.50/1.94 POL(U51(x_1, x_2)) = x_1 4.50/1.94 POL(U52(x_1)) = x_1 4.50/1.94 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 4.50/1.94 POL(U62(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(cons(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(isNat(x_1)) = 1 4.50/1.94 POL(isNatIList(x_1)) = 1 + x_1 4.50/1.94 POL(isNatList(x_1)) = 1 4.50/1.94 POL(length(x_1)) = 1 + x_1 4.50/1.94 POL(s(x_1)) = x_1 4.50/1.94 POL(tt) = 1 4.50/1.94 POL(zeros) = 1 4.50/1.94 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.94 4.50/1.94 isNatIList(zeros) -> tt 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (6) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (7) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U31(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 Used ordering: 4.50/1.94 Polynomial interpretation [POLO]: 4.50/1.94 4.50/1.94 POL(0) = 0 4.50/1.94 POL(U11(x_1)) = x_1 4.50/1.94 POL(U21(x_1)) = x_1 4.50/1.94 POL(U31(x_1)) = 1 + x_1 4.50/1.94 POL(U41(x_1, x_2)) = 1 + x_1 + x_2 4.50/1.94 POL(U42(x_1)) = x_1 4.50/1.94 POL(U51(x_1, x_2)) = x_1 4.50/1.94 POL(U52(x_1)) = x_1 4.50/1.94 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 4.50/1.94 POL(U62(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(cons(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(isNat(x_1)) = 0 4.50/1.94 POL(isNatIList(x_1)) = 1 + x_1 4.50/1.94 POL(isNatList(x_1)) = 0 4.50/1.94 POL(length(x_1)) = x_1 4.50/1.94 POL(s(x_1)) = x_1 4.50/1.94 POL(tt) = 0 4.50/1.94 POL(zeros) = 1 4.50/1.94 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.94 4.50/1.94 U31(tt) -> tt 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (8) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (9) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U31: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 Used ordering: 4.50/1.94 Polynomial interpretation [POLO]: 4.50/1.94 4.50/1.94 POL(0) = 0 4.50/1.94 POL(U11(x_1)) = x_1 4.50/1.94 POL(U21(x_1)) = x_1 4.50/1.94 POL(U31(x_1)) = x_1 4.50/1.94 POL(U41(x_1, x_2)) = 1 + x_1 + x_2 4.50/1.94 POL(U42(x_1)) = x_1 4.50/1.94 POL(U51(x_1, x_2)) = x_1 4.50/1.94 POL(U52(x_1)) = x_1 4.50/1.94 POL(U61(x_1, x_2, x_3)) = x_1 + x_2 4.50/1.94 POL(U62(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(cons(x_1, x_2)) = x_1 + x_2 4.50/1.94 POL(isNat(x_1)) = 0 4.50/1.94 POL(isNatIList(x_1)) = 1 + x_1 4.50/1.94 POL(isNatList(x_1)) = 0 4.50/1.94 POL(length(x_1)) = x_1 4.50/1.94 POL(s(x_1)) = x_1 4.50/1.94 POL(tt) = 0 4.50/1.94 POL(zeros) = 1 4.50/1.94 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.94 4.50/1.94 isNatIList(V) -> U31(isNatList(V)) 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (10) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (11) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 Used ordering: 4.50/1.94 Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(zeros) = [[0], [1]] 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(cons(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [1, 1]] * x_2 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(0) = [[0], [0]] 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U11(x_1)) = [[0], [1]] + [[1, 0], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(tt) = [[0], [1]] 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U21(x_1)) = [[0], [1]] + [[1, 0], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U41(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U42(x_1)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(isNatIList(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U51(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U52(x_1)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(isNatList(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U61(x_1, x_2, x_3)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[1, 0], [0, 0]] * x_3 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(U62(x_1, x_2)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(isNat(x_1)) = [[0], [1]] + [[1, 0], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(s(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 <<< 4.50/1.94 POL(length(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 4.50/1.94 >>> 4.50/1.94 4.50/1.94 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.94 4.50/1.94 U62(tt, L) -> s(length(L)) 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (12) 4.50/1.94 Obligation: 4.50/1.94 Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 4.50/1.94 ---------------------------------------- 4.50/1.94 4.50/1.94 (13) CSRRRRProof (EQUIVALENT) 4.50/1.94 The following CSR is given: Context-sensitive rewrite system: 4.50/1.94 The TRS R consists of the following rules: 4.50/1.94 4.50/1.94 zeros -> cons(0, zeros) 4.50/1.94 U11(tt) -> tt 4.50/1.94 U21(tt) -> tt 4.50/1.94 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.94 U42(tt) -> tt 4.50/1.94 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.94 U52(tt) -> tt 4.50/1.94 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.94 isNat(0) -> tt 4.50/1.94 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.94 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.94 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.94 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.94 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.94 4.50/1.94 The replacement map contains the following entries: 4.50/1.94 4.50/1.94 zeros: empty set 4.50/1.94 cons: {1} 4.50/1.94 0: empty set 4.50/1.94 U11: {1} 4.50/1.94 tt: empty set 4.50/1.94 U21: {1} 4.50/1.94 U41: {1} 4.50/1.94 U42: {1} 4.50/1.94 isNatIList: empty set 4.50/1.94 U51: {1} 4.50/1.94 U52: {1} 4.50/1.94 isNatList: empty set 4.50/1.94 U61: {1} 4.50/1.94 U62: {1} 4.50/1.94 isNat: empty set 4.50/1.94 s: {1} 4.50/1.94 length: {1} 4.50/1.94 Used ordering: 4.50/1.94 Polynomial interpretation [POLO]: 4.50/1.94 4.50/1.94 POL(0) = 0 4.50/1.94 POL(U11(x_1)) = x_1 4.50/1.94 POL(U21(x_1)) = x_1 4.50/1.94 POL(U41(x_1, x_2)) = x_1 4.50/1.94 POL(U42(x_1)) = x_1 4.50/1.94 POL(U51(x_1, x_2)) = x_1 4.50/1.94 POL(U52(x_1)) = x_1 4.50/1.95 POL(U61(x_1, x_2, x_3)) = 1 + x_1 4.50/1.95 POL(U62(x_1, x_2)) = x_1 4.50/1.95 POL(cons(x_1, x_2)) = 1 + x_1 4.50/1.95 POL(isNat(x_1)) = 0 4.50/1.95 POL(isNatIList(x_1)) = 0 4.50/1.95 POL(isNatList(x_1)) = 0 4.50/1.95 POL(length(x_1)) = 1 + x_1 4.50/1.95 POL(s(x_1)) = 1 + x_1 4.50/1.95 POL(tt) = 0 4.50/1.95 POL(zeros) = 1 4.50/1.95 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.95 4.50/1.95 U61(tt, L, N) -> U62(isNat(N), L) 4.50/1.95 length(cons(N, L)) -> U61(isNatList(L), L, N) 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (14) 4.50/1.95 Obligation: 4.50/1.95 Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 zeros -> cons(0, zeros) 4.50/1.95 U11(tt) -> tt 4.50/1.95 U21(tt) -> tt 4.50/1.95 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.95 U42(tt) -> tt 4.50/1.95 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.95 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 zeros: empty set 4.50/1.95 cons: {1} 4.50/1.95 0: empty set 4.50/1.95 U11: {1} 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U41: {1} 4.50/1.95 U42: {1} 4.50/1.95 isNatIList: empty set 4.50/1.95 U51: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNatList: empty set 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 length: {1} 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (15) CSRRRRProof (EQUIVALENT) 4.50/1.95 The following CSR is given: Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 zeros -> cons(0, zeros) 4.50/1.95 U11(tt) -> tt 4.50/1.95 U21(tt) -> tt 4.50/1.95 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.95 U42(tt) -> tt 4.50/1.95 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.95 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 zeros: empty set 4.50/1.95 cons: {1} 4.50/1.95 0: empty set 4.50/1.95 U11: {1} 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U41: {1} 4.50/1.95 U42: {1} 4.50/1.95 isNatIList: empty set 4.50/1.95 U51: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNatList: empty set 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 length: {1} 4.50/1.95 Used ordering: 4.50/1.95 Polynomial interpretation [POLO]: 4.50/1.95 4.50/1.95 POL(0) = 0 4.50/1.95 POL(U11(x_1)) = x_1 4.50/1.95 POL(U21(x_1)) = x_1 4.50/1.95 POL(U41(x_1, x_2)) = x_1 4.50/1.95 POL(U42(x_1)) = x_1 4.50/1.95 POL(U51(x_1, x_2)) = x_1 4.50/1.95 POL(U52(x_1)) = x_1 4.50/1.95 POL(cons(x_1, x_2)) = x_1 4.50/1.95 POL(isNat(x_1)) = 0 4.50/1.95 POL(isNatIList(x_1)) = 0 4.50/1.95 POL(isNatList(x_1)) = 0 4.50/1.95 POL(length(x_1)) = 1 + x_1 4.50/1.95 POL(s(x_1)) = 1 + x_1 4.50/1.95 POL(tt) = 0 4.50/1.95 POL(zeros) = 1 4.50/1.95 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.95 4.50/1.95 zeros -> cons(0, zeros) 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (16) 4.50/1.95 Obligation: 4.50/1.95 Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 U11(tt) -> tt 4.50/1.95 U21(tt) -> tt 4.50/1.95 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.95 U42(tt) -> tt 4.50/1.95 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.95 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 cons: {1} 4.50/1.95 0: empty set 4.50/1.95 U11: {1} 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U41: {1} 4.50/1.95 U42: {1} 4.50/1.95 isNatIList: empty set 4.50/1.95 U51: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNatList: empty set 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 length: {1} 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (17) CSRRRRProof (EQUIVALENT) 4.50/1.95 The following CSR is given: Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 U11(tt) -> tt 4.50/1.95 U21(tt) -> tt 4.50/1.95 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.95 U42(tt) -> tt 4.50/1.95 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.95 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 cons: {1} 4.50/1.95 0: empty set 4.50/1.95 U11: {1} 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U41: {1} 4.50/1.95 U42: {1} 4.50/1.95 isNatIList: empty set 4.50/1.95 U51: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNatList: empty set 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 length: {1} 4.50/1.95 Used ordering: 4.50/1.95 Polynomial interpretation [POLO]: 4.50/1.95 4.50/1.95 POL(0) = 1 4.50/1.95 POL(U11(x_1)) = x_1 4.50/1.95 POL(U21(x_1)) = 1 + x_1 4.50/1.95 POL(U41(x_1, x_2)) = x_1 + x_2 4.50/1.95 POL(U42(x_1)) = x_1 4.50/1.95 POL(U51(x_1, x_2)) = x_1 + x_2 4.50/1.95 POL(U52(x_1)) = x_1 4.50/1.95 POL(cons(x_1, x_2)) = 1 + x_1 + x_2 4.50/1.95 POL(isNat(x_1)) = x_1 4.50/1.95 POL(isNatIList(x_1)) = x_1 4.50/1.95 POL(isNatList(x_1)) = x_1 4.50/1.95 POL(length(x_1)) = 1 + x_1 4.50/1.95 POL(s(x_1)) = 1 + x_1 4.50/1.95 POL(tt) = 1 4.50/1.95 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.95 4.50/1.95 U21(tt) -> tt 4.50/1.95 U41(tt, V2) -> U42(isNatIList(V2)) 4.50/1.95 U51(tt, V2) -> U52(isNatList(V2)) 4.50/1.95 isNat(length(V1)) -> U11(isNatList(V1)) 4.50/1.95 isNatIList(cons(V1, V2)) -> U41(isNat(V1), V2) 4.50/1.95 isNatList(cons(V1, V2)) -> U51(isNat(V1), V2) 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (18) 4.50/1.95 Obligation: 4.50/1.95 Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 U11(tt) -> tt 4.50/1.95 U42(tt) -> tt 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 0: empty set 4.50/1.95 U11: {1} 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U42: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (19) CSRRRRProof (EQUIVALENT) 4.50/1.95 The following CSR is given: Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 U11(tt) -> tt 4.50/1.95 U42(tt) -> tt 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 0: empty set 4.50/1.95 U11: {1} 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U42: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 Used ordering: 4.50/1.95 Polynomial interpretation [POLO]: 4.50/1.95 4.50/1.95 POL(0) = 1 4.50/1.95 POL(U11(x_1)) = 1 + x_1 4.50/1.95 POL(U21(x_1)) = 1 + x_1 4.50/1.95 POL(U42(x_1)) = x_1 4.50/1.95 POL(U52(x_1)) = x_1 4.50/1.95 POL(isNat(x_1)) = 1 + x_1 4.50/1.95 POL(s(x_1)) = 1 + x_1 4.50/1.95 POL(tt) = 0 4.50/1.95 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.95 4.50/1.95 U11(tt) -> tt 4.50/1.95 isNat(0) -> tt 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (20) 4.50/1.95 Obligation: 4.50/1.95 Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 U42(tt) -> tt 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U42: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (21) CSRRRRProof (EQUIVALENT) 4.50/1.95 The following CSR is given: Context-sensitive rewrite system: 4.50/1.95 The TRS R consists of the following rules: 4.50/1.95 4.50/1.95 U42(tt) -> tt 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 4.50/1.95 The replacement map contains the following entries: 4.50/1.95 4.50/1.95 tt: empty set 4.50/1.95 U21: {1} 4.50/1.95 U42: {1} 4.50/1.95 U52: {1} 4.50/1.95 isNat: empty set 4.50/1.95 s: {1} 4.50/1.95 Used ordering: 4.50/1.95 Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 4.50/1.95 4.50/1.95 <<< 4.50/1.95 POL(U42(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 4.50/1.95 >>> 4.50/1.95 4.50/1.95 <<< 4.50/1.95 POL(tt) = [[1], [1]] 4.50/1.95 >>> 4.50/1.95 4.50/1.95 <<< 4.50/1.95 POL(U52(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 4.50/1.95 >>> 4.50/1.95 4.50/1.95 <<< 4.50/1.95 POL(isNat(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 4.50/1.95 >>> 4.50/1.95 4.50/1.95 <<< 4.50/1.95 POL(s(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 4.50/1.95 >>> 4.50/1.95 4.50/1.95 <<< 4.50/1.95 POL(U21(x_1)) = [[1], [1]] + [[1, 0], [1, 1]] * x_1 4.50/1.95 >>> 4.50/1.95 4.50/1.95 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.50/1.95 4.50/1.95 U42(tt) -> tt 4.50/1.95 U52(tt) -> tt 4.50/1.95 isNat(s(V1)) -> U21(isNat(V1)) 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (22) 4.50/1.95 Obligation: 4.50/1.95 Context-sensitive rewrite system: 4.50/1.95 R is empty. 4.50/1.95 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (23) RisEmptyProof (EQUIVALENT) 4.50/1.95 The CSR R is empty. Hence, termination is trivially proven. 4.50/1.95 ---------------------------------------- 4.50/1.95 4.50/1.95 (24) 4.50/1.95 YES 4.50/1.98 EOF