MAYBE

Problem:
 active(h(X)) -> mark(g(X,X))
 active(g(a(),X)) -> mark(f(b(),X))
 active(f(X,X)) -> mark(h(a()))
 active(a()) -> mark(b())
 active(h(X)) -> h(active(X))
 active(g(X1,X2)) -> g(active(X1),X2)
 active(f(X1,X2)) -> f(active(X1),X2)
 h(mark(X)) -> mark(h(X))
 g(mark(X1),X2) -> mark(g(X1,X2))
 f(mark(X1),X2) -> mark(f(X1,X2))
 proper(h(X)) -> h(proper(X))
 proper(g(X1,X2)) -> g(proper(X1),proper(X2))
 proper(a()) -> ok(a())
 proper(f(X1,X2)) -> f(proper(X1),proper(X2))
 proper(b()) -> ok(b())
 h(ok(X)) -> ok(h(X))
 g(ok(X1),ok(X2)) -> ok(g(X1,X2))
 f(ok(X1),ok(X2)) -> ok(f(X1,X2))
 top(mark(X)) -> top(proper(X))
 top(ok(X)) -> top(active(X))

Proof:
 DP Processor:
  DPs:
   active#(h(X)) -> g#(X,X)
   active#(g(a(),X)) -> f#(b(),X)
   active#(f(X,X)) -> h#(a())
   active#(h(X)) -> active#(X)
   active#(h(X)) -> h#(active(X))
   active#(g(X1,X2)) -> active#(X1)
   active#(g(X1,X2)) -> g#(active(X1),X2)
   active#(f(X1,X2)) -> active#(X1)
   active#(f(X1,X2)) -> f#(active(X1),X2)
   h#(mark(X)) -> h#(X)
   g#(mark(X1),X2) -> g#(X1,X2)
   f#(mark(X1),X2) -> f#(X1,X2)
   proper#(h(X)) -> proper#(X)
   proper#(h(X)) -> h#(proper(X))
   proper#(g(X1,X2)) -> proper#(X2)
   proper#(g(X1,X2)) -> proper#(X1)
   proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
   proper#(f(X1,X2)) -> proper#(X2)
   proper#(f(X1,X2)) -> proper#(X1)
   proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
   h#(ok(X)) -> h#(X)
   g#(ok(X1),ok(X2)) -> g#(X1,X2)
   f#(ok(X1),ok(X2)) -> f#(X1,X2)
   top#(mark(X)) -> proper#(X)
   top#(mark(X)) -> top#(proper(X))
   top#(ok(X)) -> active#(X)
   top#(ok(X)) -> top#(active(X))
  TRS:
   active(h(X)) -> mark(g(X,X))
   active(g(a(),X)) -> mark(f(b(),X))
   active(f(X,X)) -> mark(h(a()))
   active(a()) -> mark(b())
   active(h(X)) -> h(active(X))
   active(g(X1,X2)) -> g(active(X1),X2)
   active(f(X1,X2)) -> f(active(X1),X2)
   h(mark(X)) -> mark(h(X))
   g(mark(X1),X2) -> mark(g(X1,X2))
   f(mark(X1),X2) -> mark(f(X1,X2))
   proper(h(X)) -> h(proper(X))
   proper(g(X1,X2)) -> g(proper(X1),proper(X2))
   proper(a()) -> ok(a())
   proper(f(X1,X2)) -> f(proper(X1),proper(X2))
   proper(b()) -> ok(b())
   h(ok(X)) -> ok(h(X))
   g(ok(X1),ok(X2)) -> ok(g(X1,X2))
   f(ok(X1),ok(X2)) -> ok(f(X1,X2))
   top(mark(X)) -> top(proper(X))
   top(ok(X)) -> top(active(X))
  TDG Processor:
   DPs:
    active#(h(X)) -> g#(X,X)
    active#(g(a(),X)) -> f#(b(),X)
    active#(f(X,X)) -> h#(a())
    active#(h(X)) -> active#(X)
    active#(h(X)) -> h#(active(X))
    active#(g(X1,X2)) -> active#(X1)
    active#(g(X1,X2)) -> g#(active(X1),X2)
    active#(f(X1,X2)) -> active#(X1)
    active#(f(X1,X2)) -> f#(active(X1),X2)
    h#(mark(X)) -> h#(X)
    g#(mark(X1),X2) -> g#(X1,X2)
    f#(mark(X1),X2) -> f#(X1,X2)
    proper#(h(X)) -> proper#(X)
    proper#(h(X)) -> h#(proper(X))
    proper#(g(X1,X2)) -> proper#(X2)
    proper#(g(X1,X2)) -> proper#(X1)
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    proper#(f(X1,X2)) -> proper#(X2)
    proper#(f(X1,X2)) -> proper#(X1)
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    h#(ok(X)) -> h#(X)
    g#(ok(X1),ok(X2)) -> g#(X1,X2)
    f#(ok(X1),ok(X2)) -> f#(X1,X2)
    top#(mark(X)) -> proper#(X)
    top#(mark(X)) -> top#(proper(X))
    top#(ok(X)) -> active#(X)
    top#(ok(X)) -> top#(active(X))
   TRS:
    active(h(X)) -> mark(g(X,X))
    active(g(a(),X)) -> mark(f(b(),X))
    active(f(X,X)) -> mark(h(a()))
    active(a()) -> mark(b())
    active(h(X)) -> h(active(X))
    active(g(X1,X2)) -> g(active(X1),X2)
    active(f(X1,X2)) -> f(active(X1),X2)
    h(mark(X)) -> mark(h(X))
    g(mark(X1),X2) -> mark(g(X1,X2))
    f(mark(X1),X2) -> mark(f(X1,X2))
    proper(h(X)) -> h(proper(X))
    proper(g(X1,X2)) -> g(proper(X1),proper(X2))
    proper(a()) -> ok(a())
    proper(f(X1,X2)) -> f(proper(X1),proper(X2))
    proper(b()) -> ok(b())
    h(ok(X)) -> ok(h(X))
    g(ok(X1),ok(X2)) -> ok(g(X1,X2))
    f(ok(X1),ok(X2)) -> ok(f(X1,X2))
    top(mark(X)) -> top(proper(X))
    top(ok(X)) -> top(active(X))
   graph:
    top#(ok(X)) -> top#(active(X)) -> top#(ok(X)) -> top#(active(X))
    top#(ok(X)) -> top#(active(X)) -> top#(ok(X)) -> active#(X)
    top#(ok(X)) -> top#(active(X)) ->
    top#(mark(X)) -> top#(proper(X))
    top#(ok(X)) -> top#(active(X)) -> top#(mark(X)) -> proper#(X)
    top#(ok(X)) -> active#(X) -> active#(f(X1,X2)) -> f#(active(X1),X2)
    top#(ok(X)) -> active#(X) -> active#(f(X1,X2)) -> active#(X1)
    top#(ok(X)) -> active#(X) -> active#(g(X1,X2)) -> g#(active(X1),X2)
    top#(ok(X)) -> active#(X) -> active#(g(X1,X2)) -> active#(X1)
    top#(ok(X)) -> active#(X) -> active#(h(X)) -> h#(active(X))
    top#(ok(X)) -> active#(X) -> active#(h(X)) -> active#(X)
    top#(ok(X)) -> active#(X) -> active#(f(X,X)) -> h#(a())
    top#(ok(X)) -> active#(X) -> active#(g(a(),X)) -> f#(b(),X)
    top#(ok(X)) -> active#(X) -> active#(h(X)) -> g#(X,X)
    top#(mark(X)) -> top#(proper(X)) ->
    top#(ok(X)) -> top#(active(X))
    top#(mark(X)) -> top#(proper(X)) -> top#(ok(X)) -> active#(X)
    top#(mark(X)) -> top#(proper(X)) ->
    top#(mark(X)) -> top#(proper(X))
    top#(mark(X)) -> top#(proper(X)) -> top#(mark(X)) -> proper#(X)
    top#(mark(X)) -> proper#(X) ->
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    top#(mark(X)) -> proper#(X) -> proper#(f(X1,X2)) -> proper#(X1)
    top#(mark(X)) -> proper#(X) -> proper#(f(X1,X2)) -> proper#(X2)
    top#(mark(X)) -> proper#(X) ->
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    top#(mark(X)) -> proper#(X) -> proper#(g(X1,X2)) -> proper#(X1)
    top#(mark(X)) -> proper#(X) -> proper#(g(X1,X2)) -> proper#(X2)
    top#(mark(X)) -> proper#(X) -> proper#(h(X)) -> h#(proper(X))
    top#(mark(X)) -> proper#(X) -> proper#(h(X)) -> proper#(X)
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(f(X1,X2)) -> proper#(X1)
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(f(X1,X2)) -> proper#(X2)
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(g(X1,X2)) -> proper#(X1)
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(g(X1,X2)) -> proper#(X2)
    proper#(f(X1,X2)) -> proper#(X2) ->
    proper#(h(X)) -> h#(proper(X))
    proper#(f(X1,X2)) -> proper#(X2) -> proper#(h(X)) -> proper#(X)
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(f(X1,X2)) -> proper#(X1)
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(f(X1,X2)) -> proper#(X2)
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(g(X1,X2)) -> proper#(X1)
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(g(X1,X2)) -> proper#(X2)
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(h(X)) -> h#(proper(X))
    proper#(f(X1,X2)) -> proper#(X1) ->
    proper#(h(X)) -> proper#(X)
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2)) ->
    f#(ok(X1),ok(X2)) -> f#(X1,X2)
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2)) ->
    f#(mark(X1),X2) -> f#(X1,X2)
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(f(X1,X2)) -> proper#(X1)
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(f(X1,X2)) -> proper#(X2)
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(g(X1,X2)) -> proper#(X1)
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(g(X1,X2)) -> proper#(X2)
    proper#(g(X1,X2)) -> proper#(X2) ->
    proper#(h(X)) -> h#(proper(X))
    proper#(g(X1,X2)) -> proper#(X2) -> proper#(h(X)) -> proper#(X)
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(f(X1,X2)) -> proper#(X1)
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(f(X1,X2)) -> proper#(X2)
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(g(X1,X2)) -> proper#(X1)
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(g(X1,X2)) -> proper#(X2)
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(h(X)) -> h#(proper(X))
    proper#(g(X1,X2)) -> proper#(X1) ->
    proper#(h(X)) -> proper#(X)
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2)) ->
    g#(ok(X1),ok(X2)) -> g#(X1,X2)
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2)) ->
    g#(mark(X1),X2) -> g#(X1,X2)
    proper#(h(X)) -> proper#(X) ->
    proper#(f(X1,X2)) -> f#(proper(X1),proper(X2))
    proper#(h(X)) -> proper#(X) -> proper#(f(X1,X2)) -> proper#(X1)
    proper#(h(X)) -> proper#(X) -> proper#(f(X1,X2)) -> proper#(X2)
    proper#(h(X)) -> proper#(X) ->
    proper#(g(X1,X2)) -> g#(proper(X1),proper(X2))
    proper#(h(X)) -> proper#(X) -> proper#(g(X1,X2)) -> proper#(X1)
    proper#(h(X)) -> proper#(X) -> proper#(g(X1,X2)) -> proper#(X2)
    proper#(h(X)) -> proper#(X) -> proper#(h(X)) -> h#(proper(X))
    proper#(h(X)) -> proper#(X) -> proper#(h(X)) -> proper#(X)
    proper#(h(X)) -> h#(proper(X)) -> h#(ok(X)) -> h#(X)
    proper#(h(X)) -> h#(proper(X)) -> h#(mark(X)) -> h#(X)
    h#(ok(X)) -> h#(X) -> h#(ok(X)) -> h#(X)
    h#(ok(X)) -> h#(X) -> h#(mark(X)) -> h#(X)
    h#(mark(X)) -> h#(X) -> h#(ok(X)) -> h#(X)
    h#(mark(X)) -> h#(X) -> h#(mark(X)) -> h#(X)
    f#(ok(X1),ok(X2)) -> f#(X1,X2) -> f#(ok(X1),ok(X2)) -> f#(X1,X2)
    f#(ok(X1),ok(X2)) -> f#(X1,X2) -> f#(mark(X1),X2) -> f#(X1,X2)
    f#(mark(X1),X2) -> f#(X1,X2) -> f#(ok(X1),ok(X2)) -> f#(X1,X2)
    f#(mark(X1),X2) -> f#(X1,X2) -> f#(mark(X1),X2) -> f#(X1,X2)
    g#(ok(X1),ok(X2)) -> g#(X1,X2) -> g#(ok(X1),ok(X2)) -> g#(X1,X2)
    g#(ok(X1),ok(X2)) -> g#(X1,X2) -> g#(mark(X1),X2) -> g#(X1,X2)
    g#(mark(X1),X2) -> g#(X1,X2) -> g#(ok(X1),ok(X2)) -> g#(X1,X2)
    g#(mark(X1),X2) -> g#(X1,X2) ->
    g#(mark(X1),X2) -> g#(X1,X2)
    active#(f(X1,X2)) -> f#(active(X1),X2) ->
    f#(ok(X1),ok(X2)) -> f#(X1,X2)
    active#(f(X1,X2)) -> f#(active(X1),X2) ->
    f#(mark(X1),X2) -> f#(X1,X2)
    active#(f(X1,X2)) -> active#(X1) ->
    active#(f(X1,X2)) -> f#(active(X1),X2)
    active#(f(X1,X2)) -> active#(X1) ->
    active#(f(X1,X2)) -> active#(X1)
    active#(f(X1,X2)) -> active#(X1) ->
    active#(g(X1,X2)) -> g#(active(X1),X2)
    active#(f(X1,X2)) -> active#(X1) ->
    active#(g(X1,X2)) -> active#(X1)
    active#(f(X1,X2)) -> active#(X1) ->
    active#(h(X)) -> h#(active(X))
    active#(f(X1,X2)) -> active#(X1) -> active#(h(X)) -> active#(X)
    active#(f(X1,X2)) -> active#(X1) -> active#(f(X,X)) -> h#(a())
    active#(f(X1,X2)) -> active#(X1) ->
    active#(g(a(),X)) -> f#(b(),X)
    active#(f(X1,X2)) -> active#(X1) -> active#(h(X)) -> g#(X,X)
    active#(f(X,X)) -> h#(a()) -> h#(ok(X)) -> h#(X)
    active#(f(X,X)) -> h#(a()) -> h#(mark(X)) -> h#(X)
    active#(g(a(),X)) -> f#(b(),X) -> f#(ok(X1),ok(X2)) -> f#(X1,X2)
    active#(g(a(),X)) -> f#(b(),X) ->
    f#(mark(X1),X2) -> f#(X1,X2)
    active#(g(X1,X2)) -> g#(active(X1),X2) ->
    g#(ok(X1),ok(X2)) -> g#(X1,X2)
    active#(g(X1,X2)) -> g#(active(X1),X2) ->
    g#(mark(X1),X2) -> g#(X1,X2)
    active#(g(X1,X2)) -> active#(X1) ->
    active#(f(X1,X2)) -> f#(active(X1),X2)
    active#(g(X1,X2)) -> active#(X1) ->
    active#(f(X1,X2)) -> active#(X1)
    active#(g(X1,X2)) -> active#(X1) ->
    active#(g(X1,X2)) -> g#(active(X1),X2)
    active#(g(X1,X2)) -> active#(X1) ->
    active#(g(X1,X2)) -> active#(X1)
    active#(g(X1,X2)) -> active#(X1) ->
    active#(h(X)) -> h#(active(X))
    active#(g(X1,X2)) -> active#(X1) -> active#(h(X)) -> active#(X)
    active#(g(X1,X2)) -> active#(X1) -> active#(f(X,X)) -> h#(a())
    active#(g(X1,X2)) -> active#(X1) ->
    active#(g(a(),X)) -> f#(b(),X)
    active#(g(X1,X2)) -> active#(X1) -> active#(h(X)) -> g#(X,X)
    active#(h(X)) -> h#(active(X)) -> h#(ok(X)) -> h#(X)
    active#(h(X)) -> h#(active(X)) -> h#(mark(X)) -> h#(X)
    active#(h(X)) -> g#(X,X) -> g#(ok(X1),ok(X2)) -> g#(X1,X2)
    active#(h(X)) -> g#(X,X) -> g#(mark(X1),X2) -> g#(X1,X2)
    active#(h(X)) -> active#(X) ->
    active#(f(X1,X2)) -> f#(active(X1),X2)
    active#(h(X)) -> active#(X) -> active#(f(X1,X2)) -> active#(X1)
    active#(h(X)) -> active#(X) ->
    active#(g(X1,X2)) -> g#(active(X1),X2)
    active#(h(X)) -> active#(X) -> active#(g(X1,X2)) -> active#(X1)
    active#(h(X)) -> active#(X) -> active#(h(X)) -> h#(active(X))
    active#(h(X)) -> active#(X) -> active#(h(X)) -> active#(X)
    active#(h(X)) -> active#(X) -> active#(f(X,X)) -> h#(a())
    active#(h(X)) -> active#(X) -> active#(g(a(),X)) -> f#(b(),X)
    active#(h(X)) -> active#(X) -> active#(h(X)) -> g#(X,X)
   SCC Processor:
    #sccs: 6
    #rules: 16
    #arcs: 122/729
    DPs:
     top#(ok(X)) -> top#(active(X))
     top#(mark(X)) -> top#(proper(X))
    TRS:
     active(h(X)) -> mark(g(X,X))
     active(g(a(),X)) -> mark(f(b(),X))
     active(f(X,X)) -> mark(h(a()))
     active(a()) -> mark(b())
     active(h(X)) -> h(active(X))
     active(g(X1,X2)) -> g(active(X1),X2)
     active(f(X1,X2)) -> f(active(X1),X2)
     h(mark(X)) -> mark(h(X))
     g(mark(X1),X2) -> mark(g(X1,X2))
     f(mark(X1),X2) -> mark(f(X1,X2))
     proper(h(X)) -> h(proper(X))
     proper(g(X1,X2)) -> g(proper(X1),proper(X2))
     proper(a()) -> ok(a())
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(b()) -> ok(b())
     h(ok(X)) -> ok(h(X))
     g(ok(X1),ok(X2)) -> ok(g(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Open
    
    DPs:
     active#(h(X)) -> active#(X)
     active#(g(X1,X2)) -> active#(X1)
     active#(f(X1,X2)) -> active#(X1)
    TRS:
     active(h(X)) -> mark(g(X,X))
     active(g(a(),X)) -> mark(f(b(),X))
     active(f(X,X)) -> mark(h(a()))
     active(a()) -> mark(b())
     active(h(X)) -> h(active(X))
     active(g(X1,X2)) -> g(active(X1),X2)
     active(f(X1,X2)) -> f(active(X1),X2)
     h(mark(X)) -> mark(h(X))
     g(mark(X1),X2) -> mark(g(X1,X2))
     f(mark(X1),X2) -> mark(f(X1,X2))
     proper(h(X)) -> h(proper(X))
     proper(g(X1,X2)) -> g(proper(X1),proper(X2))
     proper(a()) -> ok(a())
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(b()) -> ok(b())
     h(ok(X)) -> ok(h(X))
     g(ok(X1),ok(X2)) -> ok(g(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Subterm Criterion Processor:
     simple projection:
      pi(active#) = 0
     problem:
      DPs:
       
      TRS:
       active(h(X)) -> mark(g(X,X))
       active(g(a(),X)) -> mark(f(b(),X))
       active(f(X,X)) -> mark(h(a()))
       active(a()) -> mark(b())
       active(h(X)) -> h(active(X))
       active(g(X1,X2)) -> g(active(X1),X2)
       active(f(X1,X2)) -> f(active(X1),X2)
       h(mark(X)) -> mark(h(X))
       g(mark(X1),X2) -> mark(g(X1,X2))
       f(mark(X1),X2) -> mark(f(X1,X2))
       proper(h(X)) -> h(proper(X))
       proper(g(X1,X2)) -> g(proper(X1),proper(X2))
       proper(a()) -> ok(a())
       proper(f(X1,X2)) -> f(proper(X1),proper(X2))
       proper(b()) -> ok(b())
       h(ok(X)) -> ok(h(X))
       g(ok(X1),ok(X2)) -> ok(g(X1,X2))
       f(ok(X1),ok(X2)) -> ok(f(X1,X2))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Qed
    
    DPs:
     proper#(h(X)) -> proper#(X)
     proper#(g(X1,X2)) -> proper#(X2)
     proper#(g(X1,X2)) -> proper#(X1)
     proper#(f(X1,X2)) -> proper#(X2)
     proper#(f(X1,X2)) -> proper#(X1)
    TRS:
     active(h(X)) -> mark(g(X,X))
     active(g(a(),X)) -> mark(f(b(),X))
     active(f(X,X)) -> mark(h(a()))
     active(a()) -> mark(b())
     active(h(X)) -> h(active(X))
     active(g(X1,X2)) -> g(active(X1),X2)
     active(f(X1,X2)) -> f(active(X1),X2)
     h(mark(X)) -> mark(h(X))
     g(mark(X1),X2) -> mark(g(X1,X2))
     f(mark(X1),X2) -> mark(f(X1,X2))
     proper(h(X)) -> h(proper(X))
     proper(g(X1,X2)) -> g(proper(X1),proper(X2))
     proper(a()) -> ok(a())
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(b()) -> ok(b())
     h(ok(X)) -> ok(h(X))
     g(ok(X1),ok(X2)) -> ok(g(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Subterm Criterion Processor:
     simple projection:
      pi(proper#) = 0
     problem:
      DPs:
       
      TRS:
       active(h(X)) -> mark(g(X,X))
       active(g(a(),X)) -> mark(f(b(),X))
       active(f(X,X)) -> mark(h(a()))
       active(a()) -> mark(b())
       active(h(X)) -> h(active(X))
       active(g(X1,X2)) -> g(active(X1),X2)
       active(f(X1,X2)) -> f(active(X1),X2)
       h(mark(X)) -> mark(h(X))
       g(mark(X1),X2) -> mark(g(X1,X2))
       f(mark(X1),X2) -> mark(f(X1,X2))
       proper(h(X)) -> h(proper(X))
       proper(g(X1,X2)) -> g(proper(X1),proper(X2))
       proper(a()) -> ok(a())
       proper(f(X1,X2)) -> f(proper(X1),proper(X2))
       proper(b()) -> ok(b())
       h(ok(X)) -> ok(h(X))
       g(ok(X1),ok(X2)) -> ok(g(X1,X2))
       f(ok(X1),ok(X2)) -> ok(f(X1,X2))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Qed
    
    DPs:
     f#(mark(X1),X2) -> f#(X1,X2)
     f#(ok(X1),ok(X2)) -> f#(X1,X2)
    TRS:
     active(h(X)) -> mark(g(X,X))
     active(g(a(),X)) -> mark(f(b(),X))
     active(f(X,X)) -> mark(h(a()))
     active(a()) -> mark(b())
     active(h(X)) -> h(active(X))
     active(g(X1,X2)) -> g(active(X1),X2)
     active(f(X1,X2)) -> f(active(X1),X2)
     h(mark(X)) -> mark(h(X))
     g(mark(X1),X2) -> mark(g(X1,X2))
     f(mark(X1),X2) -> mark(f(X1,X2))
     proper(h(X)) -> h(proper(X))
     proper(g(X1,X2)) -> g(proper(X1),proper(X2))
     proper(a()) -> ok(a())
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(b()) -> ok(b())
     h(ok(X)) -> ok(h(X))
     g(ok(X1),ok(X2)) -> ok(g(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Subterm Criterion Processor:
     simple projection:
      pi(f#) = 1
     problem:
      DPs:
       f#(mark(X1),X2) -> f#(X1,X2)
      TRS:
       active(h(X)) -> mark(g(X,X))
       active(g(a(),X)) -> mark(f(b(),X))
       active(f(X,X)) -> mark(h(a()))
       active(a()) -> mark(b())
       active(h(X)) -> h(active(X))
       active(g(X1,X2)) -> g(active(X1),X2)
       active(f(X1,X2)) -> f(active(X1),X2)
       h(mark(X)) -> mark(h(X))
       g(mark(X1),X2) -> mark(g(X1,X2))
       f(mark(X1),X2) -> mark(f(X1,X2))
       proper(h(X)) -> h(proper(X))
       proper(g(X1,X2)) -> g(proper(X1),proper(X2))
       proper(a()) -> ok(a())
       proper(f(X1,X2)) -> f(proper(X1),proper(X2))
       proper(b()) -> ok(b())
       h(ok(X)) -> ok(h(X))
       g(ok(X1),ok(X2)) -> ok(g(X1,X2))
       f(ok(X1),ok(X2)) -> ok(f(X1,X2))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Subterm Criterion Processor:
      simple projection:
       pi(f#) = 0
      problem:
       DPs:
        
       TRS:
        active(h(X)) -> mark(g(X,X))
        active(g(a(),X)) -> mark(f(b(),X))
        active(f(X,X)) -> mark(h(a()))
        active(a()) -> mark(b())
        active(h(X)) -> h(active(X))
        active(g(X1,X2)) -> g(active(X1),X2)
        active(f(X1,X2)) -> f(active(X1),X2)
        h(mark(X)) -> mark(h(X))
        g(mark(X1),X2) -> mark(g(X1,X2))
        f(mark(X1),X2) -> mark(f(X1,X2))
        proper(h(X)) -> h(proper(X))
        proper(g(X1,X2)) -> g(proper(X1),proper(X2))
        proper(a()) -> ok(a())
        proper(f(X1,X2)) -> f(proper(X1),proper(X2))
        proper(b()) -> ok(b())
        h(ok(X)) -> ok(h(X))
        g(ok(X1),ok(X2)) -> ok(g(X1,X2))
        f(ok(X1),ok(X2)) -> ok(f(X1,X2))
        top(mark(X)) -> top(proper(X))
        top(ok(X)) -> top(active(X))
      Qed
    
    DPs:
     g#(mark(X1),X2) -> g#(X1,X2)
     g#(ok(X1),ok(X2)) -> g#(X1,X2)
    TRS:
     active(h(X)) -> mark(g(X,X))
     active(g(a(),X)) -> mark(f(b(),X))
     active(f(X,X)) -> mark(h(a()))
     active(a()) -> mark(b())
     active(h(X)) -> h(active(X))
     active(g(X1,X2)) -> g(active(X1),X2)
     active(f(X1,X2)) -> f(active(X1),X2)
     h(mark(X)) -> mark(h(X))
     g(mark(X1),X2) -> mark(g(X1,X2))
     f(mark(X1),X2) -> mark(f(X1,X2))
     proper(h(X)) -> h(proper(X))
     proper(g(X1,X2)) -> g(proper(X1),proper(X2))
     proper(a()) -> ok(a())
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(b()) -> ok(b())
     h(ok(X)) -> ok(h(X))
     g(ok(X1),ok(X2)) -> ok(g(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Subterm Criterion Processor:
     simple projection:
      pi(g#) = 1
     problem:
      DPs:
       g#(mark(X1),X2) -> g#(X1,X2)
      TRS:
       active(h(X)) -> mark(g(X,X))
       active(g(a(),X)) -> mark(f(b(),X))
       active(f(X,X)) -> mark(h(a()))
       active(a()) -> mark(b())
       active(h(X)) -> h(active(X))
       active(g(X1,X2)) -> g(active(X1),X2)
       active(f(X1,X2)) -> f(active(X1),X2)
       h(mark(X)) -> mark(h(X))
       g(mark(X1),X2) -> mark(g(X1,X2))
       f(mark(X1),X2) -> mark(f(X1,X2))
       proper(h(X)) -> h(proper(X))
       proper(g(X1,X2)) -> g(proper(X1),proper(X2))
       proper(a()) -> ok(a())
       proper(f(X1,X2)) -> f(proper(X1),proper(X2))
       proper(b()) -> ok(b())
       h(ok(X)) -> ok(h(X))
       g(ok(X1),ok(X2)) -> ok(g(X1,X2))
       f(ok(X1),ok(X2)) -> ok(f(X1,X2))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Subterm Criterion Processor:
      simple projection:
       pi(g#) = 0
      problem:
       DPs:
        
       TRS:
        active(h(X)) -> mark(g(X,X))
        active(g(a(),X)) -> mark(f(b(),X))
        active(f(X,X)) -> mark(h(a()))
        active(a()) -> mark(b())
        active(h(X)) -> h(active(X))
        active(g(X1,X2)) -> g(active(X1),X2)
        active(f(X1,X2)) -> f(active(X1),X2)
        h(mark(X)) -> mark(h(X))
        g(mark(X1),X2) -> mark(g(X1,X2))
        f(mark(X1),X2) -> mark(f(X1,X2))
        proper(h(X)) -> h(proper(X))
        proper(g(X1,X2)) -> g(proper(X1),proper(X2))
        proper(a()) -> ok(a())
        proper(f(X1,X2)) -> f(proper(X1),proper(X2))
        proper(b()) -> ok(b())
        h(ok(X)) -> ok(h(X))
        g(ok(X1),ok(X2)) -> ok(g(X1,X2))
        f(ok(X1),ok(X2)) -> ok(f(X1,X2))
        top(mark(X)) -> top(proper(X))
        top(ok(X)) -> top(active(X))
      Qed
    
    DPs:
     h#(mark(X)) -> h#(X)
     h#(ok(X)) -> h#(X)
    TRS:
     active(h(X)) -> mark(g(X,X))
     active(g(a(),X)) -> mark(f(b(),X))
     active(f(X,X)) -> mark(h(a()))
     active(a()) -> mark(b())
     active(h(X)) -> h(active(X))
     active(g(X1,X2)) -> g(active(X1),X2)
     active(f(X1,X2)) -> f(active(X1),X2)
     h(mark(X)) -> mark(h(X))
     g(mark(X1),X2) -> mark(g(X1,X2))
     f(mark(X1),X2) -> mark(f(X1,X2))
     proper(h(X)) -> h(proper(X))
     proper(g(X1,X2)) -> g(proper(X1),proper(X2))
     proper(a()) -> ok(a())
     proper(f(X1,X2)) -> f(proper(X1),proper(X2))
     proper(b()) -> ok(b())
     h(ok(X)) -> ok(h(X))
     g(ok(X1),ok(X2)) -> ok(g(X1,X2))
     f(ok(X1),ok(X2)) -> ok(f(X1,X2))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Subterm Criterion Processor:
     simple projection:
      pi(h#) = 0
     problem:
      DPs:
       
      TRS:
       active(h(X)) -> mark(g(X,X))
       active(g(a(),X)) -> mark(f(b(),X))
       active(f(X,X)) -> mark(h(a()))
       active(a()) -> mark(b())
       active(h(X)) -> h(active(X))
       active(g(X1,X2)) -> g(active(X1),X2)
       active(f(X1,X2)) -> f(active(X1),X2)
       h(mark(X)) -> mark(h(X))
       g(mark(X1),X2) -> mark(g(X1,X2))
       f(mark(X1),X2) -> mark(f(X1,X2))
       proper(h(X)) -> h(proper(X))
       proper(g(X1,X2)) -> g(proper(X1),proper(X2))
       proper(a()) -> ok(a())
       proper(f(X1,X2)) -> f(proper(X1),proper(X2))
       proper(b()) -> ok(b())
       h(ok(X)) -> ok(h(X))
       g(ok(X1),ok(X2)) -> ok(g(X1,X2))
       f(ok(X1),ok(X2)) -> ok(f(X1,X2))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Qed