let subst_in_bindings c x v p = if has_var [x] c.bindings c.hints then ( c.bindings <- Let(x,v) :: c.bindings ; p ) else ( do_subst x v p )