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 )