(STRATEGY INNERMOST) (VAR x y z) (DATATYPES A = µX.< 0, s(X), true, false >) (SIGNATURES plus :: [A x A] -> A times :: [A x A] -> A div :: [A x A] -> A quot :: [A x A x A] -> A eq :: [A x A] -> A divides :: [A x A] -> A prime :: [A] -> A pr :: [A x A] -> A if :: [A x A x A] -> A) (RULES plus(x,0()) -> x plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) times(0(),y) -> 0() times(s(0()),y) -> y times(s(x),y) -> plus(y ,times(x,y)) div(0(),y) -> 0() div(x,y) -> quot(x,y,y) quot(0(),s(y),z) -> 0() quot(s(x),s(y),z) -> quot(x,y,z) quot(x,0(),s(z)) -> s(div(x ,s(z))) div(div(x,y),z) -> div(x ,times(y,z)) eq(0(),0()) -> true() eq(s(x),0()) -> false() eq(0(),s(y)) -> false() eq(s(x),s(y)) -> eq(x,y) divides(y,x) -> eq(x ,times(div(x,y),y)) prime(s(s(x))) -> pr(s(s(x)) ,s(x)) pr(x,s(0())) -> true() pr(x,s(s(y))) -> if(divides(s(s(y)),x),x,s(y)) if(true(),x,y) -> false() if(false(),x,y) -> pr(x,y))