(*****************************************************)
(**                Division by 2                     *)
Definition half (x : N.t) := snd (half_aux x).
#[global]
Instance half_aux_wd : Proper (N.eq ==> N.eq*N.eq) half_aux.
#[global]
Instance half_wd : Proper (N.eq==>N.eq) half.

Theorem half_aux_spec2 : forall n,
fst (half_aux n) == snd (half_aux n) \/
fst (half_aux n) == S (snd (half_aux n)).