YES Proof: This system is quasi-decreasing. By \cite{O02}, p. 214, Proposition 7.2.50. This system is of type 3 or smaller. This system is deterministic. System R transformed to U(R). Call external tool: ttt2 - trs 30 Input: lte(0, n) -> true lte(s(m), 0) -> false lte(s(m), s(n)) -> lte(m, n) insert(nil, m) -> cons(m, nil) ?1(true, n, l, m) -> cons(m, cons(n, l)) insert(cons(n, l), m) -> ?1(lte(m, n), n, l, m) ?2(false, n, l, m) -> cons(n, insert(l, m)) insert(cons(n, l), m) -> ?2(lte(m, n), n, l, m) ordered(nil) -> true ordered(cons(m, nil)) -> true ?4(true, m, n, l) -> ordered(cons(n, l)) ordered(cons(m, cons(n, l))) -> ?4(lte(m, n), m, n, l) ?3(false, m, n, l) -> false ordered(cons(m, cons(n, l))) -> ?3(lte(m, n), m, n, l) DP Processor: DPs: lte#(s(m),s(n)) -> lte#(m,n) insert#(cons(n,l),m) -> lte#(m,n) insert#(cons(n,l),m) -> ?1#(lte(m,n),n,l,m) ?2#(false(),n,l,m) -> insert#(l,m) insert#(cons(n,l),m) -> ?2#(lte(m,n),n,l,m) ?4#(true(),m,n,l) -> ordered#(cons(n,l)) ordered#(cons(m,cons(n,l))) -> lte#(m,n) ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) ordered#(cons(m,cons(n,l))) -> ?3#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) TDG Processor: DPs: lte#(s(m),s(n)) -> lte#(m,n) insert#(cons(n,l),m) -> lte#(m,n) insert#(cons(n,l),m) -> ?1#(lte(m,n),n,l,m) ?2#(false(),n,l,m) -> insert#(l,m) insert#(cons(n,l),m) -> ?2#(lte(m,n),n,l,m) ?4#(true(),m,n,l) -> ordered#(cons(n,l)) ordered#(cons(m,cons(n,l))) -> lte#(m,n) ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) ordered#(cons(m,cons(n,l))) -> ?3#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) graph: ?4#(true(),m,n,l) -> ordered#(cons(n,l)) -> ordered#(cons(m,cons(n,l))) -> ?3#(lte(m,n),m,n,l) ?4#(true(),m,n,l) -> ordered#(cons(n,l)) -> ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) ?4#(true(),m,n,l) -> ordered#(cons(n,l)) -> ordered#(cons(m,cons(n,l))) -> lte#(m,n) ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) -> ?4#(true(),m,n,l) -> ordered#(cons(n,l)) ordered#(cons(m,cons(n,l))) -> lte#(m,n) -> lte#(s(m),s(n)) -> lte#(m,n) ?2#(false(),n,l,m) -> insert#(l,m) -> insert#(cons(n,l),m) -> ?2#(lte(m,n),n,l,m) ?2#(false(),n,l,m) -> insert#(l,m) -> insert#(cons(n,l),m) -> ?1#(lte(m,n),n,l,m) ?2#(false(),n,l,m) -> insert#(l,m) -> insert#(cons(n,l),m) -> lte#(m,n) insert#(cons(n,l),m) -> ?2#(lte(m,n),n,l,m) -> ?2#(false(),n,l,m) -> insert#(l,m) insert#(cons(n,l),m) -> lte#(m,n) -> lte#(s(m),s(n)) -> lte#(m,n) lte#(s(m),s(n)) -> lte#(m,n) -> lte#(s(m),s(n)) -> lte#(m,n) SCC Processor: #sccs: 3 #rules: 5 #arcs: 11/81 DPs: ?2#(false(),n,l,m) -> insert#(l,m) insert#(cons(n,l),m) -> ?2#(lte(m,n),n,l,m) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) Subterm Criterion Processor: simple projection: pi(insert#) = 0 pi(?2#) = 2 problem: DPs: ?2#(false(),n,l,m) -> insert#(l,m) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) SCC Processor: #sccs: 0 #rules: 0 #arcs: 2/1 DPs: ?4#(true(),m,n,l) -> ordered#(cons(n,l)) ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) Usable Rule Processor: DPs: ?4#(true(),m,n,l) -> ordered#(cons(n,l)) ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) Matrix Interpretation Processor: dim=2 usable rules: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) interpretation: [?4#](x0, x1, x2, x3) = [1 0]x0 + [3 0]x2 + [0 1]x3 + [1], [0] [false] = [0], [2 0] [0 0] [lte](x0, x1) = [3 0]x0 + [1 1]x1, [1 0] [0] [s](x0) = [1 3]x0 + [2], [ordered#](x0) = [1 0]x0, [1] [0] = [2], [3 0] [0 1] [1] [cons](x0, x1) = [3 1]x0 + [0 1]x1 + [0], [1] [true] = [0] orientation: ?4#(true(),m,n,l) = [0 1]l + [3 0]n + [2] >= [0 1]l + [3 0]n + [1] = ordered#(cons(n,l)) ordered#(cons(m,cons(n,l))) = [0 1]l + [3 0]m + [3 1]n + [1] >= [0 1]l + [2 0]m + [3 0]n + [1] = ?4#(lte(m,n),m,n,l) [0 0] [2] [1] lte(0(),n) = [1 1]n + [3] >= [0] = true() [2 0] [0] [0] lte(s(m),0()) = [3 0]m + [3] >= [0] = false() [2 0] [0 0] [0] [2 0] [0 0] lte(s(m),s(n)) = [3 0]m + [2 3]n + [2] >= [3 0]m + [1 1]n = lte(m,n) problem: DPs: ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) Restore Modifier: DPs: ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) EDG Processor: DPs: ordered#(cons(m,cons(n,l))) -> ?4#(lte(m,n),m,n,l) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) graph: Qed DPs: lte#(s(m),s(n)) -> lte#(m,n) TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) Subterm Criterion Processor: simple projection: pi(lte#) = 0 problem: DPs: TRS: lte(0(),n) -> true() lte(s(m),0()) -> false() lte(s(m),s(n)) -> lte(m,n) insert(nil(),m) -> cons(m,nil()) ?1(true(),n,l,m) -> cons(m,cons(n,l)) insert(cons(n,l),m) -> ?1(lte(m,n),n,l,m) ?2(false(),n,l,m) -> cons(n,insert(l,m)) insert(cons(n,l),m) -> ?2(lte(m,n),n,l,m) ordered(nil()) -> true() ordered(cons(m,nil())) -> true() ?4(true(),m,n,l) -> ordered(cons(n,l)) ordered(cons(m,cons(n,l))) -> ?4(lte(m,n),m,n,l) ?3(false(),m,n,l) -> false() ordered(cons(m,cons(n,l))) -> ?3(lte(m,n),m,n,l) Qed