Definition sn (e : env) (t : term) : Prop := Acc (transp term (R e)) t.Definition normal (e : env) (t : term) : Prop := forall u : term, ~ R e t u.Definition head_normal (e : env) (t : term) : Prop :=
    forall u : term, red R e t u -> normal e u.Definition confluent :=
    forall e : env, commut term (R e) (transp term (R e)).Definition church_rosser :=
    forall (e : env) (u v : term),
    R_rst R e u v ->
    ex2 (fun t : term => R_rt R e u t) (fun t : term => R_rt R e v t).

(* Specifications: *)
Lemma sn_red_sn : forall (e : env) (a b : term), R_rt R e a b -> sn e a -> sn e b.
Lemma red_normal : forall (e : env) (u v : term), R_rt R e u v -> normal e u -> u = v.
Lemma hn_red_hn : forall (e : env) (t u : term), head_normal e t -> red R e t u -> head_normal e u.
Lemma normal_union : forall (e : env) (x : term), normal R1 e x -> normal R2 e x -> normal (reunion R1 R2) e x.