(* Title: HOL/Bali/Name.thy Author: David von Oheimb *) subsection ‹Java names› theory Name imports Basis begin (* cf. 6.5 *) typedecl tnam ― ‹ordinary type name, i.e. class or interface name› typedecl pname ― ‹package name› typedecl mname ― ‹method name› typedecl vname ― ‹variable or field name› typedecl label ― ‹label as destination of break or continue› datatype ename ― ‹expression name› = VNam vname | Res ― ‹special name to model the return value of methods› datatype lname ― ‹names for local variables and the This pointer› = EName ename | This abbreviation VName :: "vname ⇒ lname" where "VName n == EName (VNam n)" abbreviation Result :: lname where "Result == EName Res"