src/HOL/UNITY/Comp/Handshake.thy
changeset 13812 91713a1915ee
parent 13786 ab8f39f48a6f
child 16184 80617b8d33c5
equal deleted inserted replaced
13811:f39f67982854 13812:91713a1915ee
    19   (*F's program*)
    19   (*F's program*)
    20   cmdF :: "(state*state) set"
    20   cmdF :: "(state*state) set"
    21     "cmdF == {(s,s'). s' = s (|NF:= Suc(NF s), BB:=False|) & BB s}"
    21     "cmdF == {(s,s'). s' = s (|NF:= Suc(NF s), BB:=False|) & BB s}"
    22 
    22 
    23   F :: "state program"
    23   F :: "state program"
    24     "F == mk_program ({s. NF s = 0 & BB s}, {cmdF}, UNIV)"
    24     "F == mk_total_program ({s. NF s = 0 & BB s}, {cmdF}, UNIV)"
    25 
    25 
    26   (*G's program*)
    26   (*G's program*)
    27   cmdG :: "(state*state) set"
    27   cmdG :: "(state*state) set"
    28     "cmdG == {(s,s'). s' = s (|NG:= Suc(NG s), BB:=True|) & ~ BB s}"
    28     "cmdG == {(s,s'). s' = s (|NG:= Suc(NG s), BB:=True|) & ~ BB s}"
    29 
    29 
    30   G :: "state program"
    30   G :: "state program"
    31     "G == mk_program ({s. NG s = 0 & BB s}, {cmdG}, UNIV)"
    31     "G == mk_total_program ({s. NG s = 0 & BB s}, {cmdG}, UNIV)"
    32 
    32 
    33   (*the joint invariant*)
    33   (*the joint invariant*)
    34   invFG :: "state set"
    34   invFG :: "state set"
    35     "invFG == {s. NG s <= NF s & NF s <= Suc (NG s) & (BB s = (NF s = NG s))}"
    35     "invFG == {s. NG s <= NF s & NF s <= Suc (NG s) & (BB s = (NF s = NG s))}"
    36 
    36