(***********************************************************)
(* A rely-inductive predicate describing the message story *)
(***********************************************************)
Definition msg_story s req_num to data reqs resp :=
[/\ to \in qnodes,
core_state_to_data to (getLc' s to) data,
local_indicator data (getLc s) &
let: d := getSq s in
[\/ msg_just_sent d reqs resp req_num to,
msg_received d reqs resp req_num to |
msg_responded d reqs resp req_num to data]].

(* Specifications: *)
(* This lemma employs hooking -= it's better hold!.. :-s *)
Lemma msg_story_step' req_num data reqs resp to s s' :
this != to ->
msg_story s req_num to data reqs resp ->
network_step W to s s' ->
msg_story s' req_num to data reqs resp.
Lemma msg_story_step req_num to data reqs resp z s s' :
this != z ->
msg_story s req_num to data reqs resp ->
network_step W z s s' ->
msg_story s' req_num to data reqs resp.
Lemma msg_story_rely req_num to data reqs resp s s2 :
msg_story s req_num to data reqs resp ->
network_rely W this s s2 ->
msg_story s2 req_num to data reqs resp.