Ltac an_use_binder f x :=
  pick fresh x and apply f; eauto;
  unfold open_tm_wrt_tm; simpl; simpl_env; eauto;
  match goal with
    [ |- AnnTyping ?ctx ?a ?A ] =>
    assert (AnnCtx ctx); [econstructor; eauto|idtac]
  end.

Lemma An_App_intro : forall (G : context) (b : tm) (rho : relflag) (a B A C : tm), AnnTyping G b (a_Pi rho A B) -> (open_tm_wrt_tm B a) = C -> AnnTyping G a A -> AnnTyping G (a_App b rho a) C.