MAYBE Time: 0.144798 TRS: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), if(true(), x, y) -> 0(), if(false(), x, y) -> s minus(p x, y), minus(x, y) -> if(le(x, y), x, y)} DP: DP: { p# p s x -> p# x, le#(s x, s y) -> le#(x, y), le#(p s x, x) -> le#(x, x), if#(false(), x, y) -> p# x, if#(false(), x, y) -> minus#(p x, y), minus#(x, y) -> le#(x, y), minus#(x, y) -> if#(le(x, y), x, y)} TRS: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), if(true(), x, y) -> 0(), if(false(), x, y) -> s minus(p x, y), minus(x, y) -> if(le(x, y), x, y)} UR: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), a(z, w) -> z, a(z, w) -> w} EDG: {(le#(p s x, x) -> le#(x, x), le#(p s x, x) -> le#(x, x)) (le#(p s x, x) -> le#(x, x), le#(s x, s y) -> le#(x, y)) (p# p s x -> p# x, p# p s x -> p# x) (le#(s x, s y) -> le#(x, y), le#(p s x, x) -> le#(x, x)) (le#(s x, s y) -> le#(x, y), le#(s x, s y) -> le#(x, y)) (minus#(x, y) -> le#(x, y), le#(s x, s y) -> le#(x, y)) (minus#(x, y) -> le#(x, y), le#(p s x, x) -> le#(x, x)) (if#(false(), x, y) -> p# x, p# p s x -> p# x) (minus#(x, y) -> if#(le(x, y), x, y), if#(false(), x, y) -> p# x) (minus#(x, y) -> if#(le(x, y), x, y), if#(false(), x, y) -> minus#(p x, y)) (if#(false(), x, y) -> minus#(p x, y), minus#(x, y) -> le#(x, y)) (if#(false(), x, y) -> minus#(p x, y), minus#(x, y) -> if#(le(x, y), x, y))} STATUS: arrows: 0.755102 SCCS (3): Scc: {if#(false(), x, y) -> minus#(p x, y), minus#(x, y) -> if#(le(x, y), x, y)} Scc: {p# p s x -> p# x} Scc: {le#(s x, s y) -> le#(x, y), le#(p s x, x) -> le#(x, x)} SCC (2): Strict: {if#(false(), x, y) -> minus#(p x, y), minus#(x, y) -> if#(le(x, y), x, y)} Weak: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), if(true(), x, y) -> 0(), if(false(), x, y) -> s minus(p x, y), minus(x, y) -> if(le(x, y), x, y)} Fail SCC (1): Strict: {p# p s x -> p# x} Weak: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), if(true(), x, y) -> 0(), if(false(), x, y) -> s minus(p x, y), minus(x, y) -> if(le(x, y), x, y)} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [if](x0, x1, x2) = x0 + x1, [le](x0, x1) = x0 + 1, [minus](x0, x1) = x0 + 1, [s](x0) = x0 + 1, [p](x0) = x0 + 1, [0] = 1, [true] = 0, [false] = 1, [p#](x0) = x0 Strict: p# p s x -> p# x 2 + 1x >= 0 + 1x Weak: minus(x, y) -> if(le(x, y), x, y) 1 + 1x + 0y >= 1 + 2x + 0y if(false(), x, y) -> s minus(p x, y) 1 + 1x + 0y >= 3 + 1x + 0y if(true(), x, y) -> 0() 0 + 1x + 0y >= 1 le(p s x, x) -> le(x, x) 3 + 1x >= 1 + 1x le(0(), y) -> true() 2 + 0y >= 0 le(s x, 0()) -> false() 2 + 1x >= 1 le(s x, s y) -> le(x, y) 2 + 1x + 0y >= 1 + 1x + 0y p p s x -> p x 3 + 1x >= 1 + 1x p 0() -> s s 0() 2 >= 3 p s x -> x 2 + 1x >= 1x Qed SCC (2): Strict: {le#(s x, s y) -> le#(x, y), le#(p s x, x) -> le#(x, x)} Weak: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), if(true(), x, y) -> 0(), if(false(), x, y) -> s minus(p x, y), minus(x, y) -> if(le(x, y), x, y)} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [if](x0, x1, x2) = 0, [le](x0, x1) = x0 + 1, [minus](x0, x1) = 0, [s](x0) = x0 + 1, [p](x0) = 0, [0] = 1, [true] = 0, [false] = 0, [le#](x0, x1) = x0 Strict: le#(p s x, x) -> le#(x, x) 0 + 1x >= 0 + 1x le#(s x, s y) -> le#(x, y) 1 + 0x + 1y >= 0 + 0x + 1y Weak: minus(x, y) -> if(le(x, y), x, y) 0 + 0x + 0y >= 0 + 0x + 0y if(false(), x, y) -> s minus(p x, y) 0 + 0x + 0y >= 1 + 0x + 0y if(true(), x, y) -> 0() 0 + 0x + 0y >= 1 le(p s x, x) -> le(x, x) 1 + 0x >= 1 + 1x le(0(), y) -> true() 2 + 0y >= 0 le(s x, 0()) -> false() 2 + 1x >= 0 le(s x, s y) -> le(x, y) 2 + 1x + 0y >= 1 + 1x + 0y p p s x -> p x 0 + 0x >= 0 + 0x p 0() -> s s 0() 0 >= 3 p s x -> x 0 + 0x >= 1x SCCS (1): Scc: {le#(p s x, x) -> le#(x, x)} SCC (1): Strict: {le#(p s x, x) -> le#(x, x)} Weak: { p s x -> x, p 0() -> s s 0(), p p s x -> p x, le(s x, s y) -> le(x, y), le(s x, 0()) -> false(), le(0(), y) -> true(), le(p s x, x) -> le(x, x), if(true(), x, y) -> 0(), if(false(), x, y) -> s minus(p x, y), minus(x, y) -> if(le(x, y), x, y)} POLY: Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true Interpretation: [if](x0, x1, x2) = 0, [le](x0, x1) = x0 + 1, [minus](x0, x1) = 0, [s](x0) = x0 + 1, [p](x0) = x0, [0] = 1, [true] = 0, [false] = 0, [le#](x0, x1) = x0 + x1 Strict: le#(p s x, x) -> le#(x, x) 1 + 2x >= 0 + 2x Weak: minus(x, y) -> if(le(x, y), x, y) 0 + 0x + 0y >= 0 + 0x + 0y if(false(), x, y) -> s minus(p x, y) 0 + 0x + 0y >= 1 + 0x + 0y if(true(), x, y) -> 0() 0 + 0x + 0y >= 1 le(p s x, x) -> le(x, x) 2 + 1x >= 1 + 1x le(0(), y) -> true() 2 + 0y >= 0 le(s x, 0()) -> false() 2 + 1x >= 0 le(s x, s y) -> le(x, y) 2 + 1x + 0y >= 1 + 1x + 0y p p s x -> p x 1 + 1x >= 0 + 1x p 0() -> s s 0() 1 >= 3 p s x -> x 1 + 1x >= 1x Qed