Proof using.
unfold refined_raft_net_invariant_reboot, reboot. intros. subst.
unfold cronies_correct in *; intuition.
- unfold votes_received_cronies in *. intros.
repeat find_higher_order_rewrite. simpl in *.
repeat break_if; simpl in *; intuition eauto.
- unfold cronies_votes in *. intros.
repeat find_higher_order_rewrite. simpl in *.
repeat break_if; subst; simpl in *; intuition eauto;
try match goal with
| H : ?t = (?x, ?y) |- _ =>
assert (x = (fst t)) by (rewrite H; reflexivity);
assert (y = (snd t)) by (rewrite H; reflexivity);
clear H;
subst
end; intuition eauto.
- unfold votes_nw in *. intros.
repeat find_higher_order_rewrite. simpl in *.
repeat break_if; subst; simpl in *; intuition eauto;
try match goal with
| H : ?t = (?x, ?y) |- _ =>
assert (x = (fst t)) by (rewrite H; reflexivity);
assert (y = (snd t)) by (rewrite H; reflexivity);
clear H;
subst
end; intuition eauto.
- unfold votes_received_leaders in *. intros.
repeat find_higher_order_rewrite. simpl in *.
repeat break_if; subst; simpl in *; intuition eauto;
try match goal with
| H : ?t = (?x, ?y) |- _ =>
assert (x = (fst t)) by (rewrite H; reflexivity);
assert (y = (snd t)) by (rewrite H; reflexivity);
clear H;
subst
end; intuition eauto; discriminate.
Qed.

(* Specifications: *)
Lemma cronies_correct_init :
refined_raft_net_invariant_init cronies_correct.