/home/nowonder/forschung/aprove/TPDB05/TRS/Cime/list-sum-prod-bin-assoc.trs

The program

(COMMENT 

  Claude Marché

  Sum and product of a list of integers

  Binary notation, + and * associative

)
(VAR 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) -> # 
*(0(x),y) -> 0(*(x,y)) 
*(1(x),y) -> +(0(*(x,y)),y) 
*(*(x,y),z) -> *(x,*(y,z)) 
sum(nil) -> 0(#) 
sum(cons(x,l)) -> +(x,sum(l)) 
prod(nil) -> 1(#) 
prod(cons(x,l)) -> *(x,prod(l)) 

)

Submit to AProVE Web Frontend

Edit in AProVE Web Frontend