src/HOL/Codegenerator_Test/Code_Test_PolyML.thy
changeset 81642 e77e8ef5bf9b
parent 68155 8b50f29a1992
child 81713 378b9d6c52b2
equal deleted inserted replaced
81641:5af6a5e4343b 81642:e77e8ef5bf9b
     1 (*  Title:      HOL/Codegenerator_Test/Code_Test_PolyML.thy
     1 (*  Title:      HOL/Codegenerator_Test/Code_Test_PolyML.thy
     2     Author:     Andreas Lochbihler, ETH Zurich
     2     Author:     Andreas Lochbihler, ETH Zurich
     3 
     3     Author:     Florian Haftmann, TU Muenchen
     4 Test case for test_code on PolyML
       
     5 *)
     4 *)
     6 
     5 
     7 theory Code_Test_PolyML imports  "HOL-Library.Code_Test" Code_Lazy_Test begin
     6 theory Code_Test_PolyML
       
     7 imports 
       
     8   "HOL-Library.Code_Test"
       
     9   Code_Lazy_Test
       
    10 begin
       
    11 
       
    12 text \<open>Test cases for \<^text>\<open>test_code\<close>\<close>
     8 
    13 
     9 test_code "14 + 7 * -12 = (140 div -2 :: integer)" in PolyML
    14 test_code "14 + 7 * -12 = (140 div -2 :: integer)" in PolyML
    10 
    15 
    11 value [PolyML] "14 + 7 * -12 :: integer"
    16 value [PolyML] "14 + 7 * -12 :: integer"
    12 
    17 
    13 test_code "stake 10 (cycle ''ab'') = ''ababababab''" in PolyML
    18 test_code "stake 10 (cycle ''ab'') = ''ababababab''" in PolyML
    14 
    19 
       
    20 text \<open>Test cases for bit operations on target language numerals\<close>
       
    21 
       
    22 unbundle bit_operations_syntax
       
    23 
       
    24 lemma \<open>bit (473514 :: integer) 5\<close>
       
    25   by normalization
       
    26 
       
    27 test_code \<open>bit (473514 :: integer) 5\<close> in PolyML
       
    28 
       
    29 lemma \<open>bit (- 805167 :: integer) 7\<close>
       
    30   by normalization
       
    31 
       
    32 test_code \<open>bit (- 805167 :: integer) 7\<close> in PolyML
       
    33 
       
    34 lemma \<open>473514 AND (767063 :: integer) = 208898\<close>
       
    35   by normalization
       
    36 
       
    37 test_code \<open>473514 AND (767063 :: integer) = 208898\<close> in PolyML
       
    38 
       
    39 lemma \<open>- 805167 AND (767063 :: integer) = 242769\<close>
       
    40   by normalization
       
    41 
       
    42 test_code \<open>- 805167 AND (767063 :: integer) = 242769\<close> in PolyML
       
    43 
       
    44 lemma \<open>473514 AND (- 314527 :: integer) = 209184\<close>
       
    45   by normalization
       
    46 
       
    47 test_code \<open>473514 AND (- 314527 :: integer) = 209184\<close> in PolyML
       
    48 
       
    49 lemma \<open>- 805167 AND (- 314527 :: integer) = - 839103\<close>
       
    50   by normalization
       
    51 
       
    52 test_code \<open>- 805167 AND (- 314527 :: integer) = - 839103\<close> in PolyML
       
    53 
       
    54 lemma \<open>473514 OR (767063 :: integer) = 1031679\<close>
       
    55   by normalization
       
    56 
       
    57 test_code \<open>473514 OR (767063 :: integer) = 1031679\<close> in PolyML
       
    58 
       
    59 lemma \<open>- 805167 OR (767063 :: integer) = - 280873\<close>
       
    60   by normalization
       
    61 
       
    62 test_code \<open>- 805167 OR (767063 :: integer) = - 280873\<close> in PolyML
       
    63 
       
    64 lemma \<open>473514 OR (- 314527 :: integer) = - 50197\<close>
       
    65   by normalization
       
    66 
       
    67 test_code \<open>473514 OR (- 314527 :: integer) = - 50197\<close> in PolyML
       
    68 
       
    69 lemma \<open>- 805167 OR (- 314527 :: integer) = - 280591\<close>
       
    70   by normalization
       
    71 
       
    72 test_code \<open>- 805167 OR (- 314527 :: integer) = - 280591\<close> in PolyML
       
    73 
       
    74 lemma \<open>473514 XOR (767063 :: integer) = 822781\<close>
       
    75   by normalization
       
    76 
       
    77 test_code \<open>473514 XOR (767063 :: integer) = 822781\<close> in PolyML
       
    78 
       
    79 lemma \<open>- 805167 XOR (767063 :: integer) = - 523642\<close>
       
    80   by normalization
       
    81 
       
    82 test_code \<open>- 805167 XOR (767063 :: integer) = - 523642\<close> in PolyML
       
    83 
       
    84 lemma \<open>473514 XOR (- 314527 :: integer) = - 259381\<close>
       
    85   by normalization
       
    86 
       
    87 test_code \<open>473514 XOR (- 314527 :: integer) = - 259381\<close> in PolyML
       
    88 
       
    89 lemma \<open>- 805167 XOR (- 314527 :: integer) = 558512\<close>
       
    90   by normalization
       
    91 
       
    92 test_code \<open>- 805167 XOR (- 314527 :: integer) = 558512\<close> in PolyML
       
    93 
       
    94 lemma \<open>NOT (473513 :: integer) = - 473514\<close>
       
    95   by normalization
       
    96 
       
    97 test_code \<open>NOT (473513 :: integer) = - 473514\<close> in PolyML
       
    98 
       
    99 lemma \<open>NOT (- 805167 :: integer) = 805166\<close>
       
   100   by normalization
       
   101 
       
   102 test_code \<open>NOT (- 805167 :: integer) = 805166\<close> in PolyML
       
   103 
       
   104 lemma \<open>(mask 39 :: integer) = 549755813887\<close>
       
   105   by normalization
       
   106 
       
   107 test_code \<open>(mask 39 :: integer) = 549755813887\<close> in PolyML
       
   108 
       
   109 lemma \<open>set_bit 15 (473514 :: integer) = 506282\<close>
       
   110   by normalization
       
   111 
       
   112 test_code \<open>set_bit 15 (473514 :: integer) = 506282\<close> in PolyML
       
   113 
       
   114 lemma \<open>set_bit 11 (- 805167 :: integer) = - 803119\<close>
       
   115   by normalization
       
   116 
       
   117 test_code \<open>set_bit 11 (- 805167 :: integer) = - 803119\<close> in PolyML
       
   118 
       
   119 lemma \<open>unset_bit 13 (473514 :: integer) = 465322\<close>
       
   120   by normalization
       
   121 
       
   122 test_code \<open>unset_bit 13 (473514 :: integer) = 465322\<close> in PolyML
       
   123 
       
   124 lemma \<open>unset_bit 12 (- 805167 :: integer) = - 809263\<close>
       
   125   by normalization
       
   126 
       
   127 test_code \<open>unset_bit 12 (- 805167 :: integer) = - 809263\<close> in PolyML
       
   128 
       
   129 lemma \<open>flip_bit 15 (473514 :: integer) = 506282\<close>
       
   130   by normalization
       
   131 
       
   132 test_code \<open>flip_bit 15 (473514 :: integer) = 506282\<close> in PolyML
       
   133 
       
   134 lemma \<open>flip_bit 12 (- 805167 :: integer) = - 809263\<close>
       
   135   by normalization
       
   136 
       
   137 test_code \<open>flip_bit 12 (- 805167 :: integer) = - 809263\<close> in PolyML
       
   138 
       
   139 lemma \<open>push_bit 12 (473514 :: integer) = 1939513344\<close>
       
   140   by normalization
       
   141 
       
   142 test_code \<open>push_bit 12 (473514 :: integer) = 1939513344\<close> in PolyML
       
   143 
       
   144 lemma \<open>push_bit 12 (- 805167 :: integer) = - 3297964032\<close>
       
   145   by normalization
       
   146 
       
   147 test_code \<open>push_bit 12 (- 805167 :: integer) = - 3297964032\<close> in PolyML
       
   148 
       
   149 lemma \<open>drop_bit 12 (473514 :: integer) = 115\<close>
       
   150   by normalization
       
   151 
       
   152 test_code \<open>drop_bit 12 (473514 :: integer) = 115\<close> in PolyML
       
   153 
       
   154 lemma \<open>drop_bit 12 (- 805167 :: integer) = - 197\<close>
       
   155   by normalization
       
   156 
       
   157 test_code \<open>drop_bit 12 (- 805167 :: integer) = - 197\<close> in PolyML
       
   158 
       
   159 lemma \<open>take_bit 12 (473514 :: integer) = 2474\<close>
       
   160   by normalization
       
   161 
       
   162 test_code \<open>take_bit 12 (473514 :: integer) = 2474\<close> in PolyML
       
   163 
       
   164 lemma \<open>take_bit 12 (- 805167 :: integer) = 1745\<close>
       
   165   by normalization
       
   166 
       
   167 test_code \<open>take_bit 12 (- 805167 :: integer) = 1745\<close> in PolyML
       
   168 
       
   169 lemma \<open>signed_take_bit 12 (473514 :: integer) = - 1622\<close>
       
   170   by normalization
       
   171 
       
   172 test_code \<open>signed_take_bit 12 (473514 :: integer) = - 1622\<close> in PolyML
       
   173 
       
   174 lemma \<open>signed_take_bit 12 (- 805167 :: integer) = - 2351\<close>
       
   175   by normalization
       
   176 
       
   177 test_code \<open>signed_take_bit 12 (- 805167 :: integer) = - 2351\<close> in PolyML
       
   178 
    15 end
   179 end