proposition: Lemma Forall_app_iff: forall {A : Type} (P : A -> Prop) (l1 l2 : list A), Forall P (l1 ++ l2) <-> Forall P l1 /\ Forall P l2.
proof: Proof. intros; induction l1; intros. + simpl. assert (Forall P nil) by constructor; tauto. + simpl; split; intros. - inversion H; subst; split; try tauto. constructor; auto; tauto. - destruct H. inversion H; subst. constructor; auto; tauto. Qed.
imports: Coq.Lists.List Coq.micromega.Lia Coq.Sorting.Permutation Coq.ZArith.ZArith_base Coq.ZArith.Zcomplements Coq.Logic.FunctionalExtensionality CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext VST.zlist.sublist VST.zlist.list_solver