intros.
split; induction l1; intros.
inv H. destruct l2; inv H0. auto.
split. auto. simpl in H2. inv H2.
constructor; auto.
split. inv H. constructor; auto. apply IHl1 in H3.
intuition.
inv H. apply IHl1 in H3. intuition.
simpl. intuition.
simpl. constructor.
destruct H. inv H. auto.
apply IHl1. intuition.
inv H0; auto.
Qed.

(* Specifications: *)
Lemma Forall_firstn:
forall A (f: A -> Prop) n l, Forall f l -> Forall f (firstn n l).
Lemma Forall_skipn:
forall A (f: A -> Prop) n l, Forall f l -> Forall f (skipn n l).
Lemma Forall_map:
forall {A B} (f: B -> Prop) (g: A -> B) al,
Forall f (map g al) <-> Forall (Basics.compose f g) al.
Lemma Forall_sublist:
forall {A} (f: A -> Prop) lo hi al,
Forall f al -> Forall f (sublist lo hi al).
Lemma lseg_is_ptr_or_null :
forall  sh c v1 v2 R,
@lseg t_struct_list _tail LS sh (c) v1 v2 * R |-- !!is_pointer_or_null v1 && (@lseg t_struct_list _tail LS sh c v1 v2)  * R.
Lemma eval_id_initialized : forall v id rho t,
tc_val t v ->
v = eval_id id rho ->
denote_tc_initialized id t rho.