Section NoAppendEntriesToSelf.
Context {orig_base_params : BaseParams}.
Context {one_node_params : OneNodeParams orig_base_params}.
Context {raft_params : RaftParams orig_base_params}.
Proof using.
intros.
unfold doLeader in *.
repeat break_match; try solve [find_inversion; simpl in *; congruence].
find_inversion.
do_in_map.
subst. simpl in *.
find_apply_lem_hyp filter_In.
intuition. subst.
break_match; congruence.
Qed.
Proof using.
red. red. intros. simpl in *.
find_apply_hyp_hyp. intuition eauto.
do_in_map.
subst. simpl in *.
find_eapply_lem_hyp doLeader_no_messages_to_self; eauto.
Qed.
Proof using.
red. red. intros. simpl in *.
find_apply_hyp_hyp. intuition eauto.
do_in_map.
subst. simpl in *.
find_eapply_lem_hyp doGenericServer_packets. subst. simpl in *. intuition.
Qed.

Lemma no_append_entries_to_self_append_entries :
raft_net_invariant_append_entries no_append_entries_to_self.