Proof using si lhllsi rri.
red. unfold logs_leaderLogs_inductive. intros. intuition.
- subst.
unfold logs_leaderLogs in *. intros.
simpl in *.
find_higher_order_rewrite; update_destruct; subst; rewrite_update; simpl in *.
+ find_apply_lem_hyp handleClientRequest_log. intuition; subst; repeat find_rewrite.
* find_apply_hyp_hyp; break_exists_exists; intuition;
find_higher_order_rewrite; update_destruct; subst; rewrite_update; eauto;
simpl in *; rewrite update_elections_data_client_request_leaderLogs; eauto.
* {break_exists. intuition. repeat find_rewrite. simpl in *.
intuition; subst.
- find_apply_lem_hyp leaders_have_leaderLogs_strong_invariant; eauto.
break_exists. intuition.
unfold ghost_data in *. simpl in *. repeat find_rewrite.
match goal with
| h : name, _ : _ = ?e :: ?es ++ ?ll |- _ =>
exists h, ll, (e :: x0)
end; intuition.
+ find_higher_order_rewrite; update_destruct; subst; rewrite_update; eauto;
simpl in *; rewrite update_elections_data_client_request_leaderLogs; eauto.
+ break_if; eauto using app_ass; do_bool; omega.
+ simpl in *. intuition; subst; eauto.
- find_copy_apply_lem_hyp maxIndex_is_max; eauto using lift_logs_sorted.
find_apply_hyp_hyp. break_exists_exists; intuition;
[find_higher_order_rewrite ; update_destruct; subst; rewrite_update; eauto;
simpl in *; rewrite update_elections_data_client_request_leaderLogs; eauto|].
break_if; do_bool; intuition; omega.
}
+ find_apply_hyp_hyp; break_exists_exists; intuition;
find_higher_order_rewrite; update_destruct; subst; rewrite_update; eauto;
simpl in *; rewrite update_elections_data_client_request_leaderLogs; eauto.
- unfold logs_leaderLogs_nw in *.
intros. simpl in *. find_apply_hyp_hyp. intuition.
+ eapply_prop_hyp In pBody; eauto; break_exists_exists; intuition; subst;
repeat find_higher_order_rewrite; update_destruct; subst; rewrite_update; eauto;
simpl in *; rewrite update_elections_data_client_request_leaderLogs; eauto.
+ do_in_map. subst. simpl in *. find_eapply_lem_hyp handleClientRequest_no_append_entries;
eauto. intuition. find_false. repeat find_rewrite. repeat eexists; eauto.
Qed.

(* Specifications: *)
Lemma logs_leaderLogs_inductive_timeout :
refined_raft_net_invariant_timeout logs_leaderLogs_inductive.