YES Problem 1: (VAR h i u v x y) (THEORY (AC or) (C eq)) (RULES eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h ) Problem 1: Dependency Pairs Processor: -> FAxioms: EQ(x6,x7) = EQ(x7,x6) OR(or(x6,x7),x8) = OR(x6,or(x7,x8)) OR(x6,x7) = OR(x7,x6) -> Pairs: EQ(s(x),s(y)) -> EQ(x,y) IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) IF_REACH_1(true,x,y,edge(u,v,i),h) -> EQ(y,v) IF_REACH_1(true,x,y,edge(u,v,i),h) -> IF_REACH_2(eq(y,v),x,y,edge(u,v,i),h) IF_REACH_2(false,x,y,edge(u,v,i),h) -> OR(reach(x,y,i,h),reach(v,y,union(i,h),empty)) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(v,y,union(i,h),empty) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,h) IF_REACH_2(false,x,y,edge(u,v,i),h) -> UNION(i,h) OR(or(false,y),x6) -> OR(y,x6) OR(or(true,y),x6) -> OR(true,x6) REACH(x,y,edge(u,v,i),h) -> EQ(x,u) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) UNION(edge(x,y,i),h) -> UNION(i,h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) Problem 1: SCC Processor: -> FAxioms: EQ(x6,x7) = EQ(x7,x6) OR(or(x6,x7),x8) = OR(x6,or(x7,x8)) OR(x6,x7) = OR(x7,x6) -> Pairs: EQ(s(x),s(y)) -> EQ(x,y) IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) IF_REACH_1(true,x,y,edge(u,v,i),h) -> EQ(y,v) IF_REACH_1(true,x,y,edge(u,v,i),h) -> IF_REACH_2(eq(y,v),x,y,edge(u,v,i),h) IF_REACH_2(false,x,y,edge(u,v,i),h) -> OR(reach(x,y,i,h),reach(v,y,union(i,h),empty)) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(v,y,union(i,h),empty) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,h) IF_REACH_2(false,x,y,edge(u,v,i),h) -> UNION(i,h) OR(or(false,y),x6) -> OR(y,x6) OR(or(true,y),x6) -> OR(true,x6) REACH(x,y,edge(u,v,i),h) -> EQ(x,u) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) UNION(edge(x,y,i),h) -> UNION(i,h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: UNION(edge(x,y,i),h) -> UNION(i,h) -> FAxioms: eq(x6,x7) -> eq(x7,x6) or(or(x6,x7),x8) -> or(x6,or(x7,x8)) or(x6,x7) -> or(x7,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) ->->-> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->->Cycle: ->->-> Pairs: OR(or(false,y),x6) -> OR(y,x6) OR(or(true,y),x6) -> OR(true,x6) -> FAxioms: eq(x6,x7) -> eq(x7,x6) or(or(x6,x7),x8) -> or(x6,or(x7,x8)) or(x6,x7) -> or(x7,x6) OR(or(x6,x7),x8) -> OR(x6,or(x7,x8)) OR(x6,x7) -> OR(x7,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) ->->-> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) ->->Cycle: ->->-> Pairs: EQ(s(x),s(y)) -> EQ(x,y) -> FAxioms: eq(x6,x7) -> eq(x7,x6) or(or(x6,x7),x8) -> or(x6,or(x7,x8)) or(x6,x7) -> or(x7,x6) EQ(x6,x7) -> EQ(x7,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) ->->-> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->->Cycle: ->->-> Pairs: IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) IF_REACH_1(true,x,y,edge(u,v,i),h) -> IF_REACH_2(eq(y,v),x,y,edge(u,v,i),h) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(v,y,union(i,h),empty) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,h) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) -> FAxioms: eq(x6,x7) -> eq(x7,x6) or(or(x6,x7),x8) -> or(x6,or(x7,x8)) or(x6,x7) -> or(x7,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) ->->-> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty The problem is decomposed in 4 subproblems. Problem 1.1: Subterm Processor: -> FAxioms: Empty -> Pairs: UNION(edge(x,y,i),h) -> UNION(i,h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Projection: pi(UNION) = [1] Problem 1.1: SCC Processor: -> FAxioms: Empty -> Pairs: Empty -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.2: Reduction Pairs Processor: -> FAxioms: OR(or(x6,x7),x8) = OR(x6,or(x7,x8)) OR(x6,x7) = OR(x7,x6) -> Pairs: OR(or(false,y),x6) -> OR(y,x6) OR(or(true,y),x6) -> OR(true,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Usable Equations: or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> Usable Rules: or(false,y) -> y or(true,y) -> true -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [eq](X1,X2) = 0 [if_reach_1](X1,X2,X3,X4,X5) = 0 [if_reach_2](X1,X2,X3,X4,X5) = 0 [or](X1,X2) = X1 + X2 + 1 [reach](X1,X2,X3,X4) = 0 [union](X1,X2) = 0 [0] = 0 [edge](X1,X2,X3) = 0 [empty] = 0 [false] = 1 [s](X) = 0 [true] = 1 [EQ](X1,X2) = 0 [IF_REACH_1](X1,X2,X3,X4,X5) = 0 [IF_REACH_2](X1,X2,X3,X4,X5) = 0 [OR](X1,X2) = X1 + X2 [REACH](X1,X2,X3,X4) = 0 [UNION](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: OR(or(x6,x7),x8) = OR(x6,or(x7,x8)) OR(x6,x7) = OR(x7,x6) -> Pairs: OR(or(true,y),x6) -> OR(true,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: OR(or(true,y),x6) -> OR(true,x6) -> FAxioms: eq(x6,x7) -> eq(x7,x6) or(or(x6,x7),x8) -> or(x6,or(x7,x8)) or(x6,x7) -> or(x7,x6) OR(or(x6,x7),x8) -> OR(x6,or(x7,x8)) OR(x6,x7) -> OR(x7,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) ->->-> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) Problem 1.2: Reduction Pairs Processor: -> FAxioms: OR(or(x6,x7),x8) = OR(x6,or(x7,x8)) OR(x6,x7) = OR(x7,x6) -> Pairs: OR(or(true,y),x6) -> OR(true,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Usable Equations: or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> Usable Rules: or(false,y) -> y or(true,y) -> true -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [eq](X1,X2) = 0 [if_reach_1](X1,X2,X3,X4,X5) = 0 [if_reach_2](X1,X2,X3,X4,X5) = 0 [or](X1,X2) = X1 + X2 + 1 [reach](X1,X2,X3,X4) = 0 [union](X1,X2) = 0 [0] = 0 [edge](X1,X2,X3) = 0 [empty] = 0 [false] = 0 [s](X) = 0 [true] = 2 [EQ](X1,X2) = 0 [IF_REACH_1](X1,X2,X3,X4,X5) = 0 [IF_REACH_2](X1,X2,X3,X4,X5) = 0 [OR](X1,X2) = 2.X1 + 2.X2 [REACH](X1,X2,X3,X4) = 0 [UNION](X1,X2) = 0 Problem 1.2: SCC Processor: -> FAxioms: OR(or(x6,x7),x8) = OR(x6,or(x7,x8)) OR(x6,x7) = OR(x7,x6) -> Pairs: Empty -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: OR(or(x6,x7),x8) -> OR(x6,x7) OR(x6,or(x7,x8)) -> OR(x7,x8) ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.3: Subterm Processor: -> FAxioms: EQ(x6,x7) = EQ(x7,x6) -> Pairs: EQ(s(x),s(y)) -> EQ(x,y) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Projection: pi(EQ) = [1,2] Problem 1.3: SCC Processor: -> FAxioms: EQ(x6,x7) = EQ(x7,x6) -> Pairs: Empty -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite. Problem 1.4: Reduction Pairs Processor: -> FAxioms: Empty -> Pairs: IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) IF_REACH_1(true,x,y,edge(u,v,i),h) -> IF_REACH_2(eq(y,v),x,y,edge(u,v,i),h) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(v,y,union(i,h),empty) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,h) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Usable Equations: eq(x6,x7) = eq(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> Usable Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Interpretation type: Linear ->Coefficients: Natural Numbers ->Dimension: 1 ->Bound: 2 ->Interpretation: [eq](X1,X2) = X1 + X2 + 2 [if_reach_1](X1,X2,X3,X4,X5) = 0 [if_reach_2](X1,X2,X3,X4,X5) = 0 [or](X1,X2) = 0 [reach](X1,X2,X3,X4) = 0 [union](X1,X2) = X1 + X2 [0] = 2 [edge](X1,X2,X3) = X2 + X3 + 2 [empty] = 1 [false] = 2 [s](X) = X + 2 [true] = 1 [EQ](X1,X2) = 0 [IF_REACH_1](X1,X2,X3,X4,X5) = 2.X2 + 2.X3 + 2.X4 + 2.X5 + 2 [IF_REACH_2](X1,X2,X3,X4,X5) = 2.X2 + 2.X3 + 2.X4 + 2.X5 + 1 [OR](X1,X2) = 0 [REACH](X1,X2,X3,X4) = 2.X1 + 2.X2 + 2.X3 + 2.X4 + 2 [UNION](X1,X2) = 0 Problem 1.4: SCC Processor: -> FAxioms: Empty -> Pairs: IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(v,y,union(i,h),empty) IF_REACH_2(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,h) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Strongly Connected Components: ->->Cycle: ->->-> Pairs: IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) -> FAxioms: eq(x6,x7) -> eq(x7,x6) or(or(x6,x7),x8) -> or(x6,or(x7,x8)) or(x6,x7) -> or(x7,x6) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) ->->-> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty Problem 1.4: Subterm Processor: -> FAxioms: Empty -> Pairs: IF_REACH_1(false,x,y,edge(u,v,i),h) -> REACH(x,y,i,edge(u,v,h)) REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Projection: pi(IF_REACH_1) = [4] pi(REACH) = [3] Problem 1.4: SCC Processor: -> FAxioms: Empty -> Pairs: REACH(x,y,edge(u,v,i),h) -> IF_REACH_1(eq(x,u),x,y,edge(u,v,i),h) -> EAxioms: eq(x6,x7) = eq(x7,x6) or(or(x6,x7),x8) = or(x6,or(x7,x8)) or(x6,x7) = or(x7,x6) -> Rules: eq(0,0) -> true eq(0,s(x)) -> false eq(s(x),0) -> false eq(s(x),s(y)) -> eq(x,y) if_reach_1(false,x,y,edge(u,v,i),h) -> reach(x,y,i,edge(u,v,h)) if_reach_1(true,x,y,edge(u,v,i),h) -> if_reach_2(eq(y,v),x,y,edge(u,v,i),h) if_reach_2(false,x,y,edge(u,v,i),h) -> or(reach(x,y,i,h),reach(v,y,union(i,h),empty)) if_reach_2(true,x,y,edge(u,v,i),h) -> true or(false,y) -> y or(true,y) -> true reach(x,y,edge(u,v,i),h) -> if_reach_1(eq(x,u),x,y,edge(u,v,i),h) reach(x,y,empty,h) -> false union(edge(x,y,i),h) -> edge(x,y,union(i,h)) union(empty,h) -> h -> SRules: Empty ->Strongly Connected Components: There is no strongly connected component The problem is finite.