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