fact: Fixpoint open_te_rec (K : nat) (U : typ) (e : exp) {struct e} : exp := match e with | exp_bvar i => exp_bvar i | exp_fvar x => exp_fvar x | exp_abs V e1 => exp_abs (open_tt_rec K U V) (open_te_rec K U e1) | exp_app e1 e2 => exp_app (open_te_rec K U e1) (open_te_rec K U e2) | exp_tabs V e1 => exp_tabs (open_tt_rec K U V) (open_te_rec (S K) U e1) | exp_tapp e1 V => exp_tapp (open_te_rec K U e1) (open_tt_rec K U V) | exp_let e1 e2 => exp_let (open_te_rec K U e1) (open_te_rec K U e2) | exp_inl e1 => exp_inl (open_te_rec K U e1) | exp_inr e2 => exp_inr (open_te_rec K U e2) | exp_case e1 e2 e3 => exp_case (open_te_rec K U e1) (open_te_rec K U e2) (open_te_rec K U e3) end.
imports: Metalib.Metatheory String