| author | paulson | 
| Thu, 28 Oct 1999 16:07:12 +0200 | |
| changeset 7964 | 6b3e345c47b3 | 
| parent 5976 | 44290b71a85f | 
| child 10835 | f4745d77e620 | 
| permissions | -rw-r--r-- | 
| 4559 | 1  | 
(* Title: HOLCF/IOA/meta_theory/TLS.thy  | 
2  | 
ID: $Id$  | 
|
3  | 
Author: Olaf M"uller  | 
|
4  | 
Copyright 1997 TU Muenchen  | 
|
5  | 
||
6  | 
Temporal Logic of Steps -- tailored for I/O automata  | 
|
7  | 
*)  | 
|
8  | 
||
9  | 
||
10  | 
TLS = IOA + TL +  | 
|
11  | 
||
12  | 
default term  | 
|
13  | 
||
14  | 
types  | 
|
15  | 
||
16  | 
 ('a,'s)ioa_temp       = "('a option,'s)transition temporal" 
 | 
|
17  | 
 ('a,'s)step_pred      = "('a option,'s)transition predicate"
 | 
|
18  | 
's state_pred = "'s predicate"  | 
|
19  | 
||
20  | 
consts  | 
|
21  | 
||
22  | 
||
23  | 
option_lift :: "('a => 'b) => 'b => ('a option => 'b)"
 | 
|
24  | 
plift       :: "('a => bool) => ('a option => bool)"
 | 
|
25  | 
||
26  | 
temp_sat   :: "('a,'s)execution => ('a,'s)ioa_temp => bool"    (infixr "|==" 22)
 | 
|
27  | 
xt1        :: "'s predicate => ('a,'s)step_pred"
 | 
|
28  | 
xt2        :: "'a option predicate => ('a,'s)step_pred"
 | 
|
29  | 
||
30  | 
validTE    :: "('a,'s)ioa_temp => bool"
 | 
|
31  | 
validIOA   :: "('a,'s)ioa => ('a,'s)ioa_temp => bool"
 | 
|
32  | 
||
| 
5677
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
33  | 
mkfin :: "'a Seq => 'a Seq"  | 
| 4559 | 34  | 
|
35  | 
ex2seq     :: "('a,'s)execution => ('a option,'s)transition Seq"
 | 
|
36  | 
ex2seqC    :: "('a,'s)pairs -> ('s => ('a option,'s)transition Seq)" 
 | 
|
37  | 
||
38  | 
||
39  | 
defs  | 
|
40  | 
||
| 
5677
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
41  | 
mkfin_def  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
42  | 
"mkfin s == if Partial s then @t. Finite t & s = t @@ UU  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
43  | 
else s"  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
44  | 
|
| 4559 | 45  | 
option_lift_def  | 
46  | 
"option_lift f s y == case y of None => s | Some x => (f x)"  | 
|
47  | 
||
48  | 
(* plift is used to determine that None action is always false in  | 
|
49  | 
transition predicates *)  | 
|
50  | 
plift_def  | 
|
51  | 
"plift P == option_lift P False"  | 
|
52  | 
||
53  | 
temp_sat_def  | 
|
54  | 
"ex |== P == ((ex2seq ex) |= P)"  | 
|
55  | 
||
56  | 
xt1_def  | 
|
57  | 
"xt1 P tr == P (fst tr)"  | 
|
58  | 
||
59  | 
xt2_def  | 
|
60  | 
"xt2 P tr == P (fst (snd tr))"  | 
|
61  | 
||
62  | 
ex2seq_def  | 
|
| 
5677
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
63  | 
"ex2seq ex == ((ex2seqC `(mkfin (snd ex))) (fst ex))"  | 
| 4559 | 64  | 
|
65  | 
ex2seqC_def  | 
|
66  | 
"ex2seqC == (fix`(LAM h ex. (%s. case ex of  | 
|
67  | 
nil => (s,None,s)>>nil  | 
|
68  | 
| x##xs => (flift1 (%pr.  | 
|
69  | 
(s,Some (fst pr), snd pr)>> (h`xs) (snd pr))  | 
|
70  | 
`x)  | 
|
71  | 
)))"  | 
|
72  | 
||
73  | 
validTE_def  | 
|
74  | 
"validTE P == ! ex. (ex |== P)"  | 
|
75  | 
||
76  | 
validIOA_def  | 
|
77  | 
"validIOA A P == ! ex : executions A . (ex |== P)"  | 
|
78  | 
||
| 5976 | 79  | 
|
80  | 
||
| 
4577
 
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
 
mueller 
parents: 
4559 
diff
changeset
 | 
81  | 
rules  | 
| 
 
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
 
mueller 
parents: 
4559 
diff
changeset
 | 
82  | 
|
| 
5677
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
83  | 
mkfin_UU  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
84  | 
"mkfin UU = nil"  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
85  | 
|
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
86  | 
mkfin_nil  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
87  | 
"mkfin nil =nil"  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
88  | 
|
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
89  | 
mkfin_cons  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
90  | 
"(mkfin (a>>s)) = (a>>(mkfin s))"  | 
| 
 
4feffde494cf
another little bug ;-) and minor changes in TLS.*;
 
mueller 
parents: 
4577 
diff
changeset
 | 
91  | 
|
| 
4577
 
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
 
mueller 
parents: 
4559 
diff
changeset
 | 
92  | 
|
| 4559 | 93  | 
|
94  | 
end  | 
|
95  |