Proof using.
unfold doGenericServer.
intros.
repeat break_match; repeat find_inversion;
use_applyEntries_spec; subst; simpl in *;
auto.
Qed.

Lemma doGenericServer_spec :
forall h d os d' ms,
doGenericServer h d = (os, d', ms) ->
(log d' = log d /\ currentTerm d' = currentTerm d /\
(forall m, In m ms -> ~ is_append_entries (snd m))).