Proof using.
unfold correspond.
intros. break_let. intuition. subst.
eauto using app_Prefix.
Qed.
Fixpoint revert_trace (tr : list (name * ((@input PB_base_params) + list (@output PB_base_params)))) :
list (@input base_params * (@output base_params)) :=
match tr with
| [] => []
| (h, t) :: tr' => match t with
| inr l => filterMap (fun x => match x with
| RequestResponse i os => Some (i, os)
| _ => None
end) l
| _ => []
end ++ revert_trace tr'
end.
Definition revert_state (net : network) : @data base_params := state (nwState net Primary).

(* Specifications: *)
Lemma revert_state_defn :
forall net,
revert_state net = state (nwState net Primary).