Proof using lsi rri.
intros.
pose proof (lift_prop _ leader_sublog_invariant_invariant).
find_apply_hyp_hyp.
match goal with H : forall _ , _ |- _ => clear H end.
unfold leader_sublog_invariant, leader_sublog_host_invariant in *.
break_and.
do 3 find_insterU.
repeat find_rewrite_lem deghost_spec.
eauto.
Qed.

(* Specifications: *)
Lemma handleRequestVoteReply_RVR_spec :
forall h st h' t r st',
handleRequestVoteReply h st h' t r = st' ->
st' = st \/
(type st' = Follower /\
currentTerm st' = t /\
log st' = log st) \/
(currentTerm st' = currentTerm st /\
log st' = log st /\
((type st = Candidate /\ type st' = Leader /\ r = true /\ currentTerm st = t /\
wonElection (dedup name_eq_dec (h' :: votesReceived st)) = true) \/ type st' = type st)).