| author | paulson <lp15@cam.ac.uk> | 
| Thu, 24 Jan 2019 14:44:52 +0000 | |
| changeset 69735 | 8230dca028eb | 
| parent 67443 | 3abf6a722518 | 
| permissions | -rw-r--r-- | 
| 11026 
a50365d21144
converted to Isar, simplifying recursion on class hierarchy
 oheimb parents: 
10061diff
changeset | 1 | (* Title: HOL/MicroJava/J/Value.thy | 
| 41589 | 2 | Author: David von Oheimb, Technische Universitaet Muenchen | 
| 11070 | 3 | *) | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 4 | |
| 61361 | 5 | section \<open>Java Values\<close> | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 6 | |
| 16417 | 7 | theory Value imports Type begin | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 8 | |
| 67443 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 9 | typedecl loc' \<comment> \<open>locations, i.e. abstract references on objects\<close> | 
| 12517 | 10 | |
| 58310 | 11 | datatype loc | 
| 67443 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 12 | = XcptRef xcpt \<comment> \<open>special locations for pre-allocated system exceptions\<close> | 
| 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 13 | | Loc loc' \<comment> \<open>usual locations (references on objects)\<close> | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 14 | |
| 58310 | 15 | datatype val | 
| 67443 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 16 | = Unit \<comment> \<open>dummy result value of void methods\<close> | 
| 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 17 | | Null \<comment> \<open>null reference\<close> | 
| 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 18 | | Bool bool \<comment> \<open>Boolean value\<close> | 
| 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 19 | | Intg int \<comment> \<open>integer value, name Intg instead of Int because | 
| 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 20 | of clash with HOL/Set.thy\<close> | 
| 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 21 | | Addr loc \<comment> \<open>addresses, i.e. locations of objects\<close> | 
| 10061 
fe82134773dc
added HTML syntax; added spaces in normal syntax for better documents
 kleing parents: 
10042diff
changeset | 22 | |
| 39758 | 23 | primrec the_Bool :: "val => bool" where | 
| 10061 
fe82134773dc
added HTML syntax; added spaces in normal syntax for better documents
 kleing parents: 
10042diff
changeset | 24 | "the_Bool (Bool b) = b" | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 25 | |
| 39758 | 26 | primrec the_Intg :: "val => int" where | 
| 10061 
fe82134773dc
added HTML syntax; added spaces in normal syntax for better documents
 kleing parents: 
10042diff
changeset | 27 | "the_Intg (Intg i) = i" | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 28 | |
| 39758 | 29 | primrec the_Addr :: "val => loc" where | 
| 10061 
fe82134773dc
added HTML syntax; added spaces in normal syntax for better documents
 kleing parents: 
10042diff
changeset | 30 | "the_Addr (Addr a) = a" | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 31 | |
| 67443 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 32 | primrec defpval :: "prim_ty => val" \<comment> \<open>default value for primitive types\<close> where | 
| 10061 
fe82134773dc
added HTML syntax; added spaces in normal syntax for better documents
 kleing parents: 
10042diff
changeset | 33 | "defpval Void = Unit" | 
| 39758 | 34 | | "defpval Boolean = Bool False" | 
| 35 | | "defpval Integer = Intg 0" | |
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 36 | |
| 67443 
3abf6a722518
standardized towards new-style formal comments: isabelle update_comments;
 wenzelm parents: 
62042diff
changeset | 37 | primrec default_val :: "ty => val" \<comment> \<open>default value for all types\<close> where | 
| 10061 
fe82134773dc
added HTML syntax; added spaces in normal syntax for better documents
 kleing parents: 
10042diff
changeset | 38 | "default_val (PrimT pt) = defpval pt" | 
| 39758 | 39 | | "default_val (RefT r ) = Null" | 
| 9346 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 40 | |
| 
297dcbf64526
re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
 oheimb parents: diff
changeset | 41 | end |