*** 1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove(@x,@l) -> remove#1(@l,@x) remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [5] p(and) = [1] x1 + [1] x2 + [0] p(eq) = [4] p(eq#1) = [0] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [0] p(nub) = [1] x1 + [0] p(nub#1) = [1] x1 + [0] p(remove) = [0] p(remove#1) = [0] p(remove#2) = [1] x1 + [0] Following rules are strictly oriented: eq(@l1,@l2) = [4] > [0] = eq#1(@l1,@l2) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) and(@x,@y) = [1] @x + [1] @y + [0] >= [1] @x + [1] @y + [0] = #and(@x,@y) eq#1(::(@x,@xs),@l2) = [0] >= [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0] >= [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [4] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub(@l) = [1] @l + [0] >= [1] @l + [0] = nub#1(@l) nub#1(::(@x,@xs)) = [1] @xs + [5] >= [5] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [0] >= [0] = nil() remove(@x,@l) = [0] >= [0] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [0] >= [4] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] >= [0] = nil() remove#2(#false(),@x,@y,@ys) = [0] >= [5] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [0] >= [0] = remove(@x,@ys) Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove(@x,@l) -> remove#1(@l,@x) remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() eq(@l1,@l2) -> eq#1(@l1,@l2) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [7] p(and) = [1] x1 + [1] x2 + [0] p(eq) = [0] p(eq#1) = [0] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [0] p(nub) = [1] x1 + [0] p(nub#1) = [1] x1 + [2] p(remove) = [0] p(remove#1) = [0] p(remove#2) = [1] x1 + [0] Following rules are strictly oriented: nub#1(::(@x,@xs)) = [1] @xs + [9] > [7] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [2] > [0] = nil() Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) and(@x,@y) = [1] @x + [1] @y + [0] >= [1] @x + [1] @y + [0] = #and(@x,@y) eq(@l1,@l2) = [0] >= [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0] >= [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0] >= [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [0] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub(@l) = [1] @l + [0] >= [1] @l + [2] = nub#1(@l) remove(@x,@l) = [0] >= [0] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [0] >= [0] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] >= [0] = nil() remove#2(#false(),@x,@y,@ys) = [0] >= [7] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [0] >= [0] = remove(@x,@ys) Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) remove(@x,@l) -> remove#1(@l,@x) remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() eq(@l1,@l2) -> eq#1(@l1,@l2) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [0] p(and) = [1] x1 + [1] x2 + [0] p(eq) = [3] p(eq#1) = [3] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [5] p(nub) = [1] x1 + [5] p(nub#1) = [5] p(remove) = [0] p(remove#1) = [0] p(remove#2) = [1] x1 + [5] Following rules are strictly oriented: eq#1(::(@x,@xs),@l2) = [3] > [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [3] > [0] = eq#2(@l2) remove#2(#false(),@x,@y,@ys) = [5] > [0] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [5] > [0] = remove(@x,@ys) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) and(@x,@y) = [1] @x + [1] @y + [0] >= [1] @x + [1] @y + [0] = #and(@x,@y) eq(@l1,@l2) = [3] >= [3] = eq#1(@l1,@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [3] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub(@l) = [1] @l + [5] >= [5] = nub#1(@l) nub#1(::(@x,@xs)) = [5] >= [5] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [5] >= [5] = nil() remove(@x,@l) = [0] >= [0] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [0] >= [8] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] >= [5] = nil() Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) remove(@x,@l) -> remove#1(@l,@x) remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [1] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] x1 + [0] p(#s) = [0] p(#true) = [0] p(::) = [1] x2 + [0] p(and) = [1] x1 + [1] x2 + [0] p(eq) = [0] p(eq#1) = [0] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [0] p(nub) = [1] x1 + [0] p(nub#1) = [0] p(remove) = [0] p(remove#1) = [0] p(remove#2) = [1] x1 + [0] Following rules are strictly oriented: #equal(@x,@y) = [1] > [0] = #eq(@x,@y) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() and(@x,@y) = [1] @x + [1] @y + [0] >= [1] @x + [1] @y + [0] = #and(@x,@y) eq(@l1,@l2) = [0] >= [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0] >= [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0] >= [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [1] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub(@l) = [1] @l + [0] >= [0] = nub#1(@l) nub#1(::(@x,@xs)) = [0] >= [0] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [0] >= [0] = nil() remove(@x,@l) = [0] >= [0] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [0] >= [0] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] >= [0] = nil() remove#2(#false(),@x,@y,@ys) = [0] >= [0] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [0] >= [0] = remove(@x,@ys) Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: and(@x,@y) -> #and(@x,@y) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) remove(@x,@l) -> remove#1(@l,@x) remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [0] p(and) = [1] x1 + [1] x2 + [0] p(eq) = [0] p(eq#1) = [0] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [0] p(nub) = [1] x1 + [0] p(nub#1) = [0] p(remove) = [0] p(remove#1) = [5] p(remove#2) = [1] x1 + [0] Following rules are strictly oriented: remove#1(::(@y,@ys),@x) = [5] > [0] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [5] > [0] = nil() Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) and(@x,@y) = [1] @x + [1] @y + [0] >= [1] @x + [1] @y + [0] = #and(@x,@y) eq(@l1,@l2) = [0] >= [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0] >= [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0] >= [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [0] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub(@l) = [1] @l + [0] >= [0] = nub#1(@l) nub#1(::(@x,@xs)) = [0] >= [0] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [0] >= [0] = nil() remove(@x,@l) = [0] >= [5] = remove#1(@l,@x) remove#2(#false(),@x,@y,@ys) = [0] >= [0] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [0] >= [0] = remove(@x,@ys) Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1.1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: and(@x,@y) -> #and(@x,@y) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) remove(@x,@l) -> remove#1(@l,@x) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [0] p(and) = [1] x1 + [1] x2 + [0] p(eq) = [1] p(eq#1) = [1] p(eq#2) = [1] p(eq#3) = [1] p(nil) = [6] p(nub) = [1] x1 + [0] p(nub#1) = [1] x1 + [0] p(remove) = [0] p(remove#1) = [6] p(remove#2) = [1] x1 + [5] Following rules are strictly oriented: eq#2(::(@y,@ys)) = [1] > [0] = #false() eq#2(nil()) = [1] > [0] = #true() eq#3(nil(),@x,@xs) = [1] > [0] = #false() Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) and(@x,@y) = [1] @x + [1] @y + [0] >= [1] @x + [1] @y + [0] = #and(@x,@y) eq(@l1,@l2) = [1] >= [1] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [1] >= [1] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [1] >= [1] = eq#2(@l2) eq#3(::(@y,@ys),@x,@xs) = [1] >= [1] = and(#equal(@x,@y),eq(@xs,@ys)) nub(@l) = [1] @l + [0] >= [1] @l + [0] = nub#1(@l) nub#1(::(@x,@xs)) = [1] @xs + [0] >= [0] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [6] >= [6] = nil() remove(@x,@l) = [0] >= [6] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [6] >= [6] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [6] >= [6] = nil() remove#2(#false(),@x,@y,@ys) = [5] >= [0] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [5] >= [0] = remove(@x,@ys) Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1.1.1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: and(@x,@y) -> #and(@x,@y) eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) nub(@l) -> nub#1(@l) remove(@x,@l) -> remove#1(@l,@x) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(nil(),@x,@xs) -> #false() nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} Proof: The weightgap principle applies using the following nonconstant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x1 + [1] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [0] p(#pos) = [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x2 + [0] p(and) = [1] x1 + [1] x2 + [1] p(eq) = [1] p(eq#1) = [0] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [1] p(nub) = [1] x1 + [0] p(nub#1) = [1] p(remove) = [1] p(remove#1) = [2] p(remove#2) = [1] x1 + [1] Following rules are strictly oriented: and(@x,@y) = [1] @x + [1] @y + [1] > [1] @x + [1] @y + [0] = #and(@x,@y) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) eq(@l1,@l2) = [1] >= [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0] >= [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0] >= [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [2] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub(@l) = [1] @l + [0] >= [1] = nub#1(@l) nub#1(::(@x,@xs)) = [1] >= [1] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [1] >= [1] = nil() remove(@x,@l) = [1] >= [2] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [2] >= [2] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [2] >= [1] = nil() remove#2(#false(),@x,@y,@ys) = [1] >= [1] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [1] >= [1] = remove(@x,@ys) Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** 1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) nub(@l) -> nub#1(@l) remove(@x,@l) -> remove#1(@l,@x) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(nil(),@x,@xs) -> #false() nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy} Proof: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2} TcT has computed the following interpretation: p(#0) = [1] p(#and) = [2] x1 + [2] x2 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [1] p(#pos) = [1] x1 + [4] p(#s) = [2] p(#true) = [0] p(::) = [1] x2 + [4] p(and) = [2] x1 + [4] x2 + [0] p(eq) = [0] p(eq#1) = [0] p(eq#2) = [0] p(eq#3) = [0] p(nil) = [0] p(nub) = [2] x1 + [1] p(nub#1) = [2] x1 + [0] p(remove) = [1] x2 + [0] p(remove#1) = [1] x1 + [0] p(remove#2) = [4] x1 + [1] x4 + [4] Following rules are strictly oriented: nub(@l) = [2] @l + [1] > [2] @l + [0] = nub#1(@l) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] >= [0] = #false() #and(#false(),#true()) = [0] >= [0] = #false() #and(#true(),#false()) = [0] >= [0] = #false() #and(#true(),#true()) = [0] >= [0] = #true() #eq(#0(),#0()) = [0] >= [0] = #true() #eq(#0(),#neg(@y)) = [0] >= [0] = #false() #eq(#0(),#pos(@y)) = [0] >= [0] = #false() #eq(#0(),#s(@y)) = [0] >= [0] = #false() #eq(#neg(@x),#0()) = [0] >= [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#0()) = [0] >= [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] >= [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] >= [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] >= [0] = #false() #eq(#s(@x),#s(@y)) = [0] >= [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] >= [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] >= [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] >= [0] = #false() #eq(nil(),nil()) = [0] >= [0] = #true() #equal(@x,@y) = [0] >= [0] = #eq(@x,@y) and(@x,@y) = [2] @x + [4] @y + [0] >= [2] @x + [2] @y + [0] = #and(@x,@y) eq(@l1,@l2) = [0] >= [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0] >= [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0] >= [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] >= [0] = #false() eq#2(nil()) = [0] >= [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0] >= [0] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0] >= [0] = #false() nub#1(::(@x,@xs)) = [2] @xs + [8] >= [2] @xs + [5] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [0] >= [0] = nil() remove(@x,@l) = [1] @l + [0] >= [1] @l + [0] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [1] @ys + [4] >= [1] @ys + [4] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] >= [0] = nil() remove#2(#false(),@x,@y,@ys) = [1] @ys + [4] >= [1] @ys + [4] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [1] @ys + [4] >= [1] @ys + [0] = remove(@x,@ys) *** 1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) remove(@x,@l) -> remove#1(@l,@x) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy} Proof: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2} TcT has computed the following interpretation: p(#0) = [0] [1] p(#and) = [2 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] p(#eq) = [0] [0] p(#equal) = [0 0] x1 + [0 0] x2 + [0] [0 2] [2 0] [0] p(#false) = [0] [0] p(#neg) = [0 0] x1 + [0] [0 1] [0] p(#pos) = [0 2] x1 + [0] [0 1] [1] p(#s) = [0] [2] p(#true) = [0] [0] p(::) = [0 0] x1 + [1 2] x2 + [0] [0 1] [0 1] [1] p(and) = [2 0] x1 + [1 0] x2 + [0] [1 0] [0 0] [0] p(eq) = [0 1] x2 + [0] [0 0] [0] p(eq#1) = [0 1] x2 + [0] [0 0] [0] p(eq#2) = [0] [0] p(eq#3) = [0 1] x1 + [0] [0 0] [0] p(nil) = [0] [0] p(nub) = [2 0] x1 + [0] [0 1] [0] p(nub#1) = [2 0] x1 + [0] [0 1] [0] p(remove) = [1 1] x2 + [0] [0 1] [0] p(remove#1) = [1 1] x1 + [0] [0 1] [0] p(remove#2) = [1 0] x1 + [0 0] x3 + [1 3] x4 + [0] [0 0] [0 1] [0 1] [1] Following rules are strictly oriented: eq#3(::(@y,@ys),@x,@xs) = [0 1] @y + [0 1] @ys + [1] [0 0] [0 0] [0] > [0 1] @ys + [0] [0 0] [0] = and(#equal(@x,@y),eq(@xs,@ys)) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] [0] >= [0] [0] = #false() #and(#false(),#true()) = [0] [0] >= [0] [0] = #false() #and(#true(),#false()) = [0] [0] >= [0] [0] = #false() #and(#true(),#true()) = [0] [0] >= [0] [0] = #true() #eq(#0(),#0()) = [0] [0] >= [0] [0] = #true() #eq(#0(),#neg(@y)) = [0] [0] >= [0] [0] = #false() #eq(#0(),#pos(@y)) = [0] [0] >= [0] [0] = #false() #eq(#0(),#s(@y)) = [0] [0] >= [0] [0] = #false() #eq(#neg(@x),#0()) = [0] [0] >= [0] [0] = #false() #eq(#neg(@x),#neg(@y)) = [0] [0] >= [0] [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] [0] >= [0] [0] = #false() #eq(#pos(@x),#0()) = [0] [0] >= [0] [0] = #false() #eq(#pos(@x),#neg(@y)) = [0] [0] >= [0] [0] = #false() #eq(#pos(@x),#pos(@y)) = [0] [0] >= [0] [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] [0] >= [0] [0] = #false() #eq(#s(@x),#s(@y)) = [0] [0] >= [0] [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] [0] >= [0] [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0] [0] >= [0] [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] [0] >= [0] [0] = #false() #eq(nil(),nil()) = [0] [0] >= [0] [0] = #true() #equal(@x,@y) = [0 0] @x + [0 0] @y + [0] [0 2] [2 0] [0] >= [0] [0] = #eq(@x,@y) and(@x,@y) = [2 0] @x + [1 0] @y + [0] [1 0] [0 0] [0] >= [2 0] @x + [1 0] @y + [0] [0 0] [0 0] [0] = #and(@x,@y) eq(@l1,@l2) = [0 1] @l2 + [0] [0 0] [0] >= [0 1] @l2 + [0] [0 0] [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0 1] @l2 + [0] [0 0] [0] >= [0 1] @l2 + [0] [0 0] [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0 1] @l2 + [0] [0 0] [0] >= [0] [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] [0] >= [0] [0] = #false() eq#2(nil()) = [0] [0] >= [0] [0] = #true() eq#3(nil(),@x,@xs) = [0] [0] >= [0] [0] = #false() nub(@l) = [2 0] @l + [0] [0 1] [0] >= [2 0] @l + [0] [0 1] [0] = nub#1(@l) nub#1(::(@x,@xs)) = [0 0] @x + [2 4] @xs + [0] [0 1] [0 1] [1] >= [0 0] @x + [2 4] @xs + [0] [0 1] [0 1] [1] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [0] [0] >= [0] [0] = nil() remove(@x,@l) = [1 1] @l + [0] [0 1] [0] >= [1 1] @l + [0] [0 1] [0] = remove#1(@l,@x) remove#1(::(@y,@ys),@x) = [0 1] @y + [1 3] @ys + [1] [0 1] [0 1] [1] >= [0 1] @y + [1 3] @ys + [0] [0 1] [0 1] [1] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] [0] >= [0] [0] = nil() remove#2(#false(),@x,@y,@ys) = [0 0] @y + [1 3] @ys + [0] [0 1] [0 1] [1] >= [0 0] @y + [1 3] @ys + [0] [0 1] [0 1] [1] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [0 0] @y + [1 3] @ys + [0] [0 1] [0 1] [1] >= [1 1] @ys + [0] [0 1] [0] = remove(@x,@ys) *** 1.1.1.1.1.1.1.1.1.1 Progress [(O(1),O(n^2))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: remove(@x,@l) -> remove#1(@l,@x) Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy} Proof: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(#and) = {1,2}, uargs(::) = {2}, uargs(and) = {1,2}, uargs(nub) = {1}, uargs(remove#2) = {1} Following symbols are considered usable: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2} TcT has computed the following interpretation: p(#0) = [0] [0] p(#and) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] p(#eq) = [0 0] x1 + [0 0] x2 + [0] [1 2] [2 0] [2] p(#equal) = [0 0] x1 + [0 0] x2 + [0] [2 2] [2 2] [2] p(#false) = [0] [0] p(#neg) = [1 0] x1 + [1] [0 1] [1] p(#pos) = [1 3] x1 + [1] [0 0] [0] p(#s) = [1 0] x1 + [0] [0 1] [0] p(#true) = [0] [0] p(::) = [1 2] x2 + [0] [0 1] [1] p(and) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] p(eq) = [0 0] x1 + [0 0] x2 + [0] [3 0] [0 3] [0] p(eq#1) = [0 0] x1 + [0 0] x2 + [0] [3 0] [0 3] [0] p(eq#2) = [0] [0] p(eq#3) = [0 0] x1 + [0 0] x3 + [0] [0 3] [2 1] [0] p(nil) = [0] [0] p(nub) = [2 2] x1 + [0] [0 1] [0] p(nub#1) = [2 2] x1 + [0] [0 1] [0] p(remove) = [1 1] x2 + [1] [0 1] [0] p(remove#1) = [1 1] x1 + [0] [0 1] [0] p(remove#2) = [1 0] x1 + [1 3] x4 + [1] [0 0] [0 1] [1] Following rules are strictly oriented: remove(@x,@l) = [1 1] @l + [1] [0 1] [0] > [1 1] @l + [0] [0 1] [0] = remove#1(@l,@x) Following rules are (at-least) weakly oriented: #and(#false(),#false()) = [0] [0] >= [0] [0] = #false() #and(#false(),#true()) = [0] [0] >= [0] [0] = #false() #and(#true(),#false()) = [0] [0] >= [0] [0] = #false() #and(#true(),#true()) = [0] [0] >= [0] [0] = #true() #eq(#0(),#0()) = [0] [2] >= [0] [0] = #true() #eq(#0(),#neg(@y)) = [0 0] @y + [0] [2 0] [4] >= [0] [0] = #false() #eq(#0(),#pos(@y)) = [0 0] @y + [0] [2 6] [4] >= [0] [0] = #false() #eq(#0(),#s(@y)) = [0 0] @y + [0] [2 0] [2] >= [0] [0] = #false() #eq(#neg(@x),#0()) = [0 0] @x + [0] [1 2] [5] >= [0] [0] = #false() #eq(#neg(@x),#neg(@y)) = [0 0] @x + [0 0] @y + [0] [1 2] [2 0] [7] >= [0 0] @x + [0 0] @y + [0] [1 2] [2 0] [2] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0 0] @x + [0 0] @y + [0] [1 2] [2 6] [7] >= [0] [0] = #false() #eq(#pos(@x),#0()) = [0 0] @x + [0] [1 3] [3] >= [0] [0] = #false() #eq(#pos(@x),#neg(@y)) = [0 0] @x + [0 0] @y + [0] [1 3] [2 0] [5] >= [0] [0] = #false() #eq(#pos(@x),#pos(@y)) = [0 0] @x + [0 0] @y + [0] [1 3] [2 6] [5] >= [0 0] @x + [0 0] @y + [0] [1 2] [2 0] [2] = #eq(@x,@y) #eq(#s(@x),#0()) = [0 0] @x + [0] [1 2] [2] >= [0] [0] = #false() #eq(#s(@x),#s(@y)) = [0 0] @x + [0 0] @y + [0] [1 2] [2 0] [2] >= [0 0] @x + [0 0] @y + [0] [1 2] [2 0] [2] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0 0] @x_2 + [0 0] @y_2 + [0] [1 4] [2 4] [4] >= [0] [0] = #and(#eq(@x_1,@y_1) ,#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) = [0 0] @x_2 + [0] [1 4] [4] >= [0] [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [0 0] @y_2 + [0] [2 4] [2] >= [0] [0] = #false() #eq(nil(),nil()) = [0] [2] >= [0] [0] = #true() #equal(@x,@y) = [0 0] @x + [0 0] @y + [0] [2 2] [2 2] [2] >= [0 0] @x + [0 0] @y + [0] [1 2] [2 0] [2] = #eq(@x,@y) and(@x,@y) = [1 0] @x + [1 0] @y + [0] [0 0] [0 0] [0] >= [1 0] @x + [1 0] @y + [0] [0 0] [0 0] [0] = #and(@x,@y) eq(@l1,@l2) = [0 0] @l1 + [0 0] @l2 + [0] [3 0] [0 3] [0] >= [0 0] @l1 + [0 0] @l2 + [0] [3 0] [0 3] [0] = eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) = [0 0] @l2 + [0 0] @xs + [0] [0 3] [3 6] [0] >= [0 0] @l2 + [0 0] @xs + [0] [0 3] [2 1] [0] = eq#3(@l2,@x,@xs) eq#1(nil(),@l2) = [0 0] @l2 + [0] [0 3] [0] >= [0] [0] = eq#2(@l2) eq#2(::(@y,@ys)) = [0] [0] >= [0] [0] = #false() eq#2(nil()) = [0] [0] >= [0] [0] = #true() eq#3(::(@y,@ys),@x,@xs) = [0 0] @xs + [0 0] @ys + [0] [2 1] [0 3] [3] >= [0] [0] = and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) = [0 0] @xs + [0] [2 1] [0] >= [0] [0] = #false() nub(@l) = [2 2] @l + [0] [0 1] [0] >= [2 2] @l + [0] [0 1] [0] = nub#1(@l) nub#1(::(@x,@xs)) = [2 6] @xs + [2] [0 1] [1] >= [2 6] @xs + [2] [0 1] [1] = ::(@x,nub(remove(@x,@xs))) nub#1(nil()) = [0] [0] >= [0] [0] = nil() remove#1(::(@y,@ys),@x) = [1 3] @ys + [1] [0 1] [1] >= [1 3] @ys + [1] [0 1] [1] = remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) = [0] [0] >= [0] [0] = nil() remove#2(#false(),@x,@y,@ys) = [1 3] @ys + [1] [0 1] [1] >= [1 3] @ys + [1] [0 1] [1] = ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) = [1 3] @ys + [1] [0 1] [1] >= [1 1] @ys + [1] [0 1] [0] = remove(@x,@ys) *** 1.1.1.1.1.1.1.1.1.1.1 Progress [(O(1),O(1))] *** Considered Problem: Strict DP Rules: Strict TRS Rules: Weak DP Rules: Weak TRS Rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) and(@x,@y) -> #and(@x,@y) eq(@l1,@l2) -> eq#1(@l1,@l2) eq#1(::(@x,@xs),@l2) -> eq#3(@l2,@x,@xs) eq#1(nil(),@l2) -> eq#2(@l2) eq#2(::(@y,@ys)) -> #false() eq#2(nil()) -> #true() eq#3(::(@y,@ys),@x,@xs) -> and(#equal(@x,@y),eq(@xs,@ys)) eq#3(nil(),@x,@xs) -> #false() nub(@l) -> nub#1(@l) nub#1(::(@x,@xs)) -> ::(@x,nub(remove(@x,@xs))) nub#1(nil()) -> nil() remove(@x,@l) -> remove#1(@l,@x) remove#1(::(@y,@ys),@x) -> remove#2(eq(@x,@y),@x,@y,@ys) remove#1(nil(),@x) -> nil() remove#2(#false(),@x,@y,@ys) -> ::(@y,remove(@x,@ys)) remove#2(#true(),@x,@y,@ys) -> remove(@x,@ys) Signature: {#and/2,#eq/2,#equal/2,and/2,eq/2,eq#1/2,eq#2/1,eq#3/3,nub/1,nub#1/1,remove/2,remove#1/2,remove#2/4} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} Obligation: Innermost basic terms: {#and,#eq,#equal,and,eq,eq#1,eq#2,eq#3,nub,nub#1,remove,remove#1,remove#2}/{#0,#false,#neg,#pos,#s,#true,::,nil} Applied Processor: EmptyProcessor Proof: The problem is already closed. The intended complexity is O(1).