Notation typ2 := (typ the_PTS) (only parsing).Notation wf_type2 := (wf_type the_PTS) (only parsing).Definition rule_sound :=
    forall (e : env) (x y : term),
    R e x y -> forall T : term, typ the_PTS e x T -> typ the_PTS e y T.

(* Specifications: *)
Theorem red_incl_le_type : forall (e : env) (x y : term), red R e x y -> le_type e y x.
Theorem red_in_env : forall (e : env) (u v t T : term), typ the_PTS (Ax u :: e) t T -> forall s : sort, typ the_PTS e v (Srt s) -> red R e u v -> typ the_PTS (Ax v :: e) t T.
Theorem ctxt_sound : rule_sound R -> rule_sound (ctxt R).
Theorem incl_sound : forall P Q : red_rule, (forall (e : env) (x y : term), P e x y -> Q e x y) -> rule_sound Q -> rule_sound P.
Theorem union_sound : forall P Q : red_rule, rule_sound P -> rule_sound Q -> rule_sound (reunion P Q).
Theorem clos_trans_sound : forall P : red_rule, rule_sound P -> rule_sound (fun e : env => clos_trans term (P e)).
Theorem clos_refl_trans_sound : forall P : red_rule, rule_sound P -> rule_sound (R_rt P).