Lemma join_symmetry: forall S D a b, joins S D a b -> joins S D b a.
Proof.

(* Specifications: *)
destruct H as [ac h0].
induction 2; eauto. apply IHmultipar.
intros; apply binds_cons; auto.
exists C. repeat split; apply context_Par_irrelevance with (G1 := G)(D1 := D); auto; try fsetdec;
Qed.
destruct H as [ac h0].
intros H1.
Lemma multipar_app_lr_Irrel: forall a c S D, lc_tm a -> multipar S D a c -> multipar S D (a_App a Irrel a_Bullet) (a_App c
destruct H0 as [ac' h1].
move: (H0 x H1) => RC. inversion RC. rewrite -(tm_subst_tm_tm_fresh_eq (open_tm_wrt_tm a2 (a_Var_f x)) a_Bullet x); eauto. rewrite - tm_subst_tm_tm_intro; eauto. move: (fv_tm_tm_tm_open_tm_wrt_tm_lower a2 (a_Var_f x)) => h0. fsetdec. auto. eapply (multipar_iapp _ _ H). eauto. eapply (multipar_iapp _ _ H0). eauto. Unshelve. eauto. eauto. Qed. Lemma multipar_App_destruct_R
exists a1', a2'. repeat split; eauto. ++ clear IHmultipar. right. exists a1', a2'. repeat split; eauto. Unshelve. all: exact S.
++ clear IHmultipar. left. destruct H1 as [a1' K]. exists a1'. inversion K. clear K. inversion H2. clear H2. repeat split; eauto. ++ clear IHmultipar. right. destruct H1 as [a1' K]. exists a1'. inversion K. clear K. repeat split; eauto.
[ H10 : multipar G D (a_CApp a' ?b') ?c |- _ ] =>
exists b1. repeat split; eauto 2 with erased. *)
Proof.
Proof.
Qed.
simpl in *; inversion C; inversion V.