proposition: Lemma app_split : forall T, forall l1 l2 l3 l4 : list T, length l1 = length l3 -> l1 ++ l2 = l3 ++ l4 -> l1 = l3 # l2 = l4.
proof: Proof. induction l1; simpl; sp. destruct l3; allsimpl; auto. inversion H. destruct l3; allsimpl; auto. inversion H. destruct l3; allsimpl; auto. inversion H. inversion H0; subst. apply IHl1 in H3; sp; subst; auto. inversion H0; subst. destruct l3; allsimpl; auto. inversion H. inversion H0; subst. apply IHl1 in H4; sp; subst; auto. Qed.
imports: UsefulTypes bin_rels Omega