src/HOL/HOLCF/IOA/CompoScheds.thy
author wenzelm
Sun, 17 Jan 2016 00:14:45 +0100
changeset 62195 799a5306e2ed
parent 62116 bc178c0fe1a1
child 63120 629a4c5e953e
permissions -rw-r--r--
more method definitions;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62008
cbedaddc9351 clarified directory structure;
wenzelm
parents: 62005
diff changeset
     1
(*  Title:      HOL/HOLCF/IOA/CompoScheds.thy
40945
b8703f63bfb2 recoded latin1 as utf8;
wenzelm
parents: 40774
diff changeset
     2
    Author:     Olaf Müller
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     3
*)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     4
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
     5
section \<open>Compositionality on Schedule level\<close>
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     6
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     7
theory CompoScheds
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     8
imports CompoExecs
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     9
begin
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    10
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    11
definition mkex2 :: "('a, 's) ioa \<Rightarrow> ('a, 't) ioa \<Rightarrow> 'a Seq \<rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    12
  ('a, 's) pairs \<rightarrow> ('a, 't) pairs \<rightarrow> ('s \<Rightarrow> 't \<Rightarrow> ('a, 's \<times> 't) pairs)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    13
  where "mkex2 A B =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    14
    (fix $
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    15
      (LAM h sch exA exB.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    16
        (\<lambda>s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    17
          case sch of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    18
            nil \<Rightarrow> nil
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    19
        | x ## xs \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    20
            (case x of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    21
              UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    22
            | Def y \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    23
               (if y \<in> act A then
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    24
                 (if y \<in> act B then
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    25
                    (case HD $ exA of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    26
                      UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    27
                    | Def a \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    28
                        (case HD $ exB of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    29
                          UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    30
                        | Def b \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    31
                           (y, (snd a, snd b)) \<leadsto>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    32
                            (h $ xs $ (TL $ exA) $ (TL $ exB)) (snd a) (snd b)))
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    33
                  else
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    34
                    (case HD $ exA of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    35
                      UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    36
                    | Def a \<Rightarrow> (y, (snd a, t)) \<leadsto> (h $ xs $ (TL $ exA) $ exB) (snd a) t))
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    37
                else
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    38
                  (if y \<in> act B then
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    39
                    (case HD $ exB of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    40
                      UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    41
                    | Def b \<Rightarrow> (y, (s, snd b)) \<leadsto> (h $ xs $ exA $ (TL $ exB)) s (snd b))
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    42
                   else UU))))))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    43
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    44
definition mkex :: "('a, 's) ioa \<Rightarrow> ('a, 't) ioa \<Rightarrow> 'a Seq \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    45
    ('a, 's) execution \<Rightarrow> ('a, 't) execution \<Rightarrow> ('a, 's \<times> 't) execution"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    46
  where "mkex A B sch exA exB =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    47
    ((fst exA, fst exB), (mkex2 A B $ sch $ (snd exA) $ (snd exB)) (fst exA) (fst exB))"
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    48
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    49
definition par_scheds :: "'a schedule_module \<Rightarrow> 'a schedule_module \<Rightarrow> 'a schedule_module"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    50
  where "par_scheds SchedsA SchedsB =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    51
    (let
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    52
      schA = fst SchedsA; sigA = snd SchedsA;
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    53
      schB = fst SchedsB; sigB = snd SchedsB
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    54
     in
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    55
      ({sch. Filter (%a. a:actions sigA)$sch : schA} \<inter>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    56
       {sch. Filter (%a. a:actions sigB)$sch : schB} \<inter>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    57
       {sch. Forall (%x. x:(actions sigA Un actions sigB)) sch},
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
    58
        asig_comp sigA sigB))"
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3275
diff changeset
    59
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    60
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    61
subsection \<open>\<open>mkex\<close> rewrite rules\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    62
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    63
lemma mkex2_unfold:
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    64
  "mkex2 A B =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    65
    (LAM sch exA exB.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    66
      (\<lambda>s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    67
        case sch of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    68
          nil \<Rightarrow> nil
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    69
        | x ## xs \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    70
            (case x of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    71
              UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    72
            | Def y \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    73
                (if y \<in> act A then
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    74
                  (if y \<in> act B then
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    75
                    (case HD $ exA of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    76
                      UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    77
                    | Def a \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    78
                        (case HD $ exB of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    79
                          UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    80
                        | Def b \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    81
                            (y, (snd a, snd b)) \<leadsto>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    82
                              (mkex2 A B $ xs $ (TL $ exA) $ (TL $ exB)) (snd a) (snd b)))
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    83
                   else
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    84
                     (case HD $ exA of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    85
                       UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    86
                     | Def a \<Rightarrow> (y, (snd a, t)) \<leadsto> (mkex2 A B $ xs $ (TL $ exA) $ exB) (snd a) t))
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    87
                 else
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    88
                   (if y \<in> act B then
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    89
                     (case HD $ exB of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    90
                       UU \<Rightarrow> UU
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    91
                     | Def b \<Rightarrow> (y, (s, snd b)) \<leadsto> (mkex2 A B $ xs $ exA $ (TL $ exB)) s (snd b))
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    92
                    else UU)))))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    93
  apply (rule trans)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    94
  apply (rule fix_eq2)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    95
  apply (simp only: mkex2_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    96
  apply (rule beta_cfun)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    97
  apply simp
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    98
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
    99
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   100
lemma mkex2_UU: "(mkex2 A B $ UU $ exA $ exB) s t = UU"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   101
  apply (subst mkex2_unfold)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   102
  apply simp
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   103
  done
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   104
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   105
lemma mkex2_nil: "(mkex2 A B $ nil $ exA $ exB) s t = nil"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   106
  apply (subst mkex2_unfold)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   107
  apply simp
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   108
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   109
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   110
lemma mkex2_cons_1:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   111
  "x \<in> act A \<Longrightarrow> x \<notin> act B \<Longrightarrow> HD $ exA = Def a \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   112
    (mkex2 A B $ (x \<leadsto> sch) $ exA $ exB) s t =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   113
      (x, snd a,t) \<leadsto> (mkex2 A B $ sch $ (TL $ exA) $ exB) (snd a) t"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   114
  apply (rule trans)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   115
  apply (subst mkex2_unfold)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   116
  apply (simp add: Consq_def If_and_if)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   117
  apply (simp add: Consq_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   118
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   119
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   120
lemma mkex2_cons_2:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   121
  "x \<notin> act A \<Longrightarrow> x \<in> act B \<Longrightarrow> HD $ exB = Def b \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   122
    (mkex2 A B $ (x \<leadsto> sch) $ exA $ exB) s t =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   123
      (x, s, snd b) \<leadsto> (mkex2 A B $ sch $ exA $ (TL $ exB)) s (snd b)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   124
  apply (rule trans)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   125
  apply (subst mkex2_unfold)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   126
  apply (simp add: Consq_def If_and_if)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   127
  apply (simp add: Consq_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   128
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   129
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   130
lemma mkex2_cons_3:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   131
  "x \<in> act A \<Longrightarrow> x \<in> act B \<Longrightarrow> HD $ exA = Def a \<Longrightarrow> HD $ exB = Def b \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   132
    (mkex2 A B $ (x \<leadsto> sch) $ exA $ exB) s t =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   133
      (x, snd a,snd b) \<leadsto> (mkex2 A B $ sch $ (TL $ exA) $ (TL $ exB)) (snd a) (snd b)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   134
  apply (rule trans)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   135
  apply (subst mkex2_unfold)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   136
  apply (simp add: Consq_def If_and_if)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   137
  apply (simp add: Consq_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   138
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   139
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   140
declare mkex2_UU [simp] mkex2_nil [simp] mkex2_cons_1 [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   141
  mkex2_cons_2 [simp] mkex2_cons_3 [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   142
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   143
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   144
subsection \<open>\<open>mkex\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   145
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   146
lemma mkex_UU: "mkex A B UU  (s,exA) (t,exB) = ((s,t),UU)"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   147
  by (simp add: mkex_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   148
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   149
lemma mkex_nil: "mkex A B nil (s,exA) (t,exB) = ((s,t),nil)"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   150
  by (simp add: mkex_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   151
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   152
lemma mkex_cons_1:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   153
  "x \<in> act A \<Longrightarrow> x \<notin> act B \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   154
    mkex A B (x \<leadsto> sch) (s, a \<leadsto> exA) (t, exB) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   155
      ((s, t), (x, snd a, t) \<leadsto> snd (mkex A B sch (snd a, exA) (t, exB)))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   156
  apply (unfold mkex_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   157
  apply (cut_tac exA = "a \<leadsto> exA" in mkex2_cons_1)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   158
  apply auto
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   159
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   160
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   161
lemma mkex_cons_2:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   162
  "x \<notin> act A \<Longrightarrow> x \<in> act B \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   163
    mkex A B (x \<leadsto> sch) (s, exA) (t, b \<leadsto> exB) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   164
      ((s, t), (x, s, snd b) \<leadsto> snd (mkex A B sch (s, exA) (snd b, exB)))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   165
  apply (unfold mkex_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   166
  apply (cut_tac exB = "b\<leadsto>exB" in mkex2_cons_2)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   167
  apply auto
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   168
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   169
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   170
lemma mkex_cons_3:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   171
  "x \<in> act A \<Longrightarrow> x \<in> act B \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   172
    mkex A B (x \<leadsto> sch) (s, a \<leadsto> exA) (t, b \<leadsto> exB) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   173
      ((s, t), (x, snd a, snd b) \<leadsto> snd (mkex A B sch (snd a, exA) (snd b, exB)))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   174
  apply (unfold mkex_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   175
  apply (cut_tac exB = "b\<leadsto>exB" and exA = "a\<leadsto>exA" in mkex2_cons_3)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   176
  apply auto
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   177
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   178
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   179
declare mkex2_UU [simp del] mkex2_nil [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   180
  mkex2_cons_1 [simp del] mkex2_cons_2 [simp del] mkex2_cons_3 [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   181
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   182
lemmas composch_simps = mkex_UU mkex_nil mkex_cons_1 mkex_cons_2 mkex_cons_3
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   183
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   184
declare composch_simps [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   185
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   186
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   187
subsection \<open>Compositionality on schedule level\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   188
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   189
subsubsection \<open>Lemmas for \<open>\<Longrightarrow>\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   190
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   191
lemma lemma_2_1a:
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   192
  \<comment> \<open>\<open>tfilter ex\<close> and \<open>filter_act\<close> are commutative\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   193
  "filter_act $ (Filter_ex2 (asig_of A) $ xs) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   194
    Filter (\<lambda>a. a \<in> act A) $ (filter_act $ xs)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   195
  apply (unfold filter_act_def Filter_ex2_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   196
  apply (simp add: MapFilter o_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   197
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   198
25135
4f8176c940cf modernized specifications ('definition', 'axiomatization');
wenzelm
parents: 19741
diff changeset
   199
lemma lemma_2_1b:
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   200
  \<comment> \<open>State-projections do not affect \<open>filter_act\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   201
  "filter_act $ (ProjA2 $ xs) = filter_act $ xs \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   202
    filter_act $ (ProjB2 $ xs) = filter_act $ xs"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   203
  by (pair_induct xs)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   204
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   205
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   206
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   207
  Schedules of \<open>A \<parallel> B\<close> have only \<open>A\<close>- or \<open>B\<close>-actions.
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   208
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   209
  Very similar to \<open>lemma_1_1c\<close>, but it is not checking if every action element
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   210
  of an \<open>ex\<close> is in \<open>A\<close> or \<open>B\<close>, but after projecting it onto the action
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   211
  schedule. Of course, this is the same proposition, but we cannot change this
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   212
  one, when then rather \<open>lemma_1_1c\<close>.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   213
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   214
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   215
lemma sch_actions_in_AorB:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   216
  "\<forall>s. is_exec_frag (A \<parallel> B) (s, xs) \<longrightarrow> Forall (\<lambda>x. x \<in> act (A \<parallel> B)) (filter_act $ xs)"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   217
  apply (pair_induct xs simp: is_exec_frag_def Forall_def sforall_def)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   218
  text \<open>main case\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   219
  apply auto
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   220
  apply (simp add: trans_of_defs2 actions_asig_comp asig_of_par)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   221
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   222
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   223
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   224
subsubsection \<open>Lemmas for \<open>\<Longleftarrow>\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   225
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   226
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   227
  Filtering actions out of \<open>mkex (sch, exA, exB)\<close> yields the oracle \<open>sch\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   228
  structural induction.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   229
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   230
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   231
lemma Mapfst_mkex_is_sch:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   232
  "\<forall>exA exB s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   233
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   234
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ exA \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   235
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ exB \<longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   236
    filter_act $ (snd (mkex A B sch (s, exA) (t, exB))) = sch"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   237
  apply (Seq_induct sch simp: Filter_def Forall_def sforall_def mkex_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   238
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   239
  text \<open>main case: splitting into 4 cases according to \<open>a \<in> A\<close>, \<open>a \<in> B\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   240
  apply auto
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   241
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   242
  text \<open>Case \<open>y \<in> A\<close>, \<open>y \<in> B\<close>\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   243
  apply (Seq_case_simp exA)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   244
  text \<open>Case \<open>exA = UU\<close>, Case \<open>exA = nil\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   245
  text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   246
    These \<open>UU\<close> and \<open>nil\<close> cases are the only places where the assumption
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   247
    \<open>filter A sch \<sqsubseteq> f_act exA\<close> is used!
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   248
    \<open>\<longrightarrow>\<close> to generate a contradiction using \<open>\<not> a \<leadsto> ss \<sqsubseteq> UU nil\<close>,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   249
    using theorems \<open>Cons_not_less_UU\<close> and \<open>Cons_not_less_nil\<close>.\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   250
  apply (Seq_case_simp exB)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   251
  text \<open>Case \<open>exA = a \<leadsto> x\<close>, \<open>exB = b \<leadsto> y\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   252
  text \<open>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   253
    Here it is important that @{method Seq_case_simp} uses no \<open>!full!_simp_tac\<close>
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   254
    for the cons case, as otherwise \<open>mkex_cons_3\<close> would not be rewritten
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   255
    without use of \<open>rotate_tac\<close>: then tactic would not be generally
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   256
    applicable.\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   257
  apply simp
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   258
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   259
  text \<open>Case \<open>y \<in> A\<close>, \<open>y \<notin> B\<close>\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   260
  apply (Seq_case_simp exA)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   261
  apply simp
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   262
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   263
  text \<open>Case \<open>y \<notin> A\<close>, \<open>y \<in> B\<close>\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   264
  apply (Seq_case_simp exB)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   265
  apply simp
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   266
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   267
  text \<open>Case \<open>y \<notin> A\<close>, \<open>y \<notin> B\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   268
  apply (simp add: asig_of_par actions_asig_comp)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   269
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   270
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   271
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   272
text \<open>Generalizing the proof above to a proof method:\<close>
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   273
ML \<open>
27208
5fe899199f85 proper context for tactics derived from res_inst_tac;
wenzelm
parents: 26359
diff changeset
   274
fun mkex_induct_tac ctxt sch exA exB =
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   275
  EVERY' [
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   276
    Seq_induct_tac ctxt sch
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   277
      @{thms Filter_def Forall_def sforall_def mkex_def stutter_def},
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   278
    asm_full_simp_tac ctxt,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   279
    SELECT_GOAL
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   280
      (safe_tac (Context.raw_transfer (Proof_Context.theory_of ctxt) @{theory_context Fun})),
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   281
    Seq_case_simp_tac ctxt exA,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   282
    Seq_case_simp_tac ctxt exB,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   283
    asm_full_simp_tac ctxt,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   284
    Seq_case_simp_tac ctxt exA,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   285
    asm_full_simp_tac ctxt,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   286
    Seq_case_simp_tac ctxt exB,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   287
    asm_full_simp_tac ctxt,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   288
    asm_full_simp_tac (ctxt addsimps @{thms asig_of_par actions_asig_comp})]
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   289
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   290
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   291
method_setup mkex_induct = \<open>
46469
0632b8e56e46 method setup;
wenzelm
parents: 42793
diff changeset
   292
  Scan.lift (Args.name -- Args.name -- Args.name)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   293
    >> (fn ((sch, exA), exB) => fn ctxt =>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   294
      SIMPLE_METHOD' (mkex_induct_tac ctxt sch exA exB))
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   295
\<close>
46469
0632b8e56e46 method setup;
wenzelm
parents: 42793
diff changeset
   296
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   297
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   298
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   299
  Projection of \<open>mkex (sch, exA, exB)\<close> onto \<open>A\<close> stutters on \<open>A\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   300
  structural induction.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   301
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   302
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   303
lemma stutterA_mkex:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   304
  "\<forall>exA exB s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   305
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   306
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ exA \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   307
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ exB \<longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   308
    stutter (asig_of A) (s, ProjA2 $ (snd (mkex A B sch (s, exA) (t, exB))))"
46469
0632b8e56e46 method setup;
wenzelm
parents: 42793
diff changeset
   309
  by (mkex_induct sch exA exB)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   310
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   311
lemma stutter_mkex_on_A:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   312
  "Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   313
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ (snd exA) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   314
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ (snd exB) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   315
    stutter (asig_of A) (ProjA (mkex A B sch exA exB))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   316
  apply (cut_tac stutterA_mkex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   317
  apply (simp add: stutter_def ProjA_def mkex_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   318
  apply (erule allE)+
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   319
  apply (drule mp)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   320
  prefer 2 apply (assumption)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   321
  apply simp
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   322
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   323
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   324
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   325
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   326
  Projection of \<open>mkex (sch, exA, exB)\<close> onto \<open>B\<close> stutters on \<open>B\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   327
  structural induction.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   328
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   329
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   330
lemma stutterB_mkex:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   331
  "\<forall>exA exB s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   332
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   333
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ exA \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   334
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ exB \<longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   335
    stutter (asig_of B) (t, ProjB2 $ (snd (mkex A B sch (s, exA) (t, exB))))"
46469
0632b8e56e46 method setup;
wenzelm
parents: 42793
diff changeset
   336
  by (mkex_induct sch exA exB)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   337
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   338
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   339
lemma stutter_mkex_on_B:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   340
  "Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   341
   Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ (snd exA) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   342
   Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ (snd exB) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   343
   stutter (asig_of B) (ProjB (mkex A B sch exA exB))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   344
  apply (cut_tac stutterB_mkex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   345
  apply (simp add: stutter_def ProjB_def mkex_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   346
  apply (erule allE)+
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   347
  apply (drule mp)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   348
  prefer 2 apply (assumption)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   349
  apply simp
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   350
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   351
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   352
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   353
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   354
  Filter of \<open>mkex (sch, exA, exB)\<close> to \<open>A\<close> after projection onto \<open>A\<close> is \<open>exA\<close>,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   355
  using \<open>zip $ (proj1 $ exA) $ (proj2 $ exA)\<close> instead of \<open>exA\<close>,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   356
  because of admissibility problems structural induction.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   357
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   358
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   359
lemma filter_mkex_is_exA_tmp:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   360
  "\<forall>exA exB s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   361
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   362
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ exA \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   363
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ exB \<longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   364
    Filter_ex2 (asig_of A) $ (ProjA2 $ (snd (mkex A B sch (s, exA) (t, exB)))) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   365
      Zip $ (Filter (\<lambda>a. a \<in> act A) $ sch) $ (Map snd $ exA)"
46469
0632b8e56e46 method setup;
wenzelm
parents: 42793
diff changeset
   366
  by (mkex_induct sch exB exA)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   367
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   368
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   369
  \<open>zip $ (proj1 $ y) $ (proj2 $ y) = y\<close>  (using the lift operations)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   370
  lemma for admissibility problems
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   371
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   372
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   373
lemma Zip_Map_fst_snd: "Zip $ (Map fst $ y) $ (Map snd $ y) = y"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   374
  by (Seq_induct y)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   375
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   376
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   377
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   378
  \<open>filter A $ sch = proj1 $ ex \<longrightarrow> zip $ (filter A $ sch) $ (proj2 $ ex) = ex\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   379
  lemma for eliminating non admissible equations in assumptions
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   380
\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   381
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   382
lemma trick_against_eq_in_ass:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   383
  "Filter (\<lambda>a. a \<in> act AB) $ sch = filter_act $ ex \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   384
    ex = Zip $ (Filter (\<lambda>a. a \<in> act AB) $ sch) $ (Map snd $ ex)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   385
  apply (simp add: filter_act_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   386
  apply (rule Zip_Map_fst_snd [symmetric])
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   387
  done
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   388
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   389
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   390
  Filter of \<open>mkex (sch, exA, exB)\<close> to \<open>A\<close> after projection onto \<open>A\<close> is \<open>exA\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   391
  using the above trick.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   392
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   393
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   394
lemma filter_mkex_is_exA:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   395
  "Forall (\<lambda>a. a \<in> act (A \<parallel> B)) sch \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   396
    Filter (\<lambda>a. a \<in> act A) $ sch = filter_act $ (snd exA) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   397
    Filter (\<lambda>a. a \<in> act B) $ sch = filter_act $ (snd exB) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   398
  Filter_ex (asig_of A) (ProjA (mkex A B sch exA exB)) = exA"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   399
  apply (simp add: ProjA_def Filter_ex_def)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   400
  apply (pair exA)
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   401
  apply (pair exB)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   402
  apply (rule conjI)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   403
  apply (simp (no_asm) add: mkex_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   404
  apply (simplesubst trick_against_eq_in_ass)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   405
  back
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   406
  apply assumption
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   407
  apply (simp add: filter_mkex_is_exA_tmp)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   408
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   409
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   410
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   411
  Filter of \<open>mkex (sch, exA, exB)\<close> to \<open>B\<close> after projection onto \<open>B\<close> is \<open>exB\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   412
  using \<open>zip $ (proj1 $ exB) $ (proj2 $ exB)\<close> instead of \<open>exB\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   413
  because of admissibility problems structural induction.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   414
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   415
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   416
lemma filter_mkex_is_exB_tmp:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   417
  "\<forall>exA exB s t.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   418
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   419
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ exA \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   420
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ exB \<longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   421
    Filter_ex2 (asig_of B) $ (ProjB2 $ (snd (mkex A B sch (s, exA) (t, exB)))) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   422
      Zip $ (Filter (\<lambda>a. a \<in> act B) $ sch) $ (Map snd $ exB)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   423
  (*notice necessary change of arguments exA and exB*)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   424
  by (mkex_induct sch exA exB)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   425
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   426
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   427
  Filter of \<open>mkex (sch, exA, exB)\<close> to \<open>A\<close> after projection onto \<open>B\<close> is \<open>exB\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   428
  using the above trick.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   429
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   430
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   431
lemma filter_mkex_is_exB:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   432
  "Forall (\<lambda>a. a \<in> act (A \<parallel> B)) sch \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   433
    Filter (\<lambda>a. a \<in> act A) $ sch = filter_act $ (snd exA) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   434
    Filter (\<lambda>a. a \<in> act B) $ sch = filter_act $ (snd exB) \<Longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   435
    Filter_ex (asig_of B) (ProjB (mkex A B sch exA exB)) = exB"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   436
  apply (simp add: ProjB_def Filter_ex_def)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   437
  apply (pair exA)
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   438
  apply (pair exB)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   439
  apply (rule conjI)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   440
  apply (simp add: mkex_def)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   441
  apply (simplesubst trick_against_eq_in_ass)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   442
  back
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   443
  apply assumption
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   444
  apply (simp add: filter_mkex_is_exB_tmp)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   445
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   446
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   447
lemma mkex_actions_in_AorB:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   448
  \<comment> \<open>\<open>mkex\<close> has only \<open>A\<close>- or \<open>B\<close>-actions\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   449
  "\<forall>s t exA exB.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   450
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch &
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   451
    Filter (\<lambda>a. a \<in> act A) $ sch \<sqsubseteq> filter_act $ exA \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   452
    Filter (\<lambda>a. a \<in> act B) $ sch \<sqsubseteq> filter_act $ exB \<longrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   453
    Forall (\<lambda>x. fst x \<in> act (A \<parallel> B)) (snd (mkex A B sch (s, exA) (t, exB)))"
46469
0632b8e56e46 method setup;
wenzelm
parents: 42793
diff changeset
   454
  by (mkex_induct sch exA exB)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   455
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   456
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   457
theorem compositionality_sch:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   458
  "sch \<in> schedules (A \<parallel> B) \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   459
    Filter (\<lambda>a. a \<in> act A) $ sch \<in> schedules A \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   460
    Filter (\<lambda>a. a \<in> act B) $ sch \<in> schedules B \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   461
    Forall (\<lambda>x. x \<in> act (A \<parallel> B)) sch"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   462
  apply (simp add: schedules_def has_schedule_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   463
  apply auto
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   464
  text \<open>\<open>\<Longrightarrow>\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   465
  apply (rule_tac x = "Filter_ex (asig_of A) (ProjA ex)" in bexI)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   466
  prefer 2
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   467
  apply (simp add: compositionality_ex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   468
  apply (simp (no_asm) add: Filter_ex_def ProjA_def lemma_2_1a lemma_2_1b)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   469
  apply (rule_tac x = "Filter_ex (asig_of B) (ProjB ex)" in bexI)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   470
  prefer 2
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   471
  apply (simp add: compositionality_ex)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   472
  apply (simp add: Filter_ex_def ProjB_def lemma_2_1a lemma_2_1b)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   473
  apply (simp add: executions_def)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   474
  apply (pair ex)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   475
  apply (erule conjE)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   476
  apply (simp add: sch_actions_in_AorB)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   477
  text \<open>\<open>\<Longleftarrow>\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   478
  text \<open>\<open>mkex\<close> is exactly the construction of \<open>exA\<parallel>B\<close> out of \<open>exA\<close>, \<open>exB\<close>,
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   479
    and the oracle \<open>sch\<close>, we need here\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   480
  apply (rename_tac exA exB)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   481
  apply (rule_tac x = "mkex A B sch exA exB" in bexI)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   482
  text \<open>\<open>mkex\<close> actions are just the oracle\<close>
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   483
  apply (pair exA)
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   484
  apply (pair exB)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   485
  apply (simp add: Mapfst_mkex_is_sch)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   486
  text \<open>\<open>mkex\<close> is an execution -- use compositionality on ex-level\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   487
  apply (simp add: compositionality_ex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   488
  apply (simp add: stutter_mkex_on_A stutter_mkex_on_B filter_mkex_is_exB filter_mkex_is_exA)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   489
  apply (pair exA)
799a5306e2ed more method definitions;
wenzelm
parents: 62116
diff changeset
   490
  apply (pair exB)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   491
  apply (simp add: mkex_actions_in_AorB)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   492
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   493
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   494
theorem compositionality_sch_modules:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   495
  "Scheds (A \<parallel> B) = par_scheds (Scheds A) (Scheds B)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   496
  apply (unfold Scheds_def par_scheds_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   497
  apply (simp add: asig_of_par)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   498
  apply (rule set_eqI)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   499
  apply (simp add: compositionality_sch actions_of_par)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   500
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   501
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   502
declare compoex_simps [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   503
declare composch_simps [simp del]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   504
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   505
end