14.14/4.27 NO 14.14/4.29 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 14.14/4.29 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 14.14/4.29 14.14/4.29 14.14/4.29 Outermost Termination of the given OTRS could be disproven: 14.14/4.29 14.14/4.29 (0) OTRS 14.14/4.29 (1) OutermostNonTerminationProof [COMPLETE, 1293 ms] 14.14/4.29 (2) NO 14.14/4.29 14.14/4.29 14.14/4.29 ---------------------------------------- 14.14/4.29 14.14/4.29 (0) 14.14/4.29 Obligation: 14.14/4.29 Term rewrite system R: 14.14/4.29 The TRS R consists of the following rules: 14.14/4.29 14.14/4.29 and(tt, T) -> T 14.14/4.29 isNatIList(IL) -> isNatList(activate(IL)) 14.14/4.29 isNat(n__0) -> tt 14.14/4.29 isNat(n__s(N)) -> isNat(activate(N)) 14.14/4.29 isNat(n__length(L)) -> isNatList(activate(L)) 14.14/4.29 isNatIList(n__zeros) -> tt 14.14/4.29 isNatIList(n__cons(N, IL)) -> and(isNat(activate(N)), isNatIList(activate(IL))) 14.14/4.29 isNatList(n__nil) -> tt 14.14/4.29 isNatList(n__cons(N, L)) -> and(isNat(activate(N)), isNatList(activate(L))) 14.14/4.29 isNatList(n__take(N, IL)) -> and(isNat(activate(N)), isNatIList(activate(IL))) 14.14/4.29 zeros -> cons(0, n__zeros) 14.14/4.29 take(0, IL) -> uTake1(isNatIList(IL)) 14.14/4.29 uTake1(tt) -> nil 14.14/4.29 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(activate(IL)))), M, N, activate(IL)) 14.14/4.29 uTake2(tt, M, N, IL) -> cons(activate(N), n__take(activate(M), activate(IL))) 14.14/4.29 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(activate(L))), activate(L)) 14.14/4.29 uLength(tt, L) -> s(length(activate(L))) 14.14/4.29 0 -> n__0 14.14/4.29 s(X) -> n__s(X) 14.14/4.29 length(X) -> n__length(X) 14.14/4.29 zeros -> n__zeros 14.14/4.29 cons(X1, X2) -> n__cons(X1, X2) 14.14/4.29 nil -> n__nil 14.14/4.29 take(X1, X2) -> n__take(X1, X2) 14.14/4.29 activate(n__0) -> 0 14.14/4.29 activate(n__s(X)) -> s(activate(X)) 14.14/4.29 activate(n__length(X)) -> length(activate(X)) 14.14/4.29 activate(n__zeros) -> zeros 14.14/4.29 activate(n__cons(X1, X2)) -> cons(activate(X1), X2) 14.14/4.29 activate(n__nil) -> nil 14.14/4.29 activate(n__take(X1, X2)) -> take(activate(X1), activate(X2)) 14.14/4.29 activate(X) -> X 14.14/4.29 14.14/4.29 14.14/4.29 14.14/4.29 Outermost Strategy. 14.14/4.29 14.14/4.29 ---------------------------------------- 14.14/4.29 14.14/4.29 (1) OutermostNonTerminationProof (COMPLETE) 14.14/4.29 Term rewrite system R: 14.14/4.29 The TRS R consists of the following rules: 14.14/4.29 14.14/4.29 and(tt, T) -> T 14.14/4.29 isNatIList(IL) -> isNatList(activate(IL)) 14.14/4.29 isNat(n__0) -> tt 14.14/4.29 isNat(n__s(N)) -> isNat(activate(N)) 14.14/4.29 isNat(n__length(L)) -> isNatList(activate(L)) 14.14/4.29 isNatIList(n__zeros) -> tt 14.14/4.29 isNatIList(n__cons(N, IL)) -> and(isNat(activate(N)), isNatIList(activate(IL))) 14.14/4.29 isNatList(n__nil) -> tt 14.14/4.29 isNatList(n__cons(N, L)) -> and(isNat(activate(N)), isNatList(activate(L))) 14.14/4.29 isNatList(n__take(N, IL)) -> and(isNat(activate(N)), isNatIList(activate(IL))) 14.14/4.29 zeros -> cons(0, n__zeros) 14.14/4.29 take(0, IL) -> uTake1(isNatIList(IL)) 14.14/4.29 uTake1(tt) -> nil 14.14/4.29 take(s(M), cons(N, IL)) -> uTake2(and(isNat(M), and(isNat(N), isNatIList(activate(IL)))), M, N, activate(IL)) 14.14/4.29 uTake2(tt, M, N, IL) -> cons(activate(N), n__take(activate(M), activate(IL))) 14.14/4.29 length(cons(N, L)) -> uLength(and(isNat(N), isNatList(activate(L))), activate(L)) 14.14/4.29 uLength(tt, L) -> s(length(activate(L))) 14.14/4.29 0 -> n__0 14.14/4.29 s(X) -> n__s(X) 14.14/4.29 length(X) -> n__length(X) 14.14/4.29 zeros -> n__zeros 14.14/4.29 cons(X1, X2) -> n__cons(X1, X2) 14.14/4.29 nil -> n__nil 14.14/4.29 take(X1, X2) -> n__take(X1, X2) 14.14/4.29 activate(n__0) -> 0 14.14/4.29 activate(n__s(X)) -> s(activate(X)) 14.14/4.29 activate(n__length(X)) -> length(activate(X)) 14.14/4.29 activate(n__zeros) -> zeros 14.14/4.29 activate(n__cons(X1, X2)) -> cons(activate(X1), X2) 14.14/4.29 activate(n__nil) -> nil 14.14/4.29 activate(n__take(X1, X2)) -> take(activate(X1), activate(X2)) 14.14/4.29 activate(X) -> X 14.14/4.29 14.14/4.29 14.14/4.29 14.14/4.29 Outermost Strategy. 14.14/4.29 14.14/4.29 ---------- Loop: ---------- 14.14/4.29 14.14/4.29 isNatList(activate(n__zeros)) -> isNatList(zeros) with rule activate(n__zeros) -> zeros at position [0] and matcher [ ] 14.14/4.29 14.14/4.29 isNatList(zeros) -> isNatList(cons(0, n__zeros)) with rule zeros -> cons(0, n__zeros) at position [0] and matcher [ ] 14.14/4.29 14.14/4.29 isNatList(cons(0, n__zeros)) -> isNatList(n__cons(0, n__zeros)) with rule cons(X1, X2) -> n__cons(X1, X2) at position [0] and matcher [X1 / 0, X2 / n__zeros] 14.14/4.29 14.14/4.29 isNatList(n__cons(0, n__zeros)) -> and(isNat(activate(0)), isNatList(activate(n__zeros))) with rule isNatList(n__cons(N, L)) -> and(isNat(activate(N)), isNatList(activate(L))) at position [] and matcher [N / 0, L / n__zeros] 14.14/4.29 14.14/4.29 Now an instance of the first term with Matcher [ ] occurs in the last term at position [1]. 14.14/4.29 14.14/4.29 Context: and(isNat(activate(0)), []) 14.14/4.29 14.14/4.29 We used [THIEMANN_LOOPS_UNDER_STRATEGIES] to show that this Loop is an Outermost-Loop. 14.14/4.29 ---------------------------------------- 14.14/4.29 14.14/4.29 (2) 14.14/4.29 NO 14.45/4.37 EOF