(***********************************************************)
(* 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]].

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.