Proof using.
auto.
Qed.

(* Specifications: *)
Lemma inputs_m_primary_inl_request_singleton :
forall i,
inputs_m [(Primary, inl (Request i))] = [i].
Lemma inputs_m_inl_read_singleton :
forall h,
inputs_m [(h, inl Read)] = [].
Lemma inputs_m_backup :
forall i l,
inputs_m ((Backup, inl i) :: l) = inputs_m l.
Lemma step_1_star_no_trace_no_step :
forall st st' tr,
step_1_star st st' tr ->
tr = [] ->
st = st'.
Lemma outputs_1_on_nil :
outputs_1 (@nil ((@input base_params) * ((@output base_params)))) = [].
Lemma inputs_m_on_nil :
inputs_m [] = [].
Lemma processInputs_cons_defn :
forall (st : @data base_params) (x : @input base_params) l,
processInputs st (x :: l) = let (os, d') := handler x st in
let (d'', os') := processInputs d' l in
(d'', os :: os').
Lemma processInputs_nil_defn :
forall st,
processInputs st [] = (st, []).
Lemma outputs_m_inl_singleton :
forall h i,
outputs_m [(h, inl i)] = [].