Section Conversion_Decidability.
Variable the_Rule : Basic_rule.
Let R := Rule the_Rule.
Let stable := R_stable the_Rule.
Let stable_conv : R_stable_env (conv R) :=
R_rst_stable _ (ctxt_stable _ stable).
Hint Resolve stable: pts.
Hypothesis CR : church_rosser (ctxt R).
Hypothesis
whnf :
forall (e : env) (t : term),
sn (ctxt R) e t -> {u : term | red R e t u &  head_normal R e u}.
Section Inversion_Conv.
Inductive conv_hn_inv : env -> term -> term -> Prop :=
| chi_srt : forall (e : env) (s : sort), conv_hn_inv e (Srt s) (Srt s)
| chi_ref : forall (e : env) (n : nat), conv_hn_inv e (Ref n) (Ref n)
| chi_abs :
forall (e : env) (A A' M M' : term),
conv R e A A' ->
conv R (Ax A' :: e) M M' -> conv_hn_inv e (Abs A M) (Abs A' M')
| chi_app :
forall (e : env) (u u' v v' : term),
conv R e u u' -> conv R e v v' -> conv_hn_inv e (App u v) (App u' v')
| chi_prod :
forall (e : env) (A A' B B' : term),
conv R e A A' ->
conv R (Ax A' :: e) B B' -> conv_hn_inv e (Prod A B) (Prod A' B').
Hint Resolve chi_srt chi_ref chi_abs chi_app chi_prod: pts.

(* Specifications: *)
Lemma conv_hn_inv_sym :
forall (e : env) (x y : term), conv_hn_inv e x y -> conv_hn_inv e y x.