proposition: Lemma eq_rect_sigT {A x} {P : A -> Type} (Q : forall a, P a -> Prop) (u : sigT (Q x)) {y} (H : x = y) : eq_rect x (fun a => sigT (Q a)) u y H = existT (Q y) (eq_rect x P (projT1 u) y H) match H in (_ = y) return Q y (eq_rect x P (projT1 u) y H) with | eq_refl => projT2 u end.
proof: Proof. destruct H, u; reflexivity. Defined.
imports: Coq.Lists.List Coq.Lists.SetoidList Coq.Bool.Bool Coq.Arith.PeanoNat Coq.Strings.Ascii Coq.Strings.String Coq.Logic.Eqdep_dec Fiat.Common