|
11479
|
1 |
(* Title: HOL/UNITY/WFair.thy
|
|
|
2 |
ID: $Id$
|
|
|
3 |
Author: Sidi Ehmety, Computer Laboratory
|
|
|
4 |
Copyright 1998 University of Cambridge
|
|
|
5 |
|
|
|
6 |
Weak Fairness versions of transient, ensures, leadsTo.
|
|
|
7 |
|
|
|
8 |
From Misra, "A Logic for Concurrent Programming", 1994
|
|
|
9 |
|
|
|
10 |
Theory ported from HOL.
|
|
|
11 |
*)
|
|
|
12 |
|
|
|
13 |
WFair = UNITY +
|
|
|
14 |
constdefs
|
|
|
15 |
|
|
|
16 |
(*This definition specifies weak fairness. The rest of the theory
|
|
|
17 |
is generic to all forms of fairness.*)
|
|
|
18 |
transient :: "i=>i"
|
|
|
19 |
"transient(A) =={F:program. (EX act: Acts(F).
|
|
|
20 |
A<= domain(act) & act``A <= state-A) & A:condition}"
|
|
|
21 |
|
|
|
22 |
ensures :: "[i,i] => i" (infixl 60)
|
|
|
23 |
"A ensures B == ((A-B) co (A Un B)) Int transient(A-B)"
|
|
|
24 |
|
|
|
25 |
consts
|
|
|
26 |
|
|
|
27 |
(*LEADS-TO constant for the inductive definition*)
|
|
|
28 |
leads :: "i=>i"
|
|
|
29 |
|
|
|
30 |
inductive (* All typing conidition `A:condition' will desapear
|
|
|
31 |
in the dervied rules *)
|
|
|
32 |
domains
|
|
|
33 |
"leads(F)" <= "condition*condition"
|
|
|
34 |
intrs
|
|
|
35 |
Basis "[| F:A ensures B; A:condition; B:condition |] ==> <A,B>:leads(F)"
|
|
|
36 |
Trans "[| <A,B> : leads(F); <B,C> : leads(F) |] ==> <A,C>:leads(F)"
|
|
|
37 |
Union "[| S:Pow({A:S. <A, B>:leads(F)});
|
|
|
38 |
B:condition; S:Pow(condition) |] ==>
|
|
|
39 |
<Union(S),B>:leads(F)"
|
|
|
40 |
|
|
|
41 |
monos Pow_mono
|
|
|
42 |
type_intrs "[UnionI, Union_in_conditionI, PowI]"
|
|
|
43 |
|
|
|
44 |
constdefs
|
|
|
45 |
|
|
|
46 |
(*visible version of the LEADS-TO relation*)
|
|
|
47 |
leadsTo :: "[i, i] => i" (infixl 60)
|
|
|
48 |
"A leadsTo B == {F:program. <A,B>:leads(F)}"
|
|
|
49 |
|
|
|
50 |
(*wlt F B is the largest set that leads to B*)
|
|
|
51 |
wlt :: "[i, i] => i"
|
|
|
52 |
"wlt(F, B) == Union({A:condition. F: A leadsTo B})"
|
|
|
53 |
|
|
|
54 |
syntax (xsymbols)
|
|
|
55 |
"op leadsTo" :: "[i, i] => i" (infixl "\\<longmapsto>" 60)
|
|
|
56 |
|
|
|
57 |
end
|