src/HOL/Bali/Name.thy
changeset 32960 69916a850301
parent 24783 5a3e336a2e37
child 35067 af4c18c30593
equal deleted inserted replaced
32959:23a8c5ac35f8 32960:69916a850301
     5 header {* Java names *}
     5 header {* Java names *}
     6 
     6 
     7 theory Name imports Basis begin
     7 theory Name imports Basis begin
     8 
     8 
     9 (* cf. 6.5 *) 
     9 (* cf. 6.5 *) 
    10 typedecl tnam	--{* ordinary type name, i.e. class or interface name *}
    10 typedecl tnam   --{* ordinary type name, i.e. class or interface name *}
    11 typedecl pname  --{* package name *}
    11 typedecl pname  --{* package name *}
    12 typedecl mname  --{* method name *}
    12 typedecl mname  --{* method name *}
    13 typedecl vname  --{* variable or field name *}
    13 typedecl vname  --{* variable or field name *}
    14 typedecl label  --{* label as destination of break or continue *}
    14 typedecl label  --{* label as destination of break or continue *}
    15 
    15 
    26 
    26 
    27 translations
    27 translations
    28   "VName n" == "EName (VNam n)"
    28   "VName n" == "EName (VNam n)"
    29   "Result"  == "EName Res"
    29   "Result"  == "EName Res"
    30 
    30 
    31 datatype xname		--{* names of standard exceptions *}
    31 datatype xname          --{* names of standard exceptions *}
    32 	= Throwable
    32         = Throwable
    33 	| NullPointer | OutOfMemory | ClassCast   
    33         | NullPointer | OutOfMemory | ClassCast   
    34 	| NegArrSize  | IndOutBound | ArrStore
    34         | NegArrSize  | IndOutBound | ArrStore
    35 
    35 
    36 lemma xn_cases: 
    36 lemma xn_cases: 
    37   "xn = Throwable   \<or> xn = NullPointer \<or>  
    37   "xn = Throwable   \<or> xn = NullPointer \<or>  
    38          xn = OutOfMemory \<or> xn = ClassCast \<or> 
    38          xn = OutOfMemory \<or> xn = ClassCast \<or> 
    39          xn = NegArrSize  \<or> xn = IndOutBound \<or> xn = ArrStore"
    39          xn = NegArrSize  \<or> xn = IndOutBound \<or> xn = ArrStore"
    40 apply (induct xn)
    40 apply (induct xn)
    41 apply auto
    41 apply auto
    42 done
    42 done
    43 
    43 
    44 
    44 
    45 datatype tname	--{* type names for standard classes and other type names *}
    45 datatype tname  --{* type names for standard classes and other type names *}
    46 	= Object'
    46         = Object'
    47 	| SXcpt'   xname
    47         | SXcpt'   xname
    48 	| TName   tnam
    48         | TName   tnam
    49 
    49 
    50 record   qtname = --{* qualified tname cf. 6.5.3, 6.5.4*}
    50 record   qtname = --{* qualified tname cf. 6.5.3, 6.5.4*}
    51           pid :: pname  
    51           pid :: pname  
    52           tid :: tname
    52           tid :: tname
    53 
    53