(* Above, we rewrite applications of function. Is it possible to rewrite functions themselves, i.e., rewrite (recursion lt_base lt_step (S n)) to lt_step n (recursion lt_base lt_step n)? *)

(* Specifications: *)
Theorem ltb_0 : forall n, n << 0 = false.
Theorem ltb_0_succ : forall n, 0 << S n = true.
Theorem succ_ltb_mono : forall n m, (S n << S m) = (n << m).
Theorem ltb_lt : forall n m, n << m = true <-> n < m.
Theorem ltb_ge : forall n m, n << m = false <-> n >= m.
Definition even (x : N.t) := recursion true (fun _ p => negb p) x.