src/HOL/MicroJava/J/JListExample.thy
changeset 35416 d8d7d1b785af
parent 32356 e11cd88e6ade
child 39126 ee117c5b3b75
equal deleted inserted replaced
35342:4dc65845eab3 35416:d8d7d1b785af
    19   l1_nam :: vnam
    19   l1_nam :: vnam
    20   l2_nam :: vnam
    20   l2_nam :: vnam
    21   l3_nam :: vnam
    21   l3_nam :: vnam
    22   l4_nam :: vnam
    22   l4_nam :: vnam
    23 
    23 
    24 constdefs
    24 definition val_name :: vname where
    25   val_name :: vname
       
    26   "val_name == VName val_nam"
    25   "val_name == VName val_nam"
    27 
    26 
    28   next_name :: vname
    27 definition next_name :: vname where
    29   "next_name == VName next_nam"
    28   "next_name == VName next_nam"
    30 
    29 
    31   l_name :: vname
    30 definition l_name :: vname where
    32   "l_name == VName l_nam"
    31   "l_name == VName l_nam"
    33 
    32 
    34   l1_name :: vname
    33 definition l1_name :: vname where
    35   "l1_name == VName l1_nam"
    34   "l1_name == VName l1_nam"
    36 
    35 
    37   l2_name :: vname
    36 definition l2_name :: vname where
    38   "l2_name == VName l2_nam"
    37   "l2_name == VName l2_nam"
    39 
    38 
    40   l3_name :: vname
    39 definition l3_name :: vname where
    41   "l3_name == VName l3_nam"
    40   "l3_name == VName l3_nam"
    42 
    41 
    43   l4_name :: vname
    42 definition l4_name :: vname where
    44   "l4_name == VName l4_nam"
    43   "l4_name == VName l4_nam"
    45 
    44 
    46   list_class :: "java_mb class"
    45 definition list_class :: "java_mb class" where
    47   "list_class ==
    46   "list_class ==
    48     (Object,
    47     (Object,
    49      [(val_name, PrimT Integer), (next_name, RefT (ClassT list_name))],
    48      [(val_name, PrimT Integer), (next_name, RefT (ClassT list_name))],
    50      [((append_name, [RefT (ClassT list_name)]), PrimT Void,
    49      [((append_name, [RefT (ClassT list_name)]), PrimT Void,
    51       ([l_name], [],
    50       ([l_name], [],
    54        Else
    53        Else
    55          Expr ({list_name}({list_name}(LAcc This)..next_name)..
    54          Expr ({list_name}({list_name}(LAcc This)..next_name)..
    56            append_name({[RefT (ClassT list_name)]}[LAcc l_name])), 
    55            append_name({[RefT (ClassT list_name)]}[LAcc l_name])), 
    57        Lit Unit))])"
    56        Lit Unit))])"
    58 
    57 
    59   example_prg :: "java_mb prog"
    58 definition example_prg :: "java_mb prog" where
    60   "example_prg == [ObjectC, (list_name, list_class)]"
    59   "example_prg == [ObjectC, (list_name, list_class)]"
    61 
    60 
    62 types_code
    61 types_code
    63   cname ("string")
    62   cname ("string")
    64   vnam ("string")
    63   vnam ("string")