Definition split e1 e2 := split_aux e1 xH e2.

(* Specifications: *)
Theorem split_ok_l e1 e2 : (e1 === left (split e1 e2) * common (split e1 e2))%poly.
Theorem split_ok_r e1 e2 : (e2 === right (split e1 e2) * common (split e1 e2))%poly.
Lemma split_nz_l l e1 e2 : ~ e1 @ l == 0 -> ~ left (split e1 e2) @ l == 0.
Lemma split_nz_r l e1 e2 : ~ e2 @ l == 0 -> ~ right (split e1 e2) @ l == 0.
Theorem Pcond_Fnorm l e : PCond l (condition (Fnorm e)) -> ~ (denum (Fnorm e))@l == 0.