Section PACO0.
(** ** Signatures *)
Record sig0T  :=
exist0T {
}.
Definition uncurry0  (R: rel0): rel1 sig0T :=
fun x => R.
Definition curry0  (R: rel1 sig0T): rel0 :=
R (@exist0T).
(** ** Predicates of Arity 0 *)
Definition paco0(gf : rel0 -> rel0)(r: rel0) : rel0 :=
curry0 (paco (fun R0 => uncurry0 (gf (curry0 R0))) (uncurry0 r)).
Definition upaco0(gf : rel0 -> rel0)(r: rel0) := paco0 gf r \0/ r.
Arguments paco0 : clear implicits.
Arguments upaco0 : clear implicits.
Hint Unfold upaco0 : core.
Definition monotone0 (gf: rel0 -> rel0) :=
forall r r' (IN: gf r) (LE: r <0= r'), gf r'.
Definition _monotone0 (gf: rel0 -> rel0) :=
forall r r'(LE: r <0= r'), gf r <0== gf r'.

Lemma monotone0_compose (gf gf': rel0 -> rel0)
(MON1: monotone0 gf)
(MON2: monotone0 gf'):
monotone0 (compose gf gf').