/export/starexec/sandbox2/solver/bin/starexec_run_default /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES Problem 1: (VAR @_@9 @a @b @breadth@1 @breadth@2 @breadth@7 @breadth@8 @children@3 @children@4 @children@5 @children@6 @copyover@1 @copyover@2 @dequeue@1 @dequeue@2 @dequeue@3 @dequeue@4 @elem @inq @l @l1 @l2 @outq @queue @queue' @x @xs @y @ys @z) (RULES breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ) (STRATEGY INNERMOST) Problem 1: Dependency Pairs Processor: -> Pairs: BREADTH(@breadth@1,@breadth@2) -> BREADTH#1(dequeue(@breadth@1,@breadth@2)) BREADTH(@breadth@1,@breadth@2) -> DEQUEUE(@breadth@1,@breadth@2) BREADTH#1(tuple#2(@queue',@elem)) -> BREADTH#2(@elem,@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#3(breadth#4(@z),@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#4(@z) BREADTH#3(tuple#2(@x,@ys),@queue') -> BREADTH#5(enqueues(@ys,@queue')) BREADTH#3(tuple#2(@x,@ys),@queue') -> ENQUEUES(@ys,@queue') BREADTH#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> CHILDREN(@children@3,@children@4,@children@5,@children@6) BREADTH#5(tuple#2(@breadth@7,@breadth@8)) -> BREADTH(@breadth@7,@breadth@8) CHILDREN(@a,@b,@l1,@l2) -> CHILDREN#1(@l1,@b,@l2) CHILDREN#1(::(@x,@xs),@b,@l2) -> CHILDREN#3(@l2,@b,@x,@xs) CHILDREN#1(nil,@b,@l2) -> CHILDREN#2(@l2,@b) COPYOVER(@copyover@1,@copyover@2) -> COPYOVER#1(tuple#2(@copyover@1,@copyover@2)) COPYOVER#1(tuple#2(@inq,@outq)) -> COPYOVER#2(@inq,@outq) COPYOVER#2(::(@x,@xs),@outq) -> COPYOVER(@xs,::(@x,@outq)) DEQUEUE(@dequeue@1,@dequeue@2) -> DEQUEUE#1(tuple#2(@dequeue@1,@dequeue@2)) DEQUEUE#1(tuple#2(@inq,@outq)) -> DEQUEUE#2(@outq,@inq) DEQUEUE#2(nil,@inq) -> DEQUEUE#3(@inq) DEQUEUE#3(::(@x,@xs)) -> COPYOVER(::(@x,@xs),nil) DEQUEUE#3(::(@x,@xs)) -> DEQUEUE#4(copyover(::(@x,@xs),nil)) DEQUEUE#4(tuple#2(@dequeue@3,@dequeue@4)) -> DEQUEUE(@dequeue@3,@dequeue@4) ENQUEUE(@x,@queue) -> ENQUEUE#1(@queue,@x) ENQUEUES(@l,@queue) -> ENQUEUES#1(@l,@queue) ENQUEUES#1(::(@x,@xs),@queue) -> ENQUEUE(@x,@queue) ENQUEUES#1(::(@x,@xs),@queue) -> ENQUEUES(@xs,enqueue(@x,@queue)) STARTBREADTH(@xs) -> STARTBREADTH#1(@xs) STARTBREADTH#1(::(@x,@xs)) -> EMPTY(#unit) STARTBREADTH#1(::(@x,@xs)) -> ENQUEUE(tuple#4(@x,@x,@xs,@xs),empty(#unit)) STARTBREADTH#1(::(@x,@xs)) -> STARTBREADTH#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) STARTBREADTH#2(tuple#2(@breadth@1,@breadth@2)) -> BREADTH(@breadth@1,@breadth@2) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) Problem 1: SCC Processor: -> Pairs: BREADTH(@breadth@1,@breadth@2) -> BREADTH#1(dequeue(@breadth@1,@breadth@2)) BREADTH(@breadth@1,@breadth@2) -> DEQUEUE(@breadth@1,@breadth@2) BREADTH#1(tuple#2(@queue',@elem)) -> BREADTH#2(@elem,@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#3(breadth#4(@z),@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#4(@z) BREADTH#3(tuple#2(@x,@ys),@queue') -> BREADTH#5(enqueues(@ys,@queue')) BREADTH#3(tuple#2(@x,@ys),@queue') -> ENQUEUES(@ys,@queue') BREADTH#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> CHILDREN(@children@3,@children@4,@children@5,@children@6) BREADTH#5(tuple#2(@breadth@7,@breadth@8)) -> BREADTH(@breadth@7,@breadth@8) CHILDREN(@a,@b,@l1,@l2) -> CHILDREN#1(@l1,@b,@l2) CHILDREN#1(::(@x,@xs),@b,@l2) -> CHILDREN#3(@l2,@b,@x,@xs) CHILDREN#1(nil,@b,@l2) -> CHILDREN#2(@l2,@b) COPYOVER(@copyover@1,@copyover@2) -> COPYOVER#1(tuple#2(@copyover@1,@copyover@2)) COPYOVER#1(tuple#2(@inq,@outq)) -> COPYOVER#2(@inq,@outq) COPYOVER#2(::(@x,@xs),@outq) -> COPYOVER(@xs,::(@x,@outq)) DEQUEUE(@dequeue@1,@dequeue@2) -> DEQUEUE#1(tuple#2(@dequeue@1,@dequeue@2)) DEQUEUE#1(tuple#2(@inq,@outq)) -> DEQUEUE#2(@outq,@inq) DEQUEUE#2(nil,@inq) -> DEQUEUE#3(@inq) DEQUEUE#3(::(@x,@xs)) -> COPYOVER(::(@x,@xs),nil) DEQUEUE#3(::(@x,@xs)) -> DEQUEUE#4(copyover(::(@x,@xs),nil)) DEQUEUE#4(tuple#2(@dequeue@3,@dequeue@4)) -> DEQUEUE(@dequeue@3,@dequeue@4) ENQUEUE(@x,@queue) -> ENQUEUE#1(@queue,@x) ENQUEUES(@l,@queue) -> ENQUEUES#1(@l,@queue) ENQUEUES#1(::(@x,@xs),@queue) -> ENQUEUE(@x,@queue) ENQUEUES#1(::(@x,@xs),@queue) -> ENQUEUES(@xs,enqueue(@x,@queue)) STARTBREADTH(@xs) -> STARTBREADTH#1(@xs) STARTBREADTH#1(::(@x,@xs)) -> EMPTY(#unit) STARTBREADTH#1(::(@x,@xs)) -> ENQUEUE(tuple#4(@x,@x,@xs,@xs),empty(#unit)) STARTBREADTH#1(::(@x,@xs)) -> STARTBREADTH#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) STARTBREADTH#2(tuple#2(@breadth@1,@breadth@2)) -> BREADTH(@breadth@1,@breadth@2) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: ENQUEUES(@l,@queue) -> ENQUEUES#1(@l,@queue) ENQUEUES#1(::(@x,@xs),@queue) -> ENQUEUES(@xs,enqueue(@x,@queue)) ->->-> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->->Cycle: ->->-> Pairs: COPYOVER(@copyover@1,@copyover@2) -> COPYOVER#1(tuple#2(@copyover@1,@copyover@2)) COPYOVER#1(tuple#2(@inq,@outq)) -> COPYOVER#2(@inq,@outq) COPYOVER#2(::(@x,@xs),@outq) -> COPYOVER(@xs,::(@x,@outq)) ->->-> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->->Cycle: ->->-> Pairs: DEQUEUE(@dequeue@1,@dequeue@2) -> DEQUEUE#1(tuple#2(@dequeue@1,@dequeue@2)) DEQUEUE#1(tuple#2(@inq,@outq)) -> DEQUEUE#2(@outq,@inq) DEQUEUE#2(nil,@inq) -> DEQUEUE#3(@inq) DEQUEUE#3(::(@x,@xs)) -> DEQUEUE#4(copyover(::(@x,@xs),nil)) DEQUEUE#4(tuple#2(@dequeue@3,@dequeue@4)) -> DEQUEUE(@dequeue@3,@dequeue@4) ->->-> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->->Cycle: ->->-> Pairs: BREADTH(@breadth@1,@breadth@2) -> BREADTH#1(dequeue(@breadth@1,@breadth@2)) BREADTH#1(tuple#2(@queue',@elem)) -> BREADTH#2(@elem,@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#3(breadth#4(@z),@queue') BREADTH#3(tuple#2(@x,@ys),@queue') -> BREADTH#5(enqueues(@ys,@queue')) BREADTH#5(tuple#2(@breadth@7,@breadth@8)) -> BREADTH(@breadth@7,@breadth@8) ->->-> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) The problem is decomposed in 4 subproblems. Problem 1.1: Subterm Processor: -> Pairs: ENQUEUES(@l,@queue) -> ENQUEUES#1(@l,@queue) ENQUEUES#1(::(@x,@xs),@queue) -> ENQUEUES(@xs,enqueue(@x,@queue)) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->Projection: pi(ENQUEUES) = 1 pi(ENQUEUES#1) = 1 Problem 1.1: SCC Processor: -> Pairs: ENQUEUES(@l,@queue) -> ENQUEUES#1(@l,@queue) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Reduction Pairs Processor: -> Pairs: COPYOVER(@copyover@1,@copyover@2) -> COPYOVER#1(tuple#2(@copyover@1,@copyover@2)) COPYOVER#1(tuple#2(@inq,@outq)) -> COPYOVER#2(@inq,@outq) COPYOVER#2(::(@x,@xs),@outq) -> COPYOVER(@xs,::(@x,@outq)) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) -> Usable rules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [::](X1,X2) = X1 + 2.X2 + 2 [tuple#2](X1,X2) = X1 [COPYOVER](X1,X2) = 2.X1 + 1 [COPYOVER#1](X) = 2.X [COPYOVER#2](X1,X2) = 2.X1 Problem 1.2: SCC Processor: -> Pairs: COPYOVER#1(tuple#2(@inq,@outq)) -> COPYOVER#2(@inq,@outq) COPYOVER#2(::(@x,@xs),@outq) -> COPYOVER(@xs,::(@x,@outq)) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.3: Reduction Pairs Processor: -> Pairs: DEQUEUE(@dequeue@1,@dequeue@2) -> DEQUEUE#1(tuple#2(@dequeue@1,@dequeue@2)) DEQUEUE#1(tuple#2(@inq,@outq)) -> DEQUEUE#2(@outq,@inq) DEQUEUE#2(nil,@inq) -> DEQUEUE#3(@inq) DEQUEUE#3(::(@x,@xs)) -> DEQUEUE#4(copyover(::(@x,@xs),nil)) DEQUEUE#4(tuple#2(@dequeue@3,@dequeue@4)) -> DEQUEUE(@dequeue@3,@dequeue@4) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) -> Usable rules: copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [copyover](X1,X2) = 1 [copyover#1](X) = 1 [copyover#2](X1,X2) = 1 [::](X1,X2) = 2.X1 + 2 [nil] = 0 [tuple#2](X1,X2) = 2.X1 + 1 [DEQUEUE](X1,X2) = 2.X1 + 2 [DEQUEUE#1](X) = X [DEQUEUE#2](X1,X2) = 2.X2 + 1 [DEQUEUE#3](X) = 2.X + 1 [DEQUEUE#4](X) = 2.X Problem 1.3: SCC Processor: -> Pairs: DEQUEUE#1(tuple#2(@inq,@outq)) -> DEQUEUE#2(@outq,@inq) DEQUEUE#2(nil,@inq) -> DEQUEUE#3(@inq) DEQUEUE#3(::(@x,@xs)) -> DEQUEUE#4(copyover(::(@x,@xs),nil)) DEQUEUE#4(tuple#2(@dequeue@3,@dequeue@4)) -> DEQUEUE(@dequeue@3,@dequeue@4) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.4: Reduction Pairs Processor: -> Pairs: BREADTH(@breadth@1,@breadth@2) -> BREADTH#1(dequeue(@breadth@1,@breadth@2)) BREADTH#1(tuple#2(@queue',@elem)) -> BREADTH#2(@elem,@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#3(breadth#4(@z),@queue') BREADTH#3(tuple#2(@x,@ys),@queue') -> BREADTH#5(enqueues(@ys,@queue')) BREADTH#5(tuple#2(@breadth@7,@breadth@8)) -> BREADTH(@breadth@7,@breadth@8) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) -> Usable rules: breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 2 ->Bound: 1 ->Interpretation: [breadth#4](X) = [1 0;0 1].X + [1;0] [children](X1,X2,X3,X4) = [1 1;0 0].X1 + [1 1;0 1].X2 + [1 1;0 1].X3 + [1 1;1 0].X4 + [1;0] [children#1](X1,X2,X3) = [0 1;1 1].X1 + [0 1;1 1].X2 + [1 0;1 1].X3 + [0;1] [children#2](X1,X2) = [1 0;1 1].X1 + [0 1;1 1].X2 + [0;1] [children#3](X1,X2,X3,X4) = [1 0;1 1].X1 + [0 1;1 1].X2 + [0 0;0 1].X3 + [1 1;0 1].X4 + [1;1] [copyover](X1,X2) = [1 0;1 0].X1 + [1 0;1 0].X2 [copyover#1](X) = [1 0;1 0].X [copyover#2](X1,X2) = [1 0;1 0].X1 + [1 0;1 0].X2 [dequeue](X1,X2) = [1 0;1 0].X1 + [1 0;1 0].X2 + [0;1] [dequeue#1](X) = [1 0;1 0].X + [0;1] [dequeue#2](X1,X2) = [1 0;1 0].X1 + [1 0;1 0].X2 + [0;1] [dequeue#3](X) = [1 0;1 0].X + [0;1] [dequeue#4](X) = [1 0;1 0].X + [0;1] [enqueue](X1,X2) = [0 1;0 0].X1 + [1 0;0 1].X2 + [1;1] [enqueue#1](X1,X2) = [1 0;0 1].X1 + [0 1;0 0].X2 + [1;0] [enqueues](X1,X2) = [1 0;0 1].X1 + [1 0;0 1].X2 [enqueues#1](X1,X2) = [1 0;0 1].X1 + [1 0;0 1].X2 [::](X1,X2) = [0 1;0 0].X1 + [1 0;1 1].X2 + [1;1] [nil] = 0 [tuple#2](X1,X2) = [1 0;0 0].X1 + [1 0;1 0].X2 [tuple#4](X1,X2,X3,X4) = [1 1;0 0].X1 + [1 1;0 1].X2 + [1 1;0 1].X3 + [1 1;1 0].X4 [BREADTH](X1,X2) = [1 0;1 0].X1 + [1 0;1 0].X2 + [1;1] [BREADTH#1](X) = [1 0;1 0].X + [0;1] [BREADTH#2](X1,X2) = [1 0;1 0].X1 + [1 0;1 0].X2 + [0;1] [BREADTH#3](X1,X2) = [0 1;0 1].X1 + [1 0;1 0].X2 + [1;1] [BREADTH#5](X) = [1 0;1 0].X + [1;1] Problem 1.4: SCC Processor: -> Pairs: BREADTH#1(tuple#2(@queue',@elem)) -> BREADTH#2(@elem,@queue') BREADTH#2(::(@z,@_@9),@queue') -> BREADTH#3(breadth#4(@z),@queue') BREADTH#3(tuple#2(@x,@ys),@queue') -> BREADTH#5(enqueues(@ys,@queue')) BREADTH#5(tuple#2(@breadth@7,@breadth@8)) -> BREADTH(@breadth@7,@breadth@8) -> Rules: breadth(@breadth@1,@breadth@2) -> breadth#1(dequeue(@breadth@1,@breadth@2)) breadth#1(tuple#2(@queue',@elem)) -> breadth#2(@elem,@queue') breadth#2(::(@z,@_@9),@queue') -> breadth#3(breadth#4(@z),@queue') breadth#2(nil,@queue') -> nil breadth#3(tuple#2(@x,@ys),@queue') -> ::(@x,breadth#5(enqueues(@ys,@queue'))) breadth#4(tuple#4(@children@3,@children@4,@children@5,@children@6)) -> children(@children@3,@children@4,@children@5,@children@6) breadth#5(tuple#2(@breadth@7,@breadth@8)) -> breadth(@breadth@7,@breadth@8) children(@a,@b,@l1,@l2) -> tuple#2(tuple#2(@a,@b),children#1(@l1,@b,@l2)) children#1(::(@x,@xs),@b,@l2) -> children#3(@l2,@b,@x,@xs) children#1(nil,@b,@l2) -> children#2(@l2,@b) children#2(::(@y,@ys),@b) -> ::(tuple#4(@y,@b,nil,@ys),nil) children#2(nil,@b) -> nil children#3(::(@y,@ys),@b,@x,@xs) -> ::(tuple#4(@x,@b,nil,@xs),::(tuple#4(@x,@y,@xs,@ys),nil)) children#3(nil,@b,@x,@xs) -> nil copyover(@copyover@1,@copyover@2) -> copyover#1(tuple#2(@copyover@1,@copyover@2)) copyover#1(tuple#2(@inq,@outq)) -> copyover#2(@inq,@outq) copyover#2(::(@x,@xs),@outq) -> copyover(@xs,::(@x,@outq)) copyover#2(nil,@outq) -> tuple#2(nil,@outq) dequeue(@dequeue@1,@dequeue@2) -> dequeue#1(tuple#2(@dequeue@1,@dequeue@2)) dequeue#1(tuple#2(@inq,@outq)) -> dequeue#2(@outq,@inq) dequeue#2(::(@y,@ys),@inq) -> tuple#2(tuple#2(@inq,@ys),::(@y,nil)) dequeue#2(nil,@inq) -> dequeue#3(@inq) dequeue#3(::(@x,@xs)) -> dequeue#4(copyover(::(@x,@xs),nil)) dequeue#3(nil) -> tuple#2(tuple#2(nil,nil),nil) dequeue#4(tuple#2(@dequeue@3,@dequeue@4)) -> dequeue(@dequeue@3,@dequeue@4) empty(@x) -> tuple#2(nil,nil) enqueue(@x,@queue) -> enqueue#1(@queue,@x) enqueue#1(tuple#2(@inq,@outq),@x) -> tuple#2(::(@x,@inq),@outq) enqueues(@l,@queue) -> enqueues#1(@l,@queue) enqueues#1(::(@x,@xs),@queue) -> enqueues(@xs,enqueue(@x,@queue)) enqueues#1(nil,@queue) -> @queue startBreadth(@xs) -> startBreadth#1(@xs) startBreadth#1(::(@x,@xs)) -> startBreadth#2(enqueue(tuple#4(@x,@x,@xs,@xs),empty(#unit))) startBreadth#1(nil) -> nil startBreadth#2(tuple#2(@breadth@1,@breadth@2)) -> breadth(@breadth@1,@breadth@2) ->Strongly Connected Components: There is no strongly connected component The problem is finite.