intros S D rho A B H. induction H. intros. subst. exists A1, A2. auto.
intros. subst.
inversion H; subst; destruct (IHmultipar _ _ eq_refl) as [B1 [B2 EQ]]; auto;
exists B1, B2; auto.
Qed.

(* Specifications: *)
Lemma multipar_CPi : forall S D A C, multipar S D A C -> forall A1 A2 A3 B, A = a_CPi (Eq A1 A2 A3) B -> exists B1 B2 B3 C2,
C = (a_CPi (Eq B1 B2 B3) C2).
Lemma multipar_UAbs_Rel : forall S D a b x,
x `notin` fv_tm_tm_tm a \u fv_tm_tm_tm b ->
multipar S D (a_UAbs Rel a) b ->
(exists b2, b = (a_UAbs Rel b2))
\/ (exists a1, exists a2, multipar S D (a_UAbs Rel a) (a_UAbs Rel a1) /\
open_tm_wrt_tm a1 (a_Var_f x) = a_App a2 Rel (a_Var_f x)).
Lemma multipar_UAbs_Irrel : forall S D a b x,
x `notin` fv_tm_tm_tm a \u fv_tm_tm_tm b ->
multipar S D (a_UAbs Irrel a) b ->
(exists b2, b = (a_UAbs Irrel b2))
\/ (exists a1, exists a2, multipar S D (a_UAbs Irrel a) (a_UAbs Irrel a1) /\
open_tm_wrt_tm a1 (a_Var_f x) = a_App a2 Irrel a_Bullet).
Lemma multipar_CAbs : forall S D A C, multipar S D A C -> forall A1 A2 A3 B, A = a_CAbs (Eq A1 A2 A3) B -> exists B1 B2 B3 C2,
C = (a_CAbs (Eq B1 B2 B3) C2).