src/HOL/MicroJava/J/Type.thy
author Andreas Lochbihler
Fri, 05 Aug 2011 14:16:44 +0200
changeset 44035 322d1657c40c
parent 35102 cc7a0b9f938c
child 44037 25011c3a5c3d
permissions -rw-r--r--
replace old SML code generator by new code generator in MicroJava/JVM and /BV
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/J/Type.thy
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     2
    Author:     David von Oheimb
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     3
    Copyright   1999 Technische Universitaet Muenchen
11070
cc421547e744 improved document (added headers etc)
oheimb
parents: 11026
diff changeset
     4
*)
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     5
12911
704713ca07ea new document
kleing
parents: 12517
diff changeset
     6
header {* \isaheader{Java types} *}
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     7
16417
9bc16273c2d4 migrated theory headers to new format
haftmann
parents: 12951
diff changeset
     8
theory Type imports JBasis begin
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     9
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    10
typedecl cnam 
44035
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    11
instantiation cnam :: equal begin
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    12
definition "HOL.equal (cn :: cnam) cn' \<longleftrightarrow> cn = cn'"
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    13
instance proof qed(simp add: equal_cnam_def)
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    14
end
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    15
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    16
 -- "exceptions"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    17
datatype 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    18
  xcpt   
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    19
  = NullPointer
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    20
  | ClassCast
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    21
  | OutOfMemory
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    22
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    23
-- "class names"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    24
datatype cname  
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    25
  = Object 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    26
  | Xcpt xcpt 
12951
a9fdcb71d252 introduces SystemClasses and BVExample
kleing
parents: 12911
diff changeset
    27
  | Cname cnam 
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    28
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    29
typedecl vnam   -- "variable or field name"
44035
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    30
instantiation vnam :: equal begin
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    31
definition "HOL.equal (vn :: vnam) vn' \<longleftrightarrow> vn = vn'"
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    32
instance proof qed(simp add: equal_vnam_def)
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    33
end
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    34
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    35
typedecl mname  -- "method name"
44035
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    36
instantiation mname :: equal begin
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    37
definition "HOL.equal (M :: mname) M' \<longleftrightarrow> M = M'"
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    38
instance proof qed(simp add: equal_mname_def)
322d1657c40c replace old SML code generator by new code generator in MicroJava/JVM and /BV
Andreas Lochbihler
parents: 35102
diff changeset
    39
end
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    40
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    41
-- "names for @{text This} pointer and local/field variables"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    42
datatype vname 
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    43
  = This
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    44
  | VName vnam
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    45
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    46
-- "primitive type, cf. 4.2"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    47
datatype prim_ty 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    48
  = Void          -- "'result type' of void methods"
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    49
  | Boolean
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    50
  | Integer
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    51
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    52
-- "reference type, cf. 4.3"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    53
datatype ref_ty   
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    54
  = NullT         -- "null type, cf. 4.1"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    55
  | ClassT cname  -- "class type"
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    56
12517
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    57
-- "any type, cf. 4.1"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    58
datatype ty 
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    59
  = PrimT prim_ty -- "primitive type"
360e3215f029 exception merge, cleanup, tuned
kleing
parents: 12338
diff changeset
    60
  | RefT  ref_ty  -- "reference type"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    61
35102
cc7a0b9f938c modernized translations;
wenzelm
parents: 16417
diff changeset
    62
abbreviation NT :: ty
cc7a0b9f938c modernized translations;
wenzelm
parents: 16417
diff changeset
    63
  where "NT == RefT NullT"
10061
fe82134773dc added HTML syntax; added spaces in normal syntax for better documents
kleing
parents: 10042
diff changeset
    64
35102
cc7a0b9f938c modernized translations;
wenzelm
parents: 16417
diff changeset
    65
abbreviation Class :: "cname  => ty"
cc7a0b9f938c modernized translations;
wenzelm
parents: 16417
diff changeset
    66
  where "Class C == RefT (ClassT C)"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    67
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    68
end