Ltac destar H w := 
  match type of H with 
    star _ ?x ?y => destruct H as [ x | w x y _H1 _H2 ];
      [ idtac | generalize (S_plus _ _H1 _H2); clear _H1 _H2; intro H ]
    | _ => fail "not a star hypothesis"
  end.

(* Specifications: *)
Lemma Acc_clos_trans : forall x, Acc (trans R) x -> Acc (trans (plus R)) x.
Theorem plus_wf: well_founded (trans (plus R)).
Lemma inv_inv: eeq (trans (trans T)) T.
Lemma inv_comp: eeq (trans (comp R S)) (comp (trans S) (trans R)).
Lemma inv_union: eeq (trans (union F)) (union (fun i => trans (F i))).
Lemma inv_star: eeq (trans (star T)) (star (trans T)).
Lemma inv_plus: eeq (trans (plus T)) (plus (trans T)).
Lemma inv_union2: eeq (trans (union2 R R')) (union2 (trans R) (trans R')).
Lemma comp_assoc: forall W: Type, forall U: relation2 Z W, eeq (comp (comp R S) U) (comp R (comp S U)).
Lemma comp_star_star: eeq (comp (star T) (star T)) (star T).
Lemma comp_plus_star: eeq (comp (plus T) (star T)) (plus T).
Lemma comp_star_plus: eeq (comp (star T) (plus T)) (plus T).