(** ** Recursion operator *)
Definition C := .\ "x", "y"; "y" (.\ "z"; "x" "x" "y" "z").
Definition rho s : term := Eval cbv in .\ "x" ; C C !s "x".

(* Specifications: *)
Lemma rho_lam s : lam (rho s).
Lemma rho_closed s : closed s -> closed (rho s).
Lemma rho_correct u v : proc u -> proc v -> rho u v ≻^3 u (rho u) v.
Lemma uniform_confluence s t1 t2 :
s ≻ t1 -> s ≻ t2 -> t1 = t2 \/ exists u, t1 ≻ u /\ t2 ≻ u.