Fact eq_rect_combine_dist_helper1 : forall a b c d, b * c = d -> (a + b) * c = a * c + d.Fact eq_rect_combine_dist_helper2 : forall a b c d, b * c = d -> a * c + d = (a + b) * c.

Theorem eq_rect_combine_dist : forall a b c d (w : word ((a + b) * c)) (H : b * c = d), b * c = d -> let H1 := (eq_rect_combine_dist_helper1 a b c H) in let H2 := (eq_rect_combine_dist_helper2 a b c H) in let w' := eq_rec ((a + b) * c) word w _ H1 in w = eq_rec _ word (combine (split1 (a * c) d w') (split2 (a * c) d w')) _ H2.