proposition: Lemma cons_map_inv : forall {A B} seq x1 l2 (f: A -> B), x1 :: l2 = map f seq -> exists x1' l2', seq = x1' :: l2' /\ x1 = f x1' /\ l2 = map f l2'.
proof: Proof. intros * _eq. destruct seq as [ | x1' l2' ]; simpl in *; try discriminate. inversion _eq. exists x1'; exists l2'; subst; 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