Module unique := fc_unique wf subst.
Set Bullet Behavior "Strict Subproofs".
Set Implicit Arguments.
(* This version is just for "head reduction." *)
intros.
unfold open_tm_wrt_tm. simpl. auto.
Qed.
intros.
unfold open_tm_wrt_co. simpl. auto.
Qed.
(* Helper tactic for below. Solves lc_tm goals using hypotheses from the annotated language. Perhaps it is useful elsewhere? *)
Ltac lc_erase_hyp :=
match goal with
| H : AnnTyping ?G ?a ?A0 |- lc_tm (erase_tm ?a) => eapply lc_erase; apply (AnnTyping_lc H)
| H : AnnTyping ?G ?a ?A0 |- lc_tm ?a => apply (AnnTyping_lc1 H)
| H : lc_tm ?a |- lc_tm (erase ?a) => eapply lc_erase; eauto
| H : lc_tm (a_Abs ?r ?a ?b) |- lc_tm ?c => apply lc_erase in H; simpl in H; auto
| H : lc_tm (a_CAbs ?a ?b) |- lc_tm ?c => apply lc_erase in H; simpl in H; auto
end.

Lemma binds_toplevel: forall F a A,
binds F (Ax a A) an_toplevel ->
binds F (Ax (erase a) (erase A)) toplevel.