revert a; induction l; simpl; intros a' C D...
destruct D as [D|D]; [rewrite <- D|].
solve [destruct C as [C1 C2]; auto]. solve[destruct C; apply IHl; auto].
Qed.
End ListDenoteProp.
Section ListDenoteProp1.
Context {A : Type}.
Variables (f : A -> Prop).

(* Specifications: *)
Lemma listd_unfold_app_and b l l' :
listd f and b (l ++ l') = (listd f and True l /\ listd f and b l').