(VAR xs ys p x) (RULES app(app(app(if, true), xs), ys) -> xs app(app(app(if, false), xs), ys) -> ys app(app(filter, p), nil) -> nil app(app(filter, p), app(app(cons, x), xs)) -> app(app(app(if, app(p, x)), app(app(cons, x), app(app(filter, p), xs))), app(app(filter, p), xs)) )