/export/starexec/sandbox/solver/bin/starexec_run_default /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES Problem 1: (VAR v_NonEmpty:S x:S xs:S y:S ys:S zs:S) (RULES app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ) Problem 1: Valid CTRS Processor: -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) -> The system is a deterministic 3-CTRS. Problem 1: Dependency Pairs Processor: Conditional Termination Problem 1: -> Pairs: APP(cons(x:S,xs:S),ys:S) -> APP(xs:S,ys:S) LE(s(x:S),s(y:S)) -> LE(x:S,y:S) QSORT(cons(x:S,xs:S)) -> APP(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) QSORT(cons(x:S,xs:S)) -> QSORT(ys:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) QSORT(cons(x:S,xs:S)) -> QSORT(zs:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) Conditional Termination Problem 2: -> Pairs: QSORT(cons(x:S,xs:S)) -> SPLIT(x:S,xs:S) SPLIT(x:S,cons(y:S,ys:S)) -> LE(x:S,y:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S) SPLIT(x:S,cons(y:S,ys:S)) -> SPLIT(x:S,ys:S) -> QPairs: LE(s(x:S),s(y:S)) -> LE(x:S,y:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) The problem is decomposed in 2 subproblems. Problem 1.1: SCC Processor: -> Pairs: APP(cons(x:S,xs:S),ys:S) -> APP(xs:S,ys:S) LE(s(x:S),s(y:S)) -> LE(x:S,y:S) QSORT(cons(x:S,xs:S)) -> APP(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) QSORT(cons(x:S,xs:S)) -> QSORT(ys:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) QSORT(cons(x:S,xs:S)) -> QSORT(zs:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: LE(s(x:S),s(y:S)) -> LE(x:S,y:S) -> QPairs: Empty ->->-> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->->Cycle: ->->-> Pairs: APP(cons(x:S,xs:S),ys:S) -> APP(xs:S,ys:S) -> QPairs: Empty ->->-> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->->Cycle: ->->-> Pairs: QSORT(cons(x:S,xs:S)) -> QSORT(ys:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) QSORT(cons(x:S,xs:S)) -> QSORT(zs:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) -> QPairs: Empty ->->-> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) The problem is decomposed in 3 subproblems. Problem 1.1.1: Conditional Subterm Processor: -> Pairs: LE(s(x:S),s(y:S)) -> LE(x:S,y:S) -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Projection: pi(LE) = 1 Problem 1.1.1: SCC Processor: -> Pairs: Empty -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.1.2: Conditional Subterm Processor: -> Pairs: APP(cons(x:S,xs:S),ys:S) -> APP(xs:S,ys:S) -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Projection: pi(APP) = 1 Problem 1.1.2: SCC Processor: -> Pairs: Empty -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.1.3: Ohlebusch Transformation Processor: -> Pairs: QSORT(cons(x:S,xs:S)) -> QSORT(ys:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) QSORT(cons(x:S,xs:S)) -> QSORT(zs:S) | split(x:S,xs:S) ->* pair(ys:S,zs:S) -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) -> New Pairs: QSORT(cons(x:S,xs:S)) -> U25(split(x:S,xs:S),x:S,xs:S) QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U25(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(ys:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) -> New Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) Problem 1.1.3: SCC Processor: -> Pairs: QSORT(cons(x:S,xs:S)) -> U25(split(x:S,xs:S),x:S,xs:S) QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U25(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(ys:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: QSORT(cons(x:S,xs:S)) -> U25(split(x:S,xs:S),x:S,xs:S) QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U25(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(ys:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) ->->-> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) Problem 1.1.3: Reduction Pair Processor: -> Pairs: QSORT(cons(x:S,xs:S)) -> U25(split(x:S,xs:S),x:S,xs:S) QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U25(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(ys:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) -> Usable rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [app](X1,X2) = X1 + X2 [le](X1,X2) = 2 [qsort](X) = 2.X + 2 [split](X1,X2) = X2 + 2 [0] = 2 [cons](X1,X2) = X2 + 2 [false] = 2 [nil] = 0 [pair](X1,X2) = X1 + X2 + 2 [s](X) = 2.X + 2 [true] = 2 [QSORT](X) = 2.X + 2 [U20](X1,X2,X3) = 2.X1 + 2 [U21](X1,X2,X3,X4) = X1 + 2 [U22](X1,X2,X3,X4,X5,X6) = X1 + X3 + X6 + 2 [U23](X1,X2,X3,X4) = X1 + 2 [U24](X1,X2,X3,X4,X5,X6) = 2.X1 + X3 + X6 [U25](X1,X2,X3) = 2.X1 + 1 [U26](X1,X2,X3) = 2.X1 + 2 Problem 1.1.3: SCC Processor: -> Pairs: QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U25(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(ys:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) ->->-> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) Problem 1.1.3: Reduction Pair Processor: -> Pairs: QSORT(cons(x:S,xs:S)) -> U26(split(x:S,xs:S),x:S,xs:S) U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) -> Usable rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [app](X1,X2) = X1 + X2 [le](X1,X2) = 1 [qsort](X) = 2.X [split](X1,X2) = X1 + X2 + 1 [0] = 1 [cons](X1,X2) = 2.X1 + X2 + 2 [false] = 1 [nil] = 0 [pair](X1,X2) = X1 + X2 + 1 [s](X) = 2.X + 1 [true] = 1 [QSORT](X) = 2.X + 2 [U20](X1,X2,X3) = 2.X1 + 2.X2 + 2 [U21](X1,X2,X3,X4) = X1 + 2.X3 + 2 [U22](X1,X2,X3,X4,X5,X6) = X1 + X3 + 2.X4 + X6 + 2 [U23](X1,X2,X3,X4) = X1 + 2.X3 + 2 [U24](X1,X2,X3,X4,X5,X6) = X1 + X3 + 2.X4 + X6 + 2 [U26](X1,X2,X3) = 2.X1 + 2.X2 + 2 Problem 1.1.3: SCC Processor: -> Pairs: U26(pair(ys:S,zs:S),x:S,xs:S) -> QSORT(zs:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> U20(split(x:S,xs:S),x:S,xs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> U21(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,cons(y:S,ys:S)) -> U23(split(x:S,ys:S),x:S,y:S,ys:S) split(x:S,nil) -> pair(nil,nil) U20(pair(ys:S,zs:S),x:S,xs:S) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) U21(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U22(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U22(ffalse,x:S,xs:S,y:S,ys:S,zs:S) -> pair(cons(y:S,xs:S),zs:S) U23(pair(xs:S,zs:S),x:S,y:S,ys:S) -> U24(le(x:S,y:S),x:S,xs:S,y:S,ys:S,zs:S) U24(ttrue,x:S,xs:S,y:S,ys:S,zs:S) -> pair(xs:S,cons(y:S,zs:S)) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: SCC Processor: -> Pairs: QSORT(cons(x:S,xs:S)) -> SPLIT(x:S,xs:S) SPLIT(x:S,cons(y:S,ys:S)) -> LE(x:S,y:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S) SPLIT(x:S,cons(y:S,ys:S)) -> SPLIT(x:S,ys:S) -> QPairs: LE(s(x:S),s(y:S)) -> LE(x:S,y:S) -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: SPLIT(x:S,cons(y:S,ys:S)) -> SPLIT(x:S,ys:S) -> QPairs: Empty ->->-> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) Problem 1.2: Conditional Subterm Processor: -> Pairs: SPLIT(x:S,cons(y:S,ys:S)) -> SPLIT(x:S,ys:S) -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Projection: pi(SPLIT) = 2 Problem 1.2: SCC Processor: -> Pairs: Empty -> QPairs: Empty -> Rules: app(cons(x:S,xs:S),ys:S) -> cons(x:S,app(xs:S,ys:S)) app(nil,x:S) -> x:S le(0,x:S) -> ttrue le(s(x:S),0) -> ffalse le(s(x:S),s(y:S)) -> le(x:S,y:S) qsort(cons(x:S,xs:S)) -> app(qsort(ys:S),cons(x:S,qsort(zs:S))) | split(x:S,xs:S) ->* pair(ys:S,zs:S) qsort(nil) -> nil split(x:S,cons(y:S,ys:S)) -> pair(cons(y:S,xs:S),zs:S) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ffalse split(x:S,cons(y:S,ys:S)) -> pair(xs:S,cons(y:S,zs:S)) | split(x:S,ys:S) ->* pair(xs:S,zs:S), le(x:S,y:S) ->* ttrue split(x:S,nil) -> pair(nil,nil) ->Strongly Connected Components: There is no strongly connected component The problem is finite.