src/HOL/UNITY/WFair.thy
changeset 8006 299127ded09d
parent 7346 dace49c16aca
child 9685 6d123a7e30bd
equal deleted inserted replaced
8005:b64d86018785 8006:299127ded09d
    15   (*This definition specifies weak fairness.  The rest of the theory
    15   (*This definition specifies weak fairness.  The rest of the theory
    16     is generic to all forms of fairness.*)
    16     is generic to all forms of fairness.*)
    17   transient :: "'a set => 'a program set"
    17   transient :: "'a set => 'a program set"
    18     "transient A == {F. EX act: Acts F. A <= Domain act & act^^A <= -A}"
    18     "transient A == {F. EX act: Acts F. A <= Domain act & act^^A <= -A}"
    19 
    19 
       
    20   ensures :: "['a set, 'a set] => 'a program set"       (infixl 60)
       
    21     "A ensures B == (A-B co A Un B) Int transient (A-B)"
       
    22 
    20 
    23 
    21 consts
    24 consts
    22 
    25 
    23   ensures :: "['a set, 'a set] => 'a program set"       (infixl 60)
       
    24 
       
    25   (*LEADS-TO constant for the inductive definition*)
    26   (*LEADS-TO constant for the inductive definition*)
    26   leads :: "'a program => ('a set * 'a set) set"
    27   leads :: "'a program => ('a set * 'a set) set"
    27 
       
    28   (*visible version of the LEADS-TO relation*)
       
    29   leadsTo :: "['a set, 'a set] => 'a program set"       (infixl 60)
       
    30 
    28 
    31 
    29 
    32 inductive "leads F"
    30 inductive "leads F"
    33   intrs 
    31   intrs 
    34 
    32 
    42     Union  "{(A,B) | A. A: S} : Pow (leads F) ==> (Union S, B) : leads F"
    40     Union  "{(A,B) | A. A: S} : Pow (leads F) ==> (Union S, B) : leads F"
    43 
    41 
    44   monos Pow_mono
    42   monos Pow_mono
    45 
    43 
    46 
    44 
    47   
    45 constdefs
    48 defs
       
    49   ensures_def "A ensures B == (A-B co A Un B) Int transient (A-B)"
       
    50 
    46 
    51   leadsTo_def "A leadsTo B == {F. (A,B) : leads F}"
    47   (*visible version of the LEADS-TO relation*)
    52 
    48   leadsTo :: "['a set, 'a set] => 'a program set"       (infixl 60)
    53 constdefs
    49     "A leadsTo B == {F. (A,B) : leads F}"
    54   
    50   
    55   (*wlt F B is the largest set that leads to B*)
    51   (*wlt F B is the largest set that leads to B*)
    56   wlt :: "['a program, 'a set] => 'a set"
    52   wlt :: "['a program, 'a set] => 'a set"
    57     "wlt F B == Union {A. F: A leadsTo B}"
    53     "wlt F B == Union {A. F: A leadsTo B}"
    58 
    54