proposition: Lemma subst_abs : forall u x y t1, subst u x (n_abs y t1) = if (x == y) then (n_abs y t1) else let (z,_) := atom_fresh (fv_nom u \u fv_nom (n_abs y t1)) in n_abs z (subst u x (swap y z t1)).
proof: Proof. intros. unfold subst. default_simp. rewrite swap_size_eq. auto. Qed.
imports: Lia Metalib.Metatheory Metalib.LibLNgen