proposition: Theorem Vector_append_inj_first : forall (A : Set)(a : nat)(a1 a2 : Vector.t A a)(b : nat)(b1 b2 : Vector.t A b), Vector.append a1 b1 = Vector.append a2 b2 -> a1 = a2.
proof: Proof. induction a1; intuition. rewrite vector_0 in *. trivial. destruct (vector_S a2). destruct H2. subst. repeat rewrite <- SplitVector.Vector_cons_app_assoc in H. inversion H. apply vector_cons_eq in H. f_equal. eapply IHa1. eauto. Qed.
imports: FCF HMAC_spec PRF NMAC_to_HMAC hF GHMAC_PRF