Definition covariant {B A : Type} (F: (B -> pred A) -> (B -> pred A)) : Prop :=
forall (P Q: B -> pred A), (forall x, P x |-- Q x) -> (forall x, F P x |-- F Q x).
Definition corec {B A: Type}  (F: (B -> pred A) -> (B -> pred A)) : B -> pred A :=
fun x w => forall P: B -> pred A, (forall x, F P x |-- P x) -> P x w.

Lemma covariant_exp {C B A}: forall F: C -> (B -> pred A) -> (B -> pred A),
(forall c, covariant (F c)) ->
covariant (fun P b => EX c:C, F c P b)%pred.