(* machine arithmetics *)

(* Left shift *)

Definition shift (n : nat) := two * n.

(* Specifications: *)
Lemma Unshift : forall n : nat, {m : nat & {n = shift m} + {n = S (shift m)}}.
Lemma half_lt : forall a b : nat, 0 < b -> b = shift a \/ b = S (shift a) -> a < b.