End IterSepCon2.
Section IterPredSepCon.
Context {A : Type}.
Context {B : Type}.
Context {ND : NatDed A}.
Context {SL : SepLog A}.
Context {ClS: ClassicalSep A}.
Definition pred_sepcon (p: B -> A) (P: B -> Prop): A :=
EX l: list B, !! (forall x, In x l <-> P x) && !! NoDup l && iter_sepcon p l.

(* Specifications: *)
Lemma pred_sepcon_eq: forall (P: B -> Prop) (p: B -> A),
pred_sepcon p P =
(EX l: list B, !! ((forall x, In x l <-> P x) /\ NoDup l) && iter_sepcon p l).
Lemma pred_sepcon_strong_proper: forall P1 P2 p1 p2,
(forall x, P1 x <-> P2 x) ->
(forall x, P1 x -> P2 x -> p1 x = p2 x) ->
pred_sepcon p1 P1 = pred_sepcon p2 P2.