fact: Definition decode_SumType {m} (types : Vector.t Type m) (decoders : ilist (B := fun T => B -> CacheDecode -> option (T * B * CacheDecode)) types) (idx : Fin.t m) (b : B) (cd : CacheDecode) : option (SumType types * B * CacheDecode) := `(a, b', cd') <- ith decoders idx b cd; Some (inj_SumType types idx a, b', cd').
imports: Fiat.Common.ilist Fiat.Common.SumType Fiat.Common.IterateBoundedIndex Fiat.Narcissus.Common.Specs Coq.Sets.Ensembles Bedrock.Word