Implicit Types m n p : nat.Definition ltof (a b:A) := f a < f b.Definition gtof (a b:A) := f b > f a.

(* Specifications: *)
Theorem well_founded_ltof : well_founded ltof.
Theorem well_founded_gtof : well_founded gtof.
Theorem induction_ltof1 : forall P:A -> Type, (forall x:A, (forall y:A, ltof y x -> P y) -> P x) -> forall a:A, P a.
Theorem induction_gtof1 : forall P:A -> Type, (forall x:A, (forall y:A, gtof y x -> P y) -> P x) -> forall a:A, P a.
Theorem induction_ltof2 : forall P:A -> Type, (forall x:A, (forall y:A, ltof y x -> P y) -> P x) -> forall a:A, P a.
Theorem induction_gtof2 : forall P:A -> Type, (forall x:A, (forall y:A, gtof y x -> P y) -> P x) -> forall a:A, P a.
Theorem well_founded_lt_compat : well_founded R.
Lemma lt_wf : well_founded lt.
Lemma lt_wf_rect1 : forall n (P:nat -> Type), (forall n, (forall m, m < n -> P m) -> P n) -> P n.
Lemma lt_wf_rect : forall n (P:nat -> Type), (forall n, (forall m, m < n -> P m) -> P n) -> P n.
Lemma lt_wf_rec1 : forall n (P:nat -> Set), (forall n, (forall m, m < n -> P m) -> P n) -> P n.
Lemma lt_wf_rec : forall n (P:nat -> Set), (forall n, (forall m, m < n -> P m) -> P n) -> P n.
Lemma lt_wf_ind : forall n (P:nat -> Prop), (forall n, (forall m, m < n -> P m) -> P n) -> P n.
Lemma gt_wf_rect : forall n (P:nat -> Type), (forall n, (forall m, n > m -> P m) -> P n) -> P n.
Lemma gt_wf_rec : forall n (P:nat -> Set), (forall n, (forall m, n > m -> P m) -> P n) -> P n.
Lemma gt_wf_ind : forall n (P:nat -> Prop), (forall n, (forall m, n > m -> P m) -> P n) -> P n.
Lemma lt_wf_double_rect : forall P:nat -> nat -> Type, (forall n m, (forall p q, p < n -> P p q) -> (forall p, p < m -> P n p) -> P n m) -> forall n m, P n m.
Lemma lt_wf_double_rec : forall P:nat -> nat -> Set, (forall n m, (forall p q, p < n -> P p q) -> (forall p, p < m -> P n p) -> P n m) -> forall n m, P n m.
Lemma lt_wf_double_ind : forall P:nat -> nat -> Prop, (forall n m, (forall p (q:nat), p < n -> P p q) -> (forall p, p < m -> P n p) -> P n m) -> forall n m, P n m.