MAYBE
Time: 0.004580
TRS:
 {         half 0() -> 0(),
         half s 0() -> 0(),
         half s s x -> s half x,
            inc 0() -> 0(),
            inc s x -> s inc x,
           zero 0() -> true(),
           zero s x -> false(),
              p 0() -> 0(),
              p s x -> x,
      bitIter(x, y) -> if(zero x, x, inc y),
             bits x -> bitIter(x, 0()),
   if(true(), x, y) -> p y,
  if(false(), x, y) -> bitIter(half x, y)}
 DP:
  DP:
   {       half# s s x -> half# x,
              inc# s x -> inc# x,
        bitIter#(x, y) -> inc# y,
        bitIter#(x, y) -> zero# x,
        bitIter#(x, y) -> if#(zero x, x, inc y),
               bits# x -> bitIter#(x, 0()),
     if#(true(), x, y) -> p# y,
    if#(false(), x, y) -> half# x,
    if#(false(), x, y) -> bitIter#(half x, y)}
  TRS:
  {         half 0() -> 0(),
          half s 0() -> 0(),
          half s s x -> s half x,
             inc 0() -> 0(),
             inc s x -> s inc x,
            zero 0() -> true(),
            zero s x -> false(),
               p 0() -> 0(),
               p s x -> x,
       bitIter(x, y) -> if(zero x, x, inc y),
              bits x -> bitIter(x, 0()),
    if(true(), x, y) -> p y,
   if(false(), x, y) -> bitIter(half x, y)}
  EDG:
   {(inc# s x -> inc# x, inc# s x -> inc# x)
    (if#(false(), x, y) -> half# x, half# s s x -> half# x)
    (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> if#(zero x, x, inc y))
    (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> zero# x)
    (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> inc# y)
    (bitIter#(x, y) -> if#(zero x, x, inc y), if#(true(), x, y) -> p# y)
    (bitIter#(x, y) -> if#(zero x, x, inc y), if#(false(), x, y) -> half# x)
    (bitIter#(x, y) -> if#(zero x, x, inc y), if#(false(), x, y) -> bitIter#(half x, y))
    (bitIter#(x, y) -> inc# y, inc# s x -> inc# x)
    (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> inc# y)
    (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> zero# x)
    (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> if#(zero x, x, inc y))
    (half# s s x -> half# x, half# s s x -> half# x)}
   EDG:
    {(inc# s x -> inc# x, inc# s x -> inc# x)
     (if#(false(), x, y) -> half# x, half# s s x -> half# x)
     (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> if#(zero x, x, inc y))
     (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> zero# x)
     (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> inc# y)
     (bitIter#(x, y) -> if#(zero x, x, inc y), if#(true(), x, y) -> p# y)
     (bitIter#(x, y) -> if#(zero x, x, inc y), if#(false(), x, y) -> half# x)
     (bitIter#(x, y) -> if#(zero x, x, inc y), if#(false(), x, y) -> bitIter#(half x, y))
     (bitIter#(x, y) -> inc# y, inc# s x -> inc# x)
     (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> inc# y)
     (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> zero# x)
     (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> if#(zero x, x, inc y))
     (half# s s x -> half# x, half# s s x -> half# x)}
    EDG:
     {(inc# s x -> inc# x, inc# s x -> inc# x)
      (if#(false(), x, y) -> half# x, half# s s x -> half# x)
      (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> if#(zero x, x, inc y))
      (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> zero# x)
      (if#(false(), x, y) -> bitIter#(half x, y), bitIter#(x, y) -> inc# y)
      (bitIter#(x, y) -> if#(zero x, x, inc y), if#(true(), x, y) -> p# y)
      (bitIter#(x, y) -> if#(zero x, x, inc y), if#(false(), x, y) -> half# x)
      (bitIter#(x, y) -> if#(zero x, x, inc y), if#(false(), x, y) -> bitIter#(half x, y))
      (bitIter#(x, y) -> inc# y, inc# s x -> inc# x)
      (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> inc# y)
      (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> zero# x)
      (bits# x -> bitIter#(x, 0()), bitIter#(x, y) -> if#(zero x, x, inc y))
      (half# s s x -> half# x, half# s s x -> half# x)}
     STATUS:
      arrows: 0.839506
      SCCS (3):
       Scc:
        {    bitIter#(x, y) -> if#(zero x, x, inc y),
         if#(false(), x, y) -> bitIter#(half x, y)}
       Scc:
        {inc# s x -> inc# x}
       Scc:
        {half# s s x -> half# x}
       
       
       SCC (2):
        Strict:
         {    bitIter#(x, y) -> if#(zero x, x, inc y),
          if#(false(), x, y) -> bitIter#(half x, y)}
        Weak:
        {         half 0() -> 0(),
                half s 0() -> 0(),
                half s s x -> s half x,
                   inc 0() -> 0(),
                   inc s x -> s inc x,
                  zero 0() -> true(),
                  zero s x -> false(),
                     p 0() -> 0(),
                     p s x -> x,
             bitIter(x, y) -> if(zero x, x, inc y),
                    bits x -> bitIter(x, 0()),
          if(true(), x, y) -> p y,
         if(false(), x, y) -> bitIter(half x, y)}
        Open
       
       
       
       
       SCC (1):
        Strict:
         {inc# s x -> inc# x}
        Weak:
        {         half 0() -> 0(),
                half s 0() -> 0(),
                half s s x -> s half x,
                   inc 0() -> 0(),
                   inc s x -> s inc x,
                  zero 0() -> true(),
                  zero s x -> false(),
                     p 0() -> 0(),
                     p s x -> x,
             bitIter(x, y) -> if(zero x, x, inc y),
                    bits x -> bitIter(x, 0()),
          if(true(), x, y) -> p y,
         if(false(), x, y) -> bitIter(half x, y)}
        Open
       SCC (1):
        Strict:
         {half# s s x -> half# x}
        Weak:
        {         half 0() -> 0(),
                half s 0() -> 0(),
                half s s x -> s half x,
                   inc 0() -> 0(),
                   inc s x -> s inc x,
                  zero 0() -> true(),
                  zero s x -> false(),
                     p 0() -> 0(),
                     p s x -> x,
             bitIter(x, y) -> if(zero x, x, inc y),
                    bits x -> bitIter(x, 0()),
          if(true(), x, y) -> p y,
         if(false(), x, y) -> bitIter(half x, y)}
        Open