src/HOLCF/IOA/meta_theory/Automata.ML
author paulson
Wed, 14 Dec 2005 16:13:09 +0100
changeset 18404 aa27c10a040e
parent 17233 41eee2e7b465
permissions -rw-r--r--
removed unused function repeat_RS
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
*)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     5
4814
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
     6
(* this modification of the simpset is local to this file *)
4536
74f7c556fd90 added split_paired_Ex to the implicit simpset
oheimb
parents: 4477
diff changeset
     7
Delsimps [split_paired_Ex];
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     8
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
     9
val ioa_projections = [asig_of_def, starts_of_def, trans_of_def,wfair_of_def,sfair_of_def];
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    10
6161
paulson
parents: 5976
diff changeset
    11
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    12
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    13
section "asig_of, starts_of, trans_of";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    14
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    15
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    16
Goal
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    17
 "((asig_of (x,y,z,w,s)) = x)   & \
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    18
\ ((starts_of (x,y,z,w,s)) = y) & \
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    19
\ ((trans_of (x,y,z,w,s)) = z)  & \
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    20
\ ((wfair_of (x,y,z,w,s)) = w) & \
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    21
\ ((sfair_of (x,y,z,w,s)) = s)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    22
  by (simp_tac (simpset() addsimps ioa_projections) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    23
qed "ioa_triple_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    24
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    25
Goalw [is_trans_of_def,actions_def, is_asig_def]
6161
paulson
parents: 5976
diff changeset
    26
  "[| is_trans_of A; (s1,a,s2):trans_of(A) |] ==> a:act A";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    27
  by (REPEAT(etac conjE 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    28
  by (EVERY1[etac allE, etac impE, atac]);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    29
  by (Asm_full_simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    30
qed "trans_in_actions";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    31
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    32
Goal
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    33
"starts_of(A || B) = {p. fst(p):starts_of(A) & snd(p):starts_of(B)}";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    34
  by (simp_tac (simpset() addsimps (par_def::ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    35
qed "starts_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    36
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    37
Goal
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    38
"trans_of(A || B) = {tr. let s = fst(tr); a = fst(snd(tr)); t = snd(snd(tr)) \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    39
\            in (a:act A | a:act B) & \
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    40
\               (if a:act A then       \
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    41
\                  (fst(s),a,fst(t)):trans_of(A) \
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    42
\                else fst(t) = fst(s))            \
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    43
\               &                                  \
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    44
\               (if a:act B then                    \
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    45
\                  (snd(s),a,snd(t)):trans_of(B)     \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    46
\                else snd(t) = snd(s))}";
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    47
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
    48
by (simp_tac (simpset() addsimps (par_def::ioa_projections)) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    49
qed "trans_of_par";
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    50
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    51
6161
paulson
parents: 5976
diff changeset
    52
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    53
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    54
section "actions and 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
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    57
Goal
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    58
"actions(asig_comp a b) = actions(a) Un actions(b)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    59
  by (simp_tac (simpset() addsimps
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    60
               ([actions_def,asig_comp_def]@asig_projections)) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
  by (fast_tac (set_cs addSIs [equalityI]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    62
qed "actions_asig_comp";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    63
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    64
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    65
Goal "asig_of(A || B) = asig_comp (asig_of A) (asig_of B)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    66
  by (simp_tac (simpset() addsimps (par_def::ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    67
qed "asig_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    68
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    69
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    70
Goal "ext (A1||A2) =    \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    71
\  (ext A1) Un (ext A2)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    72
by (asm_full_simp_tac (simpset() addsimps [externals_def,asig_of_par,asig_comp_def,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    73
      asig_inputs_def,asig_outputs_def,Un_def,set_diff_def]) 1);
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    74
by (rtac set_ext 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    75
by (fast_tac set_cs 1);
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    76
qed"externals_of_par";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    77
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    78
Goal "act (A1||A2) =    \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    79
\  (act A1) Un (act A2)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    80
by (asm_full_simp_tac (simpset() addsimps [actions_def,asig_of_par,asig_comp_def,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    81
      asig_inputs_def,asig_outputs_def,asig_internals_def,Un_def,set_diff_def]) 1);
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    82
by (rtac set_ext 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    83
by (fast_tac set_cs 1);
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    84
qed"actions_of_par";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    86
Goal "inp (A1||A2) =\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    87
\         ((inp A1) Un (inp A2)) - ((out A1) Un (out A2))";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    88
by (asm_full_simp_tac (simpset() addsimps [actions_def,asig_of_par,asig_comp_def,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    89
      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
    90
qed"inputs_of_par";
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    91
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    92
Goal "out (A1||A2) =\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    93
\         (out A1) Un (out A2)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
    94
by (asm_full_simp_tac (simpset() addsimps [actions_def,asig_of_par,asig_comp_def,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    95
      asig_outputs_def,Un_def,set_diff_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    96
qed"outputs_of_par";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    97
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    98
Goal "int (A1||A2) =\
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
    99
\         (int A1) Un (int A2)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   100
by (asm_full_simp_tac (simpset() addsimps [actions_def,asig_of_par,asig_comp_def,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   101
      asig_inputs_def,asig_outputs_def,asig_internals_def,Un_def,set_diff_def]) 1);
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   102
qed"internals_of_par";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   103
6161
paulson
parents: 5976
diff changeset
   104
(* ------------------------------------------------------------------------ *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   105
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   106
section "actions and compatibility";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   107
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   108
Goal"compatible A B = compatible B A";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   109
by (asm_full_simp_tac (simpset() addsimps [compatible_def,Int_commute]) 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   110
by Auto_tac;
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   111
qed"compat_commute";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   112
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   113
Goalw [externals_def,actions_def,compatible_def]
6161
paulson
parents: 5976
diff changeset
   114
 "[| compatible A1 A2; a:ext A1|] ==> a~:int A2";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   115
by (Asm_full_simp_tac 1);
6161
paulson
parents: 5976
diff changeset
   116
by (Blast_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   117
qed"ext1_is_not_int2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   118
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   119
(* just commuting the previous one: better commute compatible *)
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   120
Goalw [externals_def,actions_def,compatible_def]
6161
paulson
parents: 5976
diff changeset
   121
 "[| compatible A2 A1 ; a:ext A1|] ==> a~:int A2";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   122
by (Asm_full_simp_tac 1);
6161
paulson
parents: 5976
diff changeset
   123
by (Blast_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   124
qed"ext2_is_not_int1";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   125
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   126
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
   127
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
   128
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   129
Goalw  [externals_def,actions_def,compatible_def]
6161
paulson
parents: 5976
diff changeset
   130
 "[| compatible A B; x:int A |] ==> x~:ext B";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   131
by (Asm_full_simp_tac 1);
6161
paulson
parents: 5976
diff changeset
   132
by (Blast_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   133
qed"intA_is_not_extB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   134
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   135
Goalw [externals_def,actions_def,compatible_def,is_asig_def,asig_of_def]
6161
paulson
parents: 5976
diff changeset
   136
"[| compatible A B; a:int A |] ==> a ~: act B";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   137
by (Asm_full_simp_tac 1);
6161
paulson
parents: 5976
diff changeset
   138
by (Blast_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   139
qed"intA_is_not_actB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   140
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   141
(* the only one that needs disjointness of outputs and of internals and _all_ acts *)
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   142
Goalw [asig_outputs_def,asig_internals_def,actions_def,asig_inputs_def,
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   143
    compatible_def,is_asig_def,asig_of_def]
6161
paulson
parents: 5976
diff changeset
   144
"[| compatible A B; a:out A ;a:act B|] ==> a : inp B";
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   145
by (Asm_full_simp_tac 1);
6161
paulson
parents: 5976
diff changeset
   146
by (Blast_tac 1);
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   147
qed"outAactB_is_inpB";
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   148
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   149
(* needed for propagation of input_enabledness from A,B to A||B *)
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   150
Goalw [asig_outputs_def,asig_internals_def,actions_def,asig_inputs_def,
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   151
    compatible_def,is_asig_def,asig_of_def]
6161
paulson
parents: 5976
diff changeset
   152
"[| compatible A B; a:inp A ;a:act B|] ==> a : inp B | a: out B";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   153
by (Asm_full_simp_tac 1);
6161
paulson
parents: 5976
diff changeset
   154
by (Blast_tac 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   155
qed"inpAAactB_is_inpBoroutB";
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   156
6161
paulson
parents: 5976
diff changeset
   157
(* ------------------------------------------------------------------------- *)
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   158
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   159
section "input_enabledness and par";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   160
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   161
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   162
(* ugly case distinctions. Heart of proof:
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   163
     1. inpAAactB_is_inpBoroutB ie. internals are really hidden.
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   164
     2. inputs_of_par: outputs are no longer inputs of par. This is important here *)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   165
Goalw [input_enabled_def]
6161
paulson
parents: 5976
diff changeset
   166
"[| compatible A B; input_enabled A; input_enabled B|] \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   167
\     ==> input_enabled (A||B)";
4814
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   168
by (asm_full_simp_tac (simpset()addsimps[Let_def,inputs_of_par,trans_of_par])1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   169
by (safe_tac set_cs);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   170
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1);
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   171
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 2);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   172
(* a: inp A *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   173
by (case_tac "a:act B" 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   174
(* a:act B *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   175
by (eres_inst_tac [("x","a")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   176
by (Asm_full_simp_tac 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   177
by (dtac inpAAactB_is_inpBoroutB 1);
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   178
by (assume_tac 1);
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   179
by (assume_tac 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   180
by (eres_inst_tac [("x","a")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   181
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   182
by (eres_inst_tac [("x","aa")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   183
by (eres_inst_tac [("x","b")] allE 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   184
by (etac exE 1);
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   185
by (etac exE 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   186
by (res_inst_tac [("x","(s2,s2a)")] exI 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   187
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   188
(* a~: act B*)
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   189
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   190
by (eres_inst_tac [("x","a")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   191
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   192
by (eres_inst_tac [("x","aa")] allE 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   193
by (etac exE 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   194
by (res_inst_tac [("x","(s2,b)")] exI 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   195
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   196
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   197
(* a:inp B *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   198
by (case_tac "a:act A" 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   199
(* a:act A *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   200
by (eres_inst_tac [("x","a")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   201
by (eres_inst_tac [("x","a")] allE 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   202
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1);
4473
803d1e302af1 Decremented subscript because of change to iffD1
paulson
parents: 4423
diff changeset
   203
by (forw_inst_tac [("A1","A")] (compat_commute RS iffD1) 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   204
by (dtac inpAAactB_is_inpBoroutB 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   205
back();
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   206
by (assume_tac 1);
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   207
by (assume_tac 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   208
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   209
by (rotate_tac ~1 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   210
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   211
by (eres_inst_tac [("x","aa")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   212
by (eres_inst_tac [("x","b")] allE 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   213
by (etac exE 1);
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   214
by (etac exE 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   215
by (res_inst_tac [("x","(s2,s2a)")] exI 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   216
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   217
(* a~: act B*)
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   218
by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   219
by (eres_inst_tac [("x","a")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   220
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   221
by (eres_inst_tac [("x","a")] allE 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   222
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   223
by (eres_inst_tac [("x","b")] allE 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   224
by (etac exE 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   225
by (res_inst_tac [("x","(aa,s2)")] exI 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   226
by (Asm_full_simp_tac 1);
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   227
qed"input_enabled_par";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   228
6161
paulson
parents: 5976
diff changeset
   229
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   230
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   231
section "invariants";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   232
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   233
val [p1,p2] = goalw (the_context ()) [invariant_def]
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   234
  "[| !!s. s:starts_of(A) ==> P(s);     \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   235
\     !!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
   236
\  ==> invariant A P";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   237
by (rtac allI 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   238
by (rtac impI 1);
5102
8c782c25a11e Adapted to new inductive definition package.
berghofe
parents: 5068
diff changeset
   239
by (res_inst_tac [("xa","s")] reachable.induct 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   240
by (atac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   241
by (etac p1 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   242
by (eres_inst_tac [("s1","sa")] (p2 RS mp) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   243
by (REPEAT (atac 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   244
qed"invariantI";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   245
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   246
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   247
val [p1,p2] = goal (the_context ())
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   248
 "[| !!s. s : starts_of(A) ==> P(s); \
6161
paulson
parents: 5976
diff changeset
   249
\    !!s t a. reachable A s ==> P(s) --> (s,a,t):trans_of(A) --> P(t) \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   250
\ |] ==> invariant A P";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   251
  by (fast_tac (HOL_cs addSIs [invariantI] addSDs [p1,p2]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   252
qed "invariantI1";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   253
6161
paulson
parents: 5976
diff changeset
   254
Goalw [invariant_def] "[| invariant A P; reachable A s |] ==> P(s)";
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   255
by (Blast_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   256
qed "invariantE";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   257
6161
paulson
parents: 5976
diff changeset
   258
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   259
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   260
section "restrict";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   261
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   262
6161
paulson
parents: 5976
diff changeset
   263
val reachable_0 = reachable.reachable_0
paulson
parents: 5976
diff changeset
   264
and reachable_n = reachable.reachable_n;
paulson
parents: 5976
diff changeset
   265
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   266
Goal "starts_of(restrict ioa acts) = starts_of(ioa) &     \
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   267
\         trans_of(restrict ioa acts) = trans_of(ioa)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   268
by (simp_tac (simpset() addsimps ([restrict_def]@ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   269
qed "cancel_restrict_a";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   270
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   271
Goal "reachable (restrict ioa acts) s = reachable ioa s";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   272
by (rtac iffI 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   273
by (etac reachable.induct 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   274
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
   275
by (etac reachable_n 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   276
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
   277
(* <--  *)
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   278
by (etac reachable.induct 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   279
by (rtac reachable_0 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   280
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
   281
by (etac reachable_n 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   282
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
   283
qed "cancel_restrict_b";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   284
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   285
Goal "act (restrict A acts) = act A";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   286
by (simp_tac (simpset() addsimps [actions_def,asig_internals_def,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   287
        asig_outputs_def,asig_inputs_def,externals_def,asig_of_def,restrict_def,
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   288
        restrict_asig_def]) 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   289
by Auto_tac;
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   290
qed"acts_restrict";
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   291
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   292
Goal "starts_of(restrict ioa acts) = starts_of(ioa) &     \
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   293
\         trans_of(restrict ioa acts) = trans_of(ioa) & \
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   294
\         reachable (restrict ioa acts) s = reachable ioa s & \
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   295
\         act (restrict A acts) = act A";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   296
  by (simp_tac (simpset() addsimps [cancel_restrict_a,cancel_restrict_b,acts_restrict]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   297
qed"cancel_restrict";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   298
6161
paulson
parents: 5976
diff changeset
   299
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   300
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   301
section "rename";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   302
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   303
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   304
6161
paulson
parents: 5976
diff changeset
   305
Goal "s -a--(rename C f)-> t ==> (? x. Some(x) = f(a) & s -x--C-> t)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   306
by (asm_full_simp_tac (simpset() addsimps [Let_def,rename_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   307
qed"trans_rename";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   308
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   309
6161
paulson
parents: 5976
diff changeset
   310
Goal "[| reachable (rename C g) s |] ==> reachable C s";
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   311
by (etac reachable.induct 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   312
by (rtac reachable_0 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   313
by (asm_full_simp_tac (simpset() addsimps [rename_def]@ioa_projections) 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   314
by (dtac trans_rename 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   315
by (etac exE 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   316
by (etac conjE 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   317
by (etac reachable_n 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
   318
by (assume_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   319
qed"reachable_rename";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   320
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   321
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   322
6161
paulson
parents: 5976
diff changeset
   323
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   324
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   325
section "trans_of(A||B)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   326
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   327
6161
paulson
parents: 5976
diff changeset
   328
Goal "[|(s,a,t):trans_of (A||B); a:act A|] \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   329
\             ==> (fst s,a,fst t):trans_of A";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   330
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   331
qed"trans_A_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   332
6161
paulson
parents: 5976
diff changeset
   333
Goal "[|(s,a,t):trans_of (A||B); a:act B|] \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   334
\             ==> (snd s,a,snd t):trans_of B";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   335
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   336
qed"trans_B_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   337
6161
paulson
parents: 5976
diff changeset
   338
Goal "[|(s,a,t):trans_of (A||B); a~:act A|]\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   339
\             ==> fst s = fst t";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   340
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   341
qed"trans_A_proj2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   342
6161
paulson
parents: 5976
diff changeset
   343
Goal "[|(s,a,t):trans_of (A||B); a~:act B|]\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   344
\             ==> snd s = snd t";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   345
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   346
qed"trans_B_proj2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   347
6161
paulson
parents: 5976
diff changeset
   348
Goal "(s,a,t):trans_of (A||B) \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   349
\              ==> a :act A | a :act B";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   350
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   351
qed"trans_AB_proj";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   352
6161
paulson
parents: 5976
diff changeset
   353
Goal "[|a:act A;a:act B;\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   354
\      (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
   355
\  ==> (s,a,t):trans_of (A||B)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   356
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   357
qed"trans_AB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   358
6161
paulson
parents: 5976
diff changeset
   359
Goal "[|a:act A;a~:act B;\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   360
\      (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
   361
\  ==> (s,a,t):trans_of (A||B)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   362
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   363
qed"trans_A_notB";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   364
6161
paulson
parents: 5976
diff changeset
   365
Goal "[|a~:act A;a:act B;\
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   366
\      (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
   367
\  ==> (s,a,t):trans_of (A||B)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   368
by (asm_full_simp_tac (simpset() addsimps [Let_def,par_def,trans_of_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   369
qed"trans_notA_B";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   370
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   371
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
   372
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
   373
                      trans_B_proj2,trans_AB_proj];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   374
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   375
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   376
Goal
11655
923e4d0d36d5 tuned parentheses in relational expressions;
wenzelm
parents: 6161
diff changeset
   377
"((s,a,t) : trans_of(A || B || C || D)) =                                    \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   378
\ ((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
   379
\   a:actions(asig_of(D))) &                                                 \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   380
\  (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
   381
\   else fst t=fst s) &                                                      \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   382
\  (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
   383
\   else fst(snd(t))=fst(snd(s))) &                                          \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   384
\  (if a:actions(asig_of(C)) then                                            \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   385
\     (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
   386
\   else fst(snd(snd(t)))=fst(snd(snd(s)))) &                                \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   387
\  (if a:actions(asig_of(D)) then                                            \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   388
\     (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
   389
\   else snd(snd(snd(t)))=snd(snd(snd(s)))))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   390
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   391
  by (simp_tac (simpset() addsimps ([par_def,actions_asig_comp,Pair_fst_snd_eq,Let_def]@
4833
2e53109d4bc8 Renamed expand_const -> split_const
nipkow
parents: 4814
diff changeset
   392
                            ioa_projections)) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   393
qed "trans_of_par4";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   394
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   395
6161
paulson
parents: 5976
diff changeset
   396
(* ------------------------------------------------------------------------- *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   397
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   398
section "proof obligation generator for IOA requirements";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   399
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   400
(* without assumptions on A and B because is_trans_of is also incorporated in ||def *)
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   401
Goalw [is_trans_of_def] "is_trans_of (A||B)";
4814
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   402
by (simp_tac (simpset() addsimps [Let_def,actions_of_par,trans_of_par]) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   403
qed"is_trans_of_par";
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   404
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   405
Goalw [is_trans_of_def]
6161
paulson
parents: 5976
diff changeset
   406
"is_trans_of A ==> is_trans_of (restrict A acts)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   407
by (asm_simp_tac (simpset() addsimps [cancel_restrict,acts_restrict])1);
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   408
qed"is_trans_of_restrict";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   409
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   410
Goalw [is_trans_of_def,restrict_def,restrict_asig_def]
6161
paulson
parents: 5976
diff changeset
   411
"is_trans_of A ==> is_trans_of (rename A f)";
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   412
by (asm_full_simp_tac
4814
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   413
    (simpset() addsimps [Let_def,actions_def,trans_of_def, asig_internals_def,
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   414
                         asig_outputs_def,asig_inputs_def,externals_def,
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   415
                         asig_of_def,rename_def,rename_set_def]) 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   416
by (Blast_tac 1);
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   417
qed"is_trans_of_rename";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   418
6161
paulson
parents: 5976
diff changeset
   419
Goal "[| is_asig_of A; is_asig_of B; compatible A B|]  \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   420
\         ==> is_asig_of (A||B)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   421
by (asm_full_simp_tac (simpset() addsimps [is_asig_of_def,asig_of_par,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   422
       asig_comp_def,compatible_def,asig_internals_def,asig_outputs_def,
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   423
     asig_inputs_def,actions_def,is_asig_def]) 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   424
by (asm_full_simp_tac (simpset() addsimps [asig_of_def]) 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   425
by Auto_tac;
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   426
qed"is_asig_of_par";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   427
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   428
Goalw [is_asig_of_def,is_asig_def,asig_of_def,restrict_def,restrict_asig_def,
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   429
           asig_internals_def,asig_outputs_def,asig_inputs_def,externals_def,o_def]
6161
paulson
parents: 5976
diff changeset
   430
"is_asig_of A ==> is_asig_of (restrict A f)";
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   431
by (Asm_full_simp_tac 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   432
by Auto_tac;
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   433
qed"is_asig_of_restrict";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   434
6161
paulson
parents: 5976
diff changeset
   435
Goal "is_asig_of A ==> is_asig_of (rename A f)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   436
by (asm_full_simp_tac (simpset() addsimps [is_asig_of_def,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   437
     rename_def,rename_set_def,asig_internals_def,asig_outputs_def,
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   438
     asig_inputs_def,actions_def,is_asig_def,asig_of_def]) 1);
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   439
by Auto_tac;
4814
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   440
by   (ALLGOALS(dres_inst_tac [("s","Some ?x")] sym THEN' Asm_full_simp_tac));
6161
paulson
parents: 5976
diff changeset
   441
by   (ALLGOALS(Blast_tac));
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   442
qed"is_asig_of_rename";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   443
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   444
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   445
Addsimps [is_asig_of_par,is_asig_of_restrict,is_asig_of_rename,
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   446
          is_trans_of_par,is_trans_of_restrict,is_trans_of_rename];
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   447
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   448
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   449
Goalw [compatible_def]
6161
paulson
parents: 5976
diff changeset
   450
"[|compatible A B; compatible A C |]==> compatible A (B||C)";
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   451
by (asm_full_simp_tac (simpset() addsimps [internals_of_par,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   452
   outputs_of_par,actions_of_par]) 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   453
by Auto_tac;
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   454
qed"compatible_par";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   455
5976
44290b71a85f tuning to assimiliate it with PhD;
mueller
parents: 5102
diff changeset
   456
(*  better derive by previous one and compat_commute *)
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   457
Goalw [compatible_def]
6161
paulson
parents: 5976
diff changeset
   458
"[|compatible A C; compatible B C |]==> compatible (A||B) C";
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   459
by (asm_full_simp_tac (simpset() addsimps [internals_of_par,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   460
   outputs_of_par,actions_of_par]) 1);
4477
b3e5857d8d99 New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents: 4473
diff changeset
   461
by Auto_tac;
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   462
qed"compatible_par2";
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   463
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   464
Goalw [compatible_def]
6161
paulson
parents: 5976
diff changeset
   465
"[| compatible A B; (ext B - S) Int ext A = {}|] \
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   466
\     ==> compatible A (restrict B S)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3662
diff changeset
   467
by (asm_full_simp_tac (simpset() addsimps [ioa_triple_proj,asig_triple_proj,
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   468
          externals_def,restrict_def,restrict_asig_def,actions_def]) 1);
6161
paulson
parents: 5976
diff changeset
   469
by Auto_tac;
3656
2df8a2bc3ee2 some minor changes;
mueller
parents: 3521
diff changeset
   470
qed"compatible_restrict";
4814
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   471
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   472
0277a026f99d made modifications of the simpset() local
oheimb
parents: 4536
diff changeset
   473
Addsimps [split_paired_Ex];