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 upaco0_mon_gen (gf gf': rel0 -> rel0) r r'
(REL: upaco0 gf r)
(LEgf: gf <1= gf')
(LEr: r <0= r'):
upaco0 gf' r'.