induction w1 as [|?? w1 IHw1]; simpl; intros n2 n3 w2 w3 Heq; intuition.
rewrite (UIP_dec eq_nat_dec Heq (refl_equal _)); reflexivity.
rewrite (IHw1 _ _ _ _ (plus_assoc _ _ _)); clear IHw1.
repeat match goal with
| [ |- context[match ?pf with refl_equal => _ end] ] => generalize pf
end.
generalize dependent (combine w1 (combine w2 w3)).
rewrite plus_assoc; intros w Heq0 e.
rewrite (UIP_dec eq_nat_dec e (refl_equal _)).
rewrite (UIP_dec eq_nat_dec Heq0 (refl_equal _)).
reflexivity.
Qed.

(* Specifications: *)
Theorem split1_iter : forall n1 n2 n3 Heq w,
split1 n1 n2 (split1 (n1 + n2) n3 w)
= split1 n1 (n2 + n3) (match Heq in _ = N return word N with
| refl_equal => w
end).
Theorem split2_iter : forall n1 n2 n3 Heq w,
split2 n2 n3 (split2 n1 (n2 + n3) w)
= split2 (n1 + n2) n3 (match Heq in _ = N return word N with
| refl_equal => w
end).