src/HOL/Bali/Type.thy
author wenzelm
Sun, 23 Apr 2017 14:15:09 +0200
changeset 65553 006a274cdbc2
parent 62042 6c6ccf573479
child 67443 3abf6a722518
permissions -rw-r--r--
added missing file (amending f533820e7248);
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12857
a4386cc9b1c3 tuned header;
wenzelm
parents: 12854
diff changeset
     1
(*  Title:      HOL/Bali/Type.thy
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     2
    Author:     David von Oheimb
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     3
*)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     4
62042
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
     5
subsection \<open>Java types\<close>
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     6
16417
9bc16273c2d4 migrated theory headers to new format
haftmann
parents: 14981
diff changeset
     7
theory Type imports Name begin
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
     8
62042
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
     9
text \<open>
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    10
simplifications:
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    11
\begin{itemize}
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    12
\item only the most important primitive types
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    13
\item the null type is regarded as reference type
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    14
\end{itemize}
62042
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    15
\<close>
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    16
62042
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    17
datatype prim_ty        \<comment>\<open>primitive type, cf. 4.2\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    18
        = Void          \<comment>\<open>result type of void methods\<close>
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 16417
diff changeset
    19
        | Boolean
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 16417
diff changeset
    20
        | Integer
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    21
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    22
62042
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    23
datatype ref_ty         \<comment>\<open>reference type, cf. 4.3\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    24
        = NullT         \<comment>\<open>null type, cf. 4.1\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    25
        | IfaceT qtname \<comment>\<open>interface type\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    26
        | ClassT qtname \<comment>\<open>class type\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    27
        | ArrayT ty     \<comment>\<open>array type\<close>
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    28
62042
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    29
and ty                  \<comment>\<open>any type, cf. 4.1\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    30
        = PrimT prim_ty \<comment>\<open>primitive type\<close>
6c6ccf573479 isabelle update_cartouches -c -t;
wenzelm
parents: 58887
diff changeset
    31
        | RefT  ref_ty  \<comment>\<open>reference type\<close>
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    32
35067
af4c18c30593 modernized syntax translations, using mostly abbreviation/notation;
wenzelm
parents: 32960
diff changeset
    33
abbreviation "NT == RefT NullT"
af4c18c30593 modernized syntax translations, using mostly abbreviation/notation;
wenzelm
parents: 32960
diff changeset
    34
abbreviation "Iface I == RefT (IfaceT I)"
af4c18c30593 modernized syntax translations, using mostly abbreviation/notation;
wenzelm
parents: 32960
diff changeset
    35
abbreviation "Class C == RefT (ClassT C)"
af4c18c30593 modernized syntax translations, using mostly abbreviation/notation;
wenzelm
parents: 32960
diff changeset
    36
abbreviation Array :: "ty \<Rightarrow> ty"  ("_.[]" [90] 90)
af4c18c30593 modernized syntax translations, using mostly abbreviation/notation;
wenzelm
parents: 32960
diff changeset
    37
  where "T.[] == RefT (ArrayT T)"
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    38
37956
ee939247b2fb modernized/unified some specifications;
wenzelm
parents: 35431
diff changeset
    39
definition
ee939247b2fb modernized/unified some specifications;
wenzelm
parents: 35431
diff changeset
    40
  the_Class :: "ty \<Rightarrow> qtname"
ee939247b2fb modernized/unified some specifications;
wenzelm
parents: 35431
diff changeset
    41
  where "the_Class T = (SOME C. T = Class C)" (** primrec not possible here **)
12854
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    42
 
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    43
lemma the_Class_eq [simp]: "the_Class (Class C)= C"
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    44
by (auto simp add: the_Class_def)
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    45
00d4a435777f Isabelle/Bali sources;
schirmer
parents:
diff changeset
    46
end