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.