Proof using.
intros.
unfold serialize_serverType, deserialize_serverType.
destruct a;
repeat (cheerios_crush; simpl).
Qed.
Instance serverType_Serializer : Serializer serverType :=
{| serialize := serialize_serverType;
deserialize := deserialize_serverType;
serialize_deserialize_id := serverType_serialize_deserialize_id |}.
Definition serialize_output (o : output) :=
match o with
| Response key vo1 vo2 =>
serialize key +$+ serialize vo1 +$+ serialize vo2
end.
Definition deserialize_output : ByteListReader.t output :=
key <- deserialize;;
vo1 <- deserialize;;
vo2 <- deserialize;;
ByteListReader.ret (Response key vo1 vo2).

(* Specifications: *)
Lemma output_serialize_deserialize_id :
serialize_deserialize_id_spec serialize_output deserialize_output.