simple induction 1; simpl in |- *; intros; auto with arith pts.
elim (le_gt_dec n v); intros; apply type_var; auto with arith pts.
elim H1; intros.
rewrite H4.
unfold lift in |- *.
rewrite simpl_lift_rec; simpl in |- *; auto with arith pts.
exists x; auto with arith pts.
apply ins_item_ge with (1 := H2); auto with arith pts.
apply ins_item_lift_lt with (1 := H2); auto with arith pts.
cut (wf (Ax (lift_rec 1 T0 n) :: f)).
intro.
apply type_abs with s; auto with arith pts.
fold (lift_decl 1 (Ax T0) n) in |- *; auto with arith pts.
Inversion_typ (H1 _ _ H4 H5).
apply wf_var with s1; auto with arith pts.
rewrite distr_lift_subst.
apply type_app with (lift_rec 1 V n); auto with arith pts.
cut (wf (Ax (lift_rec 1 T0 n) :: f)).
intro.
apply type_prod with s1 s2; auto with arith pts.
fold (lift_decl 1 (Ax T0) n) in |- *; auto with arith pts.
apply wf_var with s1; auto with arith pts.
apply type_conv with (lift_rec 1 U n) s; auto with arith pts.
apply le_type_lift with (2 := H5); trivial with arith pts.
apply type_conv_srt with (lift_rec 1 U n); auto with arith pts.
fold (lift_rec 1 (Srt s) n) in |- *.
apply le_type_lift with (2 := H3); auto with arith pts.
Qed.

(* Specifications: *)
Theorem thinning :
forall (e : env) (t T : term) (d : decl),
typ e t T -> wf (d :: e) -> typ (d :: e) (lift 1 t) (lift 1 T).
Theorem thinning :
forall (e : env) (t T : term) (d : decl),
typ e t T -> wf (d :: e) -> typ (d :: e) (lift 1 t) (lift 1 T).