Section Head_Normal_Products.
Hypothesis prod_norm : forall (e : env) (A B : term), normal R e (Prod A B).
Definition is_prod (t : term) :=
match t with
| Prod _ _ => True
| _ => False
end.
simple induction 1; auto with arith pts.
simple destruct x; simpl in |- *; intros.
inversion_clear H0; simpl in |- *; auto with arith pts.
elim H1.
elim H1.
elim H1.
elim H1.
inversion_clear H0; simpl in |- *; auto with arith pts.
elim prod_norm with e t0 t1 y; auto with arith pts.
Qed.
simple destruct t; simpl in |- *; auto with arith pts; intros; elim H.
Qed.
red in |- *; intros.
apply prod_is_norm.
apply red_is_prod with e (Prod A B); simpl in |- *; auto with arith pts.
Qed.
intros.
cut (conv_hn_inv e (Prod A B) (Prod C D)); intros.
inversion_clear H0; auto with arith pts.
apply inv_conv_hn with (Prod A B) (Prod C D); auto with arith pts.
apply hn_prod.
apply hn_prod.
Qed.

Lemma inv_prod : product_inversion (conv R).