fact: Fixpoint Iterate_Decide_Comp (Remaining : nat) (P : Ensemble (Fin.t Remaining)) {struct Remaining } : Comp bool := match Remaining return Ensemble (Fin.t (Remaining)) -> Comp bool with | 0 => fun P => ret true | S Remaining' => fun P => Bind {b' | decides b' (P (@Fin.F1 (Remaining')))}%comp (fun b' => If_Then_Else b' (Iterate_Decide_Comp Remaining' (fun n => P (Fin.FS n))) (ret false)) end P.
imports: Coq.Lists.List Coq.Arith.Compare_dec Coq.Arith.Arith Coq.Bool.Bool Coq.Strings.String Coq.Sets.Ensembles Fiat.Common.BoolFacts Fiat.Common.List.PermutationFacts Fiat.Common.List.ListMorphisms Fiat.Common.IterateBoundedIndex Fiat.Common.List.ListFacts Fiat.Common.LogicFacts Fiat.Common.DecideableEnsembles Fiat.Common.BoundedLookup Fiat.Common.IterateBoundedIndex Fiat.Computation.Core Fiat.Computation.Monad Fiat.Computation.ApplyMonad Fiat.Computation.SetoidMorphisms Fiat.Computation.Refinements.General Fiat.Computation.Refinements.Tactics