<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sub_for(expr, substitutions):
 """Substitute subexpressions in `expr` with expression to expression mapping `substitutions`. Parameters expr : ibis.expr.types.Expr An Ibis expression substitutions : List[Tuple[ibis.expr.types.Expr, ibis.expr.types.Expr]] A mapping from expression to expression. If any subexpression of `expr` is equal to any of the keys in `substitutions`, the value for that key will replace the corresponding expression in `expr`. Returns ------- ibis.expr.types.Expr An Ibis expression """

    mapping = {k.op(): v for k, v in substitutions}
    substitutor = Substitutor()
    return substitutor.substitute(expr, mapping)