src/HOLCF/IOA/meta_theory/Automata.ML
author paulson
Mon, 23 Jun 1997 10:42:03 +0200
changeset 3457 a8ab7c64817c
parent 3433 2de17c994071
child 3521 bdc51b4c6050
permissions -rw-r--r--
Ran expandshort
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     1
(*  Title:      HOLCF/IOA/meta_theory/Automata.ML
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
     2
    ID:         $Id$
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     3
    Author:     Olaf Mueller, Tobias Nipkow, Konrad Slind
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     4
    Copyright   1994, 1996  TU Muenchen
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     5
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     6
The I/O automata of Lynch and Tuttle.
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     7
*)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     8
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     9
(* Has been removed from HOL-simpset, who knows why? *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    10
Addsimps [Let_def];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    11
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    12
open reachable;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    13
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    14
val ioa_projections = [asig_of_def, starts_of_def, trans_of_def];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    15
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    16
(* ----------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    17
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    18
section "asig_of, starts_of, trans_of";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    19
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    20
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    21
goal thy
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    22
"asig_of((x,y,z)) = x & starts_of((x,y,z)) = y & trans_of((x,y,z)) = z";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    23
  by (simp_tac (!simpset addsimps ioa_projections) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    24
qed "ioa_triple_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    25
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    26
goalw thy [ioa_def,state_trans_def,actions_def, is_asig_def]
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    27
  "!!A. [| IOA(A); (s1,a,s2):trans_of(A) |] ==> a:act A";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    28
  by (REPEAT(etac conjE 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    29
  by (EVERY1[etac allE, etac impE, atac]);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    30
  by (Asm_full_simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    31
qed "trans_in_actions";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    32
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    33
goal thy
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    34
"starts_of(A || B) = {p. fst(p):starts_of(A) & snd(p):starts_of(B)}";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    35
  by (simp_tac (!simpset addsimps (par_def::ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    36
qed "starts_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    37
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    38
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    39
(* ----------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    40
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    41
section "actions and par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    42
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    43
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    44
goal thy 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    45
"actions(asig_comp a b) = actions(a) Un actions(b)";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    46
  by (simp_tac (!simpset addsimps
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    47
               ([actions_def,asig_comp_def]@asig_projections)) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    48
  by (fast_tac (set_cs addSIs [equalityI]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    49
qed "actions_asig_comp";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    50
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    51
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    52
goal thy "asig_of(A || B) = asig_comp (asig_of A) (asig_of B)";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    53
  by (simp_tac (!simpset addsimps (par_def::ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    54
qed "asig_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    55
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    56
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    57
goal thy "ext (A1||A2) =    \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    58
\  (ext A1) Un (ext A2)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    59
by (asm_full_simp_tac (!simpset addsimps [externals_def,asig_of_par,asig_comp_def,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    60
      asig_inputs_def,asig_outputs_def,Un_def,set_diff_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
by (rtac set_ext 1); 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    62
by (fast_tac set_cs 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    63
qed"externals_of_par"; 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    64
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    65
goal thy "act (A1||A2) =    \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    66
\  (act A1) Un (act A2)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    67
by (asm_full_simp_tac (!simpset addsimps [actions_def,asig_of_par,asig_comp_def,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    68
      asig_inputs_def,asig_outputs_def,asig_internals_def,Un_def,set_diff_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    69
by (rtac set_ext 1); 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    70
by (fast_tac set_cs 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    71
qed"actions_of_par"; 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    72
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    73
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    74
goal thy "inp (A1||A2) =\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    75
\         ((inp A1) Un (inp A2)) - ((out A1) Un (out A2))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    76
by (asm_full_simp_tac (!simpset addsimps [actions_def,asig_of_par,asig_comp_def,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    77
      asig_inputs_def,asig_outputs_def,Un_def,set_diff_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    78
qed"inputs_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    79
  
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    80
goal thy "out (A1||A2) =\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    81
\         (out A1) Un (out A2)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    82
by (asm_full_simp_tac (!simpset addsimps [actions_def,asig_of_par,asig_comp_def,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    83
      asig_outputs_def,Un_def,set_diff_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    84
qed"outputs_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    86
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    87
(* ---------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    88
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    89
section "actions and compatibility"; 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    90
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    91
goal thy"compatible A B = compatible B A";
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    92
by (asm_full_simp_tac (!simpset addsimps [compatible_def,Int_commute]) 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    93
by (Auto_tac());
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    94
qed"compat_commute";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    95
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    96
goalw thy [externals_def,actions_def,compatible_def]
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    97
 "!! a. [| compatible A1 A2; a:ext A1|] ==> a~:int A2";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    98
by (Asm_full_simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    99
by (best_tac (set_cs addEs [equalityCE]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   100
qed"ext1_is_not_int2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   101
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   102
(* just commuting the previous one: better commute compatible *)
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   103
goalw thy [externals_def,actions_def,compatible_def]
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   104
 "!! a. [| compatible A2 A1 ; a:ext A1|] ==> a~:int A2";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   105
by (Asm_full_simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   106
by (best_tac (set_cs addEs [equalityCE]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   107
qed"ext2_is_not_int1";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   108
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   109
bind_thm("ext1_ext2_is_not_act2",ext1_is_not_int2 RS int_and_ext_is_act);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   110
bind_thm("ext1_ext2_is_not_act1",ext2_is_not_int1 RS int_and_ext_is_act);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   111
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   112
goalw thy  [externals_def,actions_def,compatible_def]
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   113
 "!! x. [| compatible A B; x:int A |] ==> x~:ext B";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   114
by (Asm_full_simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   115
by (best_tac (set_cs addEs [equalityCE]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   116
qed"intA_is_not_extB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   117
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   118
goalw thy [externals_def,actions_def,compatible_def,is_asig_def,asig_of_def]
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   119
"!! a. [| compatible A B; a:int A |] ==> a ~: act B";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   120
by (Asm_full_simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   121
by (best_tac (set_cs addEs [equalityCE]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   122
qed"intA_is_not_actB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   123
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   124
goalw thy [asig_outputs_def,asig_internals_def,actions_def,asig_inputs_def,
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   125
    compatible_def,is_asig_def,asig_of_def]
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   126
"!! a. [| compatible A B; a:out A ;a:act B|] ==> a : inp B";
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   127
by (Asm_full_simp_tac 1);
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   128
by (best_tac (set_cs addEs [equalityCE]) 1);
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   129
qed"outAactB_is_inpB";
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   130
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   131
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   132
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   133
(* ---------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   134
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   135
section "invariants";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   136
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   137
val [p1,p2] = goalw thy [invariant_def]
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   138
  "[| !!s. s:starts_of(A) ==> P(s);     \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   139
\     !!s t a. [|reachable A s; P(s)|] ==> (s,a,t): trans_of(A) --> P(t) |] \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   140
\  ==> invariant A P";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   141
by (rtac allI 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   142
by (rtac impI 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   143
by (res_inst_tac [("za","s")] reachable.induct 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   144
by (atac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   145
by (etac p1 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   146
by (eres_inst_tac [("s1","sa")] (p2 RS mp) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   147
by (REPEAT (atac 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   148
qed"invariantI";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   149
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   150
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   151
val [p1,p2] = goal thy
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   152
 "[| !!s. s : starts_of(A) ==> P(s); \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   153
\   !!s t a. reachable A s ==> P(s) --> (s,a,t):trans_of(A) --> P(t) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   154
\ |] ==> invariant A P";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   155
  by (fast_tac (HOL_cs addSIs [invariantI] addSDs [p1,p2]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   156
qed "invariantI1";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   157
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   158
val [p1,p2] = goalw thy [invariant_def]
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   159
"[| invariant A P; reachable A s |] ==> P(s)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   160
   br(p2 RS (p1 RS spec RS mp))1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   161
qed "invariantE";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   162
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   163
(* ---------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   164
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   165
section "restrict";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   166
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   167
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   168
goal thy "starts_of(restrict ioa acts) = starts_of(ioa) &     \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   169
\             trans_of(restrict ioa acts) = trans_of(ioa)";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   170
by (simp_tac (!simpset addsimps ([restrict_def]@ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   171
qed "cancel_restrict_a";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   172
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   173
goal thy "reachable (restrict ioa acts) s = reachable ioa s";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   174
by (rtac iffI 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   175
by (etac reachable.induct 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   176
by (asm_full_simp_tac (!simpset addsimps [cancel_restrict_a,reachable_0]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   177
by (etac reachable_n 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   178
by (asm_full_simp_tac (!simpset addsimps [cancel_restrict_a]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   179
(* <--  *)
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   180
by (etac reachable.induct 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   181
by (rtac reachable_0 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   182
by (asm_full_simp_tac (!simpset addsimps [cancel_restrict_a]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   183
by (etac reachable_n 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   184
by (asm_full_simp_tac (!simpset addsimps [cancel_restrict_a]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   185
qed "cancel_restrict_b";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   186
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   187
goal thy "starts_of(restrict ioa acts) = starts_of(ioa) &     \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   188
\             trans_of(restrict ioa acts) = trans_of(ioa) & \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   189
\             reachable (restrict ioa acts) s = reachable ioa s";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   190
by (simp_tac (!simpset addsimps [cancel_restrict_a,cancel_restrict_b]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   191
qed"cancel_restrict";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   192
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   193
(* ---------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   194
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   195
section "rename";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   196
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   197
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   198
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   199
goal thy "!!f. s -a--(rename C f)-> t ==> (? x. Some(x) = f(a) & s -x--C-> t)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   200
by (asm_full_simp_tac (!simpset addsimps [Let_def,rename_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   201
qed"trans_rename";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   202
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   203
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   204
goal thy "!!s.[| reachable (rename C g) s |] ==> reachable C s";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   205
by (etac reachable.induct 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   206
by (rtac reachable_0 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   207
by (asm_full_simp_tac (!simpset addsimps [rename_def]@ioa_projections) 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   208
by (dtac trans_rename 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   209
by (etac exE 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   210
by (etac conjE 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   211
by (etac reachable_n 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   212
by (assume_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   213
qed"reachable_rename";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   214
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   215
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   216
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   217
(* ---------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   218
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   219
section "trans_of(A||B)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   220
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   221
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   222
goal thy "!!A.[|(s,a,t):trans_of (A||B); a:act A|] \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   223
\             ==> (fst s,a,fst t):trans_of A";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   224
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   225
qed"trans_A_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   226
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   227
goal thy "!!A.[|(s,a,t):trans_of (A||B); a:act B|] \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   228
\             ==> (snd s,a,snd t):trans_of B";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   229
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   230
qed"trans_B_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   231
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   232
goal thy "!!A.[|(s,a,t):trans_of (A||B); a~:act A|]\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   233
\             ==> fst s = fst t";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   234
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   235
qed"trans_A_proj2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   236
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   237
goal thy "!!A.[|(s,a,t):trans_of (A||B); a~:act B|]\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   238
\             ==> snd s = snd t";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   239
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   240
qed"trans_B_proj2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   241
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   242
goal thy "!!A.(s,a,t):trans_of (A||B) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   243
\              ==> a :act A | a :act B";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   244
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   245
qed"trans_AB_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   246
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   247
goal thy "!!A. [|a:act A;a:act B;\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   248
\      (fst s,a,fst t):trans_of A;(snd s,a,snd t):trans_of B|]\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   249
\  ==> (s,a,t):trans_of (A||B)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   250
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   251
qed"trans_AB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   252
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   253
goal thy "!!A. [|a:act A;a~:act B;\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   254
\      (fst s,a,fst t):trans_of A;snd s=snd t|]\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   255
\  ==> (s,a,t):trans_of (A||B)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   256
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   257
qed"trans_A_notB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   258
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   259
goal thy "!!A. [|a~:act A;a:act B;\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   260
\      (snd s,a,snd t):trans_of B;fst s=fst t|]\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   261
\  ==> (s,a,t):trans_of (A||B)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   262
by (asm_full_simp_tac (!simpset addsimps [Let_def,par_def,trans_of_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   263
qed"trans_notA_B";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   264
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   265
val trans_of_defs1 = [trans_AB,trans_A_notB,trans_notA_B];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   266
val trans_of_defs2 = [trans_A_proj,trans_B_proj,trans_A_proj2,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   267
                      trans_B_proj2,trans_AB_proj];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   268
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   269
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   270
goal thy 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   271
"(s,a,t) : trans_of(A || B || C || D) =                                      \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   272
\ ((a:actions(asig_of(A)) | a:actions(asig_of(B)) | a:actions(asig_of(C)) |  \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   273
\   a:actions(asig_of(D))) &                                                 \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   274
\  (if a:actions(asig_of(A)) then (fst(s),a,fst(t)):trans_of(A)              \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   275
\   else fst t=fst s) &                                                      \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   276
\  (if a:actions(asig_of(B)) then (fst(snd(s)),a,fst(snd(t))):trans_of(B)    \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   277
\   else fst(snd(t))=fst(snd(s))) &                                          \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   278
\  (if a:actions(asig_of(C)) then                                            \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   279
\     (fst(snd(snd(s))),a,fst(snd(snd(t)))):trans_of(C)                      \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   280
\   else fst(snd(snd(t)))=fst(snd(snd(s)))) &                                \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   281
\  (if a:actions(asig_of(D)) then                                            \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   282
\     (snd(snd(snd(s))),a,snd(snd(snd(t)))):trans_of(D)                      \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   283
\   else snd(snd(snd(t)))=snd(snd(snd(s)))))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   284
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   285
  by (simp_tac (!simpset addsimps ([par_def,actions_asig_comp,Pair_fst_snd_eq,Let_def]@
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   286
                            ioa_projections)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   287
                  setloop (split_tac [expand_if])) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   288
qed "trans_of_par4";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   289
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   290
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   291