Proof using.
intros.
unfold handleInput, update_elections_data_input in *.
break_match; repeat break_let; repeat find_inversion;
[eapply_prop msg_refined_raft_net_invariant_timeout'|
eapply_prop msg_refined_raft_net_invariant_client_request']; eauto; subst; auto.
Qed.

(* Specifications: *)
Theorem msg_refined_raft_net_invariant' :
forall P net,
msg_refined_raft_net_invariant_init P ->
msg_refined_raft_net_invariant_client_request' P ->
msg_refined_raft_net_invariant_timeout' P ->
msg_refined_raft_net_invariant_append_entries' P ->
msg_refined_raft_net_invariant_append_entries_reply' P ->
msg_refined_raft_net_invariant_request_vote' P ->
msg_refined_raft_net_invariant_request_vote_reply' P ->
msg_refined_raft_net_invariant_do_leader' P ->
msg_refined_raft_net_invariant_do_generic_server' P ->
msg_refined_raft_net_invariant_state_same_packet_subset' P ->
msg_refined_raft_net_invariant_reboot' P ->
msg_refined_raft_intermediate_reachable net ->
P net.