proposition: Lemma DecodeBindOpt_under_bind: forall (A B C : Type) (a_opt : option (A * B)) (f f' : A -> B -> option (C * B)), (forall (a : A) (b : B), f a b = f' a b) -> (`(a, b) <- a_opt; f a b ) = (`(a, b) <- a_opt; f' a b).
proof: Proof. destruct a_opt as [ [? ?] | ]; simpl; intros; 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.Formats.ByteBuffer