End Unsigned.
(** Conversion from/to signed decimal numbers *)
Module Signed.

(* Specifications: *)
Lemma of_to (p:positive) : Pos.of_int (Pos.to_int p) = Some p.
Lemma to_of (d:int)(p:positive) :
Pos.of_int d = Some p -> Pos.to_int p = norm d.
Lemma to_int_inj p p' : Pos.to_int p = Pos.to_int p' -> p = p'.
Lemma to_int_pos_surj d :
unorm d <> zero -> exists p, Pos.to_int p = norm (Pos d).
Lemma of_int_norm d : Pos.of_int (norm d) = Pos.of_int d.
Lemma of_inj_pos d d' :
Pos.of_int (Pos d) = Pos.of_int (Pos d') -> unorm d = unorm d'.
Lemma of_to (p:positive) : Pos.of_hex_int (Pos.to_hex_int p) = Some p.
Lemma to_of (d:int)(p:positive) :
Pos.of_hex_int d = Some p -> Pos.to_hex_int p = norm d.
Lemma to_int_inj p p' : Pos.to_hex_int p = Pos.to_hex_int p' -> p = p'.
Lemma to_int_pos_surj d :
unorm d <> zero -> exists p, Pos.to_hex_int p = norm (Pos d).
Lemma of_int_norm d : Pos.of_hex_int (norm d) = Pos.of_hex_int d.
Lemma of_inj_pos d d' :
Pos.of_hex_int (Pos d) = Pos.of_hex_int (Pos d') -> unorm d = unorm d'.