proposition: Lemma fold_right_bool_rect {T} t b init ls' bv : fold_right (fun (x : T) (acc : bool -> bool) => bool_rect (fun _ => bool -> bool) (t x) acc (b x)) init ls' bv = fold_right (fun (x : T) (acc : bool) => bool_rect (fun _ => bool) (t x bv) acc (b x)) (init bv) ls'.
proof: Proof. induction ls' as [|x xs IHxs]; simpl; [ | destruct (b x); simpl; rewrite ?IHxs ]; reflexivity. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Coq.Lists.List Coq.Lists.SetoidList Coq.Bool.Bool Fiat.Common Fiat.Common.List.Operations Fiat.Common.Equality Fiat.Common.List.FlattenList Fiat.Common.LogicFacts