36 --{* direct implementation, cf. 8.1.3 *} |
36 --{* direct implementation, cf. 8.1.3 *} |
37 where "implmt1 G = {(C,I). C\<noteq>Object \<and> (\<exists>c\<in>class G C: I\<in>set (superIfs c))}" |
37 where "implmt1 G = {(C,I). C\<noteq>Object \<and> (\<exists>c\<in>class G C: I\<in>set (superIfs c))}" |
38 |
38 |
39 |
39 |
40 abbreviation |
40 abbreviation |
41 subint1_syntax :: "prog => [qtname, qtname] => bool" ("_|-_<:I1_" [71,71,71] 70) |
41 subint1_syntax :: "prog => [qtname, qtname] => bool" ("_\<turnstile>_\<prec>I1_" [71,71,71] 70) |
42 where "G|-I <:I1 J == (I,J) \<in> subint1 G" |
42 where "G\<turnstile>I \<prec>I1 J == (I,J) \<in> subint1 G" |
43 |
43 |
44 abbreviation |
44 abbreviation |
45 subint_syntax :: "prog => [qtname, qtname] => bool" ("_|-_<=:I _"[71,71,71] 70) |
45 subint_syntax :: "prog => [qtname, qtname] => bool" ("_\<turnstile>_\<preceq>I _" [71,71,71] 70) |
46 where "G|-I <=:I J == (I,J) \<in>(subint1 G)^*" --{* cf. 9.1.3 *} |
46 where "G\<turnstile>I \<preceq>I J == (I,J) \<in>(subint1 G)^*" --{* cf. 9.1.3 *} |
47 |
47 |
48 abbreviation |
48 abbreviation |
49 implmt1_syntax :: "prog => [qtname, qtname] => bool" ("_|-_~>1_" [71,71,71] 70) |
49 implmt1_syntax :: "prog => [qtname, qtname] => bool" ("_\<turnstile>_\<leadsto>1_" [71,71,71] 70) |
50 where "G|-C ~>1 I == (C,I) \<in> implmt1 G" |
50 where "G\<turnstile>C \<leadsto>1 I == (C,I) \<in> implmt1 G" |
51 |
51 |
52 notation (xsymbols) |
52 notation (ASCII) |
53 subint1_syntax ("_\<turnstile>_\<prec>I1_" [71,71,71] 70) and |
53 subint1_syntax ("_|-_<:I1_" [71,71,71] 70) and |
54 subint_syntax ("_\<turnstile>_\<preceq>I _" [71,71,71] 70) and |
54 subint_syntax ("_|-_<=:I _"[71,71,71] 70) and |
55 implmt1_syntax ("_\<turnstile>_\<leadsto>1_" [71,71,71] 70) |
55 implmt1_syntax ("_|-_~>1_" [71,71,71] 70) |
56 |
56 |
57 |
57 |
58 subsubsection "subclass and subinterface relations" |
58 subsubsection "subclass and subinterface relations" |
59 |
59 |
60 (* direct subinterface in Decl.thy, cf. 9.1.3 *) |
60 (* direct subinterface in Decl.thy, cf. 9.1.3 *) |