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: lt(x, 0) -> false lt(0, s(x)) -> true lt(s(x), s(y)) -> lt(x, y) m(0, s(y)) -> 0 m(x, 0) -> x m(s(x), s(y)) -> m(x, y) div(0, s(x)) -> pair(0, 0) ?1(true, x, y) -> pair(0, s(x)) div(s(x), s(y)) -> ?1(lt(x, y), x, y) ?3(pair(q, r), x, y) -> pair(s(q), r) ?2(false, x, y) -> ?3(div(m(x, y), s(y)), x, y) div(s(x), s(y)) -> ?2(lt(x, y), x, y) DP Processor: DPs: lt#(s(x),s(y)) -> lt#(x,y) m#(s(x),s(y)) -> m#(x,y) div#(s(x),s(y)) -> lt#(x,y) div#(s(x),s(y)) -> ?1#(lt(x,y),x,y) ?2#(false(),x,y) -> m#(x,y) ?2#(false(),x,y) -> div#(m(x,y),s(y)) ?2#(false(),x,y) -> ?3#(div(m(x,y),s(y)),x,y) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) TDG Processor: DPs: lt#(s(x),s(y)) -> lt#(x,y) m#(s(x),s(y)) -> m#(x,y) div#(s(x),s(y)) -> lt#(x,y) div#(s(x),s(y)) -> ?1#(lt(x,y),x,y) ?2#(false(),x,y) -> m#(x,y) ?2#(false(),x,y) -> div#(m(x,y),s(y)) ?2#(false(),x,y) -> ?3#(div(m(x,y),s(y)),x,y) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) graph: ?2#(false(),x,y) -> div#(m(x,y),s(y)) -> div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) ?2#(false(),x,y) -> div#(m(x,y),s(y)) -> div#(s(x),s(y)) -> ?1#(lt(x,y),x,y) ?2#(false(),x,y) -> div#(m(x,y),s(y)) -> div#(s(x),s(y)) -> lt#(x,y) ?2#(false(),x,y) -> m#(x,y) -> m#(s(x),s(y)) -> m#(x,y) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) -> ?2#(false(),x,y) -> ?3#(div(m(x,y),s(y)),x,y) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) -> ?2#(false(),x,y) -> div#(m(x,y),s(y)) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) -> ?2#(false(),x,y) -> m#(x,y) div#(s(x),s(y)) -> lt#(x,y) -> lt#(s(x),s(y)) -> lt#(x,y) m#(s(x),s(y)) -> m#(x,y) -> m#(s(x),s(y)) -> m#(x,y) lt#(s(x),s(y)) -> lt#(x,y) -> lt#(s(x),s(y)) -> lt#(x,y) SCC Processor: #sccs: 3 #rules: 4 #arcs: 10/64 DPs: ?2#(false(),x,y) -> div#(m(x,y),s(y)) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) Usable Rule Processor: DPs: ?2#(false(),x,y) -> div#(m(x,y),s(y)) div#(s(x),s(y)) -> ?2#(lt(x,y),x,y) TRS: m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) Matrix Interpretation Processor: dim=2 usable rules: m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) interpretation: [0] [true] = [0], [0] [lt](x0, x1) = [0], [3 0] [1] [s](x0) = [0 1]x0 + [0], [?2#](x0, x1, x2) = [1 0]x1 + [0 2]x2 + [2], [1 0] [m](x0, x1) = [1 2]x0, [0] [0] = [0], [div#](x0, x1) = [1 0]x0 + [0 2]x1 + [2], [0] [false] = [0] orientation: ?2#(false(),x,y) = [1 0]x + [0 2]y + [2] >= [1 0]x + [0 2]y + [2] = div#(m(x,y),s(y)) div#(s(x),s(y)) = [3 0]x + [0 2]y + [3] >= [1 0]x + [0 2]y + [2] = ?2#(lt(x,y),x,y) [0] [0] m(0(),s(y)) = [0] >= [0] = 0() [1 0] m(x,0()) = [1 2]x >= x = x [3 0] [1] [1 0] m(s(x),s(y)) = [3 2]x + [1] >= [1 2]x = m(x,y) [0] [0] lt(x,0()) = [0] >= [0] = false() [0] [0] lt(0(),s(x)) = [0] >= [0] = true() [0] [0] lt(s(x),s(y)) = [0] >= [0] = lt(x,y) problem: DPs: ?2#(false(),x,y) -> div#(m(x,y),s(y)) TRS: m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) Restore Modifier: DPs: ?2#(false(),x,y) -> div#(m(x,y),s(y)) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) EDG Processor: DPs: ?2#(false(),x,y) -> div#(m(x,y),s(y)) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) graph: Qed DPs: m#(s(x),s(y)) -> m#(x,y) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) Subterm Criterion Processor: simple projection: pi(m#) = 0 problem: DPs: TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) Qed DPs: lt#(s(x),s(y)) -> lt#(x,y) TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) Subterm Criterion Processor: simple projection: pi(lt#) = 0 problem: DPs: TRS: lt(x,0()) -> false() lt(0(),s(x)) -> true() lt(s(x),s(y)) -> lt(x,y) m(0(),s(y)) -> 0() m(x,0()) -> x m(s(x),s(y)) -> m(x,y) div(0(),s(x)) -> pair(0(),0()) ?1(true(),x,y) -> pair(0(),s(x)) div(s(x),s(y)) -> ?1(lt(x,y),x,y) ?3(pair(q,r),x,y) -> pair(s(q),r) ?2(false(),x,y) -> ?3(div(m(x,y),s(y)),x,y) div(s(x),s(y)) -> ?2(lt(x,y),x,y) Qed