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).
Lemma inductive_simulation : forall net net' tr, step_async net net' tr -> step_1_star (revert_state net) (revert_state net') (revert_trace tr).
Lemma revert_trace_app : forall tr1 tr2, revert_trace (tr1 ++ tr2) = revert_trace tr1 ++ revert_trace tr2.
Lemma simulation : forall net tr, step_async_star step_async_init net tr -> step_1_star init (revert_state net) (revert_trace tr).
Theorem transformer : forall (P : list (input * output) -> Prop), (forall st tr, step_1_star init st tr -> P tr) -> (forall net tr, step_async_star step_async_init net tr -> P (revert_trace tr)).
Lemma inputs_m_on_cons : forall t tr, inputs_m (t :: tr) = match t with | (Primary, inl (Request i)) => i :: inputs_m tr | _ => inputs_m tr end.