src/HOL/String.thy
changeset 31484 cabcb95fde29
parent 31205 98370b26c2ce
child 31998 2c7a24f74db9
equal deleted inserted replaced
31483:88210717bfc8 31484:cabcb95fde29
    43 lemma char_size [code, simp]:
    43 lemma char_size [code, simp]:
    44   "char_size (c::char) = 0" by (cases c) simp
    44   "char_size (c::char) = 0" by (cases c) simp
    45 
    45 
    46 primrec nibble_pair_of_char :: "char \<Rightarrow> nibble \<times> nibble" where
    46 primrec nibble_pair_of_char :: "char \<Rightarrow> nibble \<times> nibble" where
    47   "nibble_pair_of_char (Char n m) = (n, m)"
    47   "nibble_pair_of_char (Char n m) = (n, m)"
    48 
       
    49 declare nibble_pair_of_char.simps [code del]
       
    50 
    48 
    51 setup {*
    49 setup {*
    52 let
    50 let
    53   val nibbles = map (Thm.cterm_of @{theory} o HOLogic.mk_nibble) (0 upto 15);
    51   val nibbles = map (Thm.cterm_of @{theory} o HOLogic.mk_nibble) (0 upto 15);
    54   val thms = map_product
    52   val thms = map_product
    80 syntax
    78 syntax
    81   "_String" :: "xstr => string"    ("_")
    79   "_String" :: "xstr => string"    ("_")
    82 
    80 
    83 setup StringSyntax.setup
    81 setup StringSyntax.setup
    84 
    82 
       
    83 definition chars :: string where
       
    84   "chars = [Char Nibble0 Nibble0, Char Nibble0 Nibble1, Char Nibble0 Nibble2,
       
    85   Char Nibble0 Nibble3, Char Nibble0 Nibble4, Char Nibble0 Nibble5,
       
    86   Char Nibble0 Nibble6, Char Nibble0 Nibble7, Char Nibble0 Nibble8,
       
    87   Char Nibble0 Nibble9, Char Nibble0 NibbleA, Char Nibble0 NibbleB,
       
    88   Char Nibble0 NibbleC, Char Nibble0 NibbleD, Char Nibble0 NibbleE,
       
    89   Char Nibble0 NibbleF, Char Nibble1 Nibble0, Char Nibble1 Nibble1,
       
    90   Char Nibble1 Nibble2, Char Nibble1 Nibble3, Char Nibble1 Nibble4,
       
    91   Char Nibble1 Nibble5, Char Nibble1 Nibble6, Char Nibble1 Nibble7,
       
    92   Char Nibble1 Nibble8, Char Nibble1 Nibble9, Char Nibble1 NibbleA,
       
    93   Char Nibble1 NibbleB, Char Nibble1 NibbleC, Char Nibble1 NibbleD,
       
    94   Char Nibble1 NibbleE, Char Nibble1 NibbleF, CHR '' '', CHR ''!'',
       
    95   Char Nibble2 Nibble2, CHR ''#'', CHR ''$'', CHR ''%'', CHR ''&'',
       
    96   Char Nibble2 Nibble7, CHR ''('', CHR '')'', CHR ''*'', CHR ''+'', CHR '','',
       
    97   CHR ''-'', CHR ''.'', CHR ''/'', CHR ''0'', CHR ''1'', CHR ''2'', CHR ''3'',
       
    98   CHR ''4'', CHR ''5'', CHR ''6'', CHR ''7'', CHR ''8'', CHR ''9'', CHR '':'',
       
    99   CHR '';'', CHR ''<'', CHR ''='', CHR ''>'', CHR ''?'', CHR ''@'', CHR ''A'',
       
   100   CHR ''B'', CHR ''C'', CHR ''D'', CHR ''E'', CHR ''F'', CHR ''G'', CHR ''H'',
       
   101   CHR ''I'', CHR ''J'', CHR ''K'', CHR ''L'', CHR ''M'', CHR ''N'', CHR ''O'',
       
   102   CHR ''P'', CHR ''Q'', CHR ''R'', CHR ''S'', CHR ''T'', CHR ''U'', CHR ''V'',
       
   103   CHR ''W'', CHR ''X'', CHR ''Y'', CHR ''Z'', CHR ''['', Char Nibble5 NibbleC,
       
   104   CHR '']'', CHR ''^'', CHR ''_'', Char Nibble6 Nibble0, CHR ''a'', CHR ''b'',
       
   105   CHR ''c'', CHR ''d'', CHR ''e'', CHR ''f'', CHR ''g'', CHR ''h'', CHR ''i'',
       
   106   CHR ''j'', CHR ''k'', CHR ''l'', CHR ''m'', CHR ''n'', CHR ''o'', CHR ''p'',
       
   107   CHR ''q'', CHR ''r'', CHR ''s'', CHR ''t'', CHR ''u'', CHR ''v'', CHR ''w'',
       
   108   CHR ''x'', CHR ''y'', CHR ''z'', CHR ''{'', CHR ''|'', CHR ''}'', CHR ''~'',
       
   109   Char Nibble7 NibbleF, Char Nibble8 Nibble0, Char Nibble8 Nibble1,
       
   110   Char Nibble8 Nibble2, Char Nibble8 Nibble3, Char Nibble8 Nibble4,
       
   111   Char Nibble8 Nibble5, Char Nibble8 Nibble6, Char Nibble8 Nibble7,
       
   112   Char Nibble8 Nibble8, Char Nibble8 Nibble9, Char Nibble8 NibbleA,
       
   113   Char Nibble8 NibbleB, Char Nibble8 NibbleC, Char Nibble8 NibbleD,
       
   114   Char Nibble8 NibbleE, Char Nibble8 NibbleF, Char Nibble9 Nibble0,
       
   115   Char Nibble9 Nibble1, Char Nibble9 Nibble2, Char Nibble9 Nibble3,
       
   116   Char Nibble9 Nibble4, Char Nibble9 Nibble5, Char Nibble9 Nibble6,
       
   117   Char Nibble9 Nibble7, Char Nibble9 Nibble8, Char Nibble9 Nibble9,
       
   118   Char Nibble9 NibbleA, Char Nibble9 NibbleB, Char Nibble9 NibbleC,
       
   119   Char Nibble9 NibbleD, Char Nibble9 NibbleE, Char Nibble9 NibbleF,
       
   120   Char NibbleA Nibble0, Char NibbleA Nibble1, Char NibbleA Nibble2,
       
   121   Char NibbleA Nibble3, Char NibbleA Nibble4, Char NibbleA Nibble5,
       
   122   Char NibbleA Nibble6, Char NibbleA Nibble7, Char NibbleA Nibble8,
       
   123   Char NibbleA Nibble9, Char NibbleA NibbleA, Char NibbleA NibbleB,
       
   124   Char NibbleA NibbleC, Char NibbleA NibbleD, Char NibbleA NibbleE,
       
   125   Char NibbleA NibbleF, Char NibbleB Nibble0, Char NibbleB Nibble1,
       
   126   Char NibbleB Nibble2, Char NibbleB Nibble3, Char NibbleB Nibble4,
       
   127   Char NibbleB Nibble5, Char NibbleB Nibble6, Char NibbleB Nibble7,
       
   128   Char NibbleB Nibble8, Char NibbleB Nibble9, Char NibbleB NibbleA,
       
   129   Char NibbleB NibbleB, Char NibbleB NibbleC, Char NibbleB NibbleD,
       
   130   Char NibbleB NibbleE, Char NibbleB NibbleF, Char NibbleC Nibble0,
       
   131   Char NibbleC Nibble1, Char NibbleC Nibble2, Char NibbleC Nibble3,
       
   132   Char NibbleC Nibble4, Char NibbleC Nibble5, Char NibbleC Nibble6,
       
   133   Char NibbleC Nibble7, Char NibbleC Nibble8, Char NibbleC Nibble9,
       
   134   Char NibbleC NibbleA, Char NibbleC NibbleB, Char NibbleC NibbleC,
       
   135   Char NibbleC NibbleD, Char NibbleC NibbleE, Char NibbleC NibbleF,
       
   136   Char NibbleD Nibble0, Char NibbleD Nibble1, Char NibbleD Nibble2,
       
   137   Char NibbleD Nibble3, Char NibbleD Nibble4, Char NibbleD Nibble5,
       
   138   Char NibbleD Nibble6, Char NibbleD Nibble7, Char NibbleD Nibble8,
       
   139   Char NibbleD Nibble9, Char NibbleD NibbleA, Char NibbleD NibbleB,
       
   140   Char NibbleD NibbleC, Char NibbleD NibbleD, Char NibbleD NibbleE,
       
   141   Char NibbleD NibbleF, Char NibbleE Nibble0, Char NibbleE Nibble1,
       
   142   Char NibbleE Nibble2, Char NibbleE Nibble3, Char NibbleE Nibble4,
       
   143   Char NibbleE Nibble5, Char NibbleE Nibble6, Char NibbleE Nibble7,
       
   144   Char NibbleE Nibble8, Char NibbleE Nibble9, Char NibbleE NibbleA,
       
   145   Char NibbleE NibbleB, Char NibbleE NibbleC, Char NibbleE NibbleD,
       
   146   Char NibbleE NibbleE, Char NibbleE NibbleF, Char NibbleF Nibble0,
       
   147   Char NibbleF Nibble1, Char NibbleF Nibble2, Char NibbleF Nibble3,
       
   148   Char NibbleF Nibble4, Char NibbleF Nibble5, Char NibbleF Nibble6,
       
   149   Char NibbleF Nibble7, Char NibbleF Nibble8, Char NibbleF Nibble9,
       
   150   Char NibbleF NibbleA, Char NibbleF NibbleB, Char NibbleF NibbleC,
       
   151   Char NibbleF NibbleD, Char NibbleF NibbleE, Char NibbleF NibbleF]"
       
   152 
    85 
   153 
    86 subsection {* Strings as dedicated datatype *}
   154 subsection {* Strings as dedicated datatype *}
    87 
   155 
    88 datatype literal = STR string
   156 datatype literal = STR string
    89 
   157