Ltac binds_notbinds :=
match goal with
[ H0 : binds ?c (Ax ?T ?a) toplevel,
H5 : forall (c : atom) a, not (binds c (Ax ?T a) an_toplevel) |- _  ] =>
unfold not in H5; unfold toplevel in H0; unfold erase_sig in H0;
apply binds_map_3 in H0; destruct H0 as (s' & EQ & B);
destruct s'; simpl in EQ; inversion EQ; subst;
apply H5 in B; contradiction
end.

(* Specifications: *)
Lemma Par_Const : forall S D T b,
Par S D (a_Const T) b -> b = a_Const T.
Lemma multipar_Const : forall S D T b,
multipar S D (a_Const T) b ->
(b = a_Const T).
Lemma multipar_Pi : forall S D rho A B, multipar S D A B -> forall A1 A2,
A = a_Pi rho A1 A2 -> exists B1 B2, B = (a_Pi rho B1 B2).