intros U R H'; red in |- *.
intro x; red in |- *; intros a b H'0.
unfold coherent at 1 in |- *.
generalize b; clear b.
elim H'0; clear H'0.
intros x0 b H'1; exists b; auto.
intros x0 y z H'1 H'2 H'3 b H'4.
cut (exists t : U, Rstar U R y t /\ R b t).
intro h; elim h; intros t h0; elim h0; intros H'0 H'5; clear h h0.
generalize (H'3 t); intro h; lapply h;
[ intro h0; elim h0; intros z0 h1; elim h1; intros H'6 H'7; clear h h0 h1
| clear h ]; auto.
exists z0; split; [ assumption | idtac ].
apply Rstar_n with t; auto.
generalize H'1; generalize y; clear H'1.
elim H'4.
intros x1 y0 H'0; exists y0; auto.
intros x1 y0 z0 H'0 H'1 H'5 y1 H'6.
red in H'.
generalize (H' x1 y0 y1); intro h; lapply h;
[ intro H'7; lapply H'7;
[ intro h0; elim h0; intros z1 h1; elim h1; intros H'8 H'9;
clear h H'7 h0 h1
| clear h ]
| clear h ]; auto.
generalize (H'5 z1); intro h; lapply h;
[ intro h0; elim h0; intros t h1; elim h1; intros H'7 H'10; clear h h0 h1
| clear h ]; auto.
exists t; split; auto.
apply Rstar_n with z1; auto.
Qed.
(* Warming up *)

(* Specifications: *)
Theorem Noetherian_contains_Noetherian :
forall (U : Type) (R R' : Relation U),
Noetherian U R -> contains U R R' -> Noetherian U R'.