/home/nowonder/forschung/aprove/TPDB05/TRS/Cime/big.trs

The program

(COMMENT 

  Claude Marché

  A system of many rules

)

(VAR l3  l2  l1  l  z  y  x)
(RULES

0(#) -> # 
+(x,#) -> x 
+(#,x) -> x 
+(0(x),0(y)) -> 0(+(x,y)) 
+(0(x),1(y)) -> 1(+(x,y)) 
+(1(x),0(y)) -> 1(+(x,y)) 
+(1(x),1(y)) -> 0(+(+(x,y),1(#))) 
+(+(x,y),z) -> +(x,+(y,z)) 
-(#,x) -> # 
-(x,#) -> x 
-(0(x),0(y)) -> 0(-(x,y)) 
-(0(x),1(y)) -> 1(-(-(x,y),1(#))) 
-(1(x),0(y)) -> 1(-(x,y)) 
-(1(x),1(y)) -> 0(-(x,y)) 
not(true) -> false 
not(false) -> true 
if(true,x,y) -> x 
if(false,x,y) -> y 
eq(#,#) -> true 
eq(#,1(y)) -> false 
eq(1(x),#) -> false 
eq(#,0(y)) -> eq(#,y) 
eq(0(x),#) -> eq(x,#) 
eq(1(x),1(y)) -> eq(x,y) 
eq(0(x),1(y)) -> false 
eq(1(x),0(y)) -> false 
eq(0(x),0(y)) -> eq(x,y) 
ge(0(x),0(y)) -> ge(x,y) 
ge(0(x),1(y)) -> not(ge(y,x)) 
ge(1(x),0(y)) -> ge(x,y) 
ge(1(x),1(y)) -> ge(x,y) 
ge(x,#) -> true 
ge(#,0(x)) -> ge(#,x) 
ge(#,1(x)) -> false 
log(x) -> -(log'(x),1(#)) 
log'(#) -> # 
log'(1(x)) -> +(log'(x),1(#)) 
log'(0(x)) -> if(ge(x,1(#)),+(log'(x),1(#)),#) 
*(#,x) -> # 
*(0(x),y) -> 0(*(x,y)) 
*(1(x),y) -> +(0(*(x,y)),y) 
*(*(x,y),z) -> *(x,*(y,z)) 
*(x,+(y,z)) -> +(*(x,y),*(x,z)) 
app(nil,l) -> l 
app(cons(x,l1),l2) -> cons(x,app(l1,l2)) 
sum(nil) -> 0(#) 
sum(cons(x,l)) -> +(x,sum(l)) 
sum(app(l1,l2)) -> +(sum(l1),sum(l2)) 
prod(nil) -> 1(#) 
prod(cons(x,l)) -> *(x,prod(l)) 
prod(app(l1,l2)) -> *(prod(l1),prod(l2)) 
mem(x,nil) -> false 
mem(x,cons(y,l)) -> if(eq(x,y),true,mem(x,l)) 
inter(x,nil) -> nil 
inter(nil,x) -> nil 
inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) 
inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) 
inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) 
inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) 
ifinter(true,x,l1,l2) -> cons(x,inter(l1,l2)) 
ifinter(false,x,l1,l2) -> inter(l1,l2) 

)

Submit to AProVE Web Frontend

Edit in AProVE Web Frontend