proposition: Lemma In_partition {A} : forall f (l : list A) a, List.In a l <-> (List.In a (fst (List.partition f l)) \/ List.In a (snd (List.partition f l))).
proof: Proof. split; induction l; simpl; intros; intuition; simpl; subst; first [destruct (f a0); destruct (List.partition f l); simpl in *; intuition | destruct (f a); destruct (List.partition f l); simpl; intuition]. 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