Proof using.
red. unfold append_entries_request_reply_correspondence. intros.
simpl in *.
find_reverse_rewrite.
find_apply_hyp_hyp.
unfold exists_equivalent_network_with_aer in *.
break_exists_name net''.
break_exists_name pli.
break_exists_name plt.
break_exists_name ci.
break_exists_name n.
intuition. subst.
remember mkNetwork as mkN.
remember mkPacket as mkP.
unfold Net.name in *. simpl in *.
exists (mkN ((nwPackets net) ++ [mkP (pDst p) (pSrc p) (AppendEntries t n pli plt es ci)]) (nwState net')).
subst.
exists pli,plt,ci,n. simpl in *; repeat find_rewrite; intuition.
eapply RIR_step_failure with (net0 := net''); [|eapply StepFailure_reboot with (h0 := h) (failed := [h])]; eauto;
simpl; repeat find_rewrite; eauto.
f_equal.
apply functional_extensionality.
intros. repeat find_higher_order_rewrite.
unfold update. repeat break_if; subst; eauto; congruence.
Qed.

(* Specifications: *)
Lemma subset_reachable :
forall net net',
nwState net' = nwState net ->
(forall p, In p (nwPackets net') -> In p (nwPackets net)) ->
raft_intermediate_reachable net ->
raft_intermediate_reachable net'.