src/HOL/Codegenerator_Test/Generate_Target_String_Literals.thy
author haftmann
Tue, 28 Jan 2025 13:02:42 +0100
changeset 81999 513f8fa74c82
parent 81761 a1dc03194053
permissions -rw-r--r--
more explicit tests for non-PolyML SML platforms
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
81761
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     1
(* Author: Florian Haftmann, TU Muenchen *)
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     2
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     3
section \<open>Test of target-language string literal operations\<close>
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     4
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     5
theory Generate_Target_String_Literals
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     6
imports
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     7
  "HOL-Library.Code_Test"
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     8
begin
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
     9
81999
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    10
context
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    11
begin
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    12
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    13
qualified definition computations where
81761
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    14
  \<open>computations = (
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    15
    STR ''abc'' + STR 0x20 + STR ''def'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    16
    String.implode ''abc'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    17
    String.explode STR ''abc'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    18
    String.literal_of_asciis [10, 20, 30, 40, 1111, 2222, 3333],
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    19
    size (STR ''abc''),
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    20
    STR ''def'' \<le> STR ''abc'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    21
    STR ''abc'' < STR ''def''
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    22
  )\<close>
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    23
81999
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    24
qualified definition results where
81761
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    25
  \<open>results = (
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    26
    STR ''abc def'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    27
    STR ''abc'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    28
    ''abc'',
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    29
    STR ''\<newline>'' + STR 0x14 + STR 0x1E + STR ''(W.'' + STR 0x05,
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    30
    3,
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    31
    False,
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    32
    True
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    33
  )\<close>
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    34
81999
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    35
qualified definition check where
81761
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    36
  \<open>check \<longleftrightarrow> computations = results\<close>
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    37
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    38
lemma check
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    39
  by code_simp
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    40
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    41
lemma check
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    42
  by normalization
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    43
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    44
lemma check
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    45
  by eval
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    46
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    47
test_code check in Scala
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    48
a1dc03194053 more correct code generation for string literals
haftmann
parents:
diff changeset
    49
end
81999
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    50
513f8fa74c82 more explicit tests for non-PolyML SML platforms
haftmann
parents: 81761
diff changeset
    51
end