Definition radix2 := Build_radix 2 (refl_equal _).

(* Specifications: *)
Theorem radix_gt_0 : (0 < r)%Z.
Theorem radix_gt_1 : (1 < r)%Z.
Theorem Zpower_gt_1 : forall p, (0 < p)%Z -> (1 < Zpower r p)%Z.
Theorem Zpower_gt_0 : forall p, (0 <= p)%Z -> (0 < Zpower r p)%Z.
Theorem Zpower_ge_0 : forall e, (0 <= Zpower r e)%Z.
Theorem Zpower_le : forall e1 e2, (e1 <= e2)%Z -> (Zpower r e1 <= Zpower r e2)%Z.
Theorem Zpower_lt : forall e1 e2, (0 <= e2)%Z -> (e1 < e2)%Z -> (Zpower r e1 < Zpower r e2)%Z.
Theorem Zpower_lt_Zpower : forall e1 e2, (Zpower r (e1 - 1) < Zpower r e2)%Z -> (e1 <= e2)%Z.
Theorem Zmod_mod_mult : forall n a b, (0 < a)%Z -> (0 <= b)%Z -> Zmod (Zmod n (a * b)) b = Zmod n b.
Theorem ZOmod_eq : forall a b, Z.rem a b = (a - Z.quot a b * b)%Z.
Theorem ZOmod_mod_mult : forall n a b, Z.rem (Z.rem n (a * b)) b = Z.rem n b.
Theorem Zdiv_mod_mult : forall n a b, (0 <= a)%Z -> (0 <= b)%Z -> (Zdiv (Zmod n (a * b)) a) = Zmod (Zdiv n a) b.
Theorem ZOdiv_mod_mult : forall n a b, (Z.quot (Z.rem n (a * b)) a) = Z.rem (Z.quot n a) b.
Theorem ZOdiv_small_abs : forall a b, (Zabs a < b)%Z -> Z.quot a b = Z0.
Theorem ZOmod_small_abs : forall a b, (Zabs a < b)%Z -> Z.rem a b = a.
Theorem ZOdiv_plus : forall a b c, (0 <= a * b)%Z -> (Z.quot (a + b) c = Z.quot a c + Z.quot b c + Z.quot (Z.rem a c + Z.rem b c) c)%Z.
Theorem Zsame_sign_trans : forall v u w, v <> Z0 -> (0 <= u * v)%Z -> (0 <= v * w)%Z -> (0 <= u * w)%Z.
Theorem Zsame_sign_trans_weak : forall v u w, (v = Z0 -> w = Z0) -> (0 <= u * v)%Z -> (0 <= v * w)%Z -> (0 <= u * w)%Z.
Theorem Zsame_sign_imp : forall u v, (0 < u -> 0 <= v)%Z -> (0 < -u -> 0 <= -v)%Z -> (0 <= u * v)%Z.
Theorem Zsame_sign_odiv : forall u v, (0 <= v)%Z -> (0 <= u * Z.quot u v)%Z.
Theorem radix_gt_0 : (0 < r)%Z.
Theorem radix_gt_1 : (1 < r)%Z.
Theorem Zpower_gt_1 : forall p, (0 < p)%Z -> (1 < Zpower r p)%Z.
Theorem Zpower_gt_0 : forall p, (0 <= p)%Z -> (0 < Zpower r p)%Z.
Theorem Zpower_ge_0 : forall e, (0 <= Zpower r e)%Z.
Theorem Zpower_le : forall e1 e2, (e1 <= e2)%Z -> (Zpower r e1 <= Zpower r e2)%Z.
Theorem Zpower_lt : forall e1 e2, (0 <= e2)%Z -> (e1 < e2)%Z -> (Zpower r e1 < Zpower r e2)%Z.
Theorem Zpower_lt_Zpower : forall e1 e2, (Zpower r (e1 - 1) < Zpower r e2)%Z -> (e1 <= e2)%Z.
Theorem Zmod_mod_mult : forall n a b, (0 < a)%Z -> (0 <= b)%Z -> Zmod (Zmod n (a * b)) b = Zmod n b.
Theorem ZOmod_eq : forall a b, Z.rem a b = (a - Z.quot a b * b)%Z.
Theorem ZOmod_mod_mult : forall n a b, Z.rem (Z.rem n (a * b)) b = Z.rem n b.
Theorem Zdiv_mod_mult : forall n a b, (0 <= a)%Z -> (0 <= b)%Z -> (Zdiv (Zmod n (a * b)) a) = Zmod (Zdiv n a) b.
Theorem ZOdiv_mod_mult : forall n a b, (Z.quot (Z.rem n (a * b)) a) = Z.rem (Z.quot n a) b.
Theorem ZOdiv_small_abs : forall a b, (Zabs a < b)%Z -> Z.quot a b = Z0.
Theorem ZOmod_small_abs : forall a b, (Zabs a < b)%Z -> Z.rem a b = a.
Theorem ZOdiv_plus : forall a b c, (0 <= a * b)%Z -> (Z.quot (a + b) c = Z.quot a c + Z.quot b c + Z.quot (Z.rem a c + Z.rem b c) c)%Z.
Theorem Zsame_sign_trans : forall v u w, v <> Z0 -> (0 <= u * v)%Z -> (0 <= v * w)%Z -> (0 <= u * w)%Z.
Theorem Zsame_sign_trans_weak : forall v u w, (v = Z0 -> w = Z0) -> (0 <= u * v)%Z -> (0 <= v * w)%Z -> (0 <= u * w)%Z.
Theorem Zsame_sign_imp : forall u v, (0 < u -> 0 <= v)%Z -> (0 < -u -> 0 <= -v)%Z -> (0 <= u * v)%Z.
Theorem Zsame_sign_odiv : forall u v, (0 <= v)%Z -> (0 <= u * Z.quot u v)%Z.