src/HOLCF/IOA/meta_theory/CompoExecs.ML
author mueller
Wed, 30 Apr 1997 12:05:45 +0200
changeset 3080 517b1de05735
parent 3071 981258186b71
child 3275 3f53f2c876f4
permissions -rw-r--r--
fixed Id;
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     2
    ID:        
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     3
    Author:     Olaf M"uller
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     4
    Copyright   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
Compositionality on Execution level.
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
Delsimps (ex_simps @ all_simps); 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    10
Delsimps [split_paired_All];
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    15
section "recursive equations of operators";
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
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    19
(*                               ProjA2                             *)
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    22
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    23
goal thy  "ProjA2`UU = UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    24
by (simp_tac (!simpset addsimps [ProjA2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    25
qed"ProjA2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    26
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    27
goal thy  "ProjA2`nil = nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    28
by (simp_tac (!simpset addsimps [ProjA2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    29
qed"ProjA2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    30
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    31
goal thy "ProjA2`((a,t)>>xs) = (a,fst t) >> ProjA2`xs";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    32
by (simp_tac (!simpset addsimps [ProjA2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    33
qed"ProjA2_cons";
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
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    37
(*                               ProjB2                             *)
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
goal thy  "ProjB2`UU = UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    42
by (simp_tac (!simpset addsimps [ProjB2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    43
qed"ProjB2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    44
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    45
goal thy  "ProjB2`nil = nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    46
by (simp_tac (!simpset addsimps [ProjB2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    47
qed"ProjB2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    48
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    49
goal thy "ProjB2`((a,t)>>xs) = (a,snd t) >> ProjB2`xs";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    50
by (simp_tac (!simpset addsimps [ProjB2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    51
qed"ProjB2_cons";
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
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    56
(*                             Filter_ex2                           *)
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    59
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    60
goal thy "Filter_ex2 A`UU=UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
by (simp_tac (!simpset addsimps [Filter_ex2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    62
qed"Filter_ex2_UU";
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
goal thy "Filter_ex2 A`nil=nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    65
by (simp_tac (!simpset addsimps [Filter_ex2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    66
qed"Filter_ex2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    67
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    68
goal thy "Filter_ex2 A`(at >> xs) =    \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    69
\            (if (fst at:act A)    \       
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    70
\                 then at >> (Filter_ex2 A`xs) \   
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    71
\                 else        Filter_ex2 A`xs)";
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
by (asm_full_simp_tac (!simpset addsimps [Filter_ex2_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    74
qed"Filter_ex2_cons";
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
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    78
(*                             stutter2                             *)
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    81
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    82
goal thy "stutter2 A = (LAM ex. (%s. case ex of \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    83
\      nil => TT \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    84
\    | x##xs => (flift1 \ 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
\            (%p.(If Def ((fst p)~:act A) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    86
\                 then Def (s=(snd p)) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    87
\                 else TT fi) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    88
\                andalso (stutter2 A`xs) (snd p))  \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    89
\             `x) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    90
\           ))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    91
by (rtac trans 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    92
br fix_eq2 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    93
br stutter2_def 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    94
br beta_cfun 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    95
by (simp_tac (!simpset addsimps [flift1_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    96
qed"stutter2_unfold";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    97
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    98
goal thy "(stutter2 A`UU) s=UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    99
by (stac stutter2_unfold 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   100
by (Simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   101
qed"stutter2_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   102
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   103
goal thy "(stutter2 A`nil) s = TT";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   104
by (stac stutter2_unfold 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   105
by (Simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   106
qed"stutter2_nil";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   107
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   108
goal thy "(stutter2 A`(at>>xs)) s = \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   109
\              ((if (fst at)~:act A then Def (s=snd at) else TT) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   110
\                andalso (stutter2 A`xs) (snd at))"; 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   111
br trans 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   112
by (stac stutter2_unfold 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   113
by (asm_full_simp_tac (!simpset addsimps [Cons_def,flift1_def,If_and_if]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   114
by (Simp_tac 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   115
qed"stutter2_cons";
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   118
Addsimps [stutter2_UU,stutter2_nil,stutter2_cons];
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
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   122
(*                             stutter                              *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   123
(* ---------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   124
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   125
goal thy "stutter A (s, UU)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   126
by (simp_tac (!simpset addsimps [stutter_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   127
qed"stutter_UU";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   128
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   129
goal thy "stutter A (s, nil)";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   130
by (simp_tac (!simpset addsimps [stutter_def]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   131
qed"stutter_nil";
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
goal thy "stutter A (s, (a,t)>>ex) = \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   134
\     ((a~:act A --> (s=t)) & stutter A (t,ex))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   135
by (simp_tac (!simpset addsimps [stutter_def] 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   136
                       setloop (split_tac [expand_if]) ) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   137
qed"stutter_cons";
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
(* ----------------------------------------------------------------------------------- *)
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
Delsimps [stutter2_UU,stutter2_nil,stutter2_cons];
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   142
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   143
val compoex_simps = [ProjA2_UU,ProjA2_nil,ProjA2_cons,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   144
                     ProjB2_UU,ProjB2_nil,ProjB2_cons,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   145
                     Filter_ex2_UU,Filter_ex2_nil,Filter_ex2_cons,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   146
                     stutter_UU,stutter_nil,stutter_cons];
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
Addsimps compoex_simps;
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   152
(* ------------------------------------------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   153
(*                      The following lemmata aim for                 *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   154
(*             COMPOSITIONALITY   on    EXECUTION     Level           *)
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
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
(*  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
   160
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   161
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   162
goal thy "!s. is_execution_fragment (A||B) (s,xs) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   163
\      -->  is_execution_fragment A (fst s, Filter_ex2 A`(ProjA2`xs)) &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   164
\           is_execution_fragment B (snd s, Filter_ex2 B`(ProjB2`xs))";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   165
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   166
by (pair_induct_tac "xs" [is_execution_fragment_def] 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   167
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   168
ren "ss a t" 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   169
by (safe_tac set_cs);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   170
by (REPEAT (asm_full_simp_tac (!simpset addsimps trans_of_defs2
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   171
                       setloop (split_tac [expand_if])) 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   172
qed"lemma_1_1a";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   173
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
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   176
(*  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
   177
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   178
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   179
goal thy "!s. is_execution_fragment (A||B) (s,xs) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   180
\      --> stutter A (fst s,ProjA2`xs)  &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   181
\          stutter B (snd s,ProjB2`xs)"; 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   182
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   183
by (pair_induct_tac "xs" [stutter_def,is_execution_fragment_def] 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   184
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   185
by (safe_tac set_cs);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   186
by (REPEAT (asm_full_simp_tac (!simpset addsimps trans_of_defs2
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   187
                 setloop (split_tac [expand_if])) 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   188
qed"lemma_1_1b";
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   191
(* --------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   192
(*  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
   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
goal thy "!s. (is_execution_fragment (A||B) (s,xs) \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   196
\  --> Forall (%x.fst x:act (A||B)) xs)";
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
by (pair_induct_tac "xs" [Forall_def,sforall_def,is_execution_fragment_def] 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   199
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   200
by (safe_tac set_cs);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   201
by (REPEAT (asm_full_simp_tac (!simpset addsimps trans_of_defs2 @ 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   202
                                [actions_asig_comp,asig_of_par]) 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   203
qed"lemma_1_1c";
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
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   206
(* ----------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   207
(*  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
   208
(* ----------------------------------------------------------------------- *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   209
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   210
goal thy 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   211
"!s. is_execution_fragment A (fst s,Filter_ex2 A`(ProjA2`xs)) &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   212
\    is_execution_fragment B (snd s,Filter_ex2 B`(ProjB2`xs)) &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   213
\    stutter A (fst s,(ProjA2`xs)) & \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   214
\    stutter B (snd s,(ProjB2`xs)) & \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   215
\    Forall (%x.fst x:act (A||B)) xs \
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   216
\    --> is_execution_fragment (A||B) (s,xs)";
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
by (pair_induct_tac "xs" [Forall_def,sforall_def,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   219
         is_execution_fragment_def, stutter_def] 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   220
(* main case *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   221
by (rtac allI 1); 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   222
ren "ss a t s" 1;
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   223
by (asm_full_simp_tac (!simpset addsimps trans_of_defs1 @ [actions_asig_comp,asig_of_par]
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   224
               setloop (split_tac [expand_if])) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   225
by (safe_tac set_cs);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   226
(* 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
   227
by (rotate_tac ~4 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   228
by (asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   229
by (rotate_tac ~4 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   230
by (asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   231
qed"lemma_1_2";
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   232
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   233
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   234
(* ------------------------------------------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   235
(*           COMPOSITIONALITY   on    EXECUTION     Level             *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   236
(*                          Main Theorem                              *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   237
(* ------------------------------------------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   238
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   239
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   240
goal thy 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   241
"ex:executions(A||B) =\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   242
\(Filter_ex A (ProjA ex) : executions A &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   243
\ Filter_ex B (ProjB ex) : executions B &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   244
\ stutter A (ProjA ex) & stutter B (ProjB ex) &\
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   245
\ Forall (%x.fst x:act (A||B)) (snd ex))";
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
by (simp_tac (!simpset addsimps [executions_def,ProjB_def,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   248
                                 Filter_ex_def,ProjA_def,starts_of_par]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   249
by (pair_tac "ex" 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   250
by (rtac iffI 1);
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
by (REPEAT (etac conjE 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   253
by (asm_full_simp_tac (!simpset addsimps [lemma_1_1a RS spec RS mp,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   254
               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
   255
(* <==  *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   256
by (REPEAT (etac conjE 1));
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   257
by (asm_full_simp_tac (!simpset addsimps [lemma_1_2 RS spec RS mp]) 1);
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   258
qed"compositionality_ex";
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
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