src/HOLCF/IOA/meta_theory/CompoExecs.ML
author kleing
Mon, 21 Jun 2004 10:25:57 +0200
changeset 14981 e73f8140af78
parent 12218 6597093b77e7
child 17233 41eee2e7b465
permissions -rw-r--r--
Merged in license change from Isabelle2004
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/CompoExecs.ML
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
     2
    ID:         $Id$
12218
wenzelm
parents: 11655
diff changeset
     3
    Author:     Olaf Müller
3071
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
Compositionality on Execution level.
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     6
*)  
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
Delsimps (ex_simps @ all_simps); 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     9
Delsimps [split_paired_All];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    10
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
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
section "recursive equations of operators";
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
(*                               ProjA2                             *)
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
10835
nipkow
parents: 7229
diff changeset
    22
Goal  "ProjA2$UU = UU";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    23
by (simp_tac (simpset() addsimps [ProjA2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    24
qed"ProjA2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    25
10835
nipkow
parents: 7229
diff changeset
    26
Goal  "ProjA2$nil = nil";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    27
by (simp_tac (simpset() addsimps [ProjA2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    28
qed"ProjA2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    29
10835
nipkow
parents: 7229
diff changeset
    30
Goal "ProjA2$((a,t)>>xs) = (a,fst t) >> ProjA2$xs";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    31
by (simp_tac (simpset() addsimps [ProjA2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    32
qed"ProjA2_cons";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    33
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    34
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    35
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    36
(*                               ProjB2                             *)
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
10835
nipkow
parents: 7229
diff changeset
    40
Goal  "ProjB2$UU = UU";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    41
by (simp_tac (simpset() addsimps [ProjB2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    42
qed"ProjB2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    43
10835
nipkow
parents: 7229
diff changeset
    44
Goal  "ProjB2$nil = nil";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    45
by (simp_tac (simpset() addsimps [ProjB2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    46
qed"ProjB2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    47
10835
nipkow
parents: 7229
diff changeset
    48
Goal "ProjB2$((a,t)>>xs) = (a,snd t) >> ProjB2$xs";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    49
by (simp_tac (simpset() addsimps [ProjB2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    50
qed"ProjB2_cons";
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
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
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    55
(*                             Filter_ex2                           *)
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    58
10835
nipkow
parents: 7229
diff changeset
    59
Goal "Filter_ex2 sig$UU=UU";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    60
by (simp_tac (simpset() addsimps [Filter_ex2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
qed"Filter_ex2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    62
10835
nipkow
parents: 7229
diff changeset
    63
Goal "Filter_ex2 sig$nil=nil";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    64
by (simp_tac (simpset() addsimps [Filter_ex2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    65
qed"Filter_ex2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    66
10835
nipkow
parents: 7229
diff changeset
    67
Goal "Filter_ex2 sig$(at >> xs) =    \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    68
\            (if (fst at:actions sig)    \       
10835
nipkow
parents: 7229
diff changeset
    69
\                 then at >> (Filter_ex2 sig$xs) \   
nipkow
parents: 7229
diff changeset
    70
\                 else        Filter_ex2 sig$xs)";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    71
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    72
by (asm_full_simp_tac (simpset() addsimps [Filter_ex2_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    73
qed"Filter_ex2_cons";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    74
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    75
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    76
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    77
(*                             stutter2                             *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    78
(* ---------------------------------------------------------------- *)
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
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
    81
Goal "stutter2 sig = (LAM ex. (%s. case ex of \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    82
\      nil => TT \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    83
\    | x##xs => (flift1 \ 
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
    84
\            (%p.(If Def ((fst p)~:actions sig) \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
\                 then Def (s=(snd p)) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    86
\                 else TT fi) \
10835
nipkow
parents: 7229
diff changeset
    87
\                andalso (stutter2 sig$xs) (snd p))  \
nipkow
parents: 7229
diff changeset
    88
\             $x) \
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    89
\           ))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    90
by (rtac trans 1);
3457
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    91
by (rtac fix_eq2 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    92
by (rtac stutter2_def 1);
a8ab7c64817c Ran expandshort
paulson
parents: 3433
diff changeset
    93
by (rtac beta_cfun 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
    94
by (simp_tac (simpset() addsimps [flift1_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    95
qed"stutter2_unfold";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    96
10835
nipkow
parents: 7229
diff changeset
    97
Goal "(stutter2 sig$UU) s=UU";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    98
by (stac stutter2_unfold 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    99
by (Simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   100
qed"stutter2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   101
10835
nipkow
parents: 7229
diff changeset
   102
Goal "(stutter2 sig$nil) s = TT";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   103
by (stac stutter2_unfold 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   104
by (Simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   105
qed"stutter2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   106
10835
nipkow
parents: 7229
diff changeset
   107
Goal "(stutter2 sig$(at>>xs)) s = \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   108
\              ((if (fst at)~:actions sig then Def (s=snd at) else TT) \
10835
nipkow
parents: 7229
diff changeset
   109
\                andalso (stutter2 sig$xs) (snd at))"; 
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   110
by (rtac trans 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   111
by (stac stutter2_unfold 1);
7229
6773ba0c36d5 renamed Cons to Consq in order to avoid clash with List.Cons;
wenzelm
parents: 5068
diff changeset
   112
by (asm_full_simp_tac (simpset() addsimps [Consq_def,flift1_def,If_and_if]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   113
by (Simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   114
qed"stutter2_cons";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   115
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   116
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   117
Addsimps [stutter2_UU,stutter2_nil,stutter2_cons];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   118
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   119
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   120
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   121
(*                             stutter                              *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   122
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   123
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   124
Goal "stutter sig (s, UU)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   125
by (simp_tac (simpset() addsimps [stutter_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   126
qed"stutter_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   127
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   128
Goal "stutter sig (s, nil)";
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   129
by (simp_tac (simpset() addsimps [stutter_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   130
qed"stutter_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   131
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   132
Goal "stutter sig (s, (a,t)>>ex) = \
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   133
\     ((a~:actions sig --> (s=t)) & stutter sig (t,ex))";
4833
2e53109d4bc8 Renamed expand_const -> split_const
nipkow
parents: 4681
diff changeset
   134
by (simp_tac (simpset() addsimps [stutter_def]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   135
qed"stutter_cons";
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
(* ----------------------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   138
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   139
Delsimps [stutter2_UU,stutter2_nil,stutter2_cons];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   140
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   141
val compoex_simps = [ProjA2_UU,ProjA2_nil,ProjA2_cons,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   142
                     ProjB2_UU,ProjB2_nil,ProjB2_cons,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   143
                     Filter_ex2_UU,Filter_ex2_nil,Filter_ex2_cons,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   144
                     stutter_UU,stutter_nil,stutter_cons];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   145
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   146
Addsimps compoex_simps;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   147
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   148
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
(*                      The following lemmata aim for                 *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   152
(*             COMPOSITIONALITY   on    EXECUTION     Level           *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   153
(* ------------------------------------------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   154
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   155
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   156
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   157
(*  Lemma_1_1a : is_ex_fr propagates from A||B to Projections A and B    *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   158
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   159
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   160
Goal "!s. is_exec_frag (A||B) (s,xs) \
10835
nipkow
parents: 7229
diff changeset
   161
\      -->  is_exec_frag A (fst s, Filter_ex2 (asig_of A)$(ProjA2$xs)) &\
nipkow
parents: 7229
diff changeset
   162
\           is_exec_frag B (snd s, Filter_ex2 (asig_of B)$(ProjB2$xs))";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   163
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   164
by (pair_induct_tac "xs" [is_exec_frag_def] 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   165
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   166
ren "ss a t" 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   167
by (safe_tac set_cs);
4833
2e53109d4bc8 Renamed expand_const -> split_const
nipkow
parents: 4681
diff changeset
   168
by (REPEAT (asm_full_simp_tac (simpset() addsimps trans_of_defs2) 1));
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   169
qed"lemma_1_1a";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   170
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   171
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
(*  Lemma_1_1b : is_ex_fr (A||B) implies stuttering on Projections       *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   174
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   175
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   176
Goal "!s. is_exec_frag (A||B) (s,xs) \
10835
nipkow
parents: 7229
diff changeset
   177
\      --> stutter (asig_of A) (fst s,ProjA2$xs)  &\
nipkow
parents: 7229
diff changeset
   178
\          stutter (asig_of B) (snd s,ProjB2$xs)"; 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   179
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   180
by (pair_induct_tac "xs" [stutter_def,is_exec_frag_def] 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   181
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   182
by (safe_tac set_cs);
4833
2e53109d4bc8 Renamed expand_const -> split_const
nipkow
parents: 4681
diff changeset
   183
by (REPEAT (asm_full_simp_tac (simpset() addsimps trans_of_defs2) 1));
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   184
qed"lemma_1_1b";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   185
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
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   188
(*  Lemma_1_1c : Executions of A||B have only  A- or B-actions           *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   189
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   190
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   191
Goal "!s. (is_exec_frag (A||B) (s,xs) \
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
   192
\  --> Forall (%x. fst x:act (A||B)) xs)";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   193
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   194
by (pair_induct_tac "xs" [Forall_def,sforall_def,is_exec_frag_def] 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   195
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   196
by (safe_tac set_cs);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   197
by (REPEAT (asm_full_simp_tac (simpset() addsimps trans_of_defs2 @ 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   198
                                [actions_asig_comp,asig_of_par]) 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   199
qed"lemma_1_1c";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   200
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   201
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
(*  Lemma_1_2 : ex A, exB, stuttering and forall a:A|B implies ex (A||B)   *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   204
(* ----------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   205
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   206
Goal 
10835
nipkow
parents: 7229
diff changeset
   207
"!s. is_exec_frag A (fst s,Filter_ex2 (asig_of A)$(ProjA2$xs)) &\
nipkow
parents: 7229
diff changeset
   208
\    is_exec_frag B (snd s,Filter_ex2 (asig_of B)$(ProjB2$xs)) &\
nipkow
parents: 7229
diff changeset
   209
\    stutter (asig_of A) (fst s,(ProjA2$xs)) & \
nipkow
parents: 7229
diff changeset
   210
\    stutter (asig_of B) (snd s,(ProjB2$xs)) & \
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
   211
\    Forall (%x. fst x:act (A||B)) xs \
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   212
\    --> is_exec_frag (A||B) (s,xs)";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   213
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   214
by (pair_induct_tac "xs" [Forall_def,sforall_def,
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
   215
         is_exec_frag_def, stutter_def] 1);
4681
a331c1f5a23e expand_if is now by default part of the simpset.
nipkow
parents: 4423
diff changeset
   216
by (asm_full_simp_tac (simpset() addsimps trans_of_defs1 @ [actions_asig_comp,asig_of_par]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   217
by (safe_tac set_cs);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   218
(* problem with asm_full_simp_tac: (fst s) = (fst t) is too high in assumption order ! *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   219
by (rotate_tac ~4 1);
4681
a331c1f5a23e expand_if is now by default part of the simpset.
nipkow
parents: 4423
diff changeset
   220
by (Asm_full_simp_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   221
by (rotate_tac ~4 1);
4681
a331c1f5a23e expand_if is now by default part of the simpset.
nipkow
parents: 4423
diff changeset
   222
by (Asm_full_simp_tac 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   223
qed"lemma_1_2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   224
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   225
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
(*           COMPOSITIONALITY   on    EXECUTION     Level             *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   228
(*                          Main Theorem                              *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   229
(* ------------------------------------------------------------------ *)
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
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   232
Goal 
11655
923e4d0d36d5 tuned parentheses in relational expressions;
wenzelm
parents: 10835
diff changeset
   233
"(ex:executions(A||B)) =\
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   234
\(Filter_ex (asig_of A) (ProjA ex) : executions A &\
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   235
\ Filter_ex (asig_of B) (ProjB ex) : executions B &\
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   236
\ stutter (asig_of A) (ProjA ex) & stutter (asig_of B) (ProjB ex) &\
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
   237
\ Forall (%x. fst x:act (A||B)) (snd ex))";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   238
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   239
by (simp_tac (simpset() addsimps [executions_def,ProjB_def,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   240
                                 Filter_ex_def,ProjA_def,starts_of_par]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   241
by (pair_tac "ex" 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   242
by (rtac iffI 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   243
(* ==>  *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   244
by (REPEAT (etac conjE 1));
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   245
by (asm_full_simp_tac (simpset() addsimps [lemma_1_1a RS spec RS mp,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   246
               lemma_1_1b RS spec RS mp,lemma_1_1c RS spec RS mp]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   247
(* <==  *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   248
by (REPEAT (etac conjE 1));
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   249
by (asm_full_simp_tac (simpset() addsimps [lemma_1_2 RS spec RS mp]) 1);
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   250
qed"compositionality_ex";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   251
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   252
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   253
(* ------------------------------------------------------------------ *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   254
(*           COMPOSITIONALITY   on    EXECUTION     Level             *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   255
(*                            For Modules                             *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   256
(* ------------------------------------------------------------------ *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   257
5068
fb28eaa07e01 isatool fixgoal;
wenzelm
parents: 4833
diff changeset
   258
Goalw [Execs_def,par_execs_def]
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   259
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   260
"Execs (A||B) = par_execs (Execs A) (Execs B)";
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   261
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   262
by (asm_full_simp_tac (simpset() addsimps [asig_of_par]) 1);
4423
a129b817b58a expandshort;
wenzelm
parents: 4098
diff changeset
   263
by (rtac set_ext 1);
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   264
by (asm_full_simp_tac (simpset() addsimps [compositionality_ex,actions_of_par]) 1);
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   265
qed"compositionality_ex_modules";
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   266
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   267
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   268
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   269
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   270
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   271
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3457
diff changeset
   272