(VAR X Y ) (RULES and(true) -> X if(true) -> X if(false) -> Y add(0) -> X and(false) -> false add(s) -> s first(0, X) -> nil first(s, cons) -> cons from -> cons )