src/HOL/HOLCF/IOA/Traces.thy
author nipkow
Tue, 23 Feb 2016 16:25:08 +0100
changeset 62390 842917225d56
parent 62195 799a5306e2ed
child 63549 b0d31c7def86
permissions -rw-r--r--
more canonical names
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/Traces.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>Executions and Traces of I/O automata in HOLCF\<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 Traces
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
     8
imports Sequence Automata
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
36452
d37c6eed8117 renamed command 'defaultsort' to 'default_sort';
wenzelm
parents: 30607
diff changeset
    11
default_sort type
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    12
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    13
type_synonym ('a, 's) pairs = "('a \<times> 's) Seq"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    14
type_synonym ('a, 's) execution = "'s \<times> ('a, 's) pairs"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    15
type_synonym 'a trace = "'a Seq"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    16
type_synonym ('a, 's) execution_module = "('a, 's) execution set \<times> 'a signature"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    17
type_synonym 'a schedule_module = "'a trace set \<times> 'a signature"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    18
type_synonym 'a trace_module = "'a trace set \<times> 'a signature"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    19
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    20
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    21
subsection \<open>Executions\<close>
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    22
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    23
definition is_exec_fragC :: "('a, 's) ioa \<Rightarrow> ('a, 's) pairs \<rightarrow> 's \<Rightarrow> tr"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    24
  where "is_exec_fragC A =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    25
    (fix $
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    26
      (LAM h ex.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    27
        (\<lambda>s.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    28
          case ex of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    29
            nil \<Rightarrow> TT
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    30
          | x ## xs \<Rightarrow> flift1 (\<lambda>p. Def ((s, p) \<in> trans_of A) andalso (h $ xs) (snd p)) $ x)))"
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    31
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    32
definition is_exec_frag :: "('a, 's) ioa \<Rightarrow> ('a, 's) execution \<Rightarrow> bool"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    33
  where "is_exec_frag A ex \<longleftrightarrow> (is_exec_fragC A $ (snd ex)) (fst ex) \<noteq> FF"
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    34
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    35
definition executions :: "('a, 's) ioa \<Rightarrow> ('a, 's) execution set"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    36
  where "executions ioa = {e. fst e \<in> starts_of ioa \<and> is_exec_frag ioa e}"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    37
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    38
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    39
subsection \<open>Schedules\<close>
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    40
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    41
definition filter_act :: "('a, 's) pairs \<rightarrow> 'a trace"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    42
  where "filter_act = Map fst"
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 has_schedule :: "('a, 's) ioa \<Rightarrow> 'a trace \<Rightarrow> bool"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    45
  where "has_schedule ioa sch \<longleftrightarrow> (\<exists>ex \<in> executions ioa. sch = filter_act $ (snd ex))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    46
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    47
definition schedules :: "('a, 's) ioa \<Rightarrow> 'a trace set"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    48
  where "schedules ioa = {sch. has_schedule ioa sch}"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    49
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    50
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    51
subsection \<open>Traces\<close>
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    52
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    53
definition has_trace :: "('a, 's) ioa \<Rightarrow> 'a trace \<Rightarrow> bool"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    54
  where "has_trace ioa tr \<longleftrightarrow> (\<exists>sch \<in> schedules ioa. tr = Filter (\<lambda>a. a \<in> ext ioa) $ sch)"
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
    55
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    56
definition traces :: "('a, 's) ioa \<Rightarrow> 'a trace set"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    57
  where "traces ioa \<equiv> {tr. has_trace ioa tr}"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    58
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    59
definition mk_trace :: "('a, 's) ioa \<Rightarrow> ('a, 's) pairs \<rightarrow> 'a trace"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    60
  where "mk_trace ioa = (LAM tr. Filter (\<lambda>a. a \<in> ext ioa) $ (filter_act $ tr))"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    62
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    63
subsection \<open>Fair Traces\<close>
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    64
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    65
definition laststate :: "('a, 's) execution \<Rightarrow> 's"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    66
  where "laststate ex =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    67
    (case Last $ (snd ex) of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    68
      UU \<Rightarrow> fst ex
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    69
    | Def at \<Rightarrow> snd at)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    70
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    71
text \<open>A predicate holds infinitely (finitely) often in a sequence.\<close>
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    72
definition inf_often :: "('a \<Rightarrow> bool) \<Rightarrow> 'a Seq \<Rightarrow> bool"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    73
  where "inf_often P s \<longleftrightarrow> Infinite (Filter P $ s)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    74
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    75
text \<open>Filtering \<open>P\<close> yields a finite or partial sequence.\<close>
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    76
definition fin_often :: "('a \<Rightarrow> bool) \<Rightarrow> 'a Seq \<Rightarrow> bool"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    77
  where "fin_often P s \<longleftrightarrow> \<not> inf_often P s"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    78
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    79
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    80
subsection \<open>Fairness of executions\<close>
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    81
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    82
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    83
  Note that partial execs cannot be \<open>wfair\<close> as the inf_often predicate in the
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    84
  else branch prohibits it. However they can be \<open>sfair\<close> in the case when all
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    85
  \<open>W\<close> are only finitely often enabled: Is this the right model?
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    86
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    87
  See @{file "LiveIOA.thy"} for solution conforming with the literature and
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    88
  superseding this one.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    89
\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    90
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    91
definition is_wfair :: "('a, 's) ioa \<Rightarrow> 'a set \<Rightarrow> ('a, 's) execution \<Rightarrow> bool"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    92
  where "is_wfair A W ex \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    93
    (inf_often (\<lambda>x. fst x \<in> W) (snd ex) \<or>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    94
      inf_often (\<lambda>x. \<not> Enabled A W (snd x)) (snd ex))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    95
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
    96
definition wfair_ex :: "('a, 's) ioa \<Rightarrow> ('a, 's) execution \<Rightarrow> bool"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    97
  where "wfair_ex A ex \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    98
    (\<forall>W \<in> wfair_of A.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
    99
      if Finite (snd ex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   100
      then \<not> Enabled A W (laststate ex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   101
      else is_wfair A W ex)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   102
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   103
definition is_sfair :: "('a, 's) ioa \<Rightarrow> 'a set \<Rightarrow> ('a, 's) execution \<Rightarrow> bool"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   104
  where "is_sfair A W ex \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   105
    (inf_often (\<lambda>x. fst x \<in> W) (snd ex) \<or>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   106
      fin_often (\<lambda>x. Enabled A W (snd x)) (snd ex))"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   107
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   108
definition sfair_ex :: "('a, 's)ioa \<Rightarrow> ('a, 's) execution \<Rightarrow> bool"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   109
  where "sfair_ex A ex \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   110
    (\<forall>W \<in> sfair_of A.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   111
      if Finite (snd ex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   112
      then \<not> Enabled A W (laststate ex)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   113
      else is_sfair A W ex)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   114
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   115
definition fair_ex :: "('a, 's) ioa \<Rightarrow> ('a, 's) execution \<Rightarrow> bool"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   116
  where "fair_ex A ex \<longleftrightarrow> wfair_ex A ex \<and> sfair_ex A ex"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   117
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   118
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   119
text \<open>Fair behavior sets.\<close>
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   120
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   121
definition fairexecutions :: "('a, 's) ioa \<Rightarrow> ('a, 's) execution set"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   122
  where "fairexecutions A = {ex. ex \<in> executions A \<and> fair_ex A ex}"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   123
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   124
definition fairtraces :: "('a, 's) ioa \<Rightarrow> 'a trace set"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   125
  where "fairtraces A = {mk_trace A $ (snd ex) | ex. ex \<in> fairexecutions A}"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   126
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   127
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   128
subsection \<open>Implementation\<close>
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   129
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   130
subsubsection \<open>Notions of implementation\<close>
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   131
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   132
definition ioa_implements :: "('a, 's1) ioa \<Rightarrow> ('a, 's2) ioa \<Rightarrow> bool"  (infixr "=<|" 12)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   133
  where "(ioa1 =<| ioa2) \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   134
    (inputs (asig_of ioa1) = inputs (asig_of ioa2) \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   135
     outputs (asig_of ioa1) = outputs (asig_of ioa2)) \<and>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   136
    traces ioa1 \<subseteq> traces ioa2"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   137
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   138
definition fair_implements :: "('a, 's1) ioa \<Rightarrow> ('a, 's2) ioa \<Rightarrow> bool"
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   139
  where "fair_implements C A \<longleftrightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   140
    inp C = inp A \<and> out C = out A \<and> fairtraces C \<subseteq> fairtraces A"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   141
62193
wenzelm
parents: 62116
diff changeset
   142
lemma implements_trans: "A =<| B \<Longrightarrow> B =<| C \<Longrightarrow> A =<| C"
wenzelm
parents: 62116
diff changeset
   143
  by (auto simp add: ioa_implements_def)
wenzelm
parents: 62116
diff changeset
   144
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   145
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   146
subsection \<open>Modules\<close>
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   147
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   148
subsubsection \<open>Execution, schedule and trace modules\<close>
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   149
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   150
definition Execs :: "('a, 's) ioa \<Rightarrow> ('a, 's) execution_module"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   151
  where "Execs A = (executions A, asig_of A)"
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   152
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   153
definition Scheds :: "('a, 's) ioa \<Rightarrow> 'a schedule_module"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   154
  where "Scheds A = (schedules A, asig_of A)"
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   155
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   156
definition Traces :: "('a, 's) ioa \<Rightarrow> 'a trace_module"
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   157
  where "Traces A = (traces A, asig_of A)"
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   158
37598
893dcabf0c04 explicit is better than implicit
haftmann
parents: 36452
diff changeset
   159
lemmas [simp del] = HOL.ex_simps HOL.all_simps split_paired_Ex
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   160
declare Let_def [simp]
62002
f1599e98c4d0 isabelle update_cartouches -c -t;
wenzelm
parents: 62001
diff changeset
   161
setup \<open>map_theory_claset (fn ctxt => ctxt delSWrapper "split_all_tac")\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   162
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   163
lemmas exec_rws = executions_def is_exec_frag_def
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   164
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   165
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   166
subsection \<open>Recursive equations of operators\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   167
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   168
subsubsection \<open>\<open>filter_act\<close>\<close>
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 filter_act_UU: "filter_act $ UU = UU"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   171
  by (simp add: filter_act_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   172
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   173
lemma filter_act_nil: "filter_act $ nil = nil"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   174
  by (simp add: filter_act_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   175
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   176
lemma filter_act_cons: "filter_act $ (x \<leadsto> xs) = fst x \<leadsto> filter_act $ xs"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   177
  by (simp add: filter_act_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   178
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   179
declare filter_act_UU [simp] filter_act_nil [simp] filter_act_cons [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   180
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   181
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   182
subsubsection \<open>\<open>mk_trace\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   183
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   184
lemma mk_trace_UU: "mk_trace A $ UU = UU"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   185
  by (simp add: mk_trace_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   186
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   187
lemma mk_trace_nil: "mk_trace A $ nil = nil"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   188
  by (simp add: mk_trace_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   189
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   190
lemma mk_trace_cons:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   191
  "mk_trace A $ (at \<leadsto> xs) =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   192
    (if fst at \<in> ext A
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   193
     then fst at \<leadsto> mk_trace A $ xs
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   194
     else mk_trace A $ xs)"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   195
  by (simp add: mk_trace_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   196
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   197
declare mk_trace_UU [simp] mk_trace_nil [simp] mk_trace_cons [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   198
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   199
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   200
subsubsection \<open>\<open>is_exec_fragC\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   201
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   202
lemma is_exec_fragC_unfold:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   203
  "is_exec_fragC A =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   204
    (LAM ex.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   205
      (\<lambda>s.
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   206
        case ex of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   207
          nil \<Rightarrow> TT
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   208
        | x ## xs \<Rightarrow>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   209
            (flift1 (\<lambda>p. Def ((s, p) \<in> trans_of A) andalso (is_exec_fragC A$xs) (snd p)) $ x)))"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   210
  apply (rule trans)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   211
  apply (rule fix_eq4)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   212
  apply (rule is_exec_fragC_def)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   213
  apply (rule beta_cfun)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   214
  apply (simp add: flift1_def)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   215
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   216
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   217
lemma is_exec_fragC_UU: "(is_exec_fragC A $ UU) s = UU"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   218
  apply (subst is_exec_fragC_unfold)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   219
  apply simp
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   220
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   221
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   222
lemma is_exec_fragC_nil: "(is_exec_fragC A $ nil) s = TT"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   223
  apply (subst is_exec_fragC_unfold)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   224
  apply simp
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   225
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   226
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   227
lemma is_exec_fragC_cons:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   228
  "(is_exec_fragC A $ (pr \<leadsto> xs)) s =
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   229
    (Def ((s, pr) \<in> trans_of A) andalso (is_exec_fragC A $ xs) (snd pr))"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   230
  apply (rule trans)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   231
  apply (subst is_exec_fragC_unfold)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   232
  apply (simp add: Consq_def flift1_def)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   233
  apply simp
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   234
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   235
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   236
declare is_exec_fragC_UU [simp] is_exec_fragC_nil [simp] is_exec_fragC_cons [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   237
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   238
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   239
subsubsection \<open>\<open>is_exec_frag\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   240
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   241
lemma is_exec_frag_UU: "is_exec_frag A (s, UU)"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   242
  by (simp add: is_exec_frag_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   243
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   244
lemma is_exec_frag_nil: "is_exec_frag A (s, nil)"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   245
  by (simp add: is_exec_frag_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   246
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   247
lemma is_exec_frag_cons:
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   248
  "is_exec_frag A (s, (a, t) \<leadsto> ex) \<longleftrightarrow> (s, a, t) \<in> trans_of A \<and> is_exec_frag A (t, ex)"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   249
  by (simp add: is_exec_frag_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   250
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   251
declare is_exec_frag_UU [simp] is_exec_frag_nil [simp] is_exec_frag_cons [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   252
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   253
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   254
subsubsection \<open>\<open>laststate\<close>\<close>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   255
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   256
lemma laststate_UU: "laststate (s, UU) = s"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   257
  by (simp add: laststate_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   258
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   259
lemma laststate_nil: "laststate (s, nil) = s"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   260
  by (simp add: laststate_def)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   261
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   262
lemma laststate_cons: "Finite ex \<Longrightarrow> laststate (s, at \<leadsto> ex) = laststate (snd at, ex)"
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   263
  apply (simp add: laststate_def)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   264
  apply (cases "ex = nil")
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   265
  apply simp
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   266
  apply simp
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   267
  apply (drule Finite_Last1 [THEN mp])
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   268
  apply assumption
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   269
  apply defined
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   270
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   271
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   272
declare laststate_UU [simp] laststate_nil [simp] laststate_cons [simp]
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   273
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   274
lemma exists_laststate: "Finite ex \<Longrightarrow> \<forall>s. \<exists>u. laststate (s, ex) = u"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   275
  by Seq_Finite_induct
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   276
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   277
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   278
subsection \<open>\<open>has_trace\<close> \<open>mk_trace\<close>\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   279
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   280
(*alternative definition of has_trace tailored for the refinement proof, as it does not
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   281
  take the detour of schedules*)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   282
lemma has_trace_def2: "has_trace A b \<longleftrightarrow> (\<exists>ex \<in> executions A. b = mk_trace A $ (snd ex))"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   283
  apply (unfold executions_def mk_trace_def has_trace_def schedules_def has_schedule_def [abs_def])
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   284
  apply auto
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   285
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   286
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   287
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   288
subsection \<open>Signatures and executions, schedules\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   289
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   290
text \<open>
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   291
  All executions of \<open>A\<close> have only actions of \<open>A\<close>. This is only true because of
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   292
  the predicate \<open>state_trans\<close> (part of the predicate \<open>IOA\<close>): We have no
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   293
  dependent types. For executions of parallel automata this assumption is not
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   294
  needed, as in \<open>par_def\<close> this condition is included once more. (See Lemmas
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   295
  1.1.1c in CompoExecs for example.)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   296
\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   297
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   298
lemma execfrag_in_sig:
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   299
  "is_trans_of A \<Longrightarrow> \<forall>s. is_exec_frag A (s, xs) \<longrightarrow> Forall (\<lambda>a. a \<in> act A) (filter_act $ xs)"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   300
  apply (pair_induct xs simp: is_exec_frag_def Forall_def sforall_def)
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   301
  text \<open>main case\<close>
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   302
  apply (auto simp add: is_trans_of_def)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   303
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   304
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   305
lemma exec_in_sig:
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   306
  "is_trans_of A \<Longrightarrow> x \<in> executions A \<Longrightarrow> Forall (\<lambda>a. a \<in> act A) (filter_act $ (snd x))"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   307
  apply (simp add: executions_def)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   308
  apply (pair x)
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   309
  apply (rule execfrag_in_sig [THEN spec, THEN mp])
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   310
  apply auto
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   311
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   312
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   313
lemma scheds_in_sig: "is_trans_of A \<Longrightarrow> x \<in> schedules A \<Longrightarrow> Forall (\<lambda>a. a \<in> act A) x"
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   314
  apply (unfold schedules_def has_schedule_def [abs_def])
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   315
  apply (fast intro!: exec_in_sig)
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   316
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   317
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   318
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   319
subsection \<open>Executions are prefix closed\<close>
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   320
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   321
(*only admissible in y, not if done in x!*)
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   322
lemma execfrag_prefixclosed: "\<forall>x s. is_exec_frag A (s, x) \<and> y \<sqsubseteq> x \<longrightarrow> is_exec_frag A (s, y)"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   323
  apply (pair_induct y simp: is_exec_frag_def)
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   324
  apply (intro strip)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   325
  apply (Seq_case_simp x)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   326
  apply (pair a)
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   327
  apply auto
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   328
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   329
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   330
lemmas exec_prefixclosed =
45606
b1e1508643b1 eliminated obsolete "standard";
wenzelm
parents: 42151
diff changeset
   331
  conjI [THEN execfrag_prefixclosed [THEN spec, THEN spec, THEN mp]]
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   332
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   333
(*second prefix notion for Finite x*)
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   334
lemma exec_prefix2closed [rule_format]:
62116
bc178c0fe1a1 misc tuning and modernization;
wenzelm
parents: 62008
diff changeset
   335
  "\<forall>y s. is_exec_frag A (s, x @@ y) \<longrightarrow> is_exec_frag A (s, x)"
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   336
  apply (pair_induct x simp: is_exec_frag_def)
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   337
  apply (intro strip)
62195
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   338
  apply (Seq_case_simp s)
799a5306e2ed more method definitions;
wenzelm
parents: 62193
diff changeset
   339
  apply (pair a)
62005
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   340
  apply auto
68db98c2cd97 modernized defs;
wenzelm
parents: 62002
diff changeset
   341
  done
19741
f65265d71426 removed legacy ML scripts;
wenzelm
parents: 17233
diff changeset
   342
17233
41eee2e7b465 converted specifications to Isar theories;
wenzelm
parents: 14981
diff changeset
   343
end