Theory "ASCIInumbers"

Parents     numposrep   string

Signature

Constant Type
HEX :num -> char
UNHEX :char -> num
fromBinString :string -> num option
fromDecString :string -> num option
fromHexString :string -> num option
n2s :num -> (num -> char) -> num -> string
num_from_bin_string :string -> num
num_from_dec_string :string -> num
num_from_hex_string :string -> num
num_from_oct_string :string -> num
num_to_bin_string :num -> string
num_to_dec_string :num -> string
num_to_hex_string :num -> string
num_to_oct_string :num -> string
s2n :num -> (char -> num) -> string -> num

Definitions

s2n_def
|- ∀b f s. s2n b f s = l2n b (MAP f (REVERSE s))
n2s_def
|- ∀b f n. n2s b f n = REVERSE (MAP f (n2l b n))
HEX_primitive_def
|- HEX =
   WFREC (@R. WF R)
     (λHEX a.
        case a of
          0 => I #"0"
        | 1 => I #"1"
        | 2 => I #"2"
        | 3 => I #"3"
        | 4 => I #"4"
        | 5 => I #"5"
        | 6 => I #"6"
        | 7 => I #"7"
        | 8 => I #"8"
        | 9 => I #"9"
        | 10 => I #"A"
        | 11 => I #"B"
        | 12 => I #"C"
        | 13 => I #"D"
        | 14 => I #"E"
        | 15 => I #"F"
        | v => ARB)
UNHEX_primitive_def
|- UNHEX =
   WFREC (@R. WF R)
     (λUNHEX a.
        case a of
          #"0" => I 0
        | #"1" => I 1
        | #"2" => I 2
        | #"3" => I 3
        | #"4" => I 4
        | #"5" => I 5
        | #"6" => I 6
        | #"7" => I 7
        | #"8" => I 8
        | #"9" => I 9
        | #"a" => I 10
        | #"b" => I 11
        | #"c" => I 12
        | #"d" => I 13
        | #"e" => I 14
        | #"f" => I 15
        | #"A" => I 10
        | #"B" => I 11
        | #"C" => I 12
        | #"D" => I 13
        | #"E" => I 14
        | #"F" => I 15
        | v => ARB)
num_from_bin_string_def
|- num_from_bin_string = s2n 2 UNHEX
num_from_oct_string_def
|- num_from_oct_string = s2n 8 UNHEX
num_from_dec_string_def
|- toNum = s2n 10 UNHEX
num_from_hex_string_def
|- num_from_hex_string = s2n 16 UNHEX
num_to_bin_string_def
|- num_to_bin_string = n2s 2 HEX
num_to_oct_string_def
|- num_to_oct_string = n2s 8 HEX
num_to_dec_string_def
|- toString = n2s 10 HEX
num_to_hex_string_def
|- num_to_hex_string = n2s 16 HEX
fromBinString_def
|- ∀s.
     fromBinString s =
     if s ≠ "" ∧ EVERY (λc. (c = #"0") ∨ (c = #"1")) s then
       SOME (num_from_bin_string s)
     else NONE
fromDecString_def
|- ∀s.
     fromDecString s =
     if s ≠ "" ∧ EVERY isDigit s then SOME (toNum s) else NONE
fromHexString_def
|- ∀s.
     fromHexString s =
     if s ≠ "" ∧ EVERY isHexDigit s then SOME (num_from_hex_string s)
     else NONE


Theorems

HEX_ind
|- ∀P.
     P 0 ∧ P 1 ∧ P 2 ∧ P 3 ∧ P 4 ∧ P 5 ∧ P 6 ∧ P 7 ∧ P 8 ∧ P 9 ∧ P 10 ∧ P 11 ∧
     P 12 ∧ P 13 ∧ P 14 ∧ P 15 ∧ (∀v18. P v18) ⇒
     ∀v. P v
HEX_def
|- (HEX 0 = #"0") ∧ (HEX 1 = #"1") ∧ (HEX 2 = #"2") ∧ (HEX 3 = #"3") ∧
   (HEX 4 = #"4") ∧ (HEX 5 = #"5") ∧ (HEX 6 = #"6") ∧ (HEX 7 = #"7") ∧
   (HEX 8 = #"8") ∧ (HEX 9 = #"9") ∧ (HEX 10 = #"A") ∧ (HEX 11 = #"B") ∧
   (HEX 12 = #"C") ∧ (HEX 13 = #"D") ∧ (HEX 14 = #"E") ∧ (HEX 15 = #"F")
UNHEX_ind
|- ∀P.
     P #"0" ∧ P #"1" ∧ P #"2" ∧ P #"3" ∧ P #"4" ∧ P #"5" ∧ P #"6" ∧ P #"7" ∧
     P #"8" ∧ P #"9" ∧ P #"a" ∧ P #"b" ∧ P #"c" ∧ P #"d" ∧ P #"e" ∧ P #"f" ∧
     P #"A" ∧ P #"B" ∧ P #"C" ∧ P #"D" ∧ P #"E" ∧ P #"F" ∧ (∀v24. P v24) ⇒
     ∀v. P v
UNHEX_def
|- (UNHEX #"0" = 0) ∧ (UNHEX #"1" = 1) ∧ (UNHEX #"2" = 2) ∧ (UNHEX #"3" = 3) ∧
   (UNHEX #"4" = 4) ∧ (UNHEX #"5" = 5) ∧ (UNHEX #"6" = 6) ∧ (UNHEX #"7" = 7) ∧
   (UNHEX #"8" = 8) ∧ (UNHEX #"9" = 9) ∧ (UNHEX #"a" = 10) ∧
   (UNHEX #"b" = 11) ∧ (UNHEX #"c" = 12) ∧ (UNHEX #"d" = 13) ∧
   (UNHEX #"e" = 14) ∧ (UNHEX #"f" = 15) ∧ (UNHEX #"A" = 10) ∧
   (UNHEX #"B" = 11) ∧ (UNHEX #"C" = 12) ∧ (UNHEX #"D" = 13) ∧
   (UNHEX #"E" = 14) ∧ (UNHEX #"F" = 15)
s2n_compute
|- s2n b f s = l2n b (MAP f (REVERSE (EXPLODE s)))
n2s_compute
|- n2s b f n = IMPLODE (REVERSE (MAP f (n2l b n)))
UNHEX_HEX
|- ∀n. n < 16 ⇒ (UNHEX (HEX n) = n)
HEX_UNHEX
|- ∀c. isHexDigit c ⇒ (HEX (UNHEX c) = toUpper c)
DEC_UNDEC
|- ∀c. isDigit c ⇒ (HEX (UNHEX c) = c)
s2n_n2s
|- ∀c2n n2c b n.
     1 < b ∧ (∀x. x < b ⇒ (c2n (n2c x) = x)) ⇒ (s2n b c2n (n2s b n2c n) = n)
n2s_s2n
|- ∀c2n n2c b s.
     1 < b ∧ EVERY ($> b o c2n) s ⇒
     (n2s b n2c (s2n b c2n s) =
      if s2n b c2n s = 0 then STRING (n2c 0) ""
      else MAP (n2c o c2n) (LASTN (SUC (LOG b (s2n b c2n s))) s))
toNum_toString
|- ∀n. toNum (toString n) = n
toString_toNum_cancel
|- ∀n. toNum (toString n) = n
toString_inj
|- ∀n m. (toString n = toString m) ⇔ (n = m)
toString_11
|- ∀n m. (toString n = toString m) ⇔ (n = m)
STRCAT_toString_inj
|- ∀n m s. (STRCAT s (toString n) = STRCAT s (toString m)) ⇔ (n = m)
BIT_num_from_bin_string
|- ∀x s.
     EVERY ($> 2 o UNHEX) s ∧ x < STRLEN s ⇒
     (BIT x (num_from_bin_string s) ⇔
      (UNHEX (SUB (s,PRE (STRLEN s − x))) = 1))
SUB_num_to_bin_string
|- ∀x n.
     x < STRLEN (num_to_bin_string n) ⇒
     (SUB (num_to_bin_string n,x) =
      HEX (BITV n (PRE (STRLEN (num_to_bin_string n) − x))))
num_bin_string
|- num_from_bin_string o num_to_bin_string = I
num_oct_string
|- num_from_oct_string o num_to_oct_string = I
num_dec_string
|- toNum o toString = I
num_hex_string
|- num_from_hex_string o num_to_hex_string = I