188.74/59.58 YES 188.74/59.60 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 188.74/59.60 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 188.74/59.60 188.74/59.60 188.74/59.60 Termination of the given CSR could be proven: 188.74/59.60 188.74/59.60 (0) CSR 188.74/59.60 (1) CSRRRRProof [EQUIVALENT, 77 ms] 188.74/59.60 (2) CSR 188.74/59.60 (3) CSRRRRProof [EQUIVALENT, 6 ms] 188.74/59.60 (4) CSR 188.74/59.60 (5) CSRRRRProof [EQUIVALENT, 26 ms] 188.74/59.60 (6) CSR 188.74/59.60 (7) CSRRRRProof [EQUIVALENT, 23 ms] 188.74/59.60 (8) CSR 188.74/59.60 (9) CSRRRRProof [EQUIVALENT, 19 ms] 188.74/59.60 (10) CSR 188.74/59.60 (11) CSRRRRProof [EQUIVALENT, 21 ms] 188.74/59.60 (12) CSR 188.74/59.60 (13) CSRRRRProof [EQUIVALENT, 41 ms] 188.74/59.60 (14) CSR 188.74/59.60 (15) Incomplete Giesl Middeldorp-Transformation [SOUND, 0 ms] 188.74/59.60 (16) QTRS 188.74/59.60 (17) DependencyPairsProof [EQUIVALENT, 0 ms] 188.74/59.60 (18) QDP 188.74/59.60 (19) DependencyGraphProof [EQUIVALENT, 0 ms] 188.74/59.60 (20) QDP 188.74/59.60 (21) QDPOrderProof [EQUIVALENT, 194 ms] 188.74/59.60 (22) QDP 188.74/59.60 (23) DependencyGraphProof [EQUIVALENT, 2 ms] 188.74/59.60 (24) AND 188.74/59.60 (25) QDP 188.74/59.60 (26) QDPOrderProof [EQUIVALENT, 148 ms] 188.74/59.60 (27) QDP 188.74/59.60 (28) QDPOrderProof [EQUIVALENT, 141 ms] 188.74/59.60 (29) QDP 188.74/59.60 (30) QDPOrderProof [EQUIVALENT, 97 ms] 188.74/59.60 (31) QDP 188.74/59.60 (32) QDPOrderProof [EQUIVALENT, 136 ms] 188.74/59.60 (33) QDP 188.74/59.60 (34) QDPOrderProof [EQUIVALENT, 133 ms] 188.74/59.60 (35) QDP 188.74/59.60 (36) QDPOrderProof [EQUIVALENT, 74 ms] 188.74/59.60 (37) QDP 188.74/59.60 (38) DependencyGraphProof [EQUIVALENT, 0 ms] 188.74/59.60 (39) QDP 188.74/59.60 (40) QDPOrderProof [EQUIVALENT, 118 ms] 188.74/59.60 (41) QDP 188.74/59.60 (42) DependencyGraphProof [EQUIVALENT, 0 ms] 188.74/59.60 (43) AND 188.74/59.60 (44) QDP 188.74/59.60 (45) UsableRulesProof [EQUIVALENT, 0 ms] 188.74/59.60 (46) QDP 188.74/59.60 (47) QDPSizeChangeProof [EQUIVALENT, 0 ms] 188.74/59.60 (48) YES 188.74/59.60 (49) QDP 188.74/59.60 (50) QDPSizeChangeProof [EQUIVALENT, 0 ms] 188.74/59.60 (51) YES 188.74/59.60 (52) QDP 188.74/59.60 (53) QDPOrderProof [EQUIVALENT, 94 ms] 188.74/59.60 (54) QDP 188.74/59.60 (55) QDPOrderProof [EQUIVALENT, 93 ms] 188.74/59.60 (56) QDP 188.74/59.60 (57) QDPOrderProof [EQUIVALENT, 113 ms] 188.74/59.60 (58) QDP 188.74/59.60 (59) QDPOrderProof [EQUIVALENT, 104 ms] 188.74/59.60 (60) QDP 188.74/59.60 (61) DependencyGraphProof [EQUIVALENT, 0 ms] 188.74/59.60 (62) AND 188.74/59.60 (63) QDP 188.74/59.60 (64) QDPSizeChangeProof [EQUIVALENT, 0 ms] 188.74/59.60 (65) YES 188.74/59.60 (66) QDP 188.74/59.60 (67) QDPSizeChangeProof [EQUIVALENT, 0 ms] 188.74/59.60 (68) YES 188.74/59.60 (69) QDP 188.74/59.60 (70) QDPSizeChangeProof [EQUIVALENT, 0 ms] 188.74/59.60 (71) YES 188.74/59.60 188.74/59.60 188.74/59.60 ---------------------------------------- 188.74/59.60 188.74/59.60 (0) 188.74/59.60 Obligation: 188.74/59.60 Context-sensitive rewrite system: 188.74/59.60 The TRS R consists of the following rules: 188.74/59.60 188.74/59.60 zeros -> cons(0, zeros) 188.74/59.60 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.60 U12(tt) -> tt 188.74/59.60 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.60 U22(tt) -> tt 188.74/59.60 U31(tt, V) -> U32(isNatList(V)) 188.74/59.60 U32(tt) -> tt 188.74/59.60 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.60 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.60 U43(tt) -> tt 188.74/59.60 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.60 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.60 U53(tt) -> tt 188.74/59.60 U61(tt, L) -> s(length(L)) 188.74/59.60 and(tt, X) -> X 188.74/59.60 isNat(0) -> tt 188.74/59.60 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.60 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.60 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.60 isNatIList(zeros) -> tt 188.74/59.60 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.60 isNatIListKind(nil) -> tt 188.74/59.60 isNatIListKind(zeros) -> tt 188.74/59.60 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.60 isNatKind(0) -> tt 188.74/59.60 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.60 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.60 isNatList(nil) -> tt 188.74/59.60 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.60 length(nil) -> 0 188.74/59.60 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.60 188.74/59.60 The replacement map contains the following entries: 188.74/59.60 188.74/59.60 zeros: empty set 188.74/59.60 cons: {1} 188.74/59.60 0: empty set 188.74/59.60 U11: {1} 188.74/59.60 tt: empty set 188.74/59.60 U12: {1} 188.74/59.60 isNatList: empty set 188.74/59.60 U21: {1} 188.74/59.60 U22: {1} 188.74/59.60 isNat: empty set 188.74/59.60 U31: {1} 188.74/59.60 U32: {1} 188.74/59.60 U41: {1} 188.74/59.60 U42: {1} 188.74/59.60 U43: {1} 188.74/59.60 isNatIList: empty set 188.74/59.60 U51: {1} 188.74/59.60 U52: {1} 188.74/59.60 U53: {1} 188.74/59.60 U61: {1} 188.74/59.60 s: {1} 188.74/59.60 length: {1} 188.74/59.60 and: {1} 188.74/59.60 isNatIListKind: empty set 188.74/59.60 isNatKind: empty set 188.74/59.60 nil: empty set 188.74/59.60 188.74/59.60 ---------------------------------------- 188.74/59.60 188.74/59.60 (1) CSRRRRProof (EQUIVALENT) 188.74/59.60 The following CSR is given: Context-sensitive rewrite system: 188.74/59.60 The TRS R consists of the following rules: 188.74/59.60 188.74/59.60 zeros -> cons(0, zeros) 188.74/59.60 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.60 U12(tt) -> tt 188.74/59.60 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.60 U22(tt) -> tt 188.74/59.60 U31(tt, V) -> U32(isNatList(V)) 188.74/59.60 U32(tt) -> tt 188.74/59.60 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.60 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.60 U43(tt) -> tt 188.74/59.60 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.60 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.60 U53(tt) -> tt 188.74/59.60 U61(tt, L) -> s(length(L)) 188.74/59.60 and(tt, X) -> X 188.74/59.60 isNat(0) -> tt 188.74/59.60 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.60 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.60 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.60 isNatIList(zeros) -> tt 188.74/59.60 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.60 isNatIListKind(nil) -> tt 188.74/59.60 isNatIListKind(zeros) -> tt 188.74/59.60 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.60 isNatKind(0) -> tt 188.74/59.60 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.60 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.60 isNatList(nil) -> tt 188.74/59.60 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.60 length(nil) -> 0 188.74/59.60 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.60 188.74/59.60 The replacement map contains the following entries: 188.74/59.60 188.74/59.60 zeros: empty set 188.74/59.60 cons: {1} 188.74/59.60 0: empty set 188.74/59.60 U11: {1} 188.74/59.60 tt: empty set 188.74/59.60 U12: {1} 188.74/59.60 isNatList: empty set 188.74/59.60 U21: {1} 188.74/59.60 U22: {1} 188.74/59.60 isNat: empty set 188.74/59.60 U31: {1} 188.74/59.60 U32: {1} 188.74/59.60 U41: {1} 188.74/59.60 U42: {1} 188.74/59.60 U43: {1} 188.74/59.60 isNatIList: empty set 188.74/59.60 U51: {1} 188.74/59.60 U52: {1} 188.74/59.60 U53: {1} 188.74/59.60 U61: {1} 188.74/59.60 s: {1} 188.74/59.60 length: {1} 188.74/59.60 and: {1} 188.74/59.60 isNatIListKind: empty set 188.74/59.60 isNatKind: empty set 188.74/59.60 nil: empty set 188.74/59.60 Used ordering: 188.74/59.60 Polynomial interpretation [POLO]: 188.74/59.60 188.74/59.60 POL(0) = 0 188.74/59.60 POL(U11(x_1, x_2)) = 2*x_1 188.74/59.60 POL(U12(x_1)) = 2*x_1 188.74/59.60 POL(U21(x_1, x_2)) = 2*x_1 188.74/59.60 POL(U22(x_1)) = x_1 188.74/59.60 POL(U31(x_1, x_2)) = 2*x_1 188.74/59.60 POL(U32(x_1)) = x_1 188.74/59.60 POL(U41(x_1, x_2, x_3)) = 2*x_1 188.74/59.60 POL(U42(x_1, x_2)) = x_1 188.74/59.60 POL(U43(x_1)) = x_1 188.74/59.60 POL(U51(x_1, x_2, x_3)) = 2*x_1 188.74/59.60 POL(U52(x_1, x_2)) = x_1 188.74/59.60 POL(U53(x_1)) = x_1 188.74/59.60 POL(U61(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.60 POL(and(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.60 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.60 POL(isNat(x_1)) = 0 188.74/59.60 POL(isNatIList(x_1)) = 0 188.74/59.60 POL(isNatIListKind(x_1)) = 0 188.74/59.60 POL(isNatKind(x_1)) = 0 188.74/59.60 POL(isNatList(x_1)) = 0 188.74/59.60 POL(length(x_1)) = x_1 188.74/59.60 POL(nil) = 2 188.74/59.60 POL(s(x_1)) = 2*x_1 188.74/59.60 POL(tt) = 0 188.74/59.60 POL(zeros) = 0 188.74/59.60 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.60 188.74/59.60 length(nil) -> 0 188.74/59.60 188.74/59.60 188.74/59.60 188.74/59.60 188.74/59.60 ---------------------------------------- 188.74/59.60 188.74/59.60 (2) 188.74/59.60 Obligation: 188.74/59.60 Context-sensitive rewrite system: 188.74/59.60 The TRS R consists of the following rules: 188.74/59.60 188.74/59.60 zeros -> cons(0, zeros) 188.74/59.60 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.60 U12(tt) -> tt 188.74/59.60 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.60 U22(tt) -> tt 188.74/59.60 U31(tt, V) -> U32(isNatList(V)) 188.74/59.60 U32(tt) -> tt 188.74/59.60 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.60 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.60 U43(tt) -> tt 188.74/59.60 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.60 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.60 U53(tt) -> tt 188.74/59.60 U61(tt, L) -> s(length(L)) 188.74/59.60 and(tt, X) -> X 188.74/59.60 isNat(0) -> tt 188.74/59.60 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.60 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.60 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.60 isNatIList(zeros) -> tt 188.74/59.60 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.60 isNatIListKind(nil) -> tt 188.74/59.60 isNatIListKind(zeros) -> tt 188.74/59.60 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.60 isNatKind(0) -> tt 188.74/59.60 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.60 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.60 isNatList(nil) -> tt 188.74/59.60 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.60 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.60 188.74/59.60 The replacement map contains the following entries: 188.74/59.60 188.74/59.60 zeros: empty set 188.74/59.60 cons: {1} 188.74/59.60 0: empty set 188.74/59.60 U11: {1} 188.74/59.60 tt: empty set 188.74/59.60 U12: {1} 188.74/59.60 isNatList: empty set 188.74/59.60 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U31: {1} 188.74/59.62 U32: {1} 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (3) CSRRRRProof (EQUIVALENT) 188.74/59.62 The following CSR is given: Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U31(tt, V) -> U32(isNatList(V)) 188.74/59.62 U32(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.62 isNatIList(zeros) -> tt 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U31: {1} 188.74/59.62 U32: {1} 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 Used ordering: 188.74/59.62 Polynomial interpretation [POLO]: 188.74/59.62 188.74/59.62 POL(0) = 0 188.74/59.62 POL(U11(x_1, x_2)) = x_1 188.74/59.62 POL(U12(x_1)) = x_1 188.74/59.62 POL(U21(x_1, x_2)) = x_1 188.74/59.62 POL(U22(x_1)) = x_1 188.74/59.62 POL(U31(x_1, x_2)) = 1 + x_1 + x_2 188.74/59.62 POL(U32(x_1)) = 1 + x_1 188.74/59.62 POL(U41(x_1, x_2, x_3)) = 1 + x_1 + x_2 + x_3 188.74/59.62 POL(U42(x_1, x_2)) = 1 + x_1 + x_2 188.74/59.62 POL(U43(x_1)) = x_1 188.74/59.62 POL(U51(x_1, x_2, x_3)) = x_1 188.74/59.62 POL(U52(x_1, x_2)) = x_1 188.74/59.62 POL(U53(x_1)) = x_1 188.74/59.62 POL(U61(x_1, x_2)) = 1 + x_1 + x_2 188.74/59.62 POL(and(x_1, x_2)) = x_1 + x_2 188.74/59.62 POL(cons(x_1, x_2)) = x_1 + x_2 188.74/59.62 POL(isNat(x_1)) = 0 188.74/59.62 POL(isNatIList(x_1)) = 1 + x_1 188.74/59.62 POL(isNatIListKind(x_1)) = 0 188.74/59.62 POL(isNatKind(x_1)) = 0 188.74/59.62 POL(isNatList(x_1)) = 0 188.74/59.62 POL(length(x_1)) = 1 + x_1 188.74/59.62 POL(nil) = 1 188.74/59.62 POL(s(x_1)) = x_1 188.74/59.62 POL(tt) = 0 188.74/59.62 POL(zeros) = 0 188.74/59.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.62 188.74/59.62 U32(tt) -> tt 188.74/59.62 isNatIList(zeros) -> tt 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (4) 188.74/59.62 Obligation: 188.74/59.62 Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U31(tt, V) -> U32(isNatList(V)) 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U31: {1} 188.74/59.62 U32: {1} 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (5) CSRRRRProof (EQUIVALENT) 188.74/59.62 The following CSR is given: Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U31(tt, V) -> U32(isNatList(V)) 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U31: {1} 188.74/59.62 U32: {1} 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 Used ordering: 188.74/59.62 Polynomial interpretation [POLO]: 188.74/59.62 188.74/59.62 POL(0) = 0 188.74/59.62 POL(U11(x_1, x_2)) = x_1 188.74/59.62 POL(U12(x_1)) = x_1 188.74/59.62 POL(U21(x_1, x_2)) = x_1 188.74/59.62 POL(U22(x_1)) = x_1 188.74/59.62 POL(U31(x_1, x_2)) = 2*x_1 188.74/59.62 POL(U32(x_1)) = 2*x_1 188.74/59.62 POL(U41(x_1, x_2, x_3)) = 1 + 2*x_1 188.74/59.62 POL(U42(x_1, x_2)) = 1 + 2*x_1 188.74/59.62 POL(U43(x_1)) = x_1 188.74/59.62 POL(U51(x_1, x_2, x_3)) = x_1 188.74/59.62 POL(U52(x_1, x_2)) = 2*x_1 188.74/59.62 POL(U53(x_1)) = x_1 188.74/59.62 POL(U61(x_1, x_2)) = 2*x_1 + x_2 188.74/59.62 POL(and(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(isNat(x_1)) = 0 188.74/59.62 POL(isNatIList(x_1)) = 1 188.74/59.62 POL(isNatIListKind(x_1)) = 0 188.74/59.62 POL(isNatKind(x_1)) = 0 188.74/59.62 POL(isNatList(x_1)) = 0 188.74/59.62 POL(length(x_1)) = x_1 188.74/59.62 POL(nil) = 0 188.74/59.62 POL(s(x_1)) = x_1 188.74/59.62 POL(tt) = 0 188.74/59.62 POL(zeros) = 0 188.74/59.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.62 188.74/59.62 isNatIList(V) -> U31(isNatIListKind(V), V) 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (6) 188.74/59.62 Obligation: 188.74/59.62 Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U31(tt, V) -> U32(isNatList(V)) 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U31: {1} 188.74/59.62 U32: {1} 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (7) CSRRRRProof (EQUIVALENT) 188.74/59.62 The following CSR is given: Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U31(tt, V) -> U32(isNatList(V)) 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U31: {1} 188.74/59.62 U32: {1} 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 Used ordering: 188.74/59.62 Polynomial interpretation [POLO]: 188.74/59.62 188.74/59.62 POL(0) = 0 188.74/59.62 POL(U11(x_1, x_2)) = x_1 188.74/59.62 POL(U12(x_1)) = x_1 188.74/59.62 POL(U21(x_1, x_2)) = 2*x_1 188.74/59.62 POL(U22(x_1)) = x_1 188.74/59.62 POL(U31(x_1, x_2)) = 2 + 2*x_1 + 2*x_2 188.74/59.62 POL(U32(x_1)) = x_1 188.74/59.62 POL(U41(x_1, x_2, x_3)) = 2*x_1 188.74/59.62 POL(U42(x_1, x_2)) = 2*x_1 188.74/59.62 POL(U43(x_1)) = x_1 188.74/59.62 POL(U51(x_1, x_2, x_3)) = x_1 188.74/59.62 POL(U52(x_1, x_2)) = x_1 188.74/59.62 POL(U53(x_1)) = x_1 188.74/59.62 POL(U61(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(and(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(cons(x_1, x_2)) = x_1 + x_2 188.74/59.62 POL(isNat(x_1)) = 0 188.74/59.62 POL(isNatIList(x_1)) = 0 188.74/59.62 POL(isNatIListKind(x_1)) = 0 188.74/59.62 POL(isNatKind(x_1)) = 0 188.74/59.62 POL(isNatList(x_1)) = 0 188.74/59.62 POL(length(x_1)) = 2*x_1 188.74/59.62 POL(nil) = 0 188.74/59.62 POL(s(x_1)) = x_1 188.74/59.62 POL(tt) = 0 188.74/59.62 POL(zeros) = 0 188.74/59.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.62 188.74/59.62 U31(tt, V) -> U32(isNatList(V)) 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (8) 188.74/59.62 Obligation: 188.74/59.62 Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (9) CSRRRRProof (EQUIVALENT) 188.74/59.62 The following CSR is given: Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 U12: {1} 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 Used ordering: 188.74/59.62 Polynomial interpretation [POLO]: 188.74/59.62 188.74/59.62 POL(0) = 0 188.74/59.62 POL(U11(x_1, x_2)) = 2 + 2*x_1 + 2*x_2 188.74/59.62 POL(U12(x_1)) = 1 + x_1 188.74/59.62 POL(U21(x_1, x_2)) = 2*x_1 + x_2 188.74/59.62 POL(U22(x_1)) = x_1 188.74/59.62 POL(U41(x_1, x_2, x_3)) = 2*x_1 + x_2 + 2*x_3 188.74/59.62 POL(U42(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(U43(x_1)) = x_1 188.74/59.62 POL(U51(x_1, x_2, x_3)) = 2*x_1 + x_2 + 2*x_3 188.74/59.62 POL(U52(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(U53(x_1)) = x_1 188.74/59.62 POL(U61(x_1, x_2)) = 2 + x_1 + 2*x_2 188.74/59.62 POL(and(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(isNat(x_1)) = x_1 188.74/59.62 POL(isNatIList(x_1)) = 2*x_1 188.74/59.62 POL(isNatIListKind(x_1)) = 0 188.74/59.62 POL(isNatKind(x_1)) = 0 188.74/59.62 POL(isNatList(x_1)) = 2*x_1 188.74/59.62 POL(length(x_1)) = 2 + 2*x_1 188.74/59.62 POL(nil) = 0 188.74/59.62 POL(s(x_1)) = x_1 188.74/59.62 POL(tt) = 0 188.74/59.62 POL(zeros) = 0 188.74/59.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.62 188.74/59.62 U11(tt, V1) -> U12(isNatList(V1)) 188.74/59.62 U12(tt) -> tt 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (10) 188.74/59.62 Obligation: 188.74/59.62 Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (11) CSRRRRProof (EQUIVALENT) 188.74/59.62 The following CSR is given: Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 Used ordering: 188.74/59.62 Polynomial interpretation [POLO]: 188.74/59.62 188.74/59.62 POL(0) = 0 188.74/59.62 POL(U11(x_1, x_2)) = x_1 188.74/59.62 POL(U21(x_1, x_2)) = x_1 188.74/59.62 POL(U22(x_1)) = 2*x_1 188.74/59.62 POL(U41(x_1, x_2, x_3)) = x_1 188.74/59.62 POL(U42(x_1, x_2)) = x_1 188.74/59.62 POL(U43(x_1)) = 2*x_1 188.74/59.62 POL(U51(x_1, x_2, x_3)) = x_1 + 2*x_3 188.74/59.62 POL(U52(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(U53(x_1)) = 2*x_1 188.74/59.62 POL(U61(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(and(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(cons(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(isNat(x_1)) = 0 188.74/59.62 POL(isNatIList(x_1)) = 0 188.74/59.62 POL(isNatIListKind(x_1)) = 0 188.74/59.62 POL(isNatKind(x_1)) = 0 188.74/59.62 POL(isNatList(x_1)) = x_1 188.74/59.62 POL(length(x_1)) = 2*x_1 188.74/59.62 POL(nil) = 1 188.74/59.62 POL(s(x_1)) = x_1 188.74/59.62 POL(tt) = 0 188.74/59.62 POL(zeros) = 0 188.74/59.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.62 188.74/59.62 isNatList(nil) -> tt 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (12) 188.74/59.62 Obligation: 188.74/59.62 Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (13) CSRRRRProof (EQUIVALENT) 188.74/59.62 The following CSR is given: Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 U11: {1} 188.74/59.62 tt: empty set 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 Used ordering: 188.74/59.62 Polynomial interpretation [POLO]: 188.74/59.62 188.74/59.62 POL(0) = 0 188.74/59.62 POL(U11(x_1, x_2)) = 2*x_1 188.74/59.62 POL(U21(x_1, x_2)) = 2*x_1 + x_2 188.74/59.62 POL(U22(x_1)) = x_1 188.74/59.62 POL(U41(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 188.74/59.62 POL(U42(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(U43(x_1)) = 2*x_1 188.74/59.62 POL(U51(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 188.74/59.62 POL(U52(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(U53(x_1)) = 2*x_1 188.74/59.62 POL(U61(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 188.74/59.62 POL(and(x_1, x_2)) = x_1 + 2*x_2 188.74/59.62 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 188.74/59.62 POL(isNat(x_1)) = x_1 188.74/59.62 POL(isNatIList(x_1)) = x_1 188.74/59.62 POL(isNatIListKind(x_1)) = 0 188.74/59.62 POL(isNatKind(x_1)) = 0 188.74/59.62 POL(isNatList(x_1)) = x_1 188.74/59.62 POL(length(x_1)) = 1 + 2*x_1 188.74/59.62 POL(nil) = 2 188.74/59.62 POL(s(x_1)) = x_1 188.74/59.62 POL(tt) = 0 188.74/59.62 POL(zeros) = 0 188.74/59.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 188.74/59.62 188.74/59.62 isNat(length(V1)) -> U11(isNatIListKind(V1), V1) 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (14) 188.74/59.62 Obligation: 188.74/59.62 Context-sensitive rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 zeros -> cons(0, zeros) 188.74/59.62 U21(tt, V1) -> U22(isNat(V1)) 188.74/59.62 U22(tt) -> tt 188.74/59.62 U41(tt, V1, V2) -> U42(isNat(V1), V2) 188.74/59.62 U42(tt, V2) -> U43(isNatIList(V2)) 188.74/59.62 U43(tt) -> tt 188.74/59.62 U51(tt, V1, V2) -> U52(isNat(V1), V2) 188.74/59.62 U52(tt, V2) -> U53(isNatList(V2)) 188.74/59.62 U53(tt) -> tt 188.74/59.62 U61(tt, L) -> s(length(L)) 188.74/59.62 and(tt, X) -> X 188.74/59.62 isNat(0) -> tt 188.74/59.62 isNat(s(V1)) -> U21(isNatKind(V1), V1) 188.74/59.62 isNatIList(cons(V1, V2)) -> U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKind(nil) -> tt 188.74/59.62 isNatIListKind(zeros) -> tt 188.74/59.62 isNatIListKind(cons(V1, V2)) -> and(isNatKind(V1), isNatIListKind(V2)) 188.74/59.62 isNatKind(0) -> tt 188.74/59.62 isNatKind(length(V1)) -> isNatIListKind(V1) 188.74/59.62 isNatKind(s(V1)) -> isNatKind(V1) 188.74/59.62 isNatList(cons(V1, V2)) -> U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 length(cons(N, L)) -> U61(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 The replacement map contains the following entries: 188.74/59.62 188.74/59.62 zeros: empty set 188.74/59.62 cons: {1} 188.74/59.62 0: empty set 188.74/59.62 tt: empty set 188.74/59.62 isNatList: empty set 188.74/59.62 U21: {1} 188.74/59.62 U22: {1} 188.74/59.62 isNat: empty set 188.74/59.62 U41: {1} 188.74/59.62 U42: {1} 188.74/59.62 U43: {1} 188.74/59.62 isNatIList: empty set 188.74/59.62 U51: {1} 188.74/59.62 U52: {1} 188.74/59.62 U53: {1} 188.74/59.62 U61: {1} 188.74/59.62 s: {1} 188.74/59.62 length: {1} 188.74/59.62 and: {1} 188.74/59.62 isNatIListKind: empty set 188.74/59.62 isNatKind: empty set 188.74/59.62 nil: empty set 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (15) Incomplete Giesl Middeldorp-Transformation (SOUND) 188.74/59.62 We applied the Incomplete Giesl Middeldorp transformation [CS_Term] to transform the context-sensitive TRS to a usual TRS. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (16) 188.74/59.62 Obligation: 188.74/59.62 Q restricted rewrite system: 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 mark(zeros) -> zerosActive 188.74/59.62 zerosActive -> zeros 188.74/59.62 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.62 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.62 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.62 U22Active(x1) -> U22(x1) 188.74/59.62 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.62 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.62 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.62 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.62 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.62 U43Active(x1) -> U43(x1) 188.74/59.62 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.62 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.62 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.62 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.62 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.62 U53Active(x1) -> U53(x1) 188.74/59.62 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.62 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.62 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.62 andActive(x1, x2) -> and(x1, x2) 188.74/59.62 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.62 isNatActive(x1) -> isNat(x1) 188.74/59.62 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.62 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.62 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.62 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.62 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.62 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.62 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.62 isNatListActive(x1) -> isNatList(x1) 188.74/59.62 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.62 lengthActive(x1) -> length(x1) 188.74/59.62 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.62 mark(0) -> 0 188.74/59.62 mark(tt) -> tt 188.74/59.62 mark(s(x1)) -> s(mark(x1)) 188.74/59.62 mark(nil) -> nil 188.74/59.62 zerosActive -> cons(0, zeros) 188.74/59.62 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.62 U22Active(tt) -> tt 188.74/59.62 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.62 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.62 U43Active(tt) -> tt 188.74/59.62 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.62 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.62 U53Active(tt) -> tt 188.74/59.62 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.62 andActive(tt, X) -> mark(X) 188.74/59.62 isNatActive(0) -> tt 188.74/59.62 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.62 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKindActive(nil) -> tt 188.74/59.62 isNatIListKindActive(zeros) -> tt 188.74/59.62 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 isNatKindActive(0) -> tt 188.74/59.62 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.62 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.62 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 Q is empty. 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (17) DependencyPairsProof (EQUIVALENT) 188.74/59.62 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (18) 188.74/59.62 Obligation: 188.74/59.62 Q DP problem: 188.74/59.62 The TRS P consists of the following rules: 188.74/59.62 188.74/59.62 MARK(zeros) -> ZEROSACTIVE 188.74/59.62 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U22(x1)) -> U22ACTIVE(mark(x1)) 188.74/59.62 MARK(U22(x1)) -> MARK(x1) 188.74/59.62 MARK(U41(x1, x2, x3)) -> U41ACTIVE(mark(x1), x2, x3) 188.74/59.62 MARK(U41(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U42(x1, x2)) -> U42ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U42(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U43(x1)) -> U43ACTIVE(mark(x1)) 188.74/59.62 MARK(U43(x1)) -> MARK(x1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.62 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U53(x1)) -> U53ACTIVE(mark(x1)) 188.74/59.62 MARK(U53(x1)) -> MARK(x1) 188.74/59.62 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.62 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.62 MARK(isNatIList(x1)) -> ISNATILISTACTIVE(x1) 188.74/59.62 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.62 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.62 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.62 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.62 MARK(length(x1)) -> MARK(x1) 188.74/59.62 MARK(cons(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(s(x1)) -> MARK(x1) 188.74/59.62 U21ACTIVE(tt, V1) -> U22ACTIVE(isNatActive(V1)) 188.74/59.62 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.62 U41ACTIVE(tt, V1, V2) -> U42ACTIVE(isNatActive(V1), V2) 188.74/59.62 U41ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 U42ACTIVE(tt, V2) -> U43ACTIVE(isNatIListActive(V2)) 188.74/59.62 U42ACTIVE(tt, V2) -> ISNATILISTACTIVE(V2) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 U52ACTIVE(tt, V2) -> U53ACTIVE(isNatListActive(V2)) 188.74/59.62 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.62 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.62 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.62 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.62 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> U41ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> U61ACTIVE(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.62 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 mark(zeros) -> zerosActive 188.74/59.62 zerosActive -> zeros 188.74/59.62 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.62 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.62 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.62 U22Active(x1) -> U22(x1) 188.74/59.62 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.62 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.62 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.62 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.62 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.62 U43Active(x1) -> U43(x1) 188.74/59.62 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.62 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.62 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.62 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.62 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.62 U53Active(x1) -> U53(x1) 188.74/59.62 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.62 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.62 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.62 andActive(x1, x2) -> and(x1, x2) 188.74/59.62 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.62 isNatActive(x1) -> isNat(x1) 188.74/59.62 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.62 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.62 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.62 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.62 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.62 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.62 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.62 isNatListActive(x1) -> isNatList(x1) 188.74/59.62 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.62 lengthActive(x1) -> length(x1) 188.74/59.62 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.62 mark(0) -> 0 188.74/59.62 mark(tt) -> tt 188.74/59.62 mark(s(x1)) -> s(mark(x1)) 188.74/59.62 mark(nil) -> nil 188.74/59.62 zerosActive -> cons(0, zeros) 188.74/59.62 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.62 U22Active(tt) -> tt 188.74/59.62 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.62 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.62 U43Active(tt) -> tt 188.74/59.62 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.62 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.62 U53Active(tt) -> tt 188.74/59.62 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.62 andActive(tt, X) -> mark(X) 188.74/59.62 isNatActive(0) -> tt 188.74/59.62 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.62 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKindActive(nil) -> tt 188.74/59.62 isNatIListKindActive(zeros) -> tt 188.74/59.62 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 isNatKindActive(0) -> tt 188.74/59.62 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.62 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.62 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 Q is empty. 188.74/59.62 We have to consider all minimal (P,Q,R)-chains. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (19) DependencyGraphProof (EQUIVALENT) 188.74/59.62 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 7 less nodes. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (20) 188.74/59.62 Obligation: 188.74/59.62 Q DP problem: 188.74/59.62 The TRS P consists of the following rules: 188.74/59.62 188.74/59.62 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.62 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.62 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U22(x1)) -> MARK(x1) 188.74/59.62 MARK(U41(x1, x2, x3)) -> U41ACTIVE(mark(x1), x2, x3) 188.74/59.62 U41ACTIVE(tt, V1, V2) -> U42ACTIVE(isNatActive(V1), V2) 188.74/59.62 U42ACTIVE(tt, V2) -> ISNATILISTACTIVE(V2) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> U41ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U41ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(U41(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U42(x1, x2)) -> U42ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U42(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U43(x1)) -> MARK(x1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.62 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U53(x1)) -> MARK(x1) 188.74/59.62 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.62 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> U61ACTIVE(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.62 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.62 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.62 MARK(isNatIList(x1)) -> ISNATILISTACTIVE(x1) 188.74/59.62 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.62 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.62 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.62 MARK(length(x1)) -> MARK(x1) 188.74/59.62 MARK(cons(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(s(x1)) -> MARK(x1) 188.74/59.62 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 mark(zeros) -> zerosActive 188.74/59.62 zerosActive -> zeros 188.74/59.62 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.62 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.62 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.62 U22Active(x1) -> U22(x1) 188.74/59.62 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.62 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.62 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.62 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.62 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.62 U43Active(x1) -> U43(x1) 188.74/59.62 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.62 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.62 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.62 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.62 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.62 U53Active(x1) -> U53(x1) 188.74/59.62 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.62 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.62 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.62 andActive(x1, x2) -> and(x1, x2) 188.74/59.62 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.62 isNatActive(x1) -> isNat(x1) 188.74/59.62 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.62 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.62 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.62 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.62 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.62 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.62 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.62 isNatListActive(x1) -> isNatList(x1) 188.74/59.62 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.62 lengthActive(x1) -> length(x1) 188.74/59.62 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.62 mark(0) -> 0 188.74/59.62 mark(tt) -> tt 188.74/59.62 mark(s(x1)) -> s(mark(x1)) 188.74/59.62 mark(nil) -> nil 188.74/59.62 zerosActive -> cons(0, zeros) 188.74/59.62 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.62 U22Active(tt) -> tt 188.74/59.62 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.62 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.62 U43Active(tt) -> tt 188.74/59.62 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.62 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.62 U53Active(tt) -> tt 188.74/59.62 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.62 andActive(tt, X) -> mark(X) 188.74/59.62 isNatActive(0) -> tt 188.74/59.62 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.62 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKindActive(nil) -> tt 188.74/59.62 isNatIListKindActive(zeros) -> tt 188.74/59.62 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 isNatKindActive(0) -> tt 188.74/59.62 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.62 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.62 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 Q is empty. 188.74/59.62 We have to consider all minimal (P,Q,R)-chains. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (21) QDPOrderProof (EQUIVALENT) 188.74/59.62 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.62 188.74/59.62 188.74/59.62 The following pairs can be oriented strictly and are deleted. 188.74/59.62 188.74/59.62 MARK(U41(x1, x2, x3)) -> U41ACTIVE(mark(x1), x2, x3) 188.74/59.62 MARK(U41(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U42(x1, x2)) -> U42ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U42(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(isNatIList(x1)) -> ISNATILISTACTIVE(x1) 188.74/59.62 The remaining pairs can at least be oriented weakly. 188.74/59.62 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(MARK(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(mark(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(tt) = [[0], [0]] 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(s(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(length(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(cons(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U22(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U41(x_1, x_2, x_3)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U41ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U42ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATILISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(andActive(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U42(x_1, x_2)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U43(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U53(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(LENGTHACTIVE(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(and(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatIList(x_1)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatList(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(zeros) = [[0], [0]] 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(zerosActive) = [[0], [0]] 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U22Active(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U41Active(x_1, x_2, x_3)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U42Active(x_1, x_2)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U43Active(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U51Active(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U53Active(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U61Active(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatIListKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatIListActive(x_1)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(lengthActive(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(0) = [[0], [0]] 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(nil) = [[0], [0]] 188.74/59.62 >>> 188.74/59.62 188.74/59.62 188.74/59.62 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.62 188.74/59.62 mark(zeros) -> zerosActive 188.74/59.62 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.62 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.62 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.62 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.62 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.62 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.62 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.62 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.62 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.62 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.62 andActive(tt, X) -> mark(X) 188.74/59.62 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.62 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.62 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.62 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.62 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.62 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.62 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.62 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.62 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.62 mark(0) -> 0 188.74/59.62 mark(tt) -> tt 188.74/59.62 mark(s(x1)) -> s(mark(x1)) 188.74/59.62 mark(nil) -> nil 188.74/59.62 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.62 isNatKindActive(0) -> tt 188.74/59.62 isNatActive(x1) -> isNat(x1) 188.74/59.62 isNatActive(0) -> tt 188.74/59.62 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.62 andActive(x1, x2) -> and(x1, x2) 188.74/59.62 isNatListActive(x1) -> isNatList(x1) 188.74/59.62 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U22Active(x1) -> U22(x1) 188.74/59.62 U22Active(tt) -> tt 188.74/59.62 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.62 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.62 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.62 U43Active(x1) -> U43(x1) 188.74/59.62 U43Active(tt) -> tt 188.74/59.62 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.62 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.62 U53Active(x1) -> U53(x1) 188.74/59.62 U53Active(tt) -> tt 188.74/59.62 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.62 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.62 isNatIListKindActive(nil) -> tt 188.74/59.62 isNatIListKindActive(zeros) -> tt 188.74/59.62 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.62 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.62 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.62 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.62 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.62 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.62 lengthActive(x1) -> length(x1) 188.74/59.62 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.62 zerosActive -> zeros 188.74/59.62 zerosActive -> cons(0, zeros) 188.74/59.62 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (22) 188.74/59.62 Obligation: 188.74/59.62 Q DP problem: 188.74/59.62 The TRS P consists of the following rules: 188.74/59.62 188.74/59.62 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.62 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.62 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U22(x1)) -> MARK(x1) 188.74/59.62 U41ACTIVE(tt, V1, V2) -> U42ACTIVE(isNatActive(V1), V2) 188.74/59.62 U42ACTIVE(tt, V2) -> ISNATILISTACTIVE(V2) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> U41ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U41ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATILISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(U43(x1)) -> MARK(x1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.62 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U53(x1)) -> MARK(x1) 188.74/59.62 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.62 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> U61ACTIVE(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.62 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.62 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.62 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.62 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.62 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.62 MARK(length(x1)) -> MARK(x1) 188.74/59.62 MARK(cons(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(s(x1)) -> MARK(x1) 188.74/59.62 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 mark(zeros) -> zerosActive 188.74/59.62 zerosActive -> zeros 188.74/59.62 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.62 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.62 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.62 U22Active(x1) -> U22(x1) 188.74/59.62 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.62 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.62 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.62 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.62 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.62 U43Active(x1) -> U43(x1) 188.74/59.62 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.62 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.62 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.62 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.62 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.62 U53Active(x1) -> U53(x1) 188.74/59.62 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.62 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.62 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.62 andActive(x1, x2) -> and(x1, x2) 188.74/59.62 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.62 isNatActive(x1) -> isNat(x1) 188.74/59.62 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.62 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.62 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.62 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.62 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.62 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.62 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.62 isNatListActive(x1) -> isNatList(x1) 188.74/59.62 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.62 lengthActive(x1) -> length(x1) 188.74/59.62 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.62 mark(0) -> 0 188.74/59.62 mark(tt) -> tt 188.74/59.62 mark(s(x1)) -> s(mark(x1)) 188.74/59.62 mark(nil) -> nil 188.74/59.62 zerosActive -> cons(0, zeros) 188.74/59.62 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.62 U22Active(tt) -> tt 188.74/59.62 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.62 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.62 U43Active(tt) -> tt 188.74/59.62 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.62 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.62 U53Active(tt) -> tt 188.74/59.62 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.62 andActive(tt, X) -> mark(X) 188.74/59.62 isNatActive(0) -> tt 188.74/59.62 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.62 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKindActive(nil) -> tt 188.74/59.62 isNatIListKindActive(zeros) -> tt 188.74/59.62 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 isNatKindActive(0) -> tt 188.74/59.62 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.62 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.62 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 Q is empty. 188.74/59.62 We have to consider all minimal (P,Q,R)-chains. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (23) DependencyGraphProof (EQUIVALENT) 188.74/59.62 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 3 less nodes. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (24) 188.74/59.62 Complex Obligation (AND) 188.74/59.62 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (25) 188.74/59.62 Obligation: 188.74/59.62 Q DP problem: 188.74/59.62 The TRS P consists of the following rules: 188.74/59.62 188.74/59.62 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.62 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.62 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U22(x1)) -> MARK(x1) 188.74/59.62 MARK(U43(x1)) -> MARK(x1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.62 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.62 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.62 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(U53(x1)) -> MARK(x1) 188.74/59.62 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.62 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> U61ACTIVE(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.62 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.62 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.62 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.62 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.62 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.62 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.62 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.62 MARK(length(x1)) -> MARK(x1) 188.74/59.62 MARK(cons(x1, x2)) -> MARK(x1) 188.74/59.62 MARK(s(x1)) -> MARK(x1) 188.74/59.62 188.74/59.62 The TRS R consists of the following rules: 188.74/59.62 188.74/59.62 mark(zeros) -> zerosActive 188.74/59.62 zerosActive -> zeros 188.74/59.62 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.62 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.62 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.62 U22Active(x1) -> U22(x1) 188.74/59.62 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.62 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.62 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.62 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.62 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.62 U43Active(x1) -> U43(x1) 188.74/59.62 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.62 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.62 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.62 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.62 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.62 U53Active(x1) -> U53(x1) 188.74/59.62 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.62 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.62 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.62 andActive(x1, x2) -> and(x1, x2) 188.74/59.62 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.62 isNatActive(x1) -> isNat(x1) 188.74/59.62 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.62 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.62 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.62 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.62 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.62 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.62 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.62 isNatListActive(x1) -> isNatList(x1) 188.74/59.62 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.62 lengthActive(x1) -> length(x1) 188.74/59.62 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.62 mark(0) -> 0 188.74/59.62 mark(tt) -> tt 188.74/59.62 mark(s(x1)) -> s(mark(x1)) 188.74/59.62 mark(nil) -> nil 188.74/59.62 zerosActive -> cons(0, zeros) 188.74/59.62 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.62 U22Active(tt) -> tt 188.74/59.62 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.62 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.62 U43Active(tt) -> tt 188.74/59.62 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.62 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.62 U53Active(tt) -> tt 188.74/59.62 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.62 andActive(tt, X) -> mark(X) 188.74/59.62 isNatActive(0) -> tt 188.74/59.62 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.62 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 isNatIListKindActive(nil) -> tt 188.74/59.62 isNatIListKindActive(zeros) -> tt 188.74/59.62 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.62 isNatKindActive(0) -> tt 188.74/59.62 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.62 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.62 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.62 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 188.74/59.62 Q is empty. 188.74/59.62 We have to consider all minimal (P,Q,R)-chains. 188.74/59.62 ---------------------------------------- 188.74/59.62 188.74/59.62 (26) QDPOrderProof (EQUIVALENT) 188.74/59.62 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.62 188.74/59.62 188.74/59.62 The following pairs can be oriented strictly and are deleted. 188.74/59.62 188.74/59.62 LENGTHACTIVE(cons(N, L)) -> U61ACTIVE(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.62 The remaining pairs can at least be oriented weakly. 188.74/59.62 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U21ACTIVE(x_1, x_2)) = [[1]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(tt) = [[0], [1]] 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATACTIVE(x_1)) = [[1]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(s(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatKindActive(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATKINDACTIVE(x_1)) = [[1]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(length(x_1)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATILISTKINDACTIVE(x_1)) = [[1]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(cons(x_1, x_2)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ANDACTIVE(x_1, x_2)) = [[1]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(MARK(x_1)) = [[1]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U21(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(mark(x_1)) = [[1], [1]] + [[1, 1], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U22(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U43(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U51ACTIVE(x_1, x_2, x_3)) = [[1]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(U52ACTIVE(x_1, x_2)) = [[1]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(isNatActive(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(ISNATLISTACTIVE(x_1)) = [[1]] + [[0, 0]] * x_1 188.74/59.62 >>> 188.74/59.62 188.74/59.62 <<< 188.74/59.62 POL(andActive(x_1, x_2)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 + [[1, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61(x_1, x_2)) = [[0], [1]] + [[0, 1], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 1]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(LENGTHACTIVE(x_1)) = [[1]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatListActive(x_1)) = [[1], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatList(x_1)) = [[1], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(0) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKindActive(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zeros) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zerosActive) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21Active(x_1, x_2)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22Active(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61Active(x_1, x_2)) = [[1], [1]] + [[0, 1], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIList(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(lengthActive(x_1)) = [[1], [1]] + [[0, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(nil) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 188.74/59.63 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.63 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 zerosActive -> zeros 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 188.74/59.63 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (27) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U43(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.63 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.63 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.63 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.63 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.63 MARK(length(x1)) -> MARK(x1) 188.74/59.63 MARK(cons(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 188.74/59.63 Q is empty. 188.74/59.63 We have to consider all minimal (P,Q,R)-chains. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (28) QDPOrderProof (EQUIVALENT) 188.74/59.63 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.63 188.74/59.63 188.74/59.63 The following pairs can be oriented strictly and are deleted. 188.74/59.63 188.74/59.63 MARK(cons(x1, x2)) -> MARK(x1) 188.74/59.63 The remaining pairs can at least be oriented weakly. 188.74/59.63 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(tt) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(s(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(length(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(cons(x_1, x_2)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(MARK(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(mark(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[0, 1], [1, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(andActive(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(LENGTHACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(and(x_1, x_2)) = [[0], [1]] + [[1, 0], [0, 1]] * x_1 + [[1, 0], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNat(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKind(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatList(x_1)) = [[0], [1]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(0) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKindActive(x_1)) = [[1], [1]] + [[1, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zeros) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zerosActive) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 1]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 1]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51Active(x_1, x_2, x_3)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[0, 1], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61Active(x_1, x_2)) = [[1], [1]] + [[0, 1], [0, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIList(x_1)) = [[1], [0]] + [[0, 0], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListActive(x_1)) = [[1], [0]] + [[0, 0], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(lengthActive(x_1)) = [[1], [1]] + [[1, 1], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(nil) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 188.74/59.63 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.63 none 188.74/59.63 188.74/59.63 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (29) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U43(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.63 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.63 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.63 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.63 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.63 MARK(length(x1)) -> MARK(x1) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 188.74/59.63 Q is empty. 188.74/59.63 We have to consider all minimal (P,Q,R)-chains. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (30) QDPOrderProof (EQUIVALENT) 188.74/59.63 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.63 188.74/59.63 188.74/59.63 The following pairs can be oriented strictly and are deleted. 188.74/59.63 188.74/59.63 MARK(U43(x1)) -> MARK(x1) 188.74/59.63 The remaining pairs can at least be oriented weakly. 188.74/59.63 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(tt) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(s(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(length(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(cons(x_1, x_2)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 + [[0, 1], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 0], [1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(MARK(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(mark(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43(x_1)) = [[1], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(andActive(x_1, x_2)) = [[0], [1]] + [[0, 1], [0, 0]] * x_1 + [[0, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(LENGTHACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(and(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatList(x_1)) = [[0], [1]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatListActive(x_1)) = [[1], [0]] + [[1, 0], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(0) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKindActive(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zeros) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zerosActive) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42(x_1, x_2)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51Active(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61Active(x_1, x_2)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIList(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListActive(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(lengthActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(nil) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 188.74/59.63 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.63 none 188.74/59.63 188.74/59.63 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (31) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.63 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.63 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.63 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.63 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.63 MARK(length(x1)) -> MARK(x1) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 188.74/59.63 Q is empty. 188.74/59.63 We have to consider all minimal (P,Q,R)-chains. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (32) QDPOrderProof (EQUIVALENT) 188.74/59.63 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.63 188.74/59.63 188.74/59.63 The following pairs can be oriented strictly and are deleted. 188.74/59.63 188.74/59.63 MARK(isNatList(x1)) -> ISNATLISTACTIVE(x1) 188.74/59.63 The remaining pairs can at least be oriented weakly. 188.74/59.63 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(tt) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(s(x_1)) = [[0], [0]] + [[0, 0], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(length(x_1)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(cons(x_1, x_2)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 + [[1, 0], [1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKind(x_1)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(MARK(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(mark(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 + [[0, 1], [1, 0]] * x_2 + [[0, 0], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(andActive(x_1, x_2)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[0, 0], [1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 0], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(LENGTHACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatList(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatListActive(x_1)) = [[1], [0]] + [[0, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(0) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zeros) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zerosActive) = [[1], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 1]] * x_2 + [[0, 1], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 1], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43(x_1)) = [[0], [1]] + [[0, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 1], [0, 0]] * x_2 + [[0, 0], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61Active(x_1, x_2)) = [[1], [1]] + [[0, 1], [0, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIList(x_1)) = [[1], [1]] + [[1, 1], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListActive(x_1)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(lengthActive(x_1)) = [[0], [1]] + [[1, 1], [1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(nil) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 188.74/59.63 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.63 none 188.74/59.63 188.74/59.63 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (33) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.63 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.63 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.63 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.63 MARK(length(x1)) -> MARK(x1) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 188.74/59.63 Q is empty. 188.74/59.63 We have to consider all minimal (P,Q,R)-chains. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (34) QDPOrderProof (EQUIVALENT) 188.74/59.63 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.63 188.74/59.63 188.74/59.63 The following pairs can be oriented strictly and are deleted. 188.74/59.63 188.74/59.63 MARK(length(x1)) -> LENGTHACTIVE(mark(x1)) 188.74/59.63 MARK(length(x1)) -> MARK(x1) 188.74/59.63 The remaining pairs can at least be oriented weakly. 188.74/59.63 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(tt) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(s(x_1)) = [[0], [1]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(length(x_1)) = [[1], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(cons(x_1, x_2)) = [[0], [1]] + [[0, 0], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKind(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(MARK(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(mark(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 + [[1, 0], [1, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(andActive(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 0], [1, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 + [[1, 0], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(LENGTHACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(and(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatListActive(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(0) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKindActive(x_1)) = [[0], [1]] + [[0, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zeros) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zerosActive) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41(x_1, x_2, x_3)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51Active(x_1, x_2, x_3)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 1], [1, 1]] * x_2 + [[0, 0], [1, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61Active(x_1, x_2)) = [[0], [1]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIList(x_1)) = [[1], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListActive(x_1)) = [[1], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatList(x_1)) = [[0], [1]] + [[1, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(lengthActive(x_1)) = [[0], [1]] + [[1, 0], [1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(nil) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 188.74/59.63 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.63 none 188.74/59.63 188.74/59.63 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (35) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.63 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.63 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.63 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 188.74/59.63 Q is empty. 188.74/59.63 We have to consider all minimal (P,Q,R)-chains. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (36) QDPOrderProof (EQUIVALENT) 188.74/59.63 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.63 188.74/59.63 188.74/59.63 The following pairs can be oriented strictly and are deleted. 188.74/59.63 188.74/59.63 MARK(U61(x1, x2)) -> U61ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U61(x1, x2)) -> MARK(x1) 188.74/59.63 The remaining pairs can at least be oriented weakly. 188.74/59.63 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(tt) = [[0], [1]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(s(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(length(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(cons(x_1, x_2)) = [[0], [1]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKind(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(MARK(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(mark(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [1, 1]] * x_2 + [[1, 1], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(andActive(x_1, x_2)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61(x_1, x_2)) = [[1], [0]] + [[1, 1], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(LENGTHACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(and(x_1, x_2)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(0) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListKindActive(x_1)) = [[0], [1]] + [[0, 0], [0, 1]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zeros) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(zerosActive) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41(x_1, x_2, x_3)) = [[1], [0]] + [[0, 0], [1, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 1], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [1, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 1], [0, 0]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43(x_1)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U51Active(x_1, x_2, x_3)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [1, 1]] * x_2 + [[1, 0], [0, 1]] * x_3 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(U61Active(x_1, x_2)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 + [[0, 1], [0, 0]] * x_2 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIList(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatIListActive(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(isNatList(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(lengthActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.63 >>> 188.74/59.63 188.74/59.63 <<< 188.74/59.63 POL(nil) = [[0], [0]] 188.74/59.63 >>> 188.74/59.63 188.74/59.63 188.74/59.63 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.63 none 188.74/59.63 188.74/59.63 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (37) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 U61ACTIVE(tt, L) -> LENGTHACTIVE(mark(L)) 188.74/59.63 U61ACTIVE(tt, L) -> MARK(L) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ANDACTIVE(isNatListActive(L), isNatIListKind(L)) 188.74/59.63 LENGTHACTIVE(cons(N, L)) -> ISNATLISTACTIVE(L) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 isNatKindActive(0) -> tt 188.74/59.63 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.63 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.63 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.63 188.74/59.63 Q is empty. 188.74/59.63 We have to consider all minimal (P,Q,R)-chains. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (38) DependencyGraphProof (EQUIVALENT) 188.74/59.63 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 5 less nodes. 188.74/59.63 ---------------------------------------- 188.74/59.63 188.74/59.63 (39) 188.74/59.63 Obligation: 188.74/59.63 Q DP problem: 188.74/59.63 The TRS P consists of the following rules: 188.74/59.63 188.74/59.63 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.63 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.63 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.63 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U22(x1)) -> MARK(x1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.63 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.63 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.63 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.63 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(U53(x1)) -> MARK(x1) 188.74/59.63 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.63 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.63 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.63 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.63 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.63 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.63 MARK(s(x1)) -> MARK(x1) 188.74/59.63 188.74/59.63 The TRS R consists of the following rules: 188.74/59.63 188.74/59.63 mark(zeros) -> zerosActive 188.74/59.63 zerosActive -> zeros 188.74/59.63 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.63 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.63 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.63 U22Active(x1) -> U22(x1) 188.74/59.63 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.63 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.63 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.63 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.63 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.63 U43Active(x1) -> U43(x1) 188.74/59.63 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.63 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.63 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.63 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.63 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.63 U53Active(x1) -> U53(x1) 188.74/59.63 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.63 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.63 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.63 andActive(x1, x2) -> and(x1, x2) 188.74/59.63 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.63 isNatActive(x1) -> isNat(x1) 188.74/59.63 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.63 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.63 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.63 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.63 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.63 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.63 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.63 isNatListActive(x1) -> isNatList(x1) 188.74/59.63 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.63 lengthActive(x1) -> length(x1) 188.74/59.63 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.63 mark(0) -> 0 188.74/59.63 mark(tt) -> tt 188.74/59.63 mark(s(x1)) -> s(mark(x1)) 188.74/59.63 mark(nil) -> nil 188.74/59.63 zerosActive -> cons(0, zeros) 188.74/59.63 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.63 U22Active(tt) -> tt 188.74/59.63 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.63 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.63 U43Active(tt) -> tt 188.74/59.63 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.63 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.63 U53Active(tt) -> tt 188.74/59.63 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.63 andActive(tt, X) -> mark(X) 188.74/59.63 isNatActive(0) -> tt 188.74/59.63 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.63 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.63 isNatIListKindActive(nil) -> tt 188.74/59.63 isNatIListKindActive(zeros) -> tt 188.74/59.63 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (40) QDPOrderProof (EQUIVALENT) 188.74/59.64 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.64 188.74/59.64 188.74/59.64 The following pairs can be oriented strictly and are deleted. 188.74/59.64 188.74/59.64 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ISNATILISTKINDACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.64 The remaining pairs can at least be oriented weakly. 188.74/59.64 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATACTIVE(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(s(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(tt) = [[1], [1]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATKINDACTIVE(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(length(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATILISTKINDACTIVE(x_1)) = [[0]] + [[1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(cons(x_1, x_2)) = [[0], [1]] + [[1, 1], [0, 0]] * x_1 + [[1, 1], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKind(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(MARK(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[0, 0], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(mark(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[0, 0], [1, 0]] * x_2 + [[0, 0], [1, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 + [[1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(andActive(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [1, 1]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNat(x_1)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(0) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKindActive(x_1)) = [[1], [1]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zeros) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zerosActive) = [[1], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41(x_1, x_2, x_3)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [1, 1]] * x_2 + [[0, 0], [1, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41Active(x_1, x_2, x_3)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [1, 1]] * x_2 + [[0, 0], [1, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61Active(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIList(x_1)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatList(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatListActive(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(lengthActive(x_1)) = [[1], [1]] + [[1, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(nil) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 188.74/59.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.64 none 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (41) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.64 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.64 ISNATACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.64 ISNATKINDACTIVE(length(V1)) -> ISNATILISTKINDACTIVE(V1) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(U21(x1, x2)) -> U21ACTIVE(mark(x1), x2) 188.74/59.64 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(U22(x1)) -> MARK(x1) 188.74/59.64 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> ISNATACTIVE(V1) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ISNATKINDACTIVE(V1) 188.74/59.64 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.64 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.64 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.64 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(isNat(x1)) -> ISNATACTIVE(x1) 188.74/59.64 MARK(isNatIListKind(x1)) -> ISNATILISTKINDACTIVE(x1) 188.74/59.64 MARK(isNatKind(x1)) -> ISNATKINDACTIVE(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (42) DependencyGraphProof (EQUIVALENT) 188.74/59.64 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 8 less nodes. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (43) 188.74/59.64 Complex Obligation (AND) 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (44) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (45) UsableRulesProof (EQUIVALENT) 188.74/59.64 We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (46) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.64 188.74/59.64 R is empty. 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (47) QDPSizeChangeProof (EQUIVALENT) 188.74/59.64 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 188.74/59.64 188.74/59.64 From the DPs we obtained the following set of size-change graphs: 188.74/59.64 *ISNATKINDACTIVE(s(V1)) -> ISNATKINDACTIVE(V1) 188.74/59.64 The graph contains the following edges 1 > 1 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (48) 188.74/59.64 YES 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (49) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.64 ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (50) QDPSizeChangeProof (EQUIVALENT) 188.74/59.64 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 188.74/59.64 188.74/59.64 From the DPs we obtained the following set of size-change graphs: 188.74/59.64 *ISNATACTIVE(s(V1)) -> U21ACTIVE(isNatKindActive(V1), V1) 188.74/59.64 The graph contains the following edges 1 > 2 188.74/59.64 188.74/59.64 188.74/59.64 *U21ACTIVE(tt, V1) -> ISNATACTIVE(V1) 188.74/59.64 The graph contains the following edges 2 >= 1 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (51) 188.74/59.64 YES 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (52) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(U22(x1)) -> MARK(x1) 188.74/59.64 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.64 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.64 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (53) QDPOrderProof (EQUIVALENT) 188.74/59.64 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.64 188.74/59.64 188.74/59.64 The following pairs can be oriented strictly and are deleted. 188.74/59.64 188.74/59.64 MARK(U21(x1, x2)) -> MARK(x1) 188.74/59.64 The remaining pairs can at least be oriented weakly. 188.74/59.64 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(MARK(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21(x_1, x_2)) = [[0], [1]] + [[0, 1], [0, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 0], [1, 0]] * x_2 + [[1, 0], [1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(mark(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(tt) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(cons(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 1], [0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(andActive(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(s(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zeros) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zerosActive) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 + [[0, 0], [1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 + [[0, 0], [1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43(x_1)) = [[0], [1]] + [[1, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [1, 0]] * x_2 + [[1, 0], [1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61(x_1, x_2)) = [[1], [0]] + [[0, 0], [1, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(length(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIList(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListActive(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatList(x_1)) = [[1], [0]] + [[1, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(lengthActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(0) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(nil) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 188.74/59.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.64 none 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (54) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 MARK(U22(x1)) -> MARK(x1) 188.74/59.64 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.64 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.64 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (55) QDPOrderProof (EQUIVALENT) 188.74/59.64 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.64 188.74/59.64 188.74/59.64 The following pairs can be oriented strictly and are deleted. 188.74/59.64 188.74/59.64 MARK(U22(x1)) -> MARK(x1) 188.74/59.64 The remaining pairs can at least be oriented weakly. 188.74/59.64 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(MARK(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22(x_1)) = [[0], [1]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 + [[1, 0], [1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(mark(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(tt) = [[1], [1]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(cons(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(andActive(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKindActive(x_1)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[0, 1], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(s(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zeros) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zerosActive) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 1], [1, 0]] * x_2 + [[1, 0], [0, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [1, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51Active(x_1, x_2, x_3)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [1, 1]] * x_2 + [[1, 0], [1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61Active(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(length(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIList(x_1)) = [[1], [1]] + [[0, 0], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListActive(x_1)) = [[0], [1]] + [[0, 0], [1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatList(x_1)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(lengthActive(x_1)) = [[1], [1]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(0) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(nil) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 188.74/59.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.64 none 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (56) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.64 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.64 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (57) QDPOrderProof (EQUIVALENT) 188.74/59.64 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.64 188.74/59.64 188.74/59.64 The following pairs can be oriented strictly and are deleted. 188.74/59.64 188.74/59.64 MARK(U52(x1, x2)) -> U52ACTIVE(mark(x1), x2) 188.74/59.64 MARK(U52(x1, x2)) -> MARK(x1) 188.74/59.64 The remaining pairs can at least be oriented weakly. 188.74/59.64 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(MARK(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51(x_1, x_2, x_3)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[0, 1], [1, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[1, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(mark(x_1)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(tt) = [[1], [1]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(cons(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(andActive(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52(x_1, x_2)) = [[0], [1]] + [[0, 1], [0, 1]] * x_1 + [[1, 1], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(s(x_1)) = [[0], [0]] + [[0, 0], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zeros) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zerosActive) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22(x_1)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 1]] * x_2 + [[0, 1], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41Active(x_1, x_2, x_3)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 1]] * x_2 + [[0, 1], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43(x_1)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51Active(x_1, x_2, x_3)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[0, 1], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61Active(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[0, 0], [1, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKindActive(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(length(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIList(x_1)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatList(x_1)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(lengthActive(x_1)) = [[1], [1]] + [[0, 1], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(0) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(nil) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 188.74/59.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.64 none 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (58) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (59) QDPOrderProof (EQUIVALENT) 188.74/59.64 We use the reduction pair processor [LPAR04,JAR06]. 188.74/59.64 188.74/59.64 188.74/59.64 The following pairs can be oriented strictly and are deleted. 188.74/59.64 188.74/59.64 MARK(U51(x1, x2, x3)) -> U51ACTIVE(mark(x1), x2, x3) 188.74/59.64 MARK(U51(x1, x2, x3)) -> MARK(x1) 188.74/59.64 The remaining pairs can at least be oriented weakly. 188.74/59.64 Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(MARK(x_1)) = [[0]] + [[0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51(x_1, x_2, x_3)) = [[0], [1]] + [[1, 1], [0, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 + [[1, 1], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51ACTIVE(x_1, x_2, x_3)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 + [[0, 0]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(mark(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(tt) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52ACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ISNATLISTACTIVE(x_1)) = [[0]] + [[0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(cons(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(andActive(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKindActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(ANDACTIVE(x_1, x_2)) = [[0]] + [[0, 0]] * x_1 + [[0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(and(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 1]] * x_1 + [[0, 0], [0, 1]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(s(x_1)) = [[1], [0]] + [[0, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zeros) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(zerosActive) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U21Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22(x_1)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U22Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41(x_1, x_2, x_3)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[0, 0], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U41Active(x_1, x_2, x_3)) = [[1], [0]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [0, 0]] * x_2 + [[0, 0], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U42Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U43Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U51Active(x_1, x_2, x_3)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 + [[1, 1], [1, 1]] * x_2 + [[1, 1], [0, 1]] * x_3 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52(x_1, x_2)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U52Active(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U53Active(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61(x_1, x_2)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(U61Active(x_1, x_2)) = [[0], [1]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListKindActive(x_1)) = [[1], [1]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatKind(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(length(x_1)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNat(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIList(x_1)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatIListActive(x_1)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatList(x_1)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(isNatListActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(lengthActive(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(0) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 <<< 188.74/59.64 POL(nil) = [[0], [0]] 188.74/59.64 >>> 188.74/59.64 188.74/59.64 188.74/59.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 188.74/59.64 none 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (60) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> ANDACTIVE(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (61) DependencyGraphProof (EQUIVALENT) 188.74/59.64 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 1 less node. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (62) 188.74/59.64 Complex Obligation (AND) 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (63) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 MARK(U53(x1)) -> MARK(x1) 188.74/59.64 MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 MARK(s(x1)) -> MARK(x1) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (64) QDPSizeChangeProof (EQUIVALENT) 188.74/59.64 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 188.74/59.64 188.74/59.64 From the DPs we obtained the following set of size-change graphs: 188.74/59.64 *MARK(and(x1, x2)) -> ANDACTIVE(mark(x1), x2) 188.74/59.64 The graph contains the following edges 1 > 2 188.74/59.64 188.74/59.64 188.74/59.64 *ANDACTIVE(tt, X) -> MARK(X) 188.74/59.64 The graph contains the following edges 2 >= 1 188.74/59.64 188.74/59.64 188.74/59.64 *MARK(U53(x1)) -> MARK(x1) 188.74/59.64 The graph contains the following edges 1 > 1 188.74/59.64 188.74/59.64 188.74/59.64 *MARK(and(x1, x2)) -> MARK(x1) 188.74/59.64 The graph contains the following edges 1 > 1 188.74/59.64 188.74/59.64 188.74/59.64 *MARK(s(x1)) -> MARK(x1) 188.74/59.64 The graph contains the following edges 1 > 1 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (65) 188.74/59.64 YES 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (66) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (67) QDPSizeChangeProof (EQUIVALENT) 188.74/59.64 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 188.74/59.64 188.74/59.64 From the DPs we obtained the following set of size-change graphs: 188.74/59.64 *ISNATLISTACTIVE(cons(V1, V2)) -> U51ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 The graph contains the following edges 1 > 2, 1 > 3 188.74/59.64 188.74/59.64 188.74/59.64 *U51ACTIVE(tt, V1, V2) -> U52ACTIVE(isNatActive(V1), V2) 188.74/59.64 The graph contains the following edges 3 >= 2 188.74/59.64 188.74/59.64 188.74/59.64 *U52ACTIVE(tt, V2) -> ISNATLISTACTIVE(V2) 188.74/59.64 The graph contains the following edges 2 >= 1 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (68) 188.74/59.64 YES 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (69) 188.74/59.64 Obligation: 188.74/59.64 Q DP problem: 188.74/59.64 The TRS P consists of the following rules: 188.74/59.64 188.74/59.64 U41ACTIVE(tt, V1, V2) -> U42ACTIVE(isNatActive(V1), V2) 188.74/59.64 U42ACTIVE(tt, V2) -> ISNATILISTACTIVE(V2) 188.74/59.64 ISNATILISTACTIVE(cons(V1, V2)) -> U41ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 188.74/59.64 The TRS R consists of the following rules: 188.74/59.64 188.74/59.64 mark(zeros) -> zerosActive 188.74/59.64 zerosActive -> zeros 188.74/59.64 mark(U21(x1, x2)) -> U21Active(mark(x1), x2) 188.74/59.64 U21Active(x1, x2) -> U21(x1, x2) 188.74/59.64 mark(U22(x1)) -> U22Active(mark(x1)) 188.74/59.64 U22Active(x1) -> U22(x1) 188.74/59.64 mark(U41(x1, x2, x3)) -> U41Active(mark(x1), x2, x3) 188.74/59.64 U41Active(x1, x2, x3) -> U41(x1, x2, x3) 188.74/59.64 mark(U42(x1, x2)) -> U42Active(mark(x1), x2) 188.74/59.64 U42Active(x1, x2) -> U42(x1, x2) 188.74/59.64 mark(U43(x1)) -> U43Active(mark(x1)) 188.74/59.64 U43Active(x1) -> U43(x1) 188.74/59.64 mark(U51(x1, x2, x3)) -> U51Active(mark(x1), x2, x3) 188.74/59.64 U51Active(x1, x2, x3) -> U51(x1, x2, x3) 188.74/59.64 mark(U52(x1, x2)) -> U52Active(mark(x1), x2) 188.74/59.64 U52Active(x1, x2) -> U52(x1, x2) 188.74/59.64 mark(U53(x1)) -> U53Active(mark(x1)) 188.74/59.64 U53Active(x1) -> U53(x1) 188.74/59.64 mark(U61(x1, x2)) -> U61Active(mark(x1), x2) 188.74/59.64 U61Active(x1, x2) -> U61(x1, x2) 188.74/59.64 mark(and(x1, x2)) -> andActive(mark(x1), x2) 188.74/59.64 andActive(x1, x2) -> and(x1, x2) 188.74/59.64 mark(isNat(x1)) -> isNatActive(x1) 188.74/59.64 isNatActive(x1) -> isNat(x1) 188.74/59.64 mark(isNatIList(x1)) -> isNatIListActive(x1) 188.74/59.64 isNatIListActive(x1) -> isNatIList(x1) 188.74/59.64 mark(isNatIListKind(x1)) -> isNatIListKindActive(x1) 188.74/59.64 isNatIListKindActive(x1) -> isNatIListKind(x1) 188.74/59.64 mark(isNatKind(x1)) -> isNatKindActive(x1) 188.74/59.64 isNatKindActive(x1) -> isNatKind(x1) 188.74/59.64 mark(isNatList(x1)) -> isNatListActive(x1) 188.74/59.64 isNatListActive(x1) -> isNatList(x1) 188.74/59.64 mark(length(x1)) -> lengthActive(mark(x1)) 188.74/59.64 lengthActive(x1) -> length(x1) 188.74/59.64 mark(cons(x1, x2)) -> cons(mark(x1), x2) 188.74/59.64 mark(0) -> 0 188.74/59.64 mark(tt) -> tt 188.74/59.64 mark(s(x1)) -> s(mark(x1)) 188.74/59.64 mark(nil) -> nil 188.74/59.64 zerosActive -> cons(0, zeros) 188.74/59.64 U21Active(tt, V1) -> U22Active(isNatActive(V1)) 188.74/59.64 U22Active(tt) -> tt 188.74/59.64 U41Active(tt, V1, V2) -> U42Active(isNatActive(V1), V2) 188.74/59.64 U42Active(tt, V2) -> U43Active(isNatIListActive(V2)) 188.74/59.64 U43Active(tt) -> tt 188.74/59.64 U51Active(tt, V1, V2) -> U52Active(isNatActive(V1), V2) 188.74/59.64 U52Active(tt, V2) -> U53Active(isNatListActive(V2)) 188.74/59.64 U53Active(tt) -> tt 188.74/59.64 U61Active(tt, L) -> s(lengthActive(mark(L))) 188.74/59.64 andActive(tt, X) -> mark(X) 188.74/59.64 isNatActive(0) -> tt 188.74/59.64 isNatActive(s(V1)) -> U21Active(isNatKindActive(V1), V1) 188.74/59.64 isNatIListActive(cons(V1, V2)) -> U41Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 isNatIListKindActive(nil) -> tt 188.74/59.64 isNatIListKindActive(zeros) -> tt 188.74/59.64 isNatIListKindActive(cons(V1, V2)) -> andActive(isNatKindActive(V1), isNatIListKind(V2)) 188.74/59.64 isNatKindActive(0) -> tt 188.74/59.64 isNatKindActive(length(V1)) -> isNatIListKindActive(V1) 188.74/59.64 isNatKindActive(s(V1)) -> isNatKindActive(V1) 188.74/59.64 isNatListActive(cons(V1, V2)) -> U51Active(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 lengthActive(cons(N, L)) -> U61Active(andActive(andActive(isNatListActive(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) 188.74/59.64 188.74/59.64 Q is empty. 188.74/59.64 We have to consider all minimal (P,Q,R)-chains. 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (70) QDPSizeChangeProof (EQUIVALENT) 188.74/59.64 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 188.74/59.64 188.74/59.64 From the DPs we obtained the following set of size-change graphs: 188.74/59.64 *U42ACTIVE(tt, V2) -> ISNATILISTACTIVE(V2) 188.74/59.64 The graph contains the following edges 2 >= 1 188.74/59.64 188.74/59.64 188.74/59.64 *ISNATILISTACTIVE(cons(V1, V2)) -> U41ACTIVE(andActive(isNatKindActive(V1), isNatIListKind(V2)), V1, V2) 188.74/59.64 The graph contains the following edges 1 > 2, 1 > 3 188.74/59.64 188.74/59.64 188.74/59.64 *U41ACTIVE(tt, V1, V2) -> U42ACTIVE(isNatActive(V1), V2) 188.74/59.64 The graph contains the following edges 3 >= 2 188.74/59.64 188.74/59.64 188.74/59.64 ---------------------------------------- 188.74/59.64 188.74/59.64 (71) 188.74/59.64 YES 188.98/59.68 EOF