Proof with auto.
intros; induction Hperm; simpl... rewrite IHHperm...
do 2 rewrite gA; pattern (g (f y) (f x)); rewrite gS...
transitivity (listd f g b l')...
Qed.
End ListDenoteAS.
Section ListDenoteConj.
Context {A : Type}.
Variables (f : A -> Prop) (g : Prop -> Prop -> Prop) (b : Prop).
Variable (gconj : forall x y, g x y -> y).

(* Specifications: *)
Lemma listd_conj a l : listd f g b (a :: l) -> listd f g b l.
Lemma listd_unfold_or l : listd f or b l = (listd f or False l \/ b).
Proof with auto.