proposition: Lemma forall_sig_eq_rect {A B} (f : forall a : A, B a) (P : { g : _ | (forall a, f a = g a) } -> Type) (k : P (exist (fun g => forall a, f a = g a) f (fun a => eq_refl))) g : P g.
proof: Proof. destruct g as [g1 g2]. set (g' := fun x => (exist _ (g1 x) (g2 x))). change g2 with (fun x => proj2_sig (g' x)). change g1 with (fun x => proj1_sig (g' x)). clearbody g'; clear g1 g2. cut (forall x, (exist _ (f x) eq_refl) = g' x). { intro H'. apply functional_extensionality_dep_good in H'. destruct H'. exact k. } { intro x. destruct (g' x) as [g'x1 g'x2]. destruct g'x2. reflexivity. } Defined.