proposition: Lemma Forall2_cons_r_inv : forall P r s1 y, Forall2 P r (y::s1) -> exists x r1, r = x::r1 /\ P x y /\ Forall2 P r1 s1.
proof: Proof. Proof using. introv E. destruct r as [|x r1]; inverts E. autos*. Qed.
imports: Coq.Classes.Morphisms TLC(LibTactics LibLogic LibReflect LibOperation LibProd LibOption LibNat LibInt LibWf LibMonoid LibRelation)