def some_lets : ℕ → ℕ → ℕ
| 0            v := v
| (nat.succ n) v := let k := some_lets n v + some_lets n v in some_lets n k

def some_unfolded_lets (n : ℕ) : Σ' v : ℕ , v = some_lets 5 n :=
begin
  econstructor; dunfold some_lets; econstructor
end

meta def foo : tactic unit :=
  do [g] <- tactic.get_goals,
     tactic.to_expr (``(1)) >>= tactic.unify g
def some_lifted_lets (n : ℕ) : Σ' (v : ℕ), v = psigma.fst (some_unfolded_lets n) :=
begin
  econstructor; dunfold some_unfolded_lets psigma.fst; symmetry; transitivity; symmetry;
  {
    foo -- unify_reify_rhs_to_let_in
  }

end
