proposition: Lemma push_if_existT {A} (P : A -> Type) (b : bool) (x y : sigT P) : (if b then x else y) = existT P (if b then (projT1 x) else (projT1 y)) (if b as b return P (if b then (projT1 x) else (projT1 y)) then projT2 x else projT2 y).
proof: Proof. destruct b, x, y; reflexivity. Defined.
imports: Coq.Lists.List Coq.ZArith.ZArith Coq.Lists.SetoidList Coq.Setoids.Setoid Coq.Classes.RelationClasses Coq.Program.Program Coq.Classes.Morphisms Fiat.Common.Tactics.SplitInContext Fiat.Common.Tactics.Combinators Fiat.Common.Tactics.FreeIn Fiat.Common.Tactics.SetoidSubst Fiat.Common.Tactics.BreakMatch Fiat.Common.Tactics.Head Fiat.Common.Tactics.FoldIsTrue Fiat.Common.Tactics.SpecializeBy Fiat.Common.Tactics.DestructHyps Fiat.Common.Tactics.DestructSig Fiat.Common.Tactics.DestructHead Fiat.Common.Coq__8_4__8_5__Compat