(** We provide a tactic converting from one style to the other. *)
(** Similarly, the boolean comparisons [ltb] and [leb] are favored over their dual [gtb] and [geb]. We prove here the equivalence and a few minimal results. *)

(* Specifications: *)
Lemma gtb_ltb n m : (n >? m) = (m <? n).
Lemma geb_leb n m : (n >=? m) = (m <=? n).
Lemma gtb_lt n m : (n >? m) = true <-> m < n.
Lemma geb_le n m : (n >=? m) = true <-> m <= n.
Lemma gtb_spec n m : BoolSpec (m<n) (n<=m) (n >? m).
Lemma geb_spec n m : BoolSpec (m<=n) (n<m) (n >=? m).
(** TODO : to add in Numbers ? *)
Lemma add_reg_l n m p : n + m = n + p -> m = p.
Lemma opp_eq_mul_m1 n : - n = n * -1.
Lemma add_diag n : n + n = 2 * n.
(** * Comparison and opposite *)
Lemma compare_opp n m : (- n ?= - m) = (m ?= n).
(** * Comparison and addition *)
Lemma add_compare_mono_l n m p : (n + m ?= n + p) = (m ?= p).
(** * [testbit] in terms of comparison. *)
Lemma testbit_mod_pow2 a n i (H : 0 <= n)
: testbit (a mod 2 ^ n) i = ((i <? n) && testbit a i)%bool.
Lemma testbit_ones n i (H : 0 <= n)
: testbit (ones n) i = ((0 <=? i) && (i <? n))%bool.
Lemma testbit_ones_nonneg n i (Hn : 0 <= n) (Hi: 0 <= i)
: testbit (ones n) i = (i <? n).