MAYBE

Problem:
 qsort(nil()) -> nil()
 qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y))))
 lowers(x,nil()) -> nil()
 lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
 greaters(x,nil()) -> nil()
 greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))

Proof:
 DP Processor:
  DPs:
   qsort#(.(x,y)) -> greaters#(x,y)
   qsort#(.(x,y)) -> qsort#(greaters(x,y))
   qsort#(.(x,y)) -> lowers#(x,y)
   qsort#(.(x,y)) -> qsort#(lowers(x,y))
   lowers#(x,.(y,z)) -> lowers#(x,z)
   greaters#(x,.(y,z)) -> greaters#(x,z)
  TRS:
   qsort(nil()) -> nil()
   qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y))))
   lowers(x,nil()) -> nil()
   lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
   greaters(x,nil()) -> nil()
   greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
  Usable Rule Processor:
   DPs:
    qsort#(.(x,y)) -> greaters#(x,y)
    qsort#(.(x,y)) -> qsort#(greaters(x,y))
    qsort#(.(x,y)) -> lowers#(x,y)
    qsort#(.(x,y)) -> qsort#(lowers(x,y))
    lowers#(x,.(y,z)) -> lowers#(x,z)
    greaters#(x,.(y,z)) -> greaters#(x,z)
   TRS:
    f11(x,y) -> x
    f11(x,y) -> y
    greaters(x,nil()) -> nil()
    greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
    lowers(x,nil()) -> nil()
    lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
   TDG Processor:
    DPs:
     qsort#(.(x,y)) -> greaters#(x,y)
     qsort#(.(x,y)) -> qsort#(greaters(x,y))
     qsort#(.(x,y)) -> lowers#(x,y)
     qsort#(.(x,y)) -> qsort#(lowers(x,y))
     lowers#(x,.(y,z)) -> lowers#(x,z)
     greaters#(x,.(y,z)) -> greaters#(x,z)
    TRS:
     f11(x,y) -> x
     f11(x,y) -> y
     greaters(x,nil()) -> nil()
     greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
     lowers(x,nil()) -> nil()
     lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
    graph:
     lowers#(x,.(y,z)) -> lowers#(x,z) ->
     lowers#(x,.(y,z)) -> lowers#(x,z)
     greaters#(x,.(y,z)) -> greaters#(x,z) ->
     greaters#(x,.(y,z)) -> greaters#(x,z)
     qsort#(.(x,y)) -> lowers#(x,y) ->
     lowers#(x,.(y,z)) -> lowers#(x,z)
     qsort#(.(x,y)) -> greaters#(x,y) ->
     greaters#(x,.(y,z)) -> greaters#(x,z)
     qsort#(.(x,y)) -> qsort#(greaters(x,y)) ->
     qsort#(.(x,y)) -> qsort#(lowers(x,y))
     qsort#(.(x,y)) -> qsort#(greaters(x,y)) ->
     qsort#(.(x,y)) -> lowers#(x,y)
     qsort#(.(x,y)) -> qsort#(greaters(x,y)) ->
     qsort#(.(x,y)) -> qsort#(greaters(x,y))
     qsort#(.(x,y)) -> qsort#(greaters(x,y)) ->
     qsort#(.(x,y)) -> greaters#(x,y)
     qsort#(.(x,y)) -> qsort#(lowers(x,y)) ->
     qsort#(.(x,y)) -> qsort#(lowers(x,y))
     qsort#(.(x,y)) -> qsort#(lowers(x,y)) ->
     qsort#(.(x,y)) -> lowers#(x,y)
     qsort#(.(x,y)) -> qsort#(lowers(x,y)) ->
     qsort#(.(x,y)) -> qsort#(greaters(x,y))
     qsort#(.(x,y)) -> qsort#(lowers(x,y)) -> qsort#(.(x,y)) -> greaters#(x,y)
    Restore Modifier:
     DPs:
      qsort#(.(x,y)) -> greaters#(x,y)
      qsort#(.(x,y)) -> qsort#(greaters(x,y))
      qsort#(.(x,y)) -> lowers#(x,y)
      qsort#(.(x,y)) -> qsort#(lowers(x,y))
      lowers#(x,.(y,z)) -> lowers#(x,z)
      greaters#(x,.(y,z)) -> greaters#(x,z)
     TRS:
      qsort(nil()) -> nil()
      qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y))))
      lowers(x,nil()) -> nil()
      lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
      greaters(x,nil()) -> nil()
      greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
     SCC Processor:
      #sccs: 3
      #rules: 4
      #arcs: 12/36
      DPs:
       qsort#(.(x,y)) -> qsort#(greaters(x,y))
       qsort#(.(x,y)) -> qsort#(lowers(x,y))
      TRS:
       qsort(nil()) -> nil()
       qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y))))
       lowers(x,nil()) -> nil()
       lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
       greaters(x,nil()) -> nil()
       greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
      Open
      
      DPs:
       greaters#(x,.(y,z)) -> greaters#(x,z)
      TRS:
       qsort(nil()) -> nil()
       qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y))))
       lowers(x,nil()) -> nil()
       lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
       greaters(x,nil()) -> nil()
       greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
      Open
      
      DPs:
       lowers#(x,.(y,z)) -> lowers#(x,z)
      TRS:
       qsort(nil()) -> nil()
       qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y))))
       lowers(x,nil()) -> nil()
       lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z))
       greaters(x,nil()) -> nil()
       greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z)))
      Open