src/HOLCF/IOA/meta_theory/Traces.thy
author mueller
Mon, 12 Jan 1998 17:48:23 +0100
changeset 4559 8e604d885b54
parent 3842 b55686a7b22c
child 5976 44290b71a85f
permissions -rw-r--r--
added files containing temproal logic and abstraction;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     1
(*  Title:      HOLCF/IOA/meta_theory/Traces.thy
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
     2
    ID:         $Id$
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     3
    Author:     Olaf M"uller
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     4
    Copyright   1996  TU Muenchen
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     5
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     6
Executions and Traces of I/O automata in HOLCF.
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     7
*)   
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     8
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
     9
		       
3275
3f53f2c876f4 changes for release 94-8
mueller
parents: 3071
diff changeset
    10
Traces = Sequence + Automata +
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    11
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    12
default term
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    13
 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    14
types  
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    15
   ('a,'s)pairs            =    "('a * 's) Seq"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    16
   ('a,'s)execution        =    "'s * ('a,'s)pairs"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    17
   'a trace                =    "'a Seq"
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    18
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    19
   ('a,'s)execution_module = "('a,'s)execution set * 'a signature"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    20
   'a schedule_module      = "'a trace set * 'a signature"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    21
   'a trace_module         = "'a trace set * 'a signature"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    22
 
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    23
consts
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    24
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    25
   (* Executions *)
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    26
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    27
  is_exec_fragC      ::"('a,'s)ioa => ('a,'s)pairs -> 's => tr"
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    28
  is_exec_frag,
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    29
  has_execution ::"[('a,'s)ioa, ('a,'s)execution] => bool"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    30
  executions    :: "('a,'s)ioa => ('a,'s)execution set"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    31
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    32
  (* Schedules and traces *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    33
  filter_act    ::"('a,'s)pairs -> 'a trace"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    34
  has_schedule,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    35
  has_trace     :: "[('a,'s)ioa, 'a trace] => bool"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    36
  schedules,
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    37
  traces        :: "('a,'s)ioa => 'a trace set"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    38
  mk_trace      :: "('a,'s)ioa => ('a,'s)pairs -> 'a trace"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    39
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    40
  laststate    ::"('a,'s)execution => 's"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    41
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    42
  (* A predicate holds infinitely (finitely) often in a sequence *)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    43
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    44
  inf_often      ::"('a => bool) => 'a Seq => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    45
  fin_often      ::"('a => bool) => 'a Seq => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    46
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    47
  (* fairness of executions *)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    48
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    49
  wfair_ex       ::"('a,'s)ioa => ('a,'s)execution => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    50
  sfair_ex       ::"('a,'s)ioa => ('a,'s)execution => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    51
  is_wfair       ::"('a,'s)ioa => 'a set => ('a,'s)execution => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    52
  is_sfair       ::"('a,'s)ioa => 'a set => ('a,'s)execution => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    53
  fair_ex        ::"('a,'s)ioa => ('a,'s)execution => bool"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    54
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    55
  (* fair behavior sets *)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    56
 
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    57
  fairexecutions ::"('a,'s)ioa => ('a,'s)execution set"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    58
  fairtraces     ::"('a,'s)ioa => 'a trace set"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    59
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    60
  (* Notions of implementation *)
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    61
  "=<|" :: "[('a,'s1)ioa, ('a,'s2)ioa] => bool"   (infixr 12) 
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
    62
  fair_implements  :: "('a,'s1)ioa => ('a,'s2)ioa => bool"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    63
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    64
  (* Execution, schedule and trace modules *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    65
  Execs         ::  "('a,'s)ioa => ('a,'s)execution_module"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    66
  Scheds        ::  "('a,'s)ioa => 'a schedule_module"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    67
  Traces        ::  "('a,'s)ioa => 'a trace_module"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
    68
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    69
(*
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    70
(* FIX: introduce good symbol *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    71
syntax (symbols)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    72
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    73
  "op <<|"       ::"[('a,'s1)ioa, ('a,'s2)ioa] => bool" (infixr "\\<parallel>" 10)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    74
*)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    75
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    76
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    77
defs
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    78
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    79
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    80
(*  ------------------- Executions ------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    81
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    82
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    83
is_exec_frag_def
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    84
  "is_exec_frag A ex ==  ((is_exec_fragC A`(snd ex)) (fst ex) ~= FF)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    85
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    86
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    87
is_exec_fragC_def
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    88
  "is_exec_fragC A ==(fix`(LAM h ex. (%s. case ex of 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    89
      nil => TT
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    90
    | x##xs => (flift1 
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
    91
            (%p. Def ((s,p):trans_of A) andalso (h`xs) (snd p)) 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    92
             `x)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    93
   )))" 
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    94
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    95
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    96
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    97
executions_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
    98
  "executions ioa == {e. ((fst e) : starts_of(ioa)) &               
3433
2de17c994071 added deadlock freedom, polished definitions and proofs
mueller
parents: 3275
diff changeset
    99
                         is_exec_frag ioa e}"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   100
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   101
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   102
(*  ------------------- Schedules ------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   103
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   104
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   105
filter_act_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   106
  "filter_act == Map fst"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   107
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   108
has_schedule_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   109
  "has_schedule ioa sch ==                                               
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   110
     (? ex:executions ioa. sch = filter_act`(snd ex))"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   111
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   112
schedules_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   113
  "schedules ioa == {sch. has_schedule ioa sch}"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   114
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   115
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   116
(*  ------------------- Traces ------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   117
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   118
has_trace_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   119
  "has_trace ioa tr ==                                               
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
   120
     (? sch:schedules ioa. tr = Filter (%a. a:ext(ioa))`sch)"
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   121
 
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   122
traces_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   123
  "traces ioa == {tr. has_trace ioa tr}"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   124
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   125
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   126
mk_trace_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   127
  "mk_trace ioa == LAM tr. 
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3521
diff changeset
   128
     Filter (%a. a:ext(ioa))`(filter_act`tr)"
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   129
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   130
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   131
(*  ------------------- Fair Traces ------------------------------ *)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   132
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   133
laststate_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   134
  "laststate ex == case Last`(snd ex) of
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   135
                      Undef  => fst ex
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   136
                    | Def at => snd at"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   137
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   138
inf_often_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   139
  "inf_often P s == Infinite (Filter P`s)"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   140
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   141
(*  filtering P yields a finite or partial sequence *)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   142
fin_often_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   143
  "fin_often P s == ~inf_often P s"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   144
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   145
(* Note that partial execs cannot be wfair as the inf_often predicate in the 
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   146
   else branch prohibits it. However they can be sfair in the case when all W 
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   147
   are only finitely often enabled: FIX Is this the right model? *)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   148
wfair_ex_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   149
  "wfair_ex A ex == ! W : wfair_of A.  
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   150
                      if   Finite (snd ex) 
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   151
                      then ~Enabled A W (laststate ex)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   152
                      else is_wfair A W ex"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   153
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   154
is_wfair_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   155
  "is_wfair A W ex == (inf_often (%x. fst x:W) (snd ex)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   156
                     | inf_often (%x.~Enabled A W (snd x)) (snd ex))"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   157
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   158
sfair_ex_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   159
  "sfair_ex A ex == ! W : sfair_of A.
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   160
                      if   Finite (snd ex) 
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   161
                      then ~Enabled A W (laststate ex)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   162
                      else is_sfair A W ex"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   163
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   164
is_sfair_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   165
  "is_sfair A W ex ==  (inf_often (%x. fst x:W) (snd ex)
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   166
                      | fin_often (%x. Enabled A W (snd x)) (snd ex))"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   167
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   168
fair_ex_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   169
  "fair_ex A ex == wfair_ex A ex & sfair_ex A ex"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   170
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   171
fairexecutions_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   172
  "fairexecutions A == {ex. ex:executions A & fair_ex A ex}"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   173
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   174
fairtraces_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   175
  "fairtraces A == {mk_trace A`(snd ex) | ex. ex:fairexecutions A}"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   176
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   177
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   178
(*  ------------------- Implementation ------------------------------ *)
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   179
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   180
ioa_implements_def
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   181
  "ioa1 =<| ioa2 ==   
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   182
    (((inputs(asig_of(ioa1)) = inputs(asig_of(ioa2))) &   
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   183
     (outputs(asig_of(ioa1)) = outputs(asig_of(ioa2)))) &
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   184
      traces(ioa1) <= traces(ioa2))"
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   185
4559
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   186
fair_implements_def
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   187
  "fair_implements C A == inp(C) = inp(A) &  out(C)=out(A) &
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   188
                          fairtraces(C) <= fairtraces(A)"
8e604d885b54 added files containing temproal logic and abstraction;
mueller
parents: 3842
diff changeset
   189
3521
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   190
(*  ------------------- Modules ------------------------------ *)
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   191
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   192
Execs_def
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   193
  "Execs A  == (executions A, asig_of A)"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   194
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   195
Scheds_def
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   196
  "Scheds A == (schedules A, asig_of A)"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   197
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   198
Traces_def
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   199
  "Traces A == (traces A,asig_of A)"
bdc51b4c6050 changes needed for adding fairness
mueller
parents: 3433
diff changeset
   200
3071
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   201
981258186b71 New meta theory for IOA based on HOLCF.
mueller
parents:
diff changeset
   202
end