proposition: Lemma FindFuncIf {A C D : Type} {cache : Cache} : forall (a : A) v cd (b : bool) (d : D) (f : D -> A -> bool) (tt' te' : option (C * ByteString * CacheDecode)) (tt te : A -> DecodeM (C * ByteString) ByteString), (b = f d a) -> (tt' = tt a v cd) -> (te' = te a v cd) -> ((if b then tt' else te') = (fun (b' : A -> bool) a v cd => if b' a then tt a v cd else te a v cd) (f d) a v cd).
proof: Proof. intros. rewrite H, H0, H1. eauto. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Bedrock.Word Coq.ZArith.ZArith Coq.NArith.NArith Coq.Arith.Arith Coq.Numbers.Natural.Peano.NPeano Coq.Logic.Eqdep_dec Fiat.Narcissus.Common.Specs Fiat.Narcissus.BinLib.Core Fiat.Narcissus.BinLib.AlignedByteString