| C.LetIn (nname, vv, tt) when H.is_proof c v ->
let x = C.LetIn (nname, vv, C.LetIn (name, tt, S.lift_from 2 1 t)) in
HLog.warn "Optimizer: swap 1"; opt1_proof g true c x
- | v ->
+ | v when H.is_proof c v && H.is_atomic v ->
+ let x = S.subst v t in
+ HLog.warn "Optimizer: remove 5"; opt1_proof g true c x
+ | v ->
g (C.LetIn (name, v, t))
in
if es then opt1_term g es c v else g v