MAYBE Problem: app(nil(),xs) -> nil() app(cons(x,xs),ys) -> cons(x,app(xs,ys)) rev(nil()) -> nil() rev(cons(x,xs)) -> append(xs,rev(cons(x,nil()))) shuffle(nil()) -> nil() shuffle(cons(x,xs)) -> cons(x,shuffle(rev(xs))) Proof: Matrix Interpretation Processor: dim=3 interpretation: [1 0 1] [shuffle](x0) = [0 1 0]x0 [0 0 1] , [1 0 0] [1 0 0] [append](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 0 0] , [1 0 0] [1] [rev](x0) = [0 1 0]x0 + [0] [0 0 0] [0], [1 0 0] [1 0 0] [0] [cons](x0, x1) = [1 0 0]x0 + [0 0 0]x1 + [0] [0 0 0] [0 1 0] [1], [1 0 0] [1 1 1] [0] [app](x0, x1) = [1 0 0]x0 + [0 0 0]x1 + [0] [1 0 0] [0 0 0] [1], [0] [nil] = [0] [0] orientation: [1 1 1] [0] [0] app(nil(),xs) = [0 0 0]xs + [0] >= [0] = nil() [0 0 0] [1] [0] [1 0 0] [1 0 0] [1 1 1] [0] [1 0 0] [1 0 0] [1 1 1] [0] app(cons(x,xs),ys) = [1 0 0]x + [1 0 0]xs + [0 0 0]ys + [0] >= [1 0 0]x + [0 0 0]xs + [0 0 0]ys + [0] = cons(x,app(xs,ys)) [1 0 0] [1 0 0] [0 0 0] [1] [0 0 0] [1 0 0] [0 0 0] [1] [1] [0] rev(nil()) = [0] >= [0] = nil() [0] [0] [1 0 0] [1 0 0] [1] [1 0 0] [1 0 0] [1] rev(cons(x,xs)) = [1 0 0]x + [0 0 0]xs + [0] >= [0 0 0]x + [0 0 0]xs + [0] = append(xs,rev(cons(x,nil()))) [0 0 0] [0 0 0] [0] [0 0 0] [0 0 0] [0] [0] [0] shuffle(nil()) = [0] >= [0] = nil() [0] [0] [1 0 0] [1 1 0] [1] [1 0 0] [1 0 0] [1] shuffle(cons(x,xs)) = [1 0 0]x + [0 0 0]xs + [0] >= [1 0 0]x + [0 0 0]xs + [0] = cons(x,shuffle(rev(xs))) [0 0 0] [0 1 0] [1] [0 0 0] [0 1 0] [1] problem: app(nil(),xs) -> nil() app(cons(x,xs),ys) -> cons(x,app(xs,ys)) rev(cons(x,xs)) -> append(xs,rev(cons(x,nil()))) shuffle(nil()) -> nil() shuffle(cons(x,xs)) -> cons(x,shuffle(rev(xs))) Matrix Interpretation Processor: dim=1 interpretation: [shuffle](x0) = 4x0 + 2, [append](x0, x1) = x0 + x1, [rev](x0) = x0, [cons](x0, x1) = 2x0 + x1, [app](x0, x1) = 2x0 + x1 + 4, [nil] = 0 orientation: app(nil(),xs) = xs + 4 >= 0 = nil() app(cons(x,xs),ys) = 4x + 2xs + ys + 4 >= 2x + 2xs + ys + 4 = cons(x,app(xs,ys)) rev(cons(x,xs)) = 2x + xs >= 2x + xs = append(xs,rev(cons(x,nil()))) shuffle(nil()) = 2 >= 0 = nil() shuffle(cons(x,xs)) = 8x + 4xs + 2 >= 2x + 4xs + 2 = cons(x,shuffle(rev(xs))) problem: app(cons(x,xs),ys) -> cons(x,app(xs,ys)) rev(cons(x,xs)) -> append(xs,rev(cons(x,nil()))) shuffle(cons(x,xs)) -> cons(x,shuffle(rev(xs))) Matrix Interpretation Processor: dim=1 interpretation: [shuffle](x0) = 4x0, [append](x0, x1) = x0 + x1, [rev](x0) = x0, [cons](x0, x1) = x0 + x1 + 2, [app](x0, x1) = x0 + 4x1 + 1, [nil] = 0 orientation: app(cons(x,xs),ys) = x + xs + 4ys + 3 >= x + xs + 4ys + 3 = cons(x,app(xs,ys)) rev(cons(x,xs)) = x + xs + 2 >= x + xs + 2 = append(xs,rev(cons(x,nil()))) shuffle(cons(x,xs)) = 4x + 4xs + 8 >= x + 4xs + 2 = cons(x,shuffle(rev(xs))) problem: app(cons(x,xs),ys) -> cons(x,app(xs,ys)) rev(cons(x,xs)) -> append(xs,rev(cons(x,nil()))) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [1 0 0] [append](x0, x1) = [1 0 0]x0 + [0 0 1]x1 [1 0 0] [0 1 0] , [1 0 0] [1] [rev](x0) = [1 0 1]x0 + [0] [1 0 1] [0], [1 0 0] [1 0 0] [0] [cons](x0, x1) = [0 1 1]x0 + [0 1 0]x1 + [1] [0 1 1] [0 0 0] [0], [1 1 0] [1 1 1] [app](x0, x1) = [0 1 0]x0 + [0 0 0]x1 [1 0 1] [0 1 0] , [0] [nil] = [0] [0] orientation: [1 1 1] [1 1 0] [1 1 1] [1] [1 0 0] [1 1 0] [1 1 1] [0] app(cons(x,xs),ys) = [0 1 1]x + [0 1 0]xs + [0 0 0]ys + [1] >= [0 1 1]x + [0 1 0]xs + [0 0 0]ys + [1] = cons(x,app(xs,ys)) [1 1 1] [1 0 0] [0 1 0] [0] [0 1 1] [0 0 0] [0 0 0] [0] [1 0 0] [1 0 0] [1] [1 0 0] [1 0 0] [1] rev(cons(x,xs)) = [1 1 1]x + [1 0 0]xs + [0] >= [1 1 1]x + [1 0 0]xs + [0] = append(xs,rev(cons(x,nil()))) [1 1 1] [1 0 0] [0] [1 1 1] [1 0 0] [0] problem: rev(cons(x,xs)) -> append(xs,rev(cons(x,nil()))) DP Processor: DPs: rev#(cons(x,xs)) -> rev#(cons(x,nil())) TRS: rev(cons(x,xs)) -> append(xs,rev(cons(x,nil()))) Open