Definition is_prod (t : term) :=
    match t with
    | Prod _ _ => True
    | _ => False
    end.

(* Specifications: *)
Lemma red_is_prod : forall (e : env) (t u : term), red R e t u -> is_prod t -> is_prod u.
Lemma prod_is_norm : forall (e : env) (t : term), is_prod t -> normal R e t.
Lemma hn_prod : forall (e : env) (A B : term), head_normal R e (Prod A B).
Lemma inv_R_prod : forall (e : env) (A B C D : term), conv R e (Prod A B) (Prod C D) -> conv R e C A /\ conv R (Ax C :: e) B D.
Lemma inv_prod : product_inversion (conv R).
Theorem CR_WHNF_convert_hn : forall (e : env) (x y : term), sn (ctxt R) e x -> sn (ctxt R) e y -> decide (conv_hn_inv e x y).
Theorem CR_WHNF_conv_dec : forall (e : env) (x y : term), sn (ctxt R) e x -> sn (ctxt R) e y -> decide (conv R e x y).