Inductive lexprod : A*B -> A*B -> Prop :=
| lex_l : forall a a' b b', ltA a a' -> lexprod (a, b) (a', b')
| lex_r : forall a    b b', ltB b b' -> lexprod (a, b) (a,  b').Inductive lexprod : A*B -> A*B -> Prop :=
| lex_l : forall a a' b b', ltA a a' -> lexprod (a, b) (a', b')
| lex_r : forall a    b b', ltB b b' -> lexprod (a, b) (a,  b').Inductive lexprod : A*B -> A*B -> Prop :=
| lex_l : forall a a' b b', ltA a a' -> lexprod (a, b) (a', b')
| lex_r : forall a    b b', ltB b b' -> lexprod (a, b) (a,  b').

(* Specifications: *)
Lemma acc_lex a b : Acc ltA a -> Acc ltB b -> Acc lexprod (a, b).
Lemma lexprod_trans : (forall a1 a2 a3, ltA a1 a2 -> ltA a2 a3 -> ltA a1 a3) -> (forall b1 b2 b3, ltB b1 b2 -> ltB b2 b3 -> ltB b1 b3) -> forall x1 x2 x3, lexprod x1 x2 -> lexprod x2 x3 -> lexprod x1 x3.
Lemma wf_lexprod : well_founded lexprod.