def bottom_up_once(rule, fns=basic_fns):
 return do_one((lambda expr: sall(bottom_up(rule, fns), fns)(expr)), rule)

def bottom_up_once ( rule , fns = basic_fns ) : return do_one ( ( lambda expr : sall ( bottom_up ( rule , fns ) , fns ) ( expr ) ) , rule )
apply a rule up a tree - stop on success .