src/HOLCF/IOA/meta_theory/CompoExecs.thy
author wenzelm
Sun, 21 Oct 2007 16:27:42 +0200
changeset 25135 4f8176c940cf
parent 19741 f65265d71426
child 26359 6d437bde2f1d
permissions -rw-r--r--
modernized specifications ('definition', 'axiomatization');
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.thy
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
     2
    ID:         $Id$
12218
wenzelm
parents: 10835
diff changeset
     3
    Author:     Olaf Müller
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     4
*)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     5
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     6
header {* Compositionality on Execution level *}
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     7
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     8
theory CompoExecs
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     9
imports Traces
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    10
begin
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    11
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    12
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    13
  ProjA2 :: "('a,'s * 't)pairs -> ('a,'s)pairs" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    14
  "ProjA2 = Map (%x.(fst x,fst(snd x)))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    15
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    16
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    17
  ProjA :: "('a,'s * 't)execution => ('a,'s)execution" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    18
  "ProjA ex = (fst (fst ex), ProjA2$(snd ex))"
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    19
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    20
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    21
  ProjB2 :: "('a,'s * 't)pairs -> ('a,'t)pairs" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    22
  "ProjB2 = Map (%x.(fst x,snd(snd x)))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    23
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    24
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    25
  ProjB :: "('a,'s * 't)execution => ('a,'t)execution" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    26
  "ProjB ex = (snd (fst ex), ProjB2$(snd ex))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    27
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    28
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    29
  Filter_ex2 :: "'a signature => ('a,'s)pairs -> ('a,'s)pairs" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    30
  "Filter_ex2 sig = Filter (%x. fst x:actions sig)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    31
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    32
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    33
  Filter_ex :: "'a signature => ('a,'s)execution => ('a,'s)execution" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    34
  "Filter_ex sig ex = (fst ex,Filter_ex2 sig$(snd ex))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    35
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    36
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    37
  stutter2 :: "'a signature => ('a,'s)pairs -> ('s => tr)" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    38
  "stutter2 sig = (fix$(LAM h ex. (%s. case ex of
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    39
      nil => TT
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    40
    | x##xs => (flift1
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    41
            (%p.(If Def ((fst p)~:actions sig)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    42
                 then Def (s=(snd p))
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    43
                 else TT fi)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    44
                andalso (h$xs) (snd p))
10835
nipkow
parents: 3842
diff changeset
    45
             $x)
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    46
   )))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    47
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    48
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    49
  stutter :: "'a signature => ('a,'s)execution => bool" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    50
  "stutter sig ex = ((stutter2 sig$(snd ex)) (fst ex) ~= FF)"
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    51
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    52
definition
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    53
  par_execs :: "[('a,'s)execution_module,('a,'t)execution_module] => ('a,'s*'t)execution_module" where
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    54
  "par_execs ExecsA ExecsB =
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    55
      (let exA = fst ExecsA; sigA = snd ExecsA;
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    56
           exB = fst ExecsB; sigB = snd ExecsB
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    57
       in
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    58
       (    {ex. Filter_ex sigA (ProjA ex) : exA}
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    59
        Int {ex. Filter_ex sigB (ProjB ex) : exB}
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    60
        Int {ex. stutter sigA (ProjA ex)}
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    61
        Int {ex. stutter sigB (ProjB ex)}
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
    62
        Int {ex. Forall (%x. fst x:(actions sigA Un actions sigB)) (snd ex)},
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    63
        asig_comp sigA sigB))"
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    64
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    65
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    66
lemmas [simp del] = ex_simps all_simps split_paired_All
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    67
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    68
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    69
section "recursive equations of operators"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    70
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    71
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    72
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    73
(*                               ProjA2                             *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    74
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    75
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    76
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    77
lemma ProjA2_UU: "ProjA2$UU = UU"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    78
apply (simp add: ProjA2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    79
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    80
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    81
lemma ProjA2_nil: "ProjA2$nil = nil"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    82
apply (simp add: ProjA2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    83
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    84
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    85
lemma ProjA2_cons: "ProjA2$((a,t)>>xs) = (a,fst t) >> ProjA2$xs"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    86
apply (simp add: ProjA2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    87
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    88
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    89
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    90
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    91
(*                               ProjB2                             *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    92
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    93
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    94
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    95
lemma ProjB2_UU: "ProjB2$UU = UU"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    96
apply (simp add: ProjB2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    97
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    98
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    99
lemma ProjB2_nil: "ProjB2$nil = nil"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   100
apply (simp add: ProjB2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   101
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   102
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   103
lemma ProjB2_cons: "ProjB2$((a,t)>>xs) = (a,snd t) >> ProjB2$xs"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   104
apply (simp add: ProjB2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   105
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   106
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   107
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   108
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   109
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   110
(*                             Filter_ex2                           *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   111
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   112
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   113
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   114
lemma Filter_ex2_UU: "Filter_ex2 sig$UU=UU"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   115
apply (simp add: Filter_ex2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   116
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   117
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   118
lemma Filter_ex2_nil: "Filter_ex2 sig$nil=nil"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   119
apply (simp add: Filter_ex2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   120
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   121
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   122
lemma Filter_ex2_cons: "Filter_ex2 sig$(at >> xs) =
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   123
             (if (fst at:actions sig)
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   124
                  then at >> (Filter_ex2 sig$xs)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   125
                  else        Filter_ex2 sig$xs)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   126
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   127
apply (simp add: Filter_ex2_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   128
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   129
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   130
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   131
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   132
(*                             stutter2                             *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   133
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   134
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   135
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   136
lemma stutter2_unfold: "stutter2 sig = (LAM ex. (%s. case ex of
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   137
       nil => TT
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   138
     | x##xs => (flift1
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   139
             (%p.(If Def ((fst p)~:actions sig)
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   140
                  then Def (s=(snd p))
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   141
                  else TT fi)
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   142
                 andalso (stutter2 sig$xs) (snd p))
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   143
              $x)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   144
            ))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   145
apply (rule trans)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   146
apply (rule fix_eq2)
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   147
apply (simp only: stutter2_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   148
apply (rule beta_cfun)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   149
apply (simp add: flift1_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   150
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   151
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   152
lemma stutter2_UU: "(stutter2 sig$UU) s=UU"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   153
apply (subst stutter2_unfold)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   154
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   155
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   156
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   157
lemma stutter2_nil: "(stutter2 sig$nil) s = TT"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   158
apply (subst stutter2_unfold)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   159
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   160
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   161
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   162
lemma stutter2_cons: "(stutter2 sig$(at>>xs)) s =
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   163
               ((if (fst at)~:actions sig then Def (s=snd at) else TT)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   164
                 andalso (stutter2 sig$xs) (snd at))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   165
apply (rule trans)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   166
apply (subst stutter2_unfold)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   167
apply (simp add: Consq_def flift1_def If_and_if)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   168
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   169
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   170
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   171
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   172
declare stutter2_UU [simp] stutter2_nil [simp] stutter2_cons [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   173
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   174
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   175
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   176
(*                             stutter                              *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   177
(* ---------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   178
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   179
lemma stutter_UU: "stutter sig (s, UU)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   180
apply (simp add: stutter_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   181
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   182
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   183
lemma stutter_nil: "stutter sig (s, nil)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   184
apply (simp add: stutter_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   185
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   186
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   187
lemma stutter_cons: "stutter sig (s, (a,t)>>ex) =
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   188
      ((a~:actions sig --> (s=t)) & stutter sig (t,ex))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   189
apply (simp add: stutter_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   190
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   191
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   192
(* ----------------------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   193
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   194
declare stutter2_UU [simp del] stutter2_nil [simp del] stutter2_cons [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   195
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   196
lemmas compoex_simps = ProjA2_UU ProjA2_nil ProjA2_cons
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   197
  ProjB2_UU ProjB2_nil ProjB2_cons
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   198
  Filter_ex2_UU Filter_ex2_nil Filter_ex2_cons
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   199
  stutter_UU stutter_nil stutter_cons
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   200
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   201
declare compoex_simps [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   202
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   203
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   204
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   205
(* ------------------------------------------------------------------ *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   206
(*                      The following lemmata aim for                 *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   207
(*             COMPOSITIONALITY   on    EXECUTION     Level           *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   208
(* ------------------------------------------------------------------ *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   209
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   210
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   211
(* --------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   212
(*  Lemma_1_1a : is_ex_fr propagates from A||B to Projections A and B    *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   213
(* --------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   214
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   215
lemma lemma_1_1a: "!s. is_exec_frag (A||B) (s,xs)
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   216
       -->  is_exec_frag A (fst s, Filter_ex2 (asig_of A)$(ProjA2$xs)) &
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   217
            is_exec_frag B (snd s, Filter_ex2 (asig_of B)$(ProjB2$xs))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   218
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   219
apply (tactic {* pair_induct_tac "xs" [thm "is_exec_frag_def"] 1 *})
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   220
(* main case *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   221
apply (rename_tac ss a t)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   222
apply (tactic "safe_tac set_cs")
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   223
apply (simp_all add: trans_of_defs2)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   224
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   225
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   226
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   227
(* --------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   228
(*  Lemma_1_1b : is_ex_fr (A||B) implies stuttering on Projections       *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   229
(* --------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   230
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   231
lemma lemma_1_1b: "!s. is_exec_frag (A||B) (s,xs)
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   232
       --> stutter (asig_of A) (fst s,ProjA2$xs)  &
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   233
           stutter (asig_of B) (snd s,ProjB2$xs)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   234
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   235
apply (tactic {* pair_induct_tac "xs" [thm "stutter_def", thm "is_exec_frag_def"] 1 *})
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   236
(* main case *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   237
apply (tactic "safe_tac set_cs")
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   238
apply (simp_all add: trans_of_defs2)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   239
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   240
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   241
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   242
(* --------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   243
(*  Lemma_1_1c : Executions of A||B have only  A- or B-actions           *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   244
(* --------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   245
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   246
lemma lemma_1_1c: "!s. (is_exec_frag (A||B) (s,xs)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   247
   --> Forall (%x. fst x:act (A||B)) xs)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   248
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   249
apply (tactic {* pair_induct_tac "xs" [thm "Forall_def", thm "sforall_def",
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   250
  thm "is_exec_frag_def"] 1 *})
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   251
(* main case *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   252
apply (tactic "safe_tac set_cs")
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   253
apply (simp_all add: trans_of_defs2 actions_asig_comp asig_of_par)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   254
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   255
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   256
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   257
(* ----------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   258
(*  Lemma_1_2 : ex A, exB, stuttering and forall a:A|B implies ex (A||B)   *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   259
(* ----------------------------------------------------------------------- *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   260
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   261
lemma lemma_1_2:
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   262
"!s. is_exec_frag A (fst s,Filter_ex2 (asig_of A)$(ProjA2$xs)) &
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   263
     is_exec_frag B (snd s,Filter_ex2 (asig_of B)$(ProjB2$xs)) &
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   264
     stutter (asig_of A) (fst s,(ProjA2$xs)) &
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   265
     stutter (asig_of B) (snd s,(ProjB2$xs)) &
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   266
     Forall (%x. fst x:act (A||B)) xs
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   267
     --> is_exec_frag (A||B) (s,xs)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   268
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   269
apply (tactic {* pair_induct_tac "xs" [thm "Forall_def", thm "sforall_def",
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   270
  thm "is_exec_frag_def", thm "stutter_def"] 1 *})
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   271
apply (simp add: trans_of_defs1 actions_asig_comp asig_of_par)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   272
apply (tactic "safe_tac set_cs")
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   273
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   274
apply simp
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   275
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   276
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   277
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   278
subsection {* COMPOSITIONALITY on EXECUTION Level -- Main Theorem *}
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   279
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   280
lemma compositionality_ex:
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   281
"(ex:executions(A||B)) =
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   282
 (Filter_ex (asig_of A) (ProjA ex) : executions A &
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   283
  Filter_ex (asig_of B) (ProjB ex) : executions B &
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   284
  stutter (asig_of A) (ProjA ex) & stutter (asig_of B) (ProjB ex) &
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   285
  Forall (%x. fst x:act (A||B)) (snd ex))"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   286
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   287
apply (simp (no_asm) add: executions_def ProjB_def Filter_ex_def ProjA_def starts_of_par)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   288
apply (tactic {* pair_tac "ex" 1 *})
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   289
apply (rule iffI)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   290
(* ==>  *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   291
apply (erule conjE)+
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   292
apply (simp add: lemma_1_1a lemma_1_1b lemma_1_1c)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   293
(* <==  *)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   294
apply (erule conjE)+
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   295
apply (simp add: lemma_1_2)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   296
done
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   297
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   298
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   299
subsection {* COMPOSITIONALITY on EXECUTION Level -- for Modules *}
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   300
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   301
lemma compositionality_ex_modules:
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   302
  "Execs (A||B) = par_execs (Execs A) (Execs B)"
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   303
apply (unfold Execs_def par_execs_def)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   304
apply (simp add: asig_of_par)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   305
apply (rule set_ext)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   306
apply (simp add: compositionality_ex actions_of_par)
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   307
done
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   308
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   309
end