apply nat_double_ind_set; auto with arith.
intros n; case n; auto with arith.
intros n m H'; case H'; auto with arith.
Qed.
Definition NegRel (A : Set) (R : Rel A) (x y : A) := ~ R x y.
Definition ProdRel (A B : Set) (R : Rel A) (S : Rel B)
(x y : A * B) := R (fst x) (fst y) /\ S (snd x) (snd y).
Section Dickson.
Variable A B : Set.
Variable lt : Rel A.
Variable R : Rel B.
Variable wfgt : well_founded lt.
Variable declt : DecRel A lt.
Variable wR : WR B R.
Definition leq (a b : A) := ~ lt b a.
Definition GBarlR := GRBar (A * B) (ProdRel A B leq R).
Definition sndL := map (fun p : A * B => snd p).
Definition MinD :=
Min (A * B) (fun p q : A * B => lt (fst p) (fst q)) (ProdRel A B leq R).
Definition prod_lt (a b : A * B) := lt (fst a) (fst b).

(* Specifications: *)
Lemma WFlem1 : well_founded prod_lt.
unfold prod_lt in |- *; apply wf_inverse_image with (B := A); auto.