| Abstract(bound_ident, body) when not (free_in bound_ident replacement) ->
(* can substitute without renaming bound_ident *)
let body' = substitute body ident replacement
- in Abstract(bound_ident, body')
+ in (* COMPLETE THIS LINE *)
| Abstract(bound_ident, body) ->
(* find a fresh variable unused in either body or replacement (which we hack by specifying their App) *)
let bound_ident' = fresh_var bound_ident (App(body,replacement))