Up to index of Isabelle/HOL/arrays
theory Type = JBasis:(* Title: HOL/MicroJava/J/Type.thy ID: $Id: Type.html,v 1.1 2002/11/28 16:11:18 kleing Exp $ Author: David von Oheimb, Gerwin Klein Copyright 1999 Technische Universitaet Muenchen *) header {* \isaheader{Java types} *} theory Type = JBasis: typedecl cnam -- "exceptions" datatype xcpt = NullPointer | ClassCast | OutOfMemory | ArrayIndexOutOfBounds | NegativeArraySize | ArrayStore -- "class names" datatype cname = Object | Xcpt xcpt | Cname cnam typedecl vnam -- "variable or field name" typedecl mname -- "method name" -- "names for @{text This} pointer and local/field variables" datatype vname = This | VName vnam -- "primitive type, cf. 4.2" datatype prim_ty = Void -- "'result type' of void methods" | Boolean | Integer | RetA nat -- "bytecode return addresses" datatype ref_ty -- "reference type, cf. 4.3" = NullT -- "null type, cf. 4.1" | ClassT cname -- "class type" | ArrayT ty -- "array type" and ty -- "any type, cf. 4.1" = PrimT prim_ty -- "primitive type" | RefT ref_ty -- "reference type" syntax NT :: "ty" Class :: "cname => ty" RA :: "nat => ty" Array :: "ty \<Rightarrow> ty" ("_.[]" [90] 90) translations "NT" == "RefT NullT" "Class C" == "RefT (ClassT C)" "T.[]" == "RefT (ArrayT T)" "RA pc" == "PrimT (RetA pc)" consts the_Class :: "ty \<Rightarrow> cname" isArray :: "ty \<Rightarrow> bool" recdef the_Class "{}" "the_Class (Class C) = C" "the_Class (T.[]) = Object" recdef isArray "{}" "isArray (T.[]) = True" "isArray T = False" end