proposition: Lemma refine_format_bool_map {S} (f : S -> bool) : forall s ce, refine (FMapFormat.Projection_Format format_bool f s ce) (FMapFormat.Projection_Format format_word (fun s => (WS (f s) WO)) s ce).
proof: Proof. intros; unfold FMapFormat.Projection_Format, FMapFormat.Compose_Format; intros ? ?. rewrite unfold_computes in H; destruct_ex; intuition. apply unfold_computes; eexists; split; eauto; subst. eapply refine_format_bool; eauto. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Fiat.Narcissus.BinLib Fiat.Narcissus.Common.Specs Fiat.Narcissus.Common.ComposeOpt Fiat.Narcissus.Common.ComposeCheckSum Fiat.Narcissus.Common.ComposeIf Fiat.Narcissus.Formats Fiat.Narcissus.BaseFormats Fiat.Narcissus.Automation.Solver Fiat.Narcissus.Automation.NormalizeFormats Bedrock.Word